diff --git a/.gitattributes b/.gitattributes index 649ffa0b7a3..592aab401cd 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,3 +2,4 @@ *.cmd -crlf test/**/*.js -crlf test/es6/HTMLComments.js binary diff=cpp +*.wasm binary diff --git a/.gitignore b/.gitignore index 348a9c893f6..d487fce3b50 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ Build/VCBuild/ buildchk.* buildfre.* BuildLinux/ +_DROP/ # Generated Files *.bc @@ -56,6 +57,7 @@ test/*/*.baseline.rebase test/benchmarks/*.dpl test/benchmarks/*.txt testout* +packages.config # CMake Files cmake_install.cmake diff --git a/Build/Chakra.Build.Clang.props b/Build/Chakra.Build.Clang.props index 5045d83153b..61637d60cae 100644 --- a/Build/Chakra.Build.Clang.props +++ b/Build/Chakra.Build.Clang.props @@ -4,7 +4,7 @@ %(AdditionalOptions) - -msse4.1 + -msse4.2 -Qunused-arguments -Wno-unknown-pragmas -Wno-writable-strings diff --git a/Build/Chakra.Build.props b/Build/Chakra.Build.props index 10ee9a3f26d..8552aa9fefb 100644 --- a/Build/Chakra.Build.props +++ b/Build/Chakra.Build.props @@ -1,6 +1,6 @@ - + 0x0601 0x0602 diff --git a/Build/Chakra.Core.sln b/Build/Chakra.Core.sln index 2cda924009c..79fe0a96d48 100644 --- a/Build/Chakra.Core.sln +++ b/Build/Chakra.Core.sln @@ -83,6 +83,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rl", "..\bin\rl\rl.vcxproj" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra.Runtime.Base", "..\lib\Runtime\Base\Chakra.Runtime.Base.vcxproj", "{706083F7-6AA4-4558-A153-6352EF9110EE}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra.WasmReader", "..\lib\WasmReader\Chakra.WasmReader.vcxproj", "{53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCStress", "..\bin\GCStress\GCStress.vcxproj", "{73CE5C59-E0BA-413D-A73C-3EECE067891B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Chakra.Runtime.PlatformAgnostic", "..\lib\Runtime\PlatformAgnostic\Chakra.Runtime.PlatformAgnostic.vcxproj", "{129AC184-877C-441F-AC49-A692CE700E62}" @@ -486,6 +488,24 @@ Global {706083F7-6AA4-4558-A153-6352EF9110EE}.Test|x64.Build.0 = Test|x64 {706083F7-6AA4-4558-A153-6352EF9110EE}.Test|x86.ActiveCfg = Test|Win32 {706083F7-6AA4-4558-A153-6352EF9110EE}.Test|x86.Build.0 = Test|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|ARM.ActiveCfg = Debug|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|ARM.Build.0 = Debug|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|x64.ActiveCfg = Debug|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|x64.Build.0 = Debug|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|x86.ActiveCfg = Debug|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Debug|x86.Build.0 = Debug|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|ARM.ActiveCfg = Release|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|ARM.Build.0 = Release|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|x64.ActiveCfg = Release|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|x64.Build.0 = Release|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|x86.ActiveCfg = Release|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Release|x86.Build.0 = Release|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|ARM.ActiveCfg = Test|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|ARM.Build.0 = Test|ARM + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|x64.ActiveCfg = Test|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|x64.Build.0 = Test|x64 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|x86.ActiveCfg = Test|Win32 + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD}.Test|x86.Build.0 = Test|Win32 {73CE5C59-E0BA-413D-A73C-3EECE067891B}.Debug|ARM.ActiveCfg = Debug|ARM {73CE5C59-E0BA-413D-A73C-3EECE067891B}.Debug|ARM.Build.0 = Debug|ARM {73CE5C59-E0BA-413D-A73C-3EECE067891B}.Debug|x64.ActiveCfg = Debug|x64 @@ -625,6 +645,7 @@ Global {0216C4BE-86CE-478D-A134-23EAEE545B9D} = {D3BA0BFC-4757-4B73-994F-3556950884A1} {80A70F57-0F89-458F-AFD3-CE2159EB9BB1} = {D3BA0BFC-4757-4B73-994F-3556950884A1} {706083F7-6AA4-4558-A153-6352EF9110EE} = {DDF436E7-0A8E-41AA-82B3-902B5D2D0809} + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD} = {D8216B93-BD6E-4293-8D98-79CEF7CF66BC} {73CE5C59-E0BA-413D-A73C-3EECE067891B} = {D3BA0BFC-4757-4B73-994F-3556950884A1} {129AC184-877C-441F-AC49-A692CE700E62} = {DDF436E7-0A8E-41AA-82B3-902B5D2D0809} {FFD0FA88-7A39-407E-A92D-D3A06273E1AC} = {D8216B93-BD6E-4293-8D98-79CEF7CF66BC} diff --git a/Build/Common.Build.Default.props b/Build/Common.Build.Default.props index a0d27fbe078..ca4d3800203 100644 --- a/Build/Common.Build.Default.props +++ b/Build/Common.Build.Default.props @@ -53,7 +53,6 @@ amd64 - $(OutBaseDir)\$(SolutionName) @@ -64,7 +63,11 @@ - + + $(TF_BUILD_BUILDDIRECTORY) + $(IntBaseDir)\obj\$(PlatformPathName.ToLower())_$(Configuration.ToLower()) + + diff --git a/Build/scripts/finalize_build.ps1 b/Build/scripts/finalize_build.ps1 index 4d158f51c7e..94c4ede1dc6 100644 --- a/Build/scripts/finalize_build.ps1 +++ b/Build/scripts/finalize_build.ps1 @@ -101,7 +101,7 @@ $buildFlavorJson | Add-Member -type NoteProperty -name flavor -value $Env:BuildC $buildFlavorJson | Add-Member -type NoteProperty -name subtype -value $Env:BuildSubtype $buildFlavorJson | ConvertTo-Json | Write-Output -$buildFlavorJson | ConvertTo-Json | Out-File $buildFlavorJsonFile -Encoding ascii +$buildFlavorJson | ConvertTo-Json | Out-File $buildFlavorJsonFile -Encoding utf8 # # Copy outputs to metadata directory diff --git a/Build/scripts/init_build.ps1 b/Build/scripts/init_build.ps1 index 18430024624..e84f107da74 100644 --- a/Build/scripts/init_build.ps1 +++ b/Build/scripts/init_build.ps1 @@ -12,23 +12,47 @@ # before running the Pre-Build script. param ( + [ValidateSet("x86", "x64", "arm", "")] + [string]$arch = "", + [ValidateSet("debug", "release", "test", "codecoverage", "")] + [string]$flavor = "", + [ValidateSet("default", "codecoverage", "pogo")] + [string]$subtype = "default", + [string]$buildtype, + [string]$envConfigScript = "ComputedEnvironment.cmd", [string[]]$supportedPogoBuildTypes = @("x64_release", "x86_release"), - [Parameter(Mandatory=$True)] + [string]$verMajor = "", + [string]$verMinor = "", + [string]$verPatch = "", + [string]$verSecurity = "", + + [string]$dropRoot, + + [switch]$cleanBinDir, + [string]$oauth ) -# If $Env:BuildType is specified, extract BuildPlatform and BuildConfiguration -# Otherwise, if $Env:BuildPlatform and $Env:BuildConfiguration are specified, construct $BuildType -$BuildPlatform = $Env:BuildPlatform -$BuildConfiguration = $Env:BuildConfiguration -$BuildType = $Env:BuildType -$BuildSubtype = "default" # will remain as "default" or become e.g. "pogo", "codecoverage" +# +# Define values for variables based on parameters and environment variables +# with default values in case the environment variables are not defined. +# + +. $PSScriptRoot\util.ps1 +$gitExe = GetGitPath + +$BuildType = UseValueOrDefault $buildtype $Env:BuildType +$BuildPlatform = UseValueOrDefault $arch $Env:BuildPlatform +$BuildConfiguration = UseValueOrDefault $flavor $Env:BuildConfiguration +$BuildSubtype = UseValueOrDefault $subtype $Env:BuildSubtype -if (Test-Path Env:\BuildType) { - $BuildType = $Env:BuildType +# If $BuildType is specified, extract BuildPlatform and BuildConfiguration +# Otherwise, if $BuildPlatform and $BuildConfiguration are specified, construct $BuildType +# $BuildSubtype will remain as "default" if not already specified, or become e.g. "pogo", "codecoverage" +if ($BuildType) { $buildTypeSegments = $BuildType.split("_") $BuildPlatform = $buildTypeSegments[0] $BuildConfiguration = $buildTypeSegments[1] @@ -42,12 +66,10 @@ if (Test-Path Env:\BuildType) { $BuildSubtype = "codecoverage" # keep information about codecoverage in the subtype } - if (-not ($BuildSubtype -in @("default","pogo","codecoverage"))) { + if (-not ($BuildSubtype -in @("default", "pogo", "codecoverage"))) { Write-Error "Unsupported BuildSubtype: $BuildSubtype" } -} elseif ((Test-Path Env:\BuildPlatform) -and (Test-Path Env:\BuildConfiguration)) { - $BuildPlatform = $Env:BuildPlatform - $BuildConfiguration = $Env:BuildConfiguration +} elseif ($BuildPlatform -and $BuildConfiguration) { $BuildType = "${BuildPlatform}_${BuildConfiguration}" } else { Write-Error (@" @@ -56,67 +78,92 @@ if (Test-Path Env:\BuildType) { BuildType={0} BuildPlatform={1} BuildConfiguration={2} + BuildSubtype={3} -"@ -f $Env:BuildType, $Env:BuildPlatform, $Env:BuildConfiguration) +"@ -f $BuildType, $BuildPlatform, $BuildConfiguration, $BuildSubtype) exit 1 } +$CommitHash = UseValueOrDefault $Env:BUILD_SOURCEVERSION $(iex "${gitExe} rev-parse HEAD") + +$branchFullName = UseValueOrDefault $Env:BUILD_SOURCEBRANCH $(iex "${gitExe} rev-parse --symbolic-full-name HEAD") + +$SourcesDirectory = UseValueOrDefault $Env:BUILD_SOURCESDIRECTORY $(GetRepoRoot) +$BinariesDirectory = UseValueOrDefault (Join-Path $SourcesDirectory "Build\VcBuild") +$ObjectDirectory = Join-Path $BinariesDirectory "obj\${BuildPlatform}_${BuildConfiguration}" + +$DropRoot = UseValueOrDefault $dropRoot $Env:DROP_ROOT (Join-Path $(GetRepoRoot) "_DROP") + # set up required variables and import pre_post_util.ps1 $arch = $BuildPlatform $flavor = $BuildConfiguration $OuterScriptRoot = $PSScriptRoot # Used in pre_post_util.ps1 . "$PSScriptRoot\pre_post_util.ps1" -$gitExe = GetGitPath - $BuildName = ConstructBuildName -arch $BuildPlatform -flavor $BuildConfiguration -subtype $BuildSubtype -$branch = $Env:BUILD_SOURCEBRANCH -if (-not $branch) { - $branch = iex "$gitExe rev-parse --symbolic-full-name HEAD" -} - -$BranchName = $branch.split('/',3)[2] +$BranchName = $branchFullName.split('/',3)[2] $BranchPath = $BranchName.replace('/','\') -$CommitHash = $Env:BUILD_SOURCEVERSION + if (-not $CommitHash) { - $CommitHash = iex "$gitExe rev-parse HEAD" + $CommitHash = iex "${gitExe} rev-parse HEAD" } +$CommitShortHash = $(iex "${gitExe} rev-parse --short $CommitHash") -$Username = (iex "$gitExe log $CommitHash -1 --pretty=%ae").split('@')[0] -$CommitDateTime = [DateTime]$(iex "$gitExe log $CommitHash -1 --pretty=%aD") +$Username = (iex "${gitExe} log $CommitHash -1 --pretty=%ae").split('@')[0] +$CommitDateTime = [DateTime]$(iex "${gitExe} log $CommitHash -1 --pretty=%aD") $CommitTime = Get-Date $CommitDateTime -Format yyMMdd.HHmm # # Get Build Info # -$info = GetBuildInfo $oauth $CommitHash +$buildPushDate = $null +$buildPushIdString = $null -$BuildPushDate = [datetime]$info.push.date -$PushDate = Get-Date $BuildPushDate -Format yyMMdd.HHmm +if (-not $oauth) +{ + $buildPushIdPart1 = 65535 + $buildPushIdPart2 = 65535 + $buildPushIdString = "65535.65535" + $buildPushDate = [DateTime]$CommitDateTime +} +else +{ + $info = GetBuildInfo $oauth $CommitHash + $_, $buildPushIdPart1, $buildPushIdPart2, $buildPushIdString = GetBuildPushId $info + $buildPushDate = [DateTime]$info.push.date +} + +$PushDate = Get-Date $buildPushDate -Format yyMMdd.HHmm + +$VersionMajor = UseValueOrDefault $verMajor $Env:VERSION_MAJOR (GetVersionField "CHAKRA_CORE_MAJOR_VERSION") "0" +$VersionMinor = UseValueOrDefault $verMinor $Env:VERSION_MINOR (GetVersionField "CHAKRA_CORE_MINOR_VERSION") "0" +$VersionPatch = UseValueOrDefault $verPatch $Env:VERSION_PATCH (GetVersionField "CHAKRA_CORE_PATCH_VERSION") "0" +$VersionSecurity = UseValueOrDefault $verSecurity $Env:VERSION_QFE (GetVersionField "CHAKRA_CORE_VERSION_RELEASE_QFE") "0" -$buildPushId, $buildPushIdPart1, $buildPushIdPart2, $buildPushIdString = GetBuildPushId $info +$VersionString = "${VersionMajor}.${VersionMinor}.${VersionPatch}" # Only use MAJOR.MINOR.PATCH to align with SemVer -$VersionMajor = UseValueOrDefault "$Env:VERSION_MAJOR" "1" -$VersionMinor = UseValueOrDefault "$Env:VERSION_MINOR" "2" -$VersionPatch = UseValueOrDefault "$Env:VERSION_PATCH" "0" -$VersionQFE = UseValueOrDefault "$Env:VERSION_QFE" "0" +$buildVersionString = "{0}-{1}" -f $buildPushIdPart1.ToString("00000"), $buildPushIdPart2.ToString("00000") +$PreviewVersionString = "${VersionString}-preview-${buildVersionString}" -$VersionString = "${VersionMajor}.${VersionMinor}.${VersionPatch}.${VersionQFE}" -$PreviewVersionString = "${VersionString}-preview" +$ShortBranch = "commit" +if ($BranchName -eq "master") { + $ShortBranch = "master" +} elseif ($BranchName.StartsWith("release")) { + $ShortBranch = $BranchName.replace("release/","") +} # unless it is a build branch, subdivide the output directory by month if ($BranchPath.StartsWith("build")) { $YearAndMonth = "" } else { - $YearAndMonth = (Get-Date $BuildPushDate -Format yyMM) + "\" + $YearAndMonth = (Get-Date $buildPushDate -Format yyMM) + "\" } $BuildIdentifier = "${buildPushIdString}_${PushDate}_${Username}_${CommitHash}" $ComputedDropPathSegment = "${BranchPath}\${YearAndMonth}${BuildIdentifier}" -$BinariesDirectory = "${Env:BUILD_SOURCESDIRECTORY}\Build\VcBuild" $ObjectDirectory = "${BinariesDirectory}\obj\${BuildPlatform}_${BuildConfiguration}" # Create a sentinel file for each build flavor to track whether the build is complete. @@ -128,9 +175,9 @@ This could mean that the build is in progress, or that it was unable to run to c The contents of this directory should not be relied on until the build completes. "@ -$DropPath = Join-Path $Env:DROP_ROOT $ComputedDropPathSegment +$DropPath = Join-Path $DropRoot $ComputedDropPathSegment New-Item -ItemType Directory -Force -Path $DropPath -New-Item -ItemType Directory -Force -Path (Join-Path $Env:BUILD_SOURCESDIRECTORY "test\logs") +New-Item -ItemType Directory -Force -Path (Join-Path $SourcesDirectory "test\logs") New-Item -ItemType Directory -Force -Path (Join-Path $BinariesDirectory "buildlogs") New-Item -ItemType Directory -Force -Path (Join-Path $BinariesDirectory "logs") @@ -138,26 +185,33 @@ $FlavorBuildIncompleteFile = Join-Path $DropPath "${BuildType}.incomplete" if (-not (Test-Path $FlavorBuildIncompleteFile)) { ($buildIncompleteFileContentsString -f "Build of ${BuildType}") ` - | Out-File $FlavorBuildIncompleteFile -Encoding Ascii + | Out-File $FlavorBuildIncompleteFile -Encoding utf8 } -$PogoConfig = $supportedPogoBuildTypes -contains "${Env:BuildPlatform}_${Env:BuildConfiguration}" +$PogoConfig = $supportedPogoBuildTypes -contains "${BuildPlatform}_${BuildConfiguration}" # Write the $envConfigScript @" set BranchName=${BranchName} +set ShortBranch=${ShortBranch} set BranchPath=${BranchPath} set YearAndMonth=${YearAndMonth} set BuildIdentifier=${BuildIdentifier} -set buildPushIdString=${buildPushIdString} +set VersionMajor=${VersionMajor} +set VersionMinor=${VersionMinor} +set VersionPatch=${VersionPatch} +set VersionSecurity=${VersionSecurity} + +set BuildPushIdString=${buildPushIdString} set VersionString=${VersionString} set PreviewVersionString=${PreviewVersionString} set PushDate=${PushDate} set CommitTime=${CommitTime} set Username=${Username} set CommitHash=${CommitHash} +set CommitShortHash=${CommitShortHash} set ComputedDropPathSegment=${ComputedDropPathSegment} set BinariesDirectory=${BinariesDirectory} @@ -174,24 +228,30 @@ set FlavorBuildIncompleteFile=${FlavorBuildIncompleteFile} set PogoConfig=${PogoConfig} "@ ` - | Out-File $envConfigScript -Encoding Ascii + | Out-File $envConfigScript -Encoding ASCII # Use the VSTS environment vars to construct a backwards-compatible VSO build environment # for the sake of reusing the pre-build and post-build scripts as they are. @" -set TF_BUILD_SOURCEGETVERSION=LG:${branch}:${CommitHash} +set TF_BUILD_SOURCEGETVERSION=LG:${branchFullName}:${CommitHash} set TF_BUILD_DROPLOCATION=${BinariesDirectory} -set TF_BUILD_SOURCESDIRECTORY=${Env:BUILD_SOURCESDIRECTORY} +set TF_BUILD_SOURCESDIRECTORY=${SourcesDirectory} set TF_BUILD_BUILDDIRECTORY=${ObjectDirectory} set TF_BUILD_BINARIESDIRECTORY=${BinariesDirectory} +REM The following variables are only used for logging build metadata. set TF_BUILD_BUILDDEFINITIONNAME=${Env:BUILD_DEFINITIONNAME} set TF_BUILD_BUILDNUMBER=${Env:BUILD_BUILDNUMBER} set TF_BUILD_BUILDURI=${Env:BUILD_BUILDURI} "@ ` - | Out-File $envConfigScript -Encoding Ascii -Append + | Out-File $envConfigScript -Encoding ASCII -Append + +# Print contents of $envConfigScript as a sanity check +Write-Output "" +Get-Content $envConfigScript | Write-Output +Write-Output "" # Export VSO variables that can be consumed by other VSO tasks where the task # definition in VSO itself needs to know the value of the variable. @@ -216,10 +276,10 @@ Write-Output "Setting VSO variable VSO_VersionString = ${VersionString}" Write-Output "##vso[task.setvariable variable=VSO_VersionString;]${VersionString}" # -# Clean up files that might have been left behind from a previous build. +# Optionally ($cleanBinDir): clean up files that might have been left behind from a previous build. # -if ((Test-Path Env:\BUILD_BINARIESDIRECTORY) -and (Test-Path "$Env:BUILD_BINARIESDIRECTORY")) +if ($BinariesDirectory -and (Test-Path "$BinariesDirectory") -and $cleanBinDir) { - Remove-Item -Verbose "${Env:BUILD_BINARIESDIRECTORY}\*" -Recurse + Remove-Item -Verbose "${BinariesDirectory}\*" -Recurse } diff --git a/Build/scripts/pgo/pogo_training.ps1 b/Build/scripts/pgo/pogo_training.ps1 index 9ef3d2c5738..a6f0acd69c2 100644 --- a/Build/scripts/pgo/pogo_training.ps1 +++ b/Build/scripts/pgo/pogo_training.ps1 @@ -66,7 +66,7 @@ for ($i = 0; $i -lt $scenarios.Length; $i = $i + 1) { for ($j = 0; $j -lt $items.Length; $j = $j + 1) { $testFile = $items[$j] - Write-Host "$binary $testFile" - iex "$binary $testFile" + Write-Host "$binary -oopjit- $testFile" + iex "$binary -oopjit- $testFile" } } diff --git a/Build/scripts/pogo_build.ps1 b/Build/scripts/pogo_build.ps1 deleted file mode 100644 index f02fdf8c9d0..00000000000 --- a/Build/scripts/pogo_build.ps1 +++ /dev/null @@ -1,143 +0,0 @@ -#------------------------------------------------------------------------------------------------------- -# Copyright (C) Microsoft. All rights reserved. -# Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. -#------------------------------------------------------------------------------------------------------- - -# Use this script to run a POGO build for the given BuildType (arch, flavor, subtype) - -param ( - [ValidateSet("x86", "x64", "arm")] - [Parameter(Mandatory=$True)] - [string]$arch, - - # We do not use ValidateSet here because this $flavor param is used to name the BuildConfuration - # from the solution file. MsBuild will determine whether it is valid. - [Parameter(Mandatory=$True)] - [string]$flavor, - - [ValidateSet("default", "codecoverage", "pogo")] - [string]$subtype = "pogo", - - [Parameter(Mandatory=$True)] - [string]$solutionFile, - - [switch]$clean, - - # $binDir will be inferred if not provided. - [string]$binDir = "", - [string]$buildlogsSubdir = "buildlogs", - - # Assume NuGet is on the path, otherwise the caller must specify an explicit path. - [string]$nugetExe = "NuGet.exe", - - [string]$logFile = "", - - # - # POGO training parameters - # - - [string[]]$scenarios = @(), - - [Parameter(Mandatory=$True)] - [string]$binpath, - - [string]$binaryName = "ch.exe" -) - -# -# Configure logging -# - -$OuterScriptRoot = $PSScriptRoot -. $PSScriptRoot\pre_post_util.ps1 - -$buildName = ConstructBuildName -arch $arch -flavor $flavor -subtype $subtype - -if (($logFile -eq "") -and (Test-Path Env:\TF_BUILD_BINARIESDIRECTORY)) { - $logFile = "${Env:TF_BUILD_BINARIESDIRECTORY}\logs\pogo_build.${buildName}.log" -} - -if (($logFile -ne "") -and (Test-Path $logFile)) { - Remove-Item $logFile -Force -} - -# -# Only continue with this build if it is a valid pogo build configuration -# - -if ($subtype -ne "pogo") { - WriteMessage "This build's subtype is not pogo (subtype: $subtype). Skipping build." - exit 0 -} - -if ($scenarios.Length -eq 0) { - WriteMessage "No training scenarios selected. Please specify training scenarios using the -scenarios parameter." - exit 0 -} - -# -# NuGet restore -# - -ExecuteCommand "& $nugetExe restore $solutionFile -NonInteractive" - -# -# Setup -# - -$msbuildExe = Locate-MSBuild -if (-not $msbuildExe) { - WriteErrorMessage "Error: Could not find msbuild.exe -- exiting (1)..." - exit 1 -} - -$binDir = UseValueOrDefault "$binDir" "${Env:BinariesDirectory}" "${Env:BUILD_SOURCESDIRECTORY}\Build\VcBuild" -$buildlogsPath = Join-Path $binDir $buildlogsSubdir - -$defaultParams = "$solutionFile /nologo /m /nr:false /p:platform=`"${arch}`" /p:configuration=`"${flavor}`"" -$loggingParams = @( - "/fl1 `"/flp1:logfile=${buildlogsPath}\build.${buildName}.log;verbosity=normal`"", - "/fl2 `"/flp2:logfile=${buildlogsPath}\build.${buildName}.err;errorsonly`"", - "/fl3 `"/flp3:logfile=${buildlogsPath}\build.${buildName}.wrn;warningsonly`"", - "/verbosity:normal" - ) -join " " - -$targets = "" -if ($clean) { - $targets += "`"/t:Clean,Rebuild`"" -} - -$binary = Join-Path $binpath $binaryName - -# -# Build -# - -function Build($targets="", $pogoParams) { - $buildCommand = "& `"$msbuildExe`" $targets $defaultParams $loggingParams $pogoParams" - ExecuteCommand "$buildCommand" - if ($global:LastExitCode -ne 0) { - WriteErrorMessage "Failed msbuild command:`n$buildCommand`n" - WriteErrorMessage "Build failed. Exiting..." - exit 1 - } -} - -Build -pogoParams "`"/p:POGO_TYPE=PGI`"" -targets "$targets" - -$scenariosParamValue = $scenarios -join ',' -$pogoTrainingCommand = "& `"${PSScriptRoot}\pgo\pogo_training.ps1`" -arch $arch -flavor $flavor -subtype $subtype -binary $binary -scenarios $scenariosParamValue" -ExecuteCommand "$pogoTrainingCommand" - -Build -pogoParams "`"/p:POGO_TYPE=PGO`"" - -# -# Clean up -# - -if (("$binpath" -ne "") -and (Test-Path $binpath)) { - # remove *.pgc, *.pgd, and pgort* - Get-ChildItem -Recurse -Path $binpath "*" ` - | ? { $_.Name -match "(.*\.pg[cd]|pgort.*)" } ` - | % { Remove-Item -Force $_.FullName } -} diff --git a/Build/scripts/post_build.ps1 b/Build/scripts/post_build.ps1 index caec69cb86a..82652e514fe 100644 --- a/Build/scripts/post_build.ps1 +++ b/Build/scripts/post_build.ps1 @@ -37,9 +37,15 @@ param ( [string[]]$pogo = @(), [string]$pogoscript = "", - [switch]$noaction + # + # Skip flags + # + + [switch]$skipTests # or set $Env:SKIP_TESTS before invoking build ) +$skipTests = $skipTests -or (Test-Path Env:\SKIP_TESTS) + $global:exitcode = 0 if ($arch -eq "*") { @@ -105,7 +111,9 @@ if ($arch -eq "*") { } # run tests - ExecuteCommand("$bvtcmdpath -$arch$flavor") + if (-not $skipTests) { + ExecuteCommand("$bvtcmdpath -$arch$flavor") + } } # check prefast diff --git a/Build/scripts/pre_build.ps1 b/Build/scripts/pre_build.ps1 index 1208e6dc35f..c277b900de0 100644 --- a/Build/scripts/pre_build.ps1 +++ b/Build/scripts/pre_build.ps1 @@ -20,7 +20,7 @@ # $Env:TF_BUILD_BUILDDIRECTORY (a.k.a. $objpath) # $Env:TF_BUILD_BINARIESDIRECTORY (a.k.a. $binpath) # -# Optional information: +# Optional information (metadata only): # $Env:TF_BUILD_BUILDDEFINITIONNAME # $Env:TF_BUILD_BUILDNUMBER # $Env:TF_BUILD_BUILDURI @@ -32,7 +32,6 @@ param ( [Parameter(Mandatory=$True)] [ValidateSet("debug", "release", "test", "codecoverage")] [string]$flavor, - [ValidateSet("default", "codecoverage", "pogo")] [string]$subtype = "default", @@ -43,7 +42,6 @@ param ( [string]$corePath = "core", - [Parameter(Mandatory=$True)] [string]$oauth ) @@ -108,7 +106,7 @@ if (Test-Path Env:\TF_BUILD_SOURCEGETVERSION) $info = GetBuildInfo $oauth $commitHash - $BuildDate = ([datetime]$info.push.date).toString("yyMMdd-HHmm") + $BuildDate = ([DateTime]$info.push.date).toString("yyMMdd-HHmm") $buildPushId, $buildPushIdPart1, $buildPushIdPart2, $buildPushIdString = GetBuildPushId $info @@ -157,12 +155,12 @@ $CommitMessage $changeJson | Add-Member -type NoteProperty -name PushIdPart2 -value $BuildPushIdPart2 $changeJson | Add-Member -type NoteProperty -name PushIdString -value $BuildPushIdString $changeJson | Add-Member -type NoteProperty -name Username -value $Env:Username - $changeJson | Add-Member -type NoteProperty -name CommitMessage -value $CommitMessage + $changeJson | Add-Member -type NoteProperty -name CommitMessage -value $CommitMessageLines Write-Output "-----" Write-Output $outputJsonFile $changeJson | ConvertTo-Json | Write-Output - $changeJson | ConvertTo-Json | Out-File $outputJsonFile -Encoding Ascii + $changeJson | ConvertTo-Json | Out-File $outputJsonFile -Encoding utf8 $buildInfoOutputDir = $objpath if (-not(Test-Path -Path $buildInfoOutputDir)) { diff --git a/Build/scripts/pre_post_util.ps1 b/Build/scripts/pre_post_util.ps1 index ac7881be2d1..5198f95e991 100644 --- a/Build/scripts/pre_post_util.ps1 +++ b/Build/scripts/pre_post_util.ps1 @@ -4,7 +4,6 @@ #------------------------------------------------------------------------------------------------------- . "$PSScriptRoot\util.ps1" -. "$PSScriptRoot\locate_msbuild.ps1" function WriteCommonArguments() { WriteMessage " Source Path: $srcpath" @@ -12,6 +11,17 @@ function WriteCommonArguments() { WriteMessage "Binaries Path: $binpath" } +function GetVersionField($fieldname) { + $gitExe = GetGitPath + $query = "#define ${fieldname} (\d+)" + $line = (iex "${gitExe} grep -P ""${query}"" :/") + $matches = $line | Select-String $query + if ($matches) { + return $matches[0].Matches.Groups[1].Value + } + return "" +} + function GetBuildInfo($oauth, $commitHash) { # Get the git remote path and construct the REST API URI $gitExe = GetGitPath @@ -21,7 +31,7 @@ function GetBuildInfo($oauth, $commitHash) { # Get the pushId and push date time to use that for build number and build date time $uri = ("{0}/commits/{1}?api-version=1.0" -f $remote, $commitHash) $oauthToken = Get-Content $oauth - $header = @{Authorization=("Basic {0}" -f $oauthToken) } + $header = @{ Authorization=("Basic {0}" -f $oauthToken) } $info = Invoke-RestMethod -Headers $header -Uri $uri -Method GET return $info diff --git a/Build/scripts/run_build.ps1 b/Build/scripts/run_build.ps1 index fcd4599b6c7..afa27074aeb 100644 --- a/Build/scripts/run_build.ps1 +++ b/Build/scripts/run_build.ps1 @@ -3,54 +3,75 @@ # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. #------------------------------------------------------------------------------------------------------- -# Use this script to run a build command for the given BuildType (arch, flavor, subtype) +# Use this script to run a build for the given BuildType (arch, flavor, subtype) param ( [ValidateSet("x86", "x64", "arm")] [Parameter(Mandatory=$True)] [string]$arch, - # We do not use ValidateSet here because this $flavor param is used to name the BuildConfuration # from the solution file. MsBuild will determine whether it is valid. [Parameter(Mandatory=$True)] [string]$flavor, - [ValidateSet("default", "codecoverage", "pogo")] [string]$subtype = "default", [Parameter(Mandatory=$True)] - [string]$solutionFile = "", + [string]$solutionFile, [switch]$clean, - # $binDir will be inferred if not provided. - [string]$binDir = "", + [string]$binDir = "", # will be inferred if not provided. [string]$buildlogsSubdir = "buildlogs", # assume NuGet is on the path, otherwise the caller must specify an explicit path [string]$nugetExe = "NuGet.exe", - [string]$logFile = "" + [string]$logFile = "", + + # + # Skip flags + # + + [switch]$skipPogo, # or set $Env:SKIP_POGO before invoking build + + # + # POGO training parameters + # + + [string[]]$scenarios = @(), + [string]$binpath, # will be inferred if not provided + [string]$binaryName = "ch.exe" ) +# +# Configure logging +# + $OuterScriptRoot = $PSScriptRoot . $PSScriptRoot\pre_post_util.ps1 +. $PSScriptRoot\locate_msbuild.ps1 + +$buildName = ConstructBuildName -arch $arch -flavor $flavor -subtype $subtype if (($logFile -eq "") -and (Test-Path Env:\TF_BUILD_BINARIESDIRECTORY)) { $logFile = "${Env:TF_BUILD_BINARIESDIRECTORY}\logs\run_build.${Env:BuildName}.log" - if (Test-Path -Path $logFile) { - Remove-Item $logFile -Force - } +} + +if (($logFile -ne "") -and (Test-Path $logFile)) { + Remove-Item $logFile -Force } # # NuGet restore # -ExecuteCommand "& $nugetExe restore $solutionFile -NonInteractive" +if (-not (Get-Command $nugetExe -ErrorAction SilentlyContinue)) { + ExecuteCommand "& $nugetExe restore $solutionFile -NonInteractive" +} # -# Setup and build +# Setup # $msbuildExe = Locate-MSBuild @@ -62,6 +83,12 @@ if (-not $msbuildExe) { $binDir = UseValueOrDefault "$binDir" "${Env:BinariesDirectory}" "${Env:BUILD_SOURCESDIRECTORY}\Build\VcBuild" $buildlogsPath = Join-Path $binDir $buildlogsSubdir +$skipPogo = $skipPogo -or (Test-Path Env:\SKIP_POGO) + +if (("$binpath" -ne "") -or (-not (Test-Path $binpath))) { + $binpath = Join-Path $binDir "bin\${buildName}" +} + $defaultParams = "$solutionFile /nologo /m /nr:false /p:platform=`"${arch}`" /p:configuration=`"${flavor}`"" $loggingParams = @( "/fl1 `"/flp1:logfile=${buildlogsPath}\build.${Env:BuildName}.log;verbosity=normal`"", @@ -75,11 +102,59 @@ if ($clean) { $targets += "`"/t:Clean,Rebuild`"" } -if ($subtype -eq "codecoverage") { - $subtypeParams = "/p:ENABLE_CODECOVERAGE=true" +# +# Build +# + +function Build($targets="", $extraParams) { + $buildCommand = "& `"$msbuildExe`" $targets $defaultParams $loggingParams $extraParams" + ExecuteCommand "$buildCommand" + if ($global:LastExitCode -ne 0) { + WriteErrorMessage "Failed msbuild command:`n$buildCommand`n" + WriteErrorMessage "Build failed. Exiting..." + exit 1 + } } -$buildCommand = "& `"$msbuildExe`" $targets $defaultParams $loggingParams $subtypeParams" -ExecuteCommand "$buildCommand" +if ($subtype -eq "pogo") { + if ($scenarios.Length -eq 0) { + WriteMessage "No training scenarios selected for pogo build. Please specify training scenarios using the -scenarios parameter." + exit 1 + } + + Build -extraParams "`"/p:POGO_TYPE=PGI`"" -targets "$targets" + + if (-not $skipPogo) { + $scenariosParamValue = $scenarios -join ',' + $binary = Join-Path $binpath $binaryName + if (($binary -ne "") -and (Test-Path $binary)) { + $pogoTrainingCommand = "& `"${PSScriptRoot}\pgo\pogo_training.ps1`" -arch $arch -flavor $flavor -subtype $subtype -binary $binary -scenarios $scenariosParamValue" + ExecuteCommand "$pogoTrainingCommand" + } else { + WriteMessage "Binary not found at `"$binary`". Exiting..." + exit 1 + } + + Build -extraParams "`"/p:POGO_TYPE=PGO`"" + } +} else { + $subtypeParams = "" + if ($subtype -eq "codecoverage") { + $subtypeParams = "/p:ENABLE_CODECOVERAGE=true" + } + + Build -extraParams $subTypeParams -targets $targets +} + +# +# Clean up +# + +if (("$binpath" -ne "") -and (Test-Path $binpath)) { + # remove *.pgc, *.pgd, and pgort* + Get-ChildItem -Recurse -Path $binpath "*" ` + | ? { $_.Name -match "(.*\.pg[cd]|pgort.*)" } ` + | % { Remove-Item -Force $_.FullName } +} exit $global:lastexitcode diff --git a/Build/scripts/util.ps1 b/Build/scripts/util.ps1 index 504e84b9d4a..115fe3b3e13 100644 --- a/Build/scripts/util.ps1 +++ b/Build/scripts/util.ps1 @@ -3,14 +3,13 @@ # Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. #------------------------------------------------------------------------------------------------------- -function UseValueOrDefault($value, $defaultvalue, $defaultvalue2) { - if ($value -ne "") { - return $value - } elseif ($defaultvalue -ne "") { - return $defaultvalue - } else { - return $defaultvalue2 +function UseValueOrDefault() { + foreach ($value in $args) { + if ($value) { + return $value + } } + return "" } function GetGitPath() { @@ -26,6 +25,11 @@ function GetGitPath() { return $gitExe } +function GetRepoRoot() { + $gitExe = GetGitPath + return iex "$gitExe rev-parse --show-toplevel" +} + function WriteMessage($str) { Write-Output $str if ($logFile -ne "") { diff --git a/CMakeLists.txt b/CMakeLists.txt index ffceb6b057c..d19030998e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,7 +100,7 @@ elseif(CC_EMBED_ICU) set(CLR_CMAKE_PLATFORM_XPLAT 1) if(CC_TARGETS_AMD64) add_definitions(-D_M_X64_OR_ARM64) - add_compile_options(-msse4.1) + add_compile_options(-msse4.2) elseif(CC_TARGETS_X86) add_definitions(-D__i686__) add_definitions(-D_M_IX86_OR_ARM32) diff --git a/README.md b/README.md index d6348291698..167ee524e61 100644 --- a/README.md +++ b/README.md @@ -19,47 +19,47 @@ You can stay up-to-date on progress by following the [MSEdge developer blog](htt *If you see badges reading "Build: Unknown" it is likely because a build was skipped due to changes being only in files known not to affect the health of the build.* -[x64dbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_debug/badge/icon -[x64dbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_debug/ -[x64testicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_test/badge/icon -[x64testlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_test/ -[x64relicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_release/badge/icon -[x64rellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x64_release/ - -[x86dbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_debug/badge/icon -[x86dbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_debug/ -[x86testicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_test/badge/icon -[x86testlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_test/ -[x86relicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_release/badge/icon -[x86rellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/x86_release/ - -[armdbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_debug/badge/icon -[armdbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_debug/ -[armtesticon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_test/badge/icon -[armtestlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_test/ -[armrelicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_release/badge/icon -[armrellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/arm_release/ - -[linuxdbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug/badge/icon -[linuxdbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug/ -[linuxtesticon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test/badge/icon -[linuxtestlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test/ -[linuxrelicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release/badge/icon -[linuxrellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release/ - -[linuxsdbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug_static/badge/icon -[linuxsdbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug_static/ -[linuxstesticon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test_static/badge/icon -[linuxstestlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test_static/ -[linuxsrelicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release_static/badge/icon -[linuxsrellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release_static/ - -[osxsdbgicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_debug_static/badge/icon -[osxsdbglink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_debug_static/ -[osxstesticon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_test_static/badge/icon -[osxstestlink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_test_static/ -[osxsrelicon]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_release_static/badge/icon -[osxsrellink]: http://dotnet-ci.cloudapp.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_release_static/ +[x64dbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_debug/badge/icon +[x64dbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_debug/ +[x64testicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_test/badge/icon +[x64testlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_test/ +[x64relicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_release/badge/icon +[x64rellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x64_release/ + +[x86dbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_debug/badge/icon +[x86dbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_debug/ +[x86testicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_test/badge/icon +[x86testlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_test/ +[x86relicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_release/badge/icon +[x86rellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/x86_release/ + +[armdbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_debug/badge/icon +[armdbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_debug/ +[armtesticon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_test/badge/icon +[armtestlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_test/ +[armrelicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_release/badge/icon +[armrellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/arm_release/ + +[linuxdbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug/badge/icon +[linuxdbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug/ +[linuxtesticon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test/badge/icon +[linuxtestlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test/ +[linuxrelicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release/badge/icon +[linuxrellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release/ + +[linuxsdbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug_static/badge/icon +[linuxsdbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_debug_static/ +[linuxstesticon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test_static/badge/icon +[linuxstestlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_test_static/ +[linuxsrelicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release_static/badge/icon +[linuxsrellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/ubuntu_linux_release_static/ + +[osxsdbgicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_debug_static/badge/icon +[osxsdbglink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_debug_static/ +[osxstesticon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_test_static/badge/icon +[osxstestlink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_test_static/ +[osxsrelicon]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_release_static/badge/icon +[osxsrellink]: https://ci.dot.net/job/Microsoft_ChakraCore/job/master/job/osx_osx_release_static/ Above is a table of our rolling build status. We run additional builds on a daily basis. See [Build Status](https://github.com/Microsoft/ChakraCore/wiki/Build-Status) for the status of all builds. diff --git a/THIRD-PARTY-NOTICES.txt b/THIRD-PARTY-NOTICES.txt index 8228d28c62a..99a23b57248 100644 --- a/THIRD-PARTY-NOTICES.txt +++ b/THIRD-PARTY-NOTICES.txt @@ -1,8 +1,8 @@ -ChakraCore uses third party material from the projects listed below. -The original copyright notice and the license under which Microsoft -received such third party material are set forth below. Microsoft -reserves all other rights not expressly granted, whether by -implication, estoppel or otherwise. +ChakraCore uses third party material from the projects listed below. +The original copyright notice and the license under which Microsoft +received such third party material are set forth below. Microsoft +reserves all other rights not expressly granted, whether by +implication, estoppel or otherwise. In the event that we accidentally failed to list a required notice, please bring it to our attention. Post an issue or email us: @@ -10,7 +10,7 @@ bring it to our attention. Post an issue or email us: chakracore@microsoft.com -------------------------------------------- +------------------------------------------- SunSpider @@ -38,7 +38,7 @@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------- @@ -98,7 +98,7 @@ so, subject to the following conditions: documentation and/or other materials provided with the distribution. * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to + Urbana-Champaign, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. @@ -115,7 +115,7 @@ SOFTWARE. Anything not in the tests/ directory: Copyright (C) 2014 Apple Inc. All rights reserved. - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -124,7 +124,7 @@ Anything not in the tests/ directory: 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR @@ -137,7 +137,7 @@ Anything not in the tests/ directory: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - + ------------------------------------------- Kraken @@ -166,41 +166,41 @@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------- Octane -Copyright (c) 2013, the V8 project authors (http://code.google.com/p/v8/) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of Google, Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Copyright (c) 2013, the V8 project authors (http://code.google.com/p/v8/) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of Google, Inc. nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------- -Catch +Catch Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. @@ -229,3 +229,20 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------------- +WebAssembly/testsuite + +URL of the license https://github.com/WebAssembly/spec/blob/master/LICENSE +https://github.com/WebAssembly/testsuite is a mirror of a subfolder of +https://github.com/WebAssembly/spec + +The files in test/WasmSpec/testsuite are licensed as specified in test/WasmSpec/testsuite/LICENSE +unless otherwise stated in the file + +--------------------------------------------- + +CRC.h + +COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or code or tables +extracted from it, as desired without restriction. + + diff --git a/bin/ChakraCore/ChakraCore.vcxproj b/bin/ChakraCore/ChakraCore.vcxproj index 738936fd993..c0ccab3238f 100644 --- a/bin/ChakraCore/ChakraCore.vcxproj +++ b/bin/ChakraCore/ChakraCore.vcxproj @@ -24,6 +24,7 @@ $(MSBuildThisFileDirectory); $(ChakraCoreRootDirectory)Lib\Common; $(ChakraCoreRootDirectory)Lib\Parser; + $(ChakraCoreRootDirectory)Lib\WasmReader; $(ChakraCoreRootDirectory)Lib\Runtime; $(ChakraCoreRootDirectory)Lib\CodeGenClient; $(ChakraCoreRootDirectory)Lib\Runtime\ByteCode; @@ -157,6 +158,9 @@ {abc904ad-9415-46f8-aa23-e33193f81f7c} + + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD} + {706083f7-6aa4-4558-a153-6352ef9110f6} diff --git a/bin/CoreCommon.ver b/bin/CoreCommon.ver index cd2c54e4aef..5f5c91c0962 100644 --- a/bin/CoreCommon.ver +++ b/bin/CoreCommon.ver @@ -18,8 +18,8 @@ /// CHAKRA_VERSION_BUILD_QFE /// /// Binary version string is composed from the following values: -/// CHAKRA_CORE_MAJOR_VERSION . CHAKRA_CORE_MINOR_VERSION . VER_PRODUCTBUILD . CHAKRA_CORE_VERSION_RELEASE_QFE -/// e.g. 1.2.0.0 +/// CHAKRA_CORE_MAJOR_VERSION . CHAKRA_CORE_MINOR_VERSION . CHAKRA_CORE_PATCH_VERSION . CHAKRA_CORE_VERSION_RELEASE_QFE +/// e.g. 1.2.1.0 /// These fields must be explicitly set in the source. /// Note: VER_PRODUCTBUILD is always set to 0. @@ -30,6 +30,7 @@ #define VER_PRODUCTMAJORVERSION CHAKRA_CORE_MAJOR_VERSION #define VER_PRODUCTMINORVERSION CHAKRA_CORE_MINOR_VERSION +#define VER_PRODUCTPATCHVERSION CHAKRA_CORE_PATCH_VERSION // File Flags #if DBG @@ -126,7 +127,7 @@ #endif // defined(CHAKRA_VERSION_BUILD_NUMBER) && defined(CHAKRA_VERSION_BUILD_QFE) -#define VER_PRODUCTVERSION VER_PRODUCTMAJORVERSION,VER_PRODUCTMINORVERSION,VER_PRODUCTBUILD,VER_PRODUCTBUILD_QFE +#define VER_PRODUCTVERSION VER_PRODUCTMAJORVERSION,VER_PRODUCTMINORVERSION,VER_PRODUCTPATCHVERSION,VER_PRODUCTBUILD_QFE #define VER_PRODUCTVERSION_MAJORMINOR2(x,y) #x "." #y #define VER_PRODUCTVERSION_MAJORMINOR1(x,y) VER_PRODUCTVERSION_MAJORMINOR2(x, y) @@ -136,7 +137,7 @@ #define VER_PRODUCTVERSION_STR3(x) VER_PRODUCTVERSION_STR4(x) #define VER_PRODUCTVERSION_STR2(x,y) VER_PRODUCTVERSION_STRING "." #x "." #y #define VER_PRODUCTVERSION_STR1(x,y) VER_PRODUCTVERSION_STR2(x, y) -#define VER_PRODUCTVERSION_STR VER_PRODUCTVERSION_STR1(VER_PRODUCTBUILD, VER_PRODUCTBUILD_QFE) +#define VER_PRODUCTVERSION_STR VER_PRODUCTVERSION_STR1(VER_PRODUCTPATCHVERSION, VER_PRODUCTBUILD_QFE) #ifdef VER_FILEDESCRIPTION_SUFFIX1_STR #ifdef VER_FILEDESCRIPTION_SUFFIX2_STR diff --git a/bin/ch/ChakraRtInterface.cpp b/bin/ch/ChakraRtInterface.cpp index 2674e810ba1..d783bf5a5fc 100644 --- a/bin/ch/ChakraRtInterface.cpp +++ b/bin/ch/ChakraRtInterface.cpp @@ -103,6 +103,8 @@ bool ChakraRTInterface::LoadChakraDll(ArgInfo* argInfo, HINSTANCE *outLibrary) m_jsApiHooks.pfJsrtDoubleToNumber = (JsAPIHooks::JsrtDoubleToNumberPtr)GetChakraCoreSymbol(library, "JsDoubleToNumber"); m_jsApiHooks.pfJsrtGetExternalData = (JsAPIHooks::JsrtGetExternalDataPtr)GetChakraCoreSymbol(library, "JsGetExternalData"); m_jsApiHooks.pfJsrtCreateArray = (JsAPIHooks::JsrtCreateArrayPtr)GetChakraCoreSymbol(library, "JsCreateArray"); + m_jsApiHooks.pfJsrtCreateArrayBuffer = (JsAPIHooks::JsrtCreateArrayBufferPtr)GetChakraCoreSymbol(library, "JsCreateArrayBuffer"); + m_jsApiHooks.pfJsrtGetArrayBufferStorage = (JsAPIHooks::JsrtGetArrayBufferStoragePtr)GetChakraCoreSymbol(library, "JsGetArrayBufferStorage"); m_jsApiHooks.pfJsrtHasException = (JsAPIHooks::JsrtHasExceptionPtr)GetChakraCoreSymbol(library, "JsHasException"); m_jsApiHooks.pfJsrtSetException = (JsAPIHooks::JsrtSetExceptionPtr)GetChakraCoreSymbol(library, "JsSetException"); m_jsApiHooks.pfJsrtGetAndClearException = (JsAPIHooks::JsrtGetAndClearExceptiopnPtr)GetChakraCoreSymbol(library, "JsGetAndClearException"); diff --git a/bin/ch/ChakraRtInterface.h b/bin/ch/ChakraRtInterface.h index 4cceab6720a..c1a9667b982 100644 --- a/bin/ch/ChakraRtInterface.h +++ b/bin/ch/ChakraRtInterface.h @@ -39,6 +39,8 @@ struct JsAPIHooks typedef JsErrorCode (WINAPI *JsrtDoubleToNumberPtr)(double doubleValue, JsValueRef* value); typedef JsErrorCode (WINAPI *JsrtGetExternalDataPtr)(JsValueRef object, void **data); typedef JsErrorCode (WINAPI *JsrtCreateArrayPtr)(unsigned int length, JsValueRef *result); + typedef JsErrorCode (WINAPI *JsrtCreateArrayBufferPtr)(unsigned int byteLength, JsValueRef *result); + typedef JsErrorCode (WINAPI *JsrtGetArrayBufferStoragePtr)(JsValueRef instance, BYTE **buffer, unsigned int *bufferLength); typedef JsErrorCode (WINAPI *JsrtCreateErrorPtr)(JsValueRef message, JsValueRef *error); typedef JsErrorCode (WINAPI *JsrtHasExceptionPtr)(bool *hasException); typedef JsErrorCode (WINAPI *JsrtSetExceptionPtr)(JsValueRef exception); @@ -132,6 +134,8 @@ struct JsAPIHooks JsrtDoubleToNumberPtr pfJsrtDoubleToNumber; JsrtGetExternalDataPtr pfJsrtGetExternalData; JsrtCreateArrayPtr pfJsrtCreateArray; + JsrtCreateArrayBufferPtr pfJsrtCreateArrayBuffer; + JsrtGetArrayBufferStoragePtr pfJsrtGetArrayBufferStorage; JsrtCreateErrorPtr pfJsrtCreateError; JsrtHasExceptionPtr pfJsrtHasException; JsrtSetExceptionPtr pfJsrtSetException; @@ -244,6 +248,9 @@ class ChakraRTInterface #ifdef DEBUG static HRESULT SetCheckOpHelpersFlag(bool flag) { return CHECKED_CALL(SetCheckOpHelpersFlag, flag); } #endif +#ifdef ENABLE_DEBUG_CONFIG_OPTIONS + static HRESULT SetOOPCFGRegistrationFlag(bool flag) { return CHECKED_CALL(SetOOPCFGRegistrationFlag, flag); } +#endif static HRESULT GetCrashOnExceptionFlag(bool * flag) { @@ -308,6 +315,8 @@ class ChakraRTInterface static JsErrorCode WINAPI JsDoubleToNumber(double doubleValue, JsValueRef* value) { return HOOK_JS_API(DoubleToNumber(doubleValue, value)); } static JsErrorCode WINAPI JsGetExternalData(JsValueRef object, void **data) { return HOOK_JS_API(GetExternalData(object, data)); } static JsErrorCode WINAPI JsCreateArray(unsigned int length, JsValueRef *result) { return HOOK_JS_API(CreateArray(length, result)); } + static JsErrorCode WINAPI JsCreateArrayBuffer(unsigned int byteLength, JsValueRef *result) { return m_jsApiHooks.pfJsrtCreateArrayBuffer(byteLength, result); } + static JsErrorCode WINAPI JsGetArrayBufferStorage(JsValueRef instance, BYTE **buffer, unsigned int *bufferLength) { return m_jsApiHooks.pfJsrtGetArrayBufferStorage(instance, buffer, bufferLength); } static JsErrorCode WINAPI JsCreateError(JsValueRef message, JsValueRef *error) { return HOOK_JS_API(CreateError(message, error)); } static JsErrorCode WINAPI JsHasException(bool *hasException) { return HOOK_JS_API(HasException(hasException)); } static JsErrorCode WINAPI JsSetException(JsValueRef exception) { return HOOK_JS_API(SetException(exception)); } diff --git a/bin/ch/Helpers.cpp b/bin/ch/Helpers.cpp index 31509a1565e..fb61a74fe0e 100644 --- a/bin/ch/Helpers.cpp +++ b/bin/ch/Helpers.cpp @@ -438,6 +438,81 @@ void Helpers::LogError(__in __nullterminated const char16 *msg, ...) va_end(args); } +HRESULT Helpers::LoadBinaryFile(LPCSTR filename, LPCSTR& contents, UINT& lengthBytes, bool printFileOpenError) +{ + HRESULT hr = S_OK; + contents = nullptr; + lengthBytes = 0; + size_t result; + FILE * file; + + // + // Open the file as a binary file to prevent CRT from handling encoding, line-break conversions, + // etc. + // + if (fopen_s(&file, filename, "rb") != 0) + { + if (printFileOpenError) + { +#ifdef _WIN32 + DWORD lastError = GetLastError(); + char16 wszBuff[512]; + fprintf(stderr, "Error in opening file '%s' ", filename); + wszBuff[0] = 0; + if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + nullptr, + lastError, + 0, + wszBuff, + _countof(wszBuff), + nullptr)) + { + fwprintf(stderr, _u(": %s"), wszBuff); + } +#endif + fprintf(stderr, "\n"); + IfFailGo(E_FAIL); + } + else + { + return E_FAIL; + } + } + // file will not be nullptr if _wfopen_s succeeds + __analysis_assume(file != nullptr); + + // + // Determine the file length, in bytes. + // + fseek(file, 0, SEEK_END); + lengthBytes = ftell(file); + fseek(file, 0, SEEK_SET); + contents = (LPCSTR)HeapAlloc(GetProcessHeap(), 0, lengthBytes); + if (nullptr == contents) + { + fwprintf(stderr, _u("out of memory")); + IfFailGo(E_OUTOFMEMORY); + } + // + // Read the entire content as a binary block. + // + result = fread((void*)contents, sizeof(char), lengthBytes, file); + if (result != lengthBytes) + { + fwprintf(stderr, _u("Read error")); + IfFailGo(E_FAIL); + } + fclose(file); + +Error: + if (contents && FAILED(hr)) + { + HeapFree(GetProcessHeap(), 0, (void*)contents); + contents = nullptr; + } + + return hr; +} void Helpers::TTReportLastIOErrorAsNeeded(BOOL ok, const char* msg) { if(!ok) diff --git a/bin/ch/Helpers.h b/bin/ch/Helpers.h index 6d3b20bd633..5da26213af0 100644 --- a/bin/ch/Helpers.h +++ b/bin/ch/Helpers.h @@ -10,6 +10,7 @@ public : static HRESULT LoadScriptFromFile(LPCSTR filename, LPCSTR& contents, UINT* lengthBytesOut = nullptr); static LPCWSTR JsErrorCodeToString(JsErrorCode jsErrorCode); static void LogError(__in __nullterminated const char16 *msg, ...); + static HRESULT LoadBinaryFile(LPCSTR filename, LPCSTR& contents, UINT& lengthBytes, bool printFileOpenError = true); static void TTReportLastIOErrorAsNeeded(BOOL ok, const char* msg); static void CreateDirectoryIfNeeded(size_t uriByteLength, const byte* uriBytes); diff --git a/bin/ch/HostConfigFlagsList.h b/bin/ch/HostConfigFlagsList.h index 6c15d74028d..3f73f2beee8 100644 --- a/bin/ch/HostConfigFlagsList.h +++ b/bin/ch/HostConfigFlagsList.h @@ -9,7 +9,7 @@ FLAG(bool, DebugLaunch, "Create the test debugger and execut FLAG(BSTR, GenerateLibraryByteCodeHeader, "Generate bytecode header file from library code", NULL) FLAG(int, InspectMaxStringLength, "Max string length to dump in locals inspection", 16) FLAG(BSTR, Serialized, "If source is UTF8, deserializes from bytecode file", NULL) -FLAG(bool, EnableOutOfProcJIT, "Run JIT in a separate process", false) -FLAG(bool, EnsureCloseJITServer, "JIT process will be force closed when ch is terminated", false) +FLAG(bool, OOPJIT, "Run JIT in a separate process", false) +FLAG(bool, EnsureCloseJITServer, "JIT process will be force closed when ch is terminated", true) #undef FLAG #endif diff --git a/bin/ch/JITProcessManager.cpp b/bin/ch/JITProcessManager.cpp index 7fd917c7d8a..e20cfb9369c 100644 --- a/bin/ch/JITProcessManager.cpp +++ b/bin/ch/JITProcessManager.cpp @@ -67,7 +67,11 @@ HRESULT JITProcessManager::CreateServerProcess(int argc, __in_ecount(argc) LPWST RPC_WSTR connectionUuidString = NULL; #pragma warning(suppress: 6386) // buffer overrun +#ifdef ENABLE_DEBUG_CONFIG_OPTIONS + hr = StringCchCopyW(cmdLine, cmdLineSize, L"ch.exe -OOPCFGRegistration- -CheckOpHelpers -jitserver:"); +#else hr = StringCchCopyW(cmdLine, cmdLineSize, L"ch.exe -jitserver:"); +#endif if (FAILED(hr)) { return hr; diff --git a/bin/ch/WScriptJsrt.cpp b/bin/ch/WScriptJsrt.cpp index 7310b8e1fdb..1766980e750 100644 --- a/bin/ch/WScriptJsrt.cpp +++ b/bin/ch/WScriptJsrt.cpp @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "stdafx.h" @@ -812,6 +812,8 @@ bool WScriptJsrt::Initialize() IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "Detach", DetachCallback)); IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "DumpFunctionPosition", DumpFunctionPositionCallback)); IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "RequestAsyncBreak", RequestAsyncBreakCallback)); + IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "LoadBinaryFile", LoadBinaryFileCallback)); + IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "LoadTextFile", LoadTextFileCallback)); // ToDo Remove IfFalseGo(WScriptJsrt::InstallObjectsOnObject(wscript, "Edit", EmptyCallback)); @@ -878,6 +880,9 @@ bool WScriptJsrt::Initialize() IfFalseGo(WScriptJsrt::InstallObjectsOnObject(global, "print", EchoCallback)); + IfFalseGo(WScriptJsrt::InstallObjectsOnObject(global, "read", LoadTextFileCallback)); + IfFalseGo(WScriptJsrt::InstallObjectsOnObject(global, "readbuffer", LoadBinaryFileCallback)); + JsValueRef console; IfJsrtErrorFail(ChakraRTInterface::JsCreateObject(&console), false); IfFalseGo(WScriptJsrt::InstallObjectsOnObject(console, "log", EchoCallback)); @@ -890,6 +895,100 @@ bool WScriptJsrt::Initialize() return hr == S_OK; } +JsValueRef __stdcall WScriptJsrt::LoadTextFileCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState) +{ + HRESULT hr = E_FAIL; + JsValueRef returnValue = JS_INVALID_REFERENCE; + JsErrorCode errorCode = JsNoError; + + if (argumentCount < 2) + { + IfJsrtErrorSetGo(ChakraRTInterface::JsGetUndefinedValue(&returnValue)); + } + else + { + const char *fileContent; + AutoString fileName; + size_t fileNameLength; + + IfJsrtErrorSetGo(ChakraRTInterface::JsStringToPointerUtf8Copy(arguments[1], &fileName, &fileNameLength)); + + if (errorCode == JsNoError) + { + UINT lengthBytes = 0; + hr = Helpers::LoadScriptFromFile(*fileName, fileContent, &lengthBytes); + + if (FAILED(hr)) + { + fwprintf(stderr, _u("Couldn't load file.\n")); + IfJsrtErrorSetGo(ChakraRTInterface::JsGetUndefinedValue(&returnValue)); + } + else + { + JsValueRef stringObject; + IfJsrtErrorSetGo(ChakraRTInterface::JsPointerToStringUtf8(fileContent, lengthBytes, &stringObject)); + return stringObject; + } + } + } + +Error: + return returnValue; +} + +JsValueRef __stdcall WScriptJsrt::LoadBinaryFileCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState) +{ + HRESULT hr = E_FAIL; + JsValueRef returnValue = JS_INVALID_REFERENCE; + JsErrorCode errorCode = JsNoError; + + if (argumentCount < 2) + { + IfJsrtErrorSetGo(ChakraRTInterface::JsGetUndefinedValue(&returnValue)); + } + else + { + const char *fileContent; + AutoString fileName; + size_t fileNameLength; + + IfJsrtErrorSetGo(ChakraRTInterface::JsStringToPointerUtf8Copy(arguments[1], &fileName, &fileNameLength)); + + if (errorCode == JsNoError) + { + UINT lengthBytes = 0; + + hr = Helpers::LoadBinaryFile(*fileName, fileContent, lengthBytes); + if (FAILED(hr)) + { + fwprintf(stderr, _u("Couldn't load file.\n")); + } + else + { + JsValueRef arrayBuffer; + IfJsrtErrorSetGo(ChakraRTInterface::JsCreateArrayBuffer(lengthBytes, &arrayBuffer)); + BYTE* buffer; + unsigned int bufferLength; + IfJsrtErrorSetGo(ChakraRTInterface::JsGetArrayBufferStorage(arrayBuffer, &buffer, &bufferLength)); + if (bufferLength < lengthBytes) + { + fwprintf(stderr, _u("Array buffer size is insufficient to store the binary file.\n")); + } + else + { + if (memcpy_s(buffer, bufferLength, (BYTE*)fileContent, lengthBytes) == 0) + { + returnValue = arrayBuffer; + } + } + } + } + } + +Error: + return returnValue; +} + bool WScriptJsrt::PrintException(LPCSTR fileName, JsErrorCode jsErrorCode) { LPCWSTR errorTypeString = ConvertErrorCodeToMessage(jsErrorCode); diff --git a/bin/ch/WScriptJsrt.h b/bin/ch/WScriptJsrt.h index 4044fb50bc5..676527f1310 100644 --- a/bin/ch/WScriptJsrt.h +++ b/bin/ch/WScriptJsrt.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #pragma once @@ -105,6 +105,9 @@ class WScriptJsrt static JsErrorCode __stdcall LoadModuleFromString(LPCSTR fileName, LPCSTR fileContent); static JsErrorCode __stdcall InitializeModuleInfo(JsValueRef specifier, JsModuleRecord moduleRecord); + static JsValueRef __stdcall LoadBinaryFileCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState); + static JsValueRef __stdcall LoadTextFileCallback(JsValueRef callee, bool isConstructCall, JsValueRef *arguments, unsigned short argumentCount, void *callbackState); + static MessageQueue *messageQueue; static DWORD_PTR sourceContext; static std::map moduleRecordMap; diff --git a/bin/ch/ch.cpp b/bin/ch/ch.cpp index 2fc4aedd578..c6306512c5e 100644 --- a/bin/ch/ch.cpp +++ b/bin/ch/ch.cpp @@ -537,6 +537,9 @@ HRESULT ExecuteTest(const char* fileName) #ifdef DEBUG ChakraRTInterface::SetCheckOpHelpersFlag(true); #endif +#ifdef ENABLE_DEBUG_CONFIG_OPTIONS + ChakraRTInterface::SetOOPCFGRegistrationFlag(false); +#endif if (!WScriptJsrt::Initialize()) { @@ -829,7 +832,7 @@ int _cdecl wmain(int argc, __in_ecount(argc) LPWSTR argv[]) { #ifdef _WIN32 #if ENABLE_NATIVE_CODEGEN - if (HostConfigFlags::flags.EnableOutOfProcJIT) + if (HostConfigFlags::flags.OOPJIT) { // TODO: Error checking JITProcessManager::StartRpcServer(argc, argv); diff --git a/jenkins/check_copyright.sh b/jenkins/check_copyright.sh index 3e4d9c14b07..d06a77d848b 100755 --- a/jenkins/check_copyright.sh +++ b/jenkins/check_copyright.sh @@ -26,6 +26,7 @@ git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E '\.txt$' | grep -v -E '\.baseline$' | grep -v -E '\.sln$' | + grep -v -E '\.wasm$' | grep -v -E '\.vcxproj$' | grep -v -E '\.filters$' | grep -v -E '\.targets$' | @@ -33,11 +34,14 @@ git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E '\.def$' | grep -v -E '\.inc$' | grep -v -E '\.cmake$' | + grep -v -E '\.json$' | + grep -v -E 'test/WasmSpec/testsuite/.*$' | grep -v -E 'test/benchmarks/.*\.js$' | grep -v -E 'bin/External/.*$' | grep -v -E 'bin/NativeTests/Scripts/splay.js$' | grep -v -E 'pal/.*' | grep -v -E 'libChakraCoreLib.version|ch.version' | + grep -v -E 'lib/Backend/CRC.h' | xargs -I % sh -c "echo 'Check Copyright > Checking %'; python jenkins/check_copyright.py % > $ERRFILETEMP || cat $ERRFILETEMP >> $ERRFILE" rm -f $ERRFILETEMP diff --git a/jenkins/check_eol.sh b/jenkins/check_eol.sh index e9402c12402..689c0181a9e 100755 --- a/jenkins/check_eol.sh +++ b/jenkins/check_eol.sh @@ -15,7 +15,7 @@ fi ERRFILE=check_eol.sh.err rm -f $ERRFILE -git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E "(test/.*\\.js|\\.cmd|\\.baseline)" | xargs -I % ./jenkins/check_file_eol.sh % +git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E "(test/.*\\.js|\\.cmd|\\.baseline|\\.wasm)" | xargs -I % ./jenkins/check_file_eol.sh % if [ -e $ERRFILE ]; then # if error file exists then there were errors >&2 echo "--------------" # leading >&2 means echo to stderr diff --git a/jenkins/check_tabs.sh b/jenkins/check_tabs.sh index fcbecdc25d5..913cee0857f 100755 --- a/jenkins/check_tabs.sh +++ b/jenkins/check_tabs.sh @@ -23,6 +23,8 @@ git diff --name-only `git merge-base origin/master HEAD` HEAD | grep -v -E '\.sln$' | grep -v -E '\.js$' | grep -v -E '\.baseline$' | + grep -v -E '\.wasm$' | + grep -v -E '\.wast$' | grep -v -E 'bin/External/.*$' | xargs -I % sh -c 'echo --- IN FILE % ---; git blame HEAD -- % | grep -P "(\t|--- IN FILE)"' > check_tabs.sh.err diff --git a/lib/Backend/AsmJsJITInfo.cpp b/lib/Backend/AsmJsJITInfo.cpp index b3561e59c9f..d257939624b 100644 --- a/lib/Backend/AsmJsJITInfo.cpp +++ b/lib/Backend/AsmJsJITInfo.cpp @@ -5,6 +5,7 @@ #include "Backend.h" +#ifdef ASMJS_PLAT AsmJsJITInfo::AsmJsJITInfo(AsmJsDataIDL * data) : m_data(*data) { @@ -162,3 +163,4 @@ AsmJsJITInfo::AccessNeedsBoundCheck(uint offset) const // Normally, heap has min size of 0x10000, but if you use ChangeHeap, min heap size is increased to 0x1000000 return offset >= 0x1000000 || (IsHeapBufferConst() && offset >= 0x10000); } +#endif \ No newline at end of file diff --git a/lib/Backend/AsmJsJITInfo.h b/lib/Backend/AsmJsJITInfo.h index 8af8345c9ea..8405c6e6d62 100644 --- a/lib/Backend/AsmJsJITInfo.h +++ b/lib/Backend/AsmJsJITInfo.h @@ -7,6 +7,7 @@ class AsmJsJITInfo { +#ifdef ASMJS_PLAT public: AsmJsJITInfo(AsmJsDataIDL * data); @@ -40,4 +41,5 @@ class AsmJsJITInfo private: AsmJsDataIDL m_data; +#endif }; diff --git a/lib/Backend/BackendOpCodeAttrAsmJs.cpp b/lib/Backend/BackendOpCodeAttrAsmJs.cpp index 9868a1d3ecb..5231ff3b87a 100644 --- a/lib/Backend/BackendOpCodeAttrAsmJs.cpp +++ b/lib/Backend/BackendOpCodeAttrAsmJs.cpp @@ -4,6 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "Backend.h" +#ifdef ASMJS_PLAT namespace OpCodeAttrAsmJs { // OpSideEffect: @@ -66,3 +67,4 @@ namespace OpCodeAttrAsmJs }; // OpCodeAttrAsmJs +#endif \ No newline at end of file diff --git a/lib/Backend/BackendOpCodeAttrAsmJs.h b/lib/Backend/BackendOpCodeAttrAsmJs.h index 3c6f34791cd..ec1ef80f264 100644 --- a/lib/Backend/BackendOpCodeAttrAsmJs.h +++ b/lib/Backend/BackendOpCodeAttrAsmJs.h @@ -2,6 +2,7 @@ // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- +#ifdef ASMJS_PLAT namespace OpCodeAttrAsmJs { // False if the opcode results in jump to end of the function and there cannot be fallthrough. @@ -9,3 +10,4 @@ namespace OpCodeAttrAsmJs // True if the opcode has a small/large layout bool HasMultiSizeLayout(Js::OpCodeAsmJs opcode); }; +#endif \ No newline at end of file diff --git a/lib/Backend/BackwardPass.cpp b/lib/Backend/BackwardPass.cpp index 723abcd4ab0..22e5a71473c 100644 --- a/lib/Backend/BackwardPass.cpp +++ b/lib/Backend/BackwardPass.cpp @@ -4344,7 +4344,7 @@ BackwardPass::TrackObjTypeSpecProperties(IR::PropertySymOpnd *opnd, BasicBlock * //Assert(!existingFldInfo->IsPoly() || !opnd->IsPoly() || GlobOpt::AreTypeSetsIdentical(existingFldInfo->GetEquivalentTypeSet(), opnd->GetEquivalentTypeSet())); //Assert(existingFldInfo->GetSlotIndex() == opnd->GetSlotIndex()); - if (PHASE_TRACE(Js::EquivObjTypeSpecPhase, this->func)) + if (PHASE_TRACE(Js::EquivObjTypeSpecPhase, this->func) && !JITManager::GetJITManager()->IsJITServer()) { if (existingFldInfo->IsPoly() && opnd->IsPoly() && (!GlobOpt::AreTypeSetsIdentical(existingFldInfo->GetEquivalentTypeSet(), opnd->GetEquivalentTypeSet()) || @@ -4354,7 +4354,7 @@ BackwardPass::TrackObjTypeSpecProperties(IR::PropertySymOpnd *opnd, BasicBlock * Output::Print(_u("EquivObjTypeSpec: top function %s (%s): duplicate property clash on %s(#%d) on operation %u \n"), this->func->GetJITFunctionBody()->GetDisplayName(), this->func->GetDebugNumberSet(debugStringBuffer), - this->func->GetThreadContextInfo()->GetPropertyRecord(opnd->GetPropertyId())->GetBuffer(), opnd->GetPropertyId(), opnd->GetObjTypeSpecFldId()); + this->func->GetInProcThreadContext()->GetPropertyRecord(opnd->GetPropertyId())->GetBuffer(), opnd->GetPropertyId(), opnd->GetObjTypeSpecFldId()); Output::Flush(); } } diff --git a/lib/Backend/BailOut.cpp b/lib/Backend/BailOut.cpp index 7441613e91d..c4186352d46 100644 --- a/lib/Backend/BailOut.cpp +++ b/lib/Backend/BailOut.cpp @@ -2091,7 +2091,15 @@ void BailOutRecord::ScheduleFunctionCodeGen(Js::ScriptFunction * function, Js::S break; case IR::BailOutOnTaggedValue: - rejitReason = RejitReason::FailedTagCheck; + if (profileInfo->IsTagCheckDisabled()) + { + reThunk = true; + } + else + { + profileInfo->DisableTagCheck(); + rejitReason = RejitReason::FailedTagCheck; + } break; case IR::BailOutFailedTypeCheck: @@ -2531,6 +2539,8 @@ void BailOutRecord::ScheduleLoopBodyCodeGen(Js::ScriptFunction * function, Js::S break; case IR::BailOutOnTaggedValue: + profileInfo->DisableTagCheck(); + executeFunction->SetDontRethunkAfterBailout(); rejitReason = RejitReason::FailedTagCheck; break; diff --git a/lib/Backend/CRC.h b/lib/Backend/CRC.h new file mode 100644 index 00000000000..6d3e400d3ab --- /dev/null +++ b/lib/Backend/CRC.h @@ -0,0 +1,51 @@ +/* +* CRC32 code derived from work by Gary S. Brown. +*/ + +/* +* Pre-populated Table used for calculating CRC32. +*/ +static const unsigned int crc_32_tab[] = +{ + 0x00000000L, 0x77073096L, 0xEE0E612CL, 0x990951BAL, 0x076DC419L, 0x706AF48FL, 0xE963A535L, 0x9E6495A3L, + 0x0EDB8832L, 0x79DCB8A4L, 0xE0D5E91EL, 0x97D2D988L, 0x09B64C2BL, 0x7EB17CBDL, 0xE7B82D07L, 0x90BF1D91L, + 0x1DB71064L, 0x6AB020F2L, 0xF3B97148L, 0x84BE41DEL, 0x1ADAD47DL, 0x6DDDE4EBL, 0xF4D4B551L, 0x83D385C7L, + 0x136C9856L, 0x646BA8C0L, 0xFD62F97AL, 0x8A65C9ECL, 0x14015C4FL, 0x63066CD9L, 0xFA0F3D63L, 0x8D080DF5L, + 0x3B6E20C8L, 0x4C69105EL, 0xD56041E4L, 0xA2677172L, 0x3C03E4D1L, 0x4B04D447L, 0xD20D85FDL, 0xA50AB56BL, + 0x35B5A8FAL, 0x42B2986CL, 0xDBBBC9D6L, 0xACBCF940L, 0x32D86CE3L, 0x45DF5C75L, 0xDCD60DCFL, 0xABD13D59L, + 0x26D930ACL, 0x51DE003AL, 0xC8D75180L, 0xBFD06116L, 0x21B4F4B5L, 0x56B3C423L, 0xCFBA9599L, 0xB8BDA50FL, + 0x2802B89EL, 0x5F058808L, 0xC60CD9B2L, 0xB10BE924L, 0x2F6F7C87L, 0x58684C11L, 0xC1611DABL, 0xB6662D3DL, + 0x76DC4190L, 0x01DB7106L, 0x98D220BCL, 0xEFD5102AL, 0x71B18589L, 0x06B6B51FL, 0x9FBFE4A5L, 0xE8B8D433L, + 0x7807C9A2L, 0x0F00F934L, 0x9609A88EL, 0xE10E9818L, 0x7F6A0DBBL, 0x086D3D2DL, 0x91646C97L, 0xE6635C01L, + 0x6B6B51F4L, 0x1C6C6162L, 0x856530D8L, 0xF262004EL, 0x6C0695EDL, 0x1B01A57BL, 0x8208F4C1L, 0xF50FC457L, + 0x65B0D9C6L, 0x12B7E950L, 0x8BBEB8EAL, 0xFCB9887CL, 0x62DD1DDFL, 0x15DA2D49L, 0x8CD37CF3L, 0xFBD44C65L, + 0x4DB26158L, 0x3AB551CEL, 0xA3BC0074L, 0xD4BB30E2L, 0x4ADFA541L, 0x3DD895D7L, 0xA4D1C46DL, 0xD3D6F4FBL, + 0x4369E96AL, 0x346ED9FCL, 0xAD678846L, 0xDA60B8D0L, 0x44042D73L, 0x33031DE5L, 0xAA0A4C5FL, 0xDD0D7CC9L, + 0x5005713CL, 0x270241AAL, 0xBE0B1010L, 0xC90C2086L, 0x5768B525L, 0x206F85B3L, 0xB966D409L, 0xCE61E49FL, + 0x5EDEF90EL, 0x29D9C998L, 0xB0D09822L, 0xC7D7A8B4L, 0x59B33D17L, 0x2EB40D81L, 0xB7BD5C3BL, 0xC0BA6CADL, + 0xEDB88320L, 0x9ABFB3B6L, 0x03B6E20CL, 0x74B1D29AL, 0xEAD54739L, 0x9DD277AFL, 0x04DB2615L, 0x73DC1683L, + 0xE3630B12L, 0x94643B84L, 0x0D6D6A3EL, 0x7A6A5AA8L, 0xE40ECF0BL, 0x9309FF9DL, 0x0A00AE27L, 0x7D079EB1L, + 0xF00F9344L, 0x8708A3D2L, 0x1E01F268L, 0x6906C2FEL, 0xF762575DL, 0x806567CBL, 0x196C3671L, 0x6E6B06E7L, + 0xFED41B76L, 0x89D32BE0L, 0x10DA7A5AL, 0x67DD4ACCL, 0xF9B9DF6FL, 0x8EBEEFF9L, 0x17B7BE43L, 0x60B08ED5L, + 0xD6D6A3E8L, 0xA1D1937EL, 0x38D8C2C4L, 0x4FDFF252L, 0xD1BB67F1L, 0xA6BC5767L, 0x3FB506DDL, 0x48B2364BL, + 0xD80D2BDAL, 0xAF0A1B4CL, 0x36034AF6L, 0x41047A60L, 0xDF60EFC3L, 0xA867DF55L, 0x316E8EEFL, 0x4669BE79L, + 0xCB61B38CL, 0xBC66831AL, 0x256FD2A0L, 0x5268E236L, 0xCC0C7795L, 0xBB0B4703L, 0x220216B9L, 0x5505262FL, + 0xC5BA3BBEL, 0xB2BD0B28L, 0x2BB45A92L, 0x5CB36A04L, 0xC2D7FFA7L, 0xB5D0CF31L, 0x2CD99E8BL, 0x5BDEAE1DL, + 0x9B64C2B0L, 0xEC63F226L, 0x756AA39CL, 0x026D930AL, 0x9C0906A9L, 0xEB0E363FL, 0x72076785L, 0x05005713L, + 0x95BF4A82L, 0xE2B87A14L, 0x7BB12BAEL, 0x0CB61B38L, 0x92D28E9BL, 0xE5D5BE0DL, 0x7CDCEFB7L, 0x0BDBDF21L, + 0x86D3D2D4L, 0xF1D4E242L, 0x68DDB3F8L, 0x1FDA836EL, 0x81BE16CDL, 0xF6B9265BL, 0x6FB077E1L, 0x18B74777L, + 0x88085AE6L, 0xFF0F6A70L, 0x66063BCAL, 0x11010B5CL, 0x8F659EFFL, 0xF862AE69L, 0x616BFFD3L, 0x166CCF45L, + 0xA00AE278L, 0xD70DD2EEL, 0x4E048354L, 0x3903B3C2L, 0xA7672661L, 0xD06016F7L, 0x4969474DL, 0x3E6E77DBL, + 0xAED16A4AL, 0xD9D65ADCL, 0x40DF0B66L, 0x37D83BF0L, 0xA9BCAE53L, 0xDEBB9EC5L, 0x47B2CF7FL, 0x30B5FFE9L, + 0xBDBDF21CL, 0xCABAC28AL, 0x53B39330L, 0x24B4A3A6L, 0xBAD03605L, 0xCDD70693L, 0x54DE5729L, 0x23D967BFL, + 0xB3667A2EL, 0xC4614AB8L, 0x5D681B02L, 0x2A6F2B94L, 0xB40BBE37L, 0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL +}; + +static unsigned int CalculateCRC32(unsigned int bufferCRC, size_t data) +{ + /* update running CRC calculation with contents of a buffer */ + + bufferCRC = bufferCRC ^ 0xffffffffL; + bufferCRC = crc_32_tab[(bufferCRC ^ data) & 0xFF] ^ (bufferCRC >> 8); + return (bufferCRC ^ 0xffffffffL); +} \ No newline at end of file diff --git a/lib/Backend/CaseNode.cpp b/lib/Backend/CaseNode.cpp index fa7dba43838..8cb20d7807d 100644 --- a/lib/Backend/CaseNode.cpp +++ b/lib/Backend/CaseNode.cpp @@ -7,8 +7,8 @@ int DefaultComparer::Compare(CaseNode* caseNode1, CaseNode* caseNode2) { - int caseVal1 = caseNode1->GetSrc2IntConst(); - int caseVal2 = caseNode2->GetSrc2IntConst(); + int caseVal1 = caseNode1->GetUpperBoundIntConst(); + int caseVal2 = caseNode2->GetUpperBoundIntConst(); uint32 caseOffset1 = caseNode1->GetOffset(); uint32 caseOffset2 = caseNode2->GetOffset(); @@ -24,16 +24,16 @@ DefaultComparer::Compare(CaseNode* caseNode1, CaseNode* caseNode2) bool DefaultComparer::Equals(CaseNode * caseNode1, CaseNode* caseNode2) { - if(caseNode1->IsSrc2IntConst() && caseNode2->IsSrc2IntConst()) + if(caseNode1->IsUpperBoundIntConst() && caseNode2->IsUpperBoundIntConst()) { - int caseVal1 = caseNode1->GetSrc2IntConst(); - int caseVal2 = caseNode2->GetSrc2IntConst(); + int caseVal1 = caseNode1->GetUpperBoundIntConst(); + int caseVal2 = caseNode2->GetUpperBoundIntConst(); return caseVal1 == caseVal2; } - else if(caseNode1->IsSrc2StrConst() && caseNode2->IsSrc2StrConst()) + else if(caseNode1->IsUpperBoundStrConst() && caseNode2->IsUpperBoundStrConst()) { - JITJavascriptString * caseVal1 = caseNode1->GetSrc2StringConst(); - JITJavascriptString * caseVal2 = caseNode2->GetSrc2StringConst(); + JITJavascriptString * caseVal1 = caseNode1->GetUpperBoundStrConst(); + JITJavascriptString * caseVal2 = caseNode2->GetUpperBoundStrConst(); return JITJavascriptString::Equals(caseVal1, caseVal2); } else @@ -46,5 +46,5 @@ DefaultComparer::Equals(CaseNode * caseNode1, CaseNode* caseNode2) uint DefaultComparer::GetHashCode(CaseNode* caseNode) { - return (uint)caseNode->GetSrc2IntConst(); + return (uint)caseNode->GetUpperBoundIntConst(); } diff --git a/lib/Backend/CaseNode.h b/lib/Backend/CaseNode.h index 17c66d0724e..5bc3152c49b 100644 --- a/lib/Backend/CaseNode.h +++ b/lib/Backend/CaseNode.h @@ -16,6 +16,22 @@ class CaseNode IR::BranchInstr* caseInstr; // caseInstr - stores the case instruction IR::Opnd* lowerBound; // lowerBound - used for integer cases + int32 GetIntConst(IR::Opnd* opnd) + { + Assert(IsIntConst(opnd)); + return opnd->IsIntConstOpnd() ? opnd->AsIntConstOpnd()->AsInt32() : opnd->GetStackSym()->GetIntConstValue(); + } + + bool IsIntConst(IR::Opnd* opnd) + { + return opnd->IsIntConstOpnd() || opnd->GetStackSym()->IsIntConst(); + } + + bool IsStrConst(IR::Opnd* opnd) + { + return opnd->GetStackSym()->m_isStrConst; + } + public: CaseNode(IR::BranchInstr* caseInstr, uint32 offset, uint32 targetOffset, IR::Opnd* lowerBound = nullptr) : caseInstr(caseInstr), @@ -25,32 +41,50 @@ class CaseNode { } - int32 GetSrc2IntConst() + int32 GetUpperBoundIntConst() + { + AssertMsg(IsUpperBoundIntConst(), "Source2 operand is not an integer constant"); + return GetIntConst(GetUpperBound()); + } + + JITJavascriptString* GetUpperBoundStringConstLocal() + { + AssertMsg(IsUpperBoundStrConst(), "Upper bound operand is not a string constant"); + return JITJavascriptString::FromVar(GetUpperBound()->GetStackSym()->GetConstAddress(true)); + } + + JITJavascriptString* GetUpperBoundStrConst() { - AssertMsg(caseInstr->GetSrc2()->GetStackSym()->IsIntConst(),"Source2 operand is not an integer constant"); - return caseInstr->GetSrc2()->GetStackSym()->GetIntConstValue(); + AssertMsg(IsUpperBoundStrConst(), "Upper bound operand is not a string constant"); + return static_cast(GetUpperBound()->GetStackSym()->GetConstAddress(false)); } - JITJavascriptString* GetSrc2StringConstLocal() + bool IsUpperBoundIntConst() { - AssertMsg(caseInstr->GetSrc2()->GetStackSym()->m_isStrConst,"Source2 operand is not an integer constant"); - return JITJavascriptString::FromVar(caseInstr->GetSrc2()->GetStackSym()->GetConstAddress(true)); + return IsIntConst(GetUpperBound()); } - JITJavascriptString* GetSrc2StringConst() + + bool IsUpperBoundStrConst() { - AssertMsg(caseInstr->GetSrc2()->GetStackSym()->m_isStrConst, "Source2 operand is not an integer constant"); - return static_cast(caseInstr->GetSrc2()->GetStackSym()->GetConstAddress(false)); + return IsStrConst(GetUpperBound()); } - bool IsSrc2IntConst() + int32 GetLowerBoundIntConst() { - return caseInstr->GetSrc2()->GetStackSym()->IsIntConst(); + AssertMsg(IsLowerBoundIntConst(), "LowerBound is not an integer constant"); + return GetIntConst(lowerBound); } - bool IsSrc2StrConst() + bool IsLowerBoundIntConst() { - return caseInstr->GetSrc2()->GetStackSym()->m_isStrConst; + return IsIntConst(lowerBound); } + + bool IsLowerBoundStrConst() + { + return IsStrConst(lowerBound); + } + uint32 GetOffset() { return offset; diff --git a/lib/Backend/Chakra.Backend.vcxproj b/lib/Backend/Chakra.Backend.vcxproj index ff80b11678e..8e3654db560 100644 --- a/lib/Backend/Chakra.Backend.vcxproj +++ b/lib/Backend/Chakra.Backend.vcxproj @@ -34,6 +34,7 @@ $(MSBuildThisFileDirectory)..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\Runtime\Math; $(MSBuildThisFileDirectory)..\Parser; + $(MSBuildThisFileDirectory)..\WasmReader; $(ChakraJITIDLIntDir); %(AdditionalIncludeDirectories) @@ -179,6 +180,7 @@ + @@ -402,6 +404,7 @@ + true @@ -454,10 +457,15 @@ {0db5ecbc-9385-4a65-be2c-4ef7c65cb719} + + + CppCode + + - \ No newline at end of file + diff --git a/lib/Backend/Chakra.Backend.vcxproj.filters b/lib/Backend/Chakra.Backend.vcxproj.filters index b401b58862b..d16f478b75f 100644 --- a/lib/Backend/Chakra.Backend.vcxproj.filters +++ b/lib/Backend/Chakra.Backend.vcxproj.filters @@ -126,6 +126,7 @@ + @@ -336,6 +337,8 @@ + + diff --git a/lib/Backend/Encoder.cpp b/lib/Backend/Encoder.cpp index 5028dd2927a..5b32b89c5a9 100644 --- a/lib/Backend/Encoder.cpp +++ b/lib/Backend/Encoder.cpp @@ -3,6 +3,7 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "Backend.h" +#include "CRC.h" ///---------------------------------------------------------------------------- /// @@ -32,7 +33,7 @@ Encoder::Encode() m_offsetBuffer = AnewArray(m_tempAlloc, uint, instrCount); #endif - m_pragmaInstrToRecordMap = Anew(m_tempAlloc, PragmaInstrList, m_tempAlloc); + m_pragmaInstrToRecordMap = Anew(m_tempAlloc, PragmaInstrList, m_tempAlloc); if (DoTrackAllStatementBoundary()) { // Create a new list, if we are tracking all statement boundaries. @@ -47,7 +48,7 @@ Encoder::Encode() #if defined(_M_IX86) || defined(_M_X64) // for BR shortening - m_inlineeFrameRecords = Anew(m_tempAlloc, InlineeFrameRecords, m_tempAlloc); + m_inlineeFrameRecords = Anew(m_tempAlloc, InlineeFrameRecords, m_tempAlloc); #endif m_pc = m_encodeBuffer; @@ -62,6 +63,17 @@ Encoder::Encode() #endif bool isCallInstr = false; + // CRC Check to ensure the integrity of the encoded bytes. + uint initialCRCSeed = 0; + errno_t err = rand_s(&initialCRCSeed); + + if (err != 0) + { + Fatal(); + } + + uint bufferCRC = initialCRCSeed; + FOREACH_INSTR_IN_FUNC(instr, m_func) { Assert(Lowerer::ValidOpcodeAfterLower(instr, m_func)); @@ -77,7 +89,7 @@ Encoder::Encode() #endif if (instr->IsPragmaInstr()) { - switch(instr->m_opcode) + switch (instr->m_opcode) { #ifdef _M_X64 case Js::OpCode::PrologStart: @@ -131,9 +143,10 @@ Encoder::Encode() multiBranchInstr->MapMultiBrTargetByAddress([=](void ** offset) -> void { #if defined(_M_ARM32_OR_ARM64) - encoderMD->AddLabelReloc((byte*) offset); + encoderMD->AddLabelReloc((byte*)offset); #else - encoderMD->AppendRelocEntry(RelocTypeLabelUse, (void*) (offset)); + encoderMD->AppendRelocEntry(RelocTypeLabelUse, (void*)(offset), *(IR::LabelInstr**)(offset)); + *((size_t*)offset) = 0; #endif }); } @@ -184,6 +197,9 @@ Encoder::Encode() } count = m_encoderMD.Encode(instr, m_pc, m_encodeBuffer); +#if defined(_M_IX86) || defined(_M_X64) + bufferCRC = CalculateCRC(bufferCRC, count, m_pc); +#endif #if DBG_DUMP if (PHASE_TRACE(Js::EncoderPhase, this->m_func)) @@ -207,7 +223,7 @@ Encoder::Encode() #if defined(_M_IX86) || defined(_M_X64) // for BR shortening. if (instr->isInlineeEntryInstr) - m_encoderMD.AppendRelocEntry(RelocType::RelocTypeInlineeEntryOffset, (void*) (m_pc - MachPtr)); + m_encoderMD.AppendRelocEntry(RelocType::RelocTypeInlineeEntryOffset, (void*)(m_pc - MachPtr)); #endif if (isCallInstr) { @@ -227,12 +243,18 @@ Encoder::Encode() ptrdiff_t codeSize = m_pc - m_encodeBuffer + totalJmpTableSizeInBytes; -#if defined(_M_IX86) || defined(_M_X64) BOOL isSuccessBrShortAndLoopAlign = false; + +#if defined(_M_IX86) || defined(_M_X64) // Shorten branches. ON by default if (!PHASE_OFF(Js::BrShortenPhase, m_func)) { - isSuccessBrShortAndLoopAlign = ShortenBranchesAndLabelAlign(&m_encodeBuffer, &codeSize); + uint brShortenedbufferCRC = initialCRCSeed; + isSuccessBrShortAndLoopAlign = ShortenBranchesAndLabelAlign(&m_encodeBuffer, &codeSize, &brShortenedbufferCRC, bufferCRC, totalJmpTableSizeInBytes); + if (isSuccessBrShortAndLoopAlign) + { + bufferCRC = brShortenedbufferCRC; + } } #endif #if DBG_DUMP | defined(VTUNE_PROFILING) @@ -310,10 +332,17 @@ Encoder::Encode() }); // Relocs - m_encoderMD.ApplyRelocs((size_t)alloc->allocation->address); + m_encoderMD.ApplyRelocs((size_t)alloc->allocation->address, codeSize, &bufferCRC, isSuccessBrShortAndLoopAlign); m_func->GetJITOutput()->RecordNativeCode(m_func, m_encodeBuffer, alloc); +#if defined(_M_IX86) || defined(_M_X64) + if (!JITManager::GetJITManager()->IsJITServer()) + { + ValidateCRCOnFinalBuffer((BYTE *)alloc->allocation->address, codeSize, totalJmpTableSizeInBytes, m_encodeBuffer, initialCRCSeed, bufferCRC, isSuccessBrShortAndLoopAlign); + } +#endif + #ifdef _M_X64 m_func->m_prologEncoder.FinalizeUnwindInfo( (BYTE*)m_func->GetJITOutput()->GetCodeAddress(), (DWORD)codeSize); @@ -342,7 +371,10 @@ Encoder::Encode() m_func->GetJITOutput()->SetCodeAddress(m_func->GetJITOutput()->GetCodeAddress() | 0x1); // Set thumb mode #endif - m_func->GetThreadContextInfo()->SetValidCallTargetForCFG((PVOID)m_func->GetJITOutput()->GetCodeAddress()); + if (CONFIG_FLAG(OOPCFGRegistration)) + { + m_func->GetThreadContextInfo()->SetValidCallTargetForCFG((PVOID)m_func->GetJITOutput()->GetCodeAddress()); + } const bool isSimpleJit = m_func->IsSimpleJit(); @@ -750,7 +782,8 @@ void Encoder::TryCopyAndAddRelocRecordsForSwitchJumpTableEntries(BYTE *codeStart #if defined(_M_ARM32_OR_ARM64) encoderMD->AddLabelReloc((byte*) addressOfJmpTableEntry); #else - encoderMD->AppendRelocEntry(RelocTypeLabelUse, addressOfJmpTableEntry); + encoderMD->AppendRelocEntry(RelocTypeLabelUse, addressOfJmpTableEntry, *(IR::LabelInstr**)addressOfJmpTableEntry); + *((size_t*)addressOfJmpTableEntry) = 0; #endif } @@ -794,6 +827,156 @@ void Encoder::RecordInlineeFrame(Func* inlinee, uint32 currentOffset) } } +#if defined(_M_IX86) || defined(_M_X64) +/* +* ValidateCRCOnFinalBuffer +* - Validates the CRC that is last computed (could be either the one after BranchShortening or after encoding itself) +* - We calculate the CRC for jump table and dictionary after computing the code section. +* - Also, all reloc data are computed towards the end - after computing the code section - because we don't have to deal with the changes relocs while operating on the code section. +* - The version of CRC that we are validating with, doesn't have Relocs applied but the final buffer does - So we have to make adjustments while calculating the final buffer's CRC. +*/ +void Encoder::ValidateCRCOnFinalBuffer(_In_reads_bytes_(finalCodeSize) BYTE * finalCodeBufferStart, size_t finalCodeSize, size_t jumpTableSize, _In_reads_bytes_(finalCodeSize) BYTE * oldCodeBufferStart, uint initialCrcSeed, uint bufferCrcToValidate, BOOL isSuccessBrShortAndLoopAlign) +{ + RelocList * relocList = m_encoderMD.GetRelocList(); + + BYTE * currentStartAddress = finalCodeBufferStart; + BYTE * currentEndAddress = nullptr; + size_t crcSizeToCompute = 0; + + size_t finalCodeSizeWithoutJumpTable = finalCodeSize - jumpTableSize; + + uint finalBufferCRC = initialCrcSeed; + + BYTE * oldPtr = nullptr; + + if (relocList != nullptr) + { + for (int index = 0; index < relocList->Count(); index++) + { + EncodeRelocAndLabels * relocTuple = &relocList->Item(index); + + //We will deal with the jump table and dictionary entries along with other reloc records in ApplyRelocs() + if ((BYTE*)m_encoderMD.GetRelocBufferAddress(relocTuple) >= oldCodeBufferStart && (BYTE*)m_encoderMD.GetRelocBufferAddress(relocTuple) < (oldCodeBufferStart + finalCodeSizeWithoutJumpTable)) + { + BYTE* finalBufferRelocTuplePtr = (BYTE*)m_encoderMD.GetRelocBufferAddress(relocTuple) - oldCodeBufferStart + finalCodeBufferStart; + Assert(finalBufferRelocTuplePtr >= finalCodeBufferStart && finalBufferRelocTuplePtr < (finalCodeBufferStart + finalCodeSizeWithoutJumpTable)); + uint relocDataSize = m_encoderMD.GetRelocDataSize(relocTuple); + if (relocDataSize != 0) + { + AssertMsg(oldPtr == nullptr || oldPtr < finalBufferRelocTuplePtr, "Assumption here is that the reloc list is strictly increasing in terms of bufferAddress"); + oldPtr = finalBufferRelocTuplePtr; + + currentEndAddress = finalBufferRelocTuplePtr; + crcSizeToCompute = currentEndAddress - currentStartAddress; + + Assert(currentEndAddress >= currentStartAddress); + + finalBufferCRC = CalculateCRC(finalBufferCRC, crcSizeToCompute, currentStartAddress); + for (uint i = 0; i < relocDataSize; i++) + { + finalBufferCRC = CalculateCRC(finalBufferCRC, 0); + } + currentStartAddress = currentEndAddress + relocDataSize; + } + } + } + } + + currentEndAddress = finalCodeBufferStart + finalCodeSizeWithoutJumpTable; + crcSizeToCompute = currentEndAddress - currentStartAddress; + + Assert(currentEndAddress >= currentStartAddress); + + finalBufferCRC = CalculateCRC(finalBufferCRC, crcSizeToCompute, currentStartAddress); + + //Include all offsets from the reloc records to the CRC. + m_encoderMD.ApplyRelocs((size_t)finalCodeBufferStart, finalCodeSize, &finalBufferCRC, isSuccessBrShortAndLoopAlign, true); + + if (finalBufferCRC != bufferCrcToValidate) + { + Assert(false); + Fatal(); + } +} +#endif + +/* +* EnsureRelocEntryIntegrity +* - We compute the target address as the processor would compute it and check if the target is within the final buffer's bounds. +* - For relative addressing, Target = current m_pc + offset +* - For absolute addressing, Target = direct address +*/ +void Encoder::EnsureRelocEntryIntegrity(size_t newBufferStartAddress, size_t codeSize, size_t oldBufferAddress, size_t relocAddress, uint offsetBytes, ptrdiff_t opndData, bool isRelativeAddr) +{ + size_t targetBrAddress = 0; + size_t newBufferEndAddress = newBufferStartAddress + codeSize; + + //Handle Dictionary addresses here - The target address will be in the dictionary. + if (relocAddress < oldBufferAddress || relocAddress >= (oldBufferAddress + codeSize)) + { + targetBrAddress = (size_t)(*(size_t*)relocAddress); + } + else + { + size_t newBufferRelocAddr = relocAddress - oldBufferAddress + newBufferStartAddress; + + if (isRelativeAddr) + { + targetBrAddress = (size_t)newBufferRelocAddr + offsetBytes + opndData; + } + else // Absolute Address + { + targetBrAddress = (size_t)opndData; + } + } + + if (targetBrAddress < newBufferStartAddress || targetBrAddress >= newBufferEndAddress) + { + Assert(false); + Fatal(); + } +} + +uint Encoder::CalculateCRC(uint bufferCRC, size_t data) +{ +#if defined(_M_IX86) + if (AutoSystemInfo::Data.SSE4_2Available()) + { + return _mm_crc32_u32(bufferCRC, data); + } +#elif defined(_M_X64) + if (AutoSystemInfo::Data.SSE4_2Available()) + { + //CRC32 always returns a 32-bit result + return (uint)_mm_crc32_u64(bufferCRC, data); + } +#endif + + return CalculateCRC32(bufferCRC, data); +} + +uint Encoder::CalculateCRC(uint bufferCRC, size_t count, _In_reads_bytes_(count) void * buffer) +{ + for (uint index = 0; index < count; index++) + { + bufferCRC = CalculateCRC(bufferCRC, *((BYTE*)buffer + index)); + } + return bufferCRC; +} + +void Encoder::ValidateCRC(uint bufferCRC, uint initialCRCSeed, _In_reads_bytes_(count) void* buffer, size_t count) +{ + uint validationCRC = initialCRCSeed; + + validationCRC = CalculateCRC(validationCRC, count, buffer); + + if (validationCRC != bufferCRC) + { + //TODO: This throws internal error. Is this error type, Fine? + Fatal(); + } +} + #if defined(_M_IX86) || defined(_M_X64) ///---------------------------------------------------------------------------- /// @@ -803,7 +986,7 @@ void Encoder::RecordInlineeFrame(Func* inlinee, uint32 currentOffset) /// Also align LoopTop Label and TryCatchLabel ///---------------------------------------------------------------------------- BOOL -Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) +Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize, uint * pShortenedBufferCRC, uint bufferCrcToValidate, size_t jumpTableSize) { #ifdef ENABLE_DEBUG_CONFIG_OPTIONS static uint32 globalTotalBytesSaved = 0, globalTotalBytesWithoutShortening = 0; @@ -970,6 +1153,8 @@ Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) // Next, we re-write the code to shorten the BRs and adjust relocList offsets to point to new buffer. // We also write NOPs for aligned loops. BYTE* tmpBuffer = AnewArray(m_tempAlloc, BYTE, newCodeSize); + + uint srcBufferCrc = *pShortenedBufferCRC; //This has the intial Random CRC seed to start with. // start copying to new buffer // this can possibly be done during fixing, but there is no evidence it is an overhead to justify the complexity. @@ -1028,6 +1213,10 @@ Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) AnalysisAssert(dst_size >= src_size); memcpy_s(dst_p, dst_size, from, src_size); + + srcBufferCrc = CalculateCRC(srcBufferCrc, (BYTE*)reloc.m_origPtr - from + 4, from); + *pShortenedBufferCRC = CalculateCRC(*pShortenedBufferCRC, src_size, dst_p); + dst_p += src_size; dst_size -= src_size; @@ -1035,10 +1224,29 @@ Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) // write new opcode AnalysisAssert(dst_p < tmpBuffer + newCodeSize); *dst_p = (*opcodeByte == 0xe9) ? (BYTE)0xeb : (BYTE)(*opcodeByte - 0x10); + *(dst_p + 1) = 0; // imm8 + + *pShortenedBufferCRC = CalculateCRC(*pShortenedBufferCRC, 2, dst_p); dst_p += 2; // 1 byte for opcode + 1 byte for imm8 dst_size -= 2; from = (BYTE*)reloc.m_origPtr + 4; } + else if (reloc.m_type == RelocTypeInlineeEntryOffset) + { + to = (BYTE*)reloc.m_origPtr - 1; + CopyPartialBufferAndCalculateCRC(&dst_p, dst_size, from, to, pShortenedBufferCRC); + + *(size_t*)dst_p = reloc.GetInlineOffset(); + + *pShortenedBufferCRC = CalculateCRC(*pShortenedBufferCRC, sizeof(size_t), dst_p); + + dst_p += sizeof(size_t); + dst_size -= sizeof(size_t); + + srcBufferCrc = CalculateCRC(srcBufferCrc, (BYTE*)reloc.m_origPtr + sizeof(size_t) - from , from); + + from = (BYTE*)reloc.m_origPtr + sizeof(size_t); + } // insert NOPs for aligned labels else if ((!PHASE_OFF(Js::LoopAlignPhase, m_func) && reloc.isAlignedLabel()) && reloc.getLabelNopCount() > 0) { @@ -1049,7 +1257,9 @@ Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) AssertMsg((((uint32)(label->GetPC() - buffStart)) & 0xf) == 0, "Misaligned Label"); to = reloc.getLabelOrigPC() - 1; - CopyPartialBuffer(&dst_p, dst_size, from, to); + + CopyPartialBufferAndCalculateCRC(&dst_p, dst_size, from, to, pShortenedBufferCRC); + srcBufferCrc = CalculateCRC(srcBufferCrc, to - from + 1, from); #ifdef ENABLE_DEBUG_CONFIG_OPTIONS if (PHASE_TRACE(Js::LoopAlignPhase, this->m_func)) @@ -1061,17 +1271,28 @@ Encoder::ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize) Output::Flush(); } #endif + BYTE * tmpDst_p = dst_p; InsertNopsForLabelAlignment(nop_count, &dst_p); + *pShortenedBufferCRC = CalculateCRC(*pShortenedBufferCRC, nop_count, tmpDst_p); dst_size -= nop_count; from = to + 1; } } // copy last chunk - CopyPartialBuffer(&dst_p, dst_size, from, buffStart + *codeSize - 1); + //Exclude jumpTable content from CRC calculation. + //Though jumpTable is not part of the encoded bytes, codeSize has jumpTableSize included in it. + CopyPartialBufferAndCalculateCRC(&dst_p, dst_size, from, buffStart + *codeSize - 1, pShortenedBufferCRC, jumpTableSize); + srcBufferCrc = CalculateCRC(srcBufferCrc, buffStart + *codeSize - from - jumpTableSize, from); m_encoderMD.UpdateRelocListWithNewBuffer(relocList, tmpBuffer, buffStart, buffEnd); + if (srcBufferCrc != bufferCrcToValidate) + { + Assert(false); + Fatal(); + } + // switch buffers *codeStart = tmpBuffer; *codeSize = newCodeSize; @@ -1084,13 +1305,19 @@ BYTE Encoder::FindNopCountFor16byteAlignment(size_t address) return (16 - (BYTE) (address & 0xf)) % 16; } -void Encoder::CopyPartialBuffer(BYTE ** ptrDstBuffer, size_t &dstSize, BYTE * srcStart, BYTE * srcEnd) +void Encoder::CopyPartialBufferAndCalculateCRC(BYTE ** ptrDstBuffer, size_t &dstSize, BYTE * srcStart, BYTE * srcEnd, uint* pBufferCRC, size_t jumpTableSize) { BYTE * destBuffer = *ptrDstBuffer; size_t srcSize = srcEnd - srcStart + 1; Assert(dstSize >= srcSize); memcpy_s(destBuffer, dstSize, srcStart, srcSize); + + Assert(srcSize >= jumpTableSize); + + //Exclude the jump table content (which is at the end of the buffer) for calculating CRC - at this point. + *pBufferCRC = CalculateCRC(*pBufferCRC, srcSize - jumpTableSize, destBuffer); + *ptrDstBuffer += srcSize; dstSize -= srcSize; } diff --git a/lib/Backend/Encoder.h b/lib/Backend/Encoder.h index 5814ce69c3f..be20c26aa8f 100644 --- a/lib/Backend/Encoder.h +++ b/lib/Backend/Encoder.h @@ -51,15 +51,23 @@ class Encoder #if defined(_M_IX86) || defined(_M_X64) InlineeFrameRecords *m_inlineeFrameRecords; - BOOL ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize); + BOOL ShortenBranchesAndLabelAlign(BYTE **codeStart, ptrdiff_t *codeSize, uint * brShortenedBufferCRC, uint bufferCrcToValidate, size_t jumpTableSize); void revertRelocList(); template void CopyMaps(OffsetList **m_origInlineeFrameRecords, OffsetList **m_origInlineeFrameMap, OffsetList **m_origPragmaInstrToRecordOffset, OffsetList **m_origOffsetBuffer); #endif void InsertNopsForLabelAlignment(int nopCount, BYTE ** pDstBuffer); - void CopyPartialBuffer(BYTE ** ptrDstBuffer, size_t &dstSize, BYTE * srcStart, BYTE * srcEnd); + void CopyPartialBufferAndCalculateCRC(BYTE ** ptrDstBuffer, size_t &dstSize, BYTE * srcStart, BYTE * srcEnd, uint* pBufferCRC, size_t jumpTableSize = 0); BYTE FindNopCountFor16byteAlignment(size_t address); uint32 GetCurrentOffset() const; void TryCopyAndAddRelocRecordsForSwitchJumpTableEntries(BYTE *codeStart, size_t codeSize, JmpTableList * jumpTableListForSwitchStatement, size_t totalJmpTableSizeInBytes); + + void ValidateCRC(uint bufferCRC, uint initialCRCSeed, _In_reads_bytes_(count) void* buffer, size_t count); + static uint CalculateCRC(uint bufferCRC, size_t count, _In_reads_bytes_(count) void * buffer); + static uint CalculateCRC(uint bufferCRC, size_t data); + static void EnsureRelocEntryIntegrity(size_t newBufferStartAddress, size_t codeSize, size_t oldBufferAddress, size_t relocAddress, uint offsetBytes, ptrdiff_t opndData, bool isRelativeAddr = true); +#if defined(_M_IX86) || defined(_M_X64) + void ValidateCRCOnFinalBuffer(_In_reads_bytes_(finalCodeSize) BYTE * finalCodeBufferStart, size_t finalCodeSize, size_t jumpTableSize, _In_reads_bytes_(finalCodeSize) BYTE * oldCodeBufferStart, uint initialCrcSeed, uint bufferCrcToValidate, BOOL isSuccessBrShortAndLoopAlign); +#endif }; diff --git a/lib/Backend/Func.cpp b/lib/Backend/Func.cpp index 9da43289bcc..ab2324773d2 100644 --- a/lib/Backend/Func.cpp +++ b/lib/Backend/Func.cpp @@ -120,9 +120,6 @@ Func::Func(JitArenaAllocator *alloc, JITTimeWorkItem * workItem, #endif , m_funcStartLabel(nullptr) , m_funcEndLabel(nullptr) -#ifdef _M_X64 - , m_prologEncoder(alloc) -#endif #if DBG , hasCalledSetDoFastPaths(false) , allowRemoveBailOutArgInstr(false) @@ -373,12 +370,14 @@ Func::TryCodegen() BEGIN_CODEGEN_PHASE(this, Js::IRBuilderPhase); +#ifdef ASMJS_PLAT if (GetJITFunctionBody()->IsAsmJsMode()) { IRBuilderAsmJs asmIrBuilder(this); asmIrBuilder.Build(); } else +#endif { IRBuilder irBuilder(this); irBuilder.Build(); @@ -558,9 +557,6 @@ Func::TryCodegen() auto dataAllocator = this->GetNativeCodeDataAllocator(); if (dataAllocator->allocCount > 0) { - // fill in the fixup list by scanning the memory - // todo: this should be done while generating code - NativeCodeData::DataChunk *chunk = (NativeCodeData::DataChunk*)dataAllocator->chunkList; NativeCodeData::DataChunk *next1 = chunk; while (next1) @@ -569,8 +565,10 @@ Func::TryCodegen() { next1->fixupFunc(next1->data, chunk); } - #if DBG + // Scan memory to see if there's missing pointer needs to be fixed up + // This can hit false positive if some data field happens to have value + // falls into the NativeCodeData memory range. NativeCodeData::DataChunk *next2 = chunk; while (next2) { @@ -579,7 +577,6 @@ Func::TryCodegen() if (((void**)next1->data)[i] == (void*)next2->data) { NativeCodeData::VerifyExistFixupEntry((void*)next2->data, &((void**)next1->data)[i], next1->data); - //NativeCodeData::AddFixupEntry((void*)next2->data, &((void**)next1->data)[i], next1->data, chunk); } } next2 = next2->next; @@ -587,7 +584,6 @@ Func::TryCodegen() #endif next1 = next1->next; } - //// JITOutputIDL* jitOutputData = m_output.GetOutputData(); size_t allocSize = offsetof(NativeDataFixupTable, fixupRecords) + sizeof(NativeDataFixupRecord)* (dataAllocator->allocCount); diff --git a/lib/Backend/Func.h b/lib/Backend/Func.h index 4d52fd4cb6c..752163f6be1 100644 --- a/lib/Backend/Func.h +++ b/lib/Backend/Func.h @@ -215,6 +215,12 @@ class Func return m_workItem; } + ThreadContext * GetInProcThreadContext() const + { + Assert(!IsOOPJIT()); + return (ThreadContext*)m_threadContextInfo; + } + ThreadContextInfo * GetThreadContextInfo() const { return m_threadContextInfo; diff --git a/lib/Backend/FunctionJITTimeInfo.cpp b/lib/Backend/FunctionJITTimeInfo.cpp index 27cab528d72..2e8795af584 100644 --- a/lib/Backend/FunctionJITTimeInfo.cpp +++ b/lib/Backend/FunctionJITTimeInfo.cpp @@ -40,6 +40,12 @@ FunctionJITTimeInfo::BuildJITTimeData( if (codeGenData->GetFunctionInfo()->HasBody()) { Assert(isInlinee == !!runtimeData); + const Js::FunctionCodeGenRuntimeData * targetRuntimeData = nullptr; + if (runtimeData) + { + // may be polymorphic, so seek the runtime data matching our JIT time data + targetRuntimeData = runtimeData->GetForTarget(codeGenData->GetFunctionInfo()->GetFunctionBody()); + } Js::FunctionBody * functionBody = codeGenData->GetFunctionBody(); if (functionBody->HasDynamicProfileInfo()) { @@ -79,25 +85,21 @@ FunctionJITTimeInfo::BuildJITTimeData( const Js::FunctionCodeGenRuntimeData * inlineeRuntimeData = nullptr; if (inlineeJITData->GetFunctionInfo()->HasBody()) { - Js::FunctionBody * inlinee = inlineeJITData->GetFunctionInfo()->GetFunctionBody(); - inlineeRuntimeData = isInlinee ? runtimeData->GetInlineeForTargetInlinee(i, inlinee) : functionBody->GetInlineeCodeGenRuntimeDataForTargetInlinee(i, inlinee); + inlineeRuntimeData = isInlinee ? targetRuntimeData->GetInlinee(i) : functionBody->GetInlineeCodeGenRuntimeData(i); } jitData->inlinees[i] = AnewStructZ(alloc, FunctionJITTimeDataIDL); BuildJITTimeData(alloc, inlineeJITData, inlineeRuntimeData, jitData->inlinees[i], true, isForegroundJIT); } } } - // TODO: OOP JIT, cleanup these checks jitData->profiledRuntimeData = AnewStructZ(alloc, FunctionJITRuntimeIDL); - if (isInlinee && runtimeData->ClonedInlineCaches()->HasInlineCaches()) + if (isInlinee && targetRuntimeData->ClonedInlineCaches()->HasInlineCaches()) { - // REVIEW: OOP JIT is this safe to be doing in background? jitData->profiledRuntimeData->clonedCacheCount = jitData->bodyData->inlineCacheCount; jitData->profiledRuntimeData->clonedInlineCaches = AnewArray(alloc, intptr_t, jitData->profiledRuntimeData->clonedCacheCount); for (uint j = 0; j < jitData->bodyData->inlineCacheCount; ++j) { - // REVIEW: OOP JIT, what to do with WriteBarrierPtr? - jitData->profiledRuntimeData->clonedInlineCaches[j] = (intptr_t)runtimeData->ClonedInlineCaches()->GetInlineCache(j); + jitData->profiledRuntimeData->clonedInlineCaches[j] = (intptr_t)targetRuntimeData->ClonedInlineCaches()->GetInlineCache(j); } } if (jitData->bodyData->inlineCacheCount > 0) @@ -115,7 +117,7 @@ FunctionJITTimeInfo::BuildJITTimeData( for (Js::InlineCacheIndex i = 0; i < jitData->bodyData->inlineCacheCount; ++i) { const Js::FunctionCodeGenJitTimeData * inlineeJITData = codeGenData->GetLdFldInlinee(i); - const Js::FunctionCodeGenRuntimeData * inlineeRuntimeData = isInlinee ? runtimeData->GetLdFldInlinee(i) : functionBody->GetLdFldInlineeCodeGenRuntimeData(i); + const Js::FunctionCodeGenRuntimeData * inlineeRuntimeData = isInlinee ? targetRuntimeData->GetLdFldInlinee(i) : functionBody->GetLdFldInlineeCodeGenRuntimeData(i); if (inlineeJITData != nullptr) { jitData->ldFldInlinees[i] = AnewStructZ(alloc, FunctionJITTimeDataIDL); @@ -138,12 +140,7 @@ FunctionJITTimeInfo::BuildJITTimeData( // only inlinee should be polymorphic Assert(isInlinee); jitData->next = AnewStructZ(alloc, FunctionJITTimeDataIDL); - const Js::FunctionCodeGenRuntimeData * nextRuntimeData = nullptr; - if (nextJITData->GetFunctionInfo()->HasBody()) - { - nextRuntimeData = runtimeData->GetNextForTarget(nextJITData->GetFunctionInfo()->GetFunctionBody()); - } - BuildJITTimeData(alloc, nextJITData, nextRuntimeData, jitData->next, true, isForegroundJIT); + BuildJITTimeData(alloc, nextJITData, runtimeData, jitData->next, true, isForegroundJIT); } } } diff --git a/lib/Backend/GlobOpt.cpp b/lib/Backend/GlobOpt.cpp index 30638ea64f7..270694aad6a 100644 --- a/lib/Backend/GlobOpt.cpp +++ b/lib/Backend/GlobOpt.cpp @@ -254,6 +254,8 @@ GlobOpt::GlobOpt(Func * func) doPowIntIntTypeSpec( doAggressiveIntTypeSpec && (!func->HasProfileInfo() || !func->GetReadOnlyProfileInfo()->IsPowIntIntTypeSpecDisabled())), + doTagChecks( + (!func->HasProfileInfo() || !func->GetReadOnlyProfileInfo()->IsTagCheckDisabled())), isAsmJSFunc(func->GetJITFunctionBody()->IsAsmJsMode()) { } @@ -936,9 +938,10 @@ GlobOpt::TryTailDup(IR::BranchInstr *tailBranch) { branchEntry->InsertBefore(instr->Copy()); } - branchEntry->ReplaceTarget(mergeLabel, tailBranch->GetTarget()); instr = branchEntry; + branchEntry->ReplaceTarget(mergeLabel, tailBranch->GetTarget()); + while(!instr->IsLabelInstr()) { instr = instr->m_prev; @@ -5234,7 +5237,7 @@ GlobOpt::OptInstr(IR::Instr *&instr, bool* isInstrRemoved) bool GlobOpt::OptTagChecks(IR::Instr *instr) { - if (PHASE_OFF(Js::OptTagChecksPhase, this->func)) + if (PHASE_OFF(Js::OptTagChecksPhase, this->func) || !this->DoTagChecks()) { return false; } @@ -9530,6 +9533,20 @@ GlobOpt::OptConstFoldUnary( instr->ClearBailOutInfo(); break; + case Js::OpCode::Ctz: + Assert(func->GetJITFunctionBody()->IsWasmFunction()); + Assert(!instr->HasBailOutInfo()); + DWORD ctz; + if (_BitScanForward(&ctz, intConstantValue)) + { + value = ctz; + } + else + { + value = 32; + } + break; + case Js::OpCode::InlineMathFloor: value = intConstantValue; instr->ClearBailOutInfo(); @@ -19936,6 +19953,12 @@ GlobOpt::DoPowIntIntTypeSpec() const return doPowIntIntTypeSpec; } +bool +GlobOpt::DoTagChecks() const +{ + return doTagChecks; +} + bool GlobOpt::TrackArgumentsObject() { @@ -21035,7 +21058,7 @@ GlobOpt::GenerateBailOutMarkTempObjectIfNeeded(IR::Instr * instr, IR::Opnd * opn const Js::PropertyId propertyId = propertySymOpnd->m_sym->AsPropertySym()->m_propertyId; // We don't need to track numeric properties init - if (!this->func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->IsNumeric()) + if (!this->func->GetThreadContextInfo()->IsNumericProperty(propertyId)) { DebugOnly(bool found = false); globOptData.stackLiteralInitFldDataMap->RemoveIf(stackSym, diff --git a/lib/Backend/GlobOpt.h b/lib/Backend/GlobOpt.h index 4fa03accfbc..fc2dab30ebe 100644 --- a/lib/Backend/GlobOpt.h +++ b/lib/Backend/GlobOpt.h @@ -1265,6 +1265,7 @@ class GlobOpt bool doPowIntIntTypeSpec : 1; bool isAsmJSFunc : 1; + bool doTagChecks : 1; OpndList * noImplicitCallUsesToInsert; ValueSetByValueNumber * valuesCreatedForClone; @@ -1648,6 +1649,7 @@ class GlobOpt bool DoBoundCheckHoist() const; bool DoLoopCountBasedBoundCheckHoist() const; bool DoPowIntIntTypeSpec() const; + bool DoTagChecks() const; private: // GlobOptBailout.cpp diff --git a/lib/Backend/IR.cpp b/lib/Backend/IR.cpp index 15f49a16dfa..75c4f5724b5 100644 --- a/lib/Backend/IR.cpp +++ b/lib/Backend/IR.cpp @@ -123,8 +123,8 @@ Instr::TryOptimizeInstrWithFixedDataProperty(IR::Instr **pInstr, GlobOpt * globo IR::Instr* loadInstr = IR::Instr::NewConstantLoad(dataValueDstOpnd, (intptr_t)fixedValue, valType, instr->m_func); OUTPUT_VERBOSE_TRACE(Js::UseFixedDataPropsPhase, - _u("FixedFields: Replacing the source (fixed Data prop) with property id %s with 0x%x .\n"), - propSymOpnd->GetPropertySym()->GetName(), fixedValue); + _u("FixedFields: Replacing the source (fixed Data prop) with property id %u with 0x%x .\n"), + propSymOpnd->GetPropertyId(), fixedValue); instr->InsertAfter(loadInstr); propSymOpnd->SetUsesFixedValue(true); @@ -3882,11 +3882,13 @@ Instr::DumpTestTrace() switch (propertySym->m_fieldKind) { case PropertyKindData: + if (!JITManager::GetJITManager()->IsOOPJITEnabled()) { - Js::PropertyRecord const* fieldName = propertySym->GetFunc()->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId); + Js::PropertyRecord const* fieldName = propertySym->GetFunc()->GetInProcThreadContext()->GetPropertyRecord(propertySym->m_propertyId); Output::Print(_u("field: %s "), fieldName->GetBuffer()); break; } + // else fall through case PropertyKindSlots: Output::Print(_u("field: [%d] "), propertySym->m_propertyId); break; diff --git a/lib/Backend/IRBuilderAsmJs.cpp b/lib/Backend/IRBuilderAsmJs.cpp index 4987049b822..8fdefc48f07 100644 --- a/lib/Backend/IRBuilderAsmJs.cpp +++ b/lib/Backend/IRBuilderAsmJs.cpp @@ -4,6 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "Backend.h" +#ifdef ASMJS_PLAT #include "ByteCode/OpCodeUtilAsmJs.h" void @@ -31,11 +32,9 @@ IRBuilderAsmJs::Build() m_firstFloatConst = m_asmFuncInfo->GetIntConstCount() + m_firstIntConst; m_firstDoubleConst = m_asmFuncInfo->GetFloatConstCount() + m_firstFloatConst; - m_firstSimdConst = m_asmFuncInfo->GetDoubleConstCount() + m_firstDoubleConst; m_firstIntVar = m_asmFuncInfo->GetSimdConstCount() + m_firstSimdConst; - m_firstFloatVar = m_asmFuncInfo->GetIntVarCount() + m_firstIntVar; m_firstDoubleVar = m_asmFuncInfo->GetFloatVarCount() + m_firstFloatVar; @@ -45,7 +44,6 @@ IRBuilderAsmJs::Build() m_firstFloatTemp = m_asmFuncInfo->GetIntTmpCount() + m_firstIntTemp; m_firstDoubleTemp = m_asmFuncInfo->GetFloatTmpCount() + m_firstFloatTemp; - m_firstSimdTemp = m_asmFuncInfo->GetDoubleTmpCount() + m_firstDoubleTemp; m_firstIRTemp = m_asmFuncInfo->GetSimdTmpCount() + m_firstSimdTemp; @@ -440,6 +438,10 @@ IRBuilderAsmJs::BuildFieldSym(Js::RegSlot reg, Js::PropertyId propertyId, Proper uint IRBuilderAsmJs::AddStatementBoundary(uint statementIndex, uint offset) { + if (m_func->GetJITFunctionBody()->IsWasmFunction()) + { + return 0; + } IR::PragmaInstr* pragmaInstr = IR::PragmaInstr::New(Js::OpCode::StatementBoundary, statementIndex, m_func); this->AddInstr(pragmaInstr, offset); @@ -742,6 +744,10 @@ IRBuilderAsmJs::BuildConstantLoads() { BuildHeapBufferReload(Js::Constants::NoByteCodeOffset); } + if (!constTable) + { + return; + } uint32 regAllocated = AsmJsRegSlots::RegCount; @@ -1026,6 +1032,10 @@ IRBuilderAsmJs::BuildEmpty(Js::OpCodeAsmJs newOpcode, uint32 offset) Js::RegSlot retSlot; switch (newOpcode) { + case Js::OpCodeAsmJs::Unreachable_Void: + instr = IR::Instr::New(Js::OpCode::Unreachable_Void, m_func); + AddInstr(instr, offset); + break; case Js::OpCodeAsmJs::Ret: instr = IR::Instr::New(Js::OpCode::Ret, m_func); @@ -1487,7 +1497,7 @@ IRBuilderAsmJs::BuildAsmTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, uint3 { IRType type = TyInt32; Js::RegSlot valueRegSlot = Js::Constants::NoRegister; - bool isLd = newOpcode == Js::OpCodeAsmJs::LdArr || newOpcode == Js::OpCodeAsmJs::LdArrConst; + bool isLd = newOpcode == Js::OpCodeAsmJs::LdArr || newOpcode == Js::OpCodeAsmJs::LdArrWasm || newOpcode == Js::OpCodeAsmJs::LdArrConst; Js::OpCode op = Js::OpCode::InvalidOpCode; ValueType arrayType; switch (viewType) @@ -1548,7 +1558,7 @@ IRBuilderAsmJs::BuildAsmTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, uint3 IR::RegOpnd * regOpnd = nullptr; IR::IndirOpnd * indirOpnd = nullptr; - if (newOpcode == Js::OpCodeAsmJs::LdArr || newOpcode == Js::OpCodeAsmJs::StArr) + if (newOpcode == Js::OpCodeAsmJs::LdArr || newOpcode == Js::OpCodeAsmJs::StArr || newOpcode == Js::OpCodeAsmJs::LdArrWasm || newOpcode == Js::OpCodeAsmJs::StArrWasm) { uint32 mask = 0; switch (type) @@ -1574,7 +1584,7 @@ IRBuilderAsmJs::BuildAsmTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, uint3 } Js::RegSlot indexRegSlot = GetRegSlotFromIntReg(slotIndex); IR::RegOpnd * maskedOpnd = nullptr; - if (mask) + if (mask && !m_func->GetJITFunctionBody()->IsWasmFunction()) { maskedOpnd = IR::RegOpnd::New(TyUint32, m_func); maskInstr = IR::Instr::New(Js::OpCode::And_I4, maskedOpnd, BuildSrcOpnd(indexRegSlot, TyInt32), IR::IntConstOpnd::New(mask, TyUint32, m_func), m_func); @@ -1585,11 +1595,11 @@ IRBuilderAsmJs::BuildAsmTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, uint3 } indirOpnd = IR::IndirOpnd::New(BuildSrcOpnd(AsmJsRegSlots::BufferReg, TyVar), maskedOpnd, type, m_func); indirOpnd->GetBaseOpnd()->SetValueType(arrayType); - } switch (newOpcode) { case Js::OpCodeAsmJs::LdArr: + case Js::OpCodeAsmJs::LdArrWasm: if (IRType_IsFloat(type)) { regOpnd = BuildDstOpnd(valueRegSlot, type); @@ -1621,6 +1631,7 @@ IRBuilderAsmJs::BuildAsmTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, uint3 break; case Js::OpCodeAsmJs::StArr: + case Js::OpCodeAsmJs::StArrWasm: if (IRType_IsFloat(type)) { @@ -1794,7 +1805,6 @@ IRBuilderAsmJs::BuildAsmCall(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::ArgSl IR::Instr * argInstr = nullptr; IR::Instr * prevInstr = instr; - for (argInstr = m_argStack->Pop(); argInstr && argInstr->m_opcode != Js::OpCode::StartCall; argInstr = m_argStack->Pop()) { if (newOpcode == Js::OpCodeAsmJs::I_Call) @@ -1904,23 +1914,40 @@ IRBuilderAsmJs::BuildAsmReg1(Js::OpCodeAsmJs newOpcode, uint32 offset) void IRBuilderAsmJs::BuildAsmReg1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstReg) { - Assert(newOpcode == Js::OpCodeAsmJs::LdUndef); + Assert(newOpcode == Js::OpCodeAsmJs::LdUndef || newOpcode == Js::OpCodeAsmJs::CurrentMemory_Int); - Js::RegSlot dstRegSlot = GetRegSlotFromVarReg(dstReg); + if (newOpcode == Js::OpCodeAsmJs::LdUndef) + { - IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyVar); + Js::RegSlot dstRegSlot = GetRegSlotFromVarReg(dstReg); + IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyVar); - if (dstOpnd->m_sym->m_isSingleDef) - { - dstOpnd->m_sym->m_isConst = true; - dstOpnd->m_sym->m_isNotInt = true; + if (dstOpnd->m_sym->m_isSingleDef) + { + dstOpnd->m_sym->m_isConst = true; + dstOpnd->m_sym->m_isNotInt = true; + } + + IR::AddrOpnd * addrOpnd = IR::AddrOpnd::New(m_func->GetScriptContextInfo()->GetUndefinedAddr(), IR::AddrOpndKindDynamicVar, m_func, true); + addrOpnd->SetValueType(ValueType::Undefined); + + IR::Instr * instr = IR::Instr::New(Js::OpCode::Ld_A, dstOpnd, addrOpnd, m_func); + AddInstr(instr, offset); } + else + { + Js::RegSlot dstRegSlot = GetRegSlotFromIntReg(dstReg); + IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + IR::IntConstOpnd* constZero = IR::IntConstOpnd::New(0, TyInt32, m_func); + IR::IntConstOpnd* constSixteen = IR::IntConstOpnd::New(16, TyUint8, m_func); - IR::AddrOpnd * addrOpnd = IR::AddrOpnd::New(m_func->GetScriptContextInfo()->GetUndefinedAddr(), IR::AddrOpndKindDynamicVar, m_func, true); - addrOpnd->SetValueType(ValueType::Undefined); + IR::Instr * instr = m_asmFuncInfo->UsesHeapBuffer() ? + IR::Instr::New(Js::OpCode::ShrU_I4, dstOpnd, BuildSrcOpnd(AsmJsRegSlots::LengthReg, TyUint32), constSixteen, m_func) : + IR::Instr::New(Js::OpCode::Ld_I4, dstOpnd, constZero, m_func); + + AddInstr(instr, offset); + } - IR::Instr * instr = IR::Instr::New(Js::OpCode::Ld_A, dstOpnd, addrOpnd, m_func); - AddInstr(instr, offset); } template @@ -1935,15 +1962,24 @@ IRBuilderAsmJs::BuildInt1Double1(Js::OpCodeAsmJs newOpcode, uint32 offset) void IRBuilderAsmJs::BuildInt1Double1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstIntReg, Js::RegSlot srcDoubleReg) { - Assert(newOpcode == Js::OpCodeAsmJs::Conv_DTI); Js::RegSlot dstRegSlot = GetRegSlotFromIntReg(dstIntReg); Js::RegSlot srcRegSlot = GetRegSlotFromDoubleReg(srcDoubleReg); IR::RegOpnd * srcOpnd = BuildSrcOpnd(srcRegSlot, TyFloat64); srcOpnd->SetValueType(ValueType::Float); - - IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + IR::RegOpnd * dstOpnd = nullptr; + switch (newOpcode) + { + case Js::OpCodeAsmJs::Conv_DTI: + dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + break; + case Js::OpCodeAsmJs::Conv_DTU: + dstOpnd = BuildDstOpnd(dstRegSlot, TyUint32); + break; + default: + Assume(UNREACHED); + } dstOpnd->SetValueType(ValueType::GetInt(false)); IR::Instr * instr = IR::Instr::New(Js::OpCode::Conv_Prim, dstOpnd, srcOpnd, m_func); @@ -1962,18 +1998,33 @@ IRBuilderAsmJs::BuildInt1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset) void IRBuilderAsmJs::BuildInt1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstIntReg, Js::RegSlot srcFloatReg) { - Assert(newOpcode == Js::OpCodeAsmJs::Conv_FTI); - Js::RegSlot dstRegSlot = GetRegSlotFromIntReg(dstIntReg); Js::RegSlot srcRegSlot = GetRegSlotFromFloatReg(srcFloatReg); IR::RegOpnd * srcOpnd = BuildSrcOpnd(srcRegSlot, TyFloat32); srcOpnd->SetValueType(ValueType::Float); - - IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + IR::RegOpnd * dstOpnd = nullptr; + Js::OpCode op = Js::OpCode::Nop; + switch (newOpcode) + { + case Js::OpCodeAsmJs::Conv_FTI: + dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + op = Js::OpCode::Conv_Prim; + break; + case Js::OpCodeAsmJs::Conv_FTU: + dstOpnd = BuildDstOpnd(dstRegSlot, TyUint32); + op = Js::OpCode::Conv_Prim; + break; + case Js::OpCodeAsmJs::Reinterpret_FTI: + dstOpnd = BuildDstOpnd(dstRegSlot, TyInt32); + op = Js::OpCode::Reinterpret_Prim; + break; + default: + Assume(UNREACHED); + } dstOpnd->SetValueType(ValueType::GetInt(false)); - IR::Instr * instr = IR::Instr::New(Js::OpCode::Conv_Prim, dstOpnd, srcOpnd, m_func); + IR::Instr * instr = IR::Instr::New(op, dstOpnd, srcOpnd, m_func); AddInstr(instr, offset); } @@ -2226,7 +2277,6 @@ IRBuilderAsmJs::BuildReg1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::Re } } - template void IRBuilderAsmJs::BuildReg1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -2320,6 +2370,54 @@ IRBuilderAsmJs::BuildInt1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::Re AddInstr(instr, offset); } +template +void +IRBuilderAsmJs::BuildFloat1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset) +{ + Assert(OpCodeAttrAsmJs::HasMultiSizeLayout(newOpcode)); + auto layout = m_jnReader.GetLayout>(); + BuildFloat1Const1(newOpcode, offset, layout->F0, layout->C1); +} + +void +IRBuilderAsmJs::BuildFloat1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, float constVal) +{ + Assert(newOpcode == Js::OpCodeAsmJs::Ld_FltConst); + + Js::RegSlot dstRegSlot = GetRegSlotFromFloatReg(dst); + + IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyFloat32); + dstOpnd->SetValueType(ValueType::Float); + + IR::Instr * instr = IR::Instr::New(Js::OpCode::LdC_F8_R8, dstOpnd, IR::FloatConstOpnd::New(constVal, TyFloat32, m_func), m_func); + + AddInstr(instr, offset); +} + +template +void +IRBuilderAsmJs::BuildDouble1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset) +{ + Assert(OpCodeAttrAsmJs::HasMultiSizeLayout(newOpcode)); + auto layout = m_jnReader.GetLayout>(); + BuildDouble1Const1(newOpcode, offset, layout->D0, layout->C1); +} + +void +IRBuilderAsmJs::BuildDouble1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, double constVal) +{ + Assert(newOpcode == Js::OpCodeAsmJs::Ld_DbConst); + + Js::RegSlot dstRegSlot = GetRegSlotFromDoubleReg(dst); + + IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyFloat64); + dstOpnd->SetValueType(ValueType::Float); + + IR::Instr * instr = IR::Instr::New(Js::OpCode::LdC_F8_R8, dstOpnd, IR::FloatConstOpnd::New(constVal, TyFloat64, m_func), m_func); + + AddInstr(instr, offset); +} + template void IRBuilderAsmJs::BuildInt1Double2(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -2492,10 +2590,18 @@ IRBuilderAsmJs::BuildInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot instr = IR::Instr::New(Js::OpCode::InlineMathClz32, dstOpnd, srcOpnd, m_func); break; + case Js::OpCodeAsmJs::Ctz_Int: + instr = IR::Instr::New(Js::OpCode::Ctz, dstOpnd, srcOpnd, m_func); + break; + case Js::OpCodeAsmJs::I_Conv_VTI: instr = IR::Instr::New(Js::OpCode::Ld_I4, dstOpnd, srcOpnd, m_func); break; + case Js::OpCodeAsmJs::PopCnt_Int: + instr = IR::Instr::New(Js::OpCode::PopCnt32, dstOpnd, srcOpnd, m_func); + break; + case Js::OpCodeAsmJs::Return_Int: instr = IR::Instr::New(Js::OpCode::Ld_I4, dstOpnd, srcOpnd, m_func); if (m_func->IsLoopBody()) @@ -2506,6 +2612,10 @@ IRBuilderAsmJs::BuildInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot break; + case Js::OpCodeAsmJs::Eqz_Int: + instr = IR::Instr::New(Js::OpCode::CmEq_I4, dstOpnd, srcOpnd, IR::IntConstOpnd::New(0, TyInt32, m_func), m_func); + break; + default: Assume(UNREACHED); } @@ -2528,7 +2638,6 @@ IRBuilderAsmJs::BuildInt3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot Js::RegSlot src1RegSlot = GetRegSlotFromIntReg(src1); Js::RegSlot src2RegSlot = GetRegSlotFromIntReg(src2); - IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyInt32); src1Opnd->SetValueType(ValueType::GetInt(false)); @@ -2584,7 +2693,7 @@ IRBuilderAsmJs::BuildInt3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot case Js::OpCodeAsmJs::Shr_Int: instr = IR::Instr::New(Js::OpCode::Shr_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; - case Js::OpCodeAsmJs::ShrU_Int: + case Js::OpCodeAsmJs::Shr_UInt: instr = IR::Instr::New(Js::OpCode::ShrU_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; case Js::OpCodeAsmJs::CmLt_Int: @@ -2605,16 +2714,16 @@ IRBuilderAsmJs::BuildInt3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot case Js::OpCodeAsmJs::CmNe_Int: instr = IR::Instr::New(Js::OpCode::CmNeq_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; - case Js::OpCodeAsmJs::CmLt_UnInt: + case Js::OpCodeAsmJs::CmLt_UInt: instr = IR::Instr::New(Js::OpCode::CmUnLt_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; - case Js::OpCodeAsmJs::CmLe_UnInt: + case Js::OpCodeAsmJs::CmLe_UInt: instr = IR::Instr::New(Js::OpCode::CmUnLe_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; - case Js::OpCodeAsmJs::CmGt_UnInt: + case Js::OpCodeAsmJs::CmGt_UInt: instr = IR::Instr::New(Js::OpCode::CmUnGt_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; - case Js::OpCodeAsmJs::CmGe_UnInt: + case Js::OpCodeAsmJs::CmGe_UInt: instr = IR::Instr::New(Js::OpCode::CmUnGe_I4, dstOpnd, src1Opnd, src2Opnd, m_func); break; case Js::OpCodeAsmJs::Min_Int: @@ -2626,7 +2735,12 @@ IRBuilderAsmJs::BuildInt3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot case Js::OpCodeAsmJs::Imul_Int: instr = IR::Instr::New(Js::OpCode::InlineMathImul, dstOpnd, src1Opnd, src2Opnd, m_func); break; - + case Js::OpCodeAsmJs::Rol_Int: + instr = IR::Instr::New(Js::OpCode::Rol_I4, dstOpnd, src1Opnd, src2Opnd, m_func); + break; + case Js::OpCodeAsmJs::Ror_Int: + instr = IR::Instr::New(Js::OpCode::Ror_I4, dstOpnd, src1Opnd, src2Opnd, m_func); + break; default: Assume(UNREACHED); } @@ -2648,7 +2762,6 @@ IRBuilderAsmJs::BuildDouble2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSl Js::RegSlot dstRegSlot = GetRegSlotFromDoubleReg(dst); Js::RegSlot srcRegSlot = GetRegSlotFromDoubleReg(src); - IR::RegOpnd * srcOpnd = BuildSrcOpnd(srcRegSlot, TyFloat64); srcOpnd->SetValueType(ValueType::Float); @@ -2711,6 +2824,12 @@ IRBuilderAsmJs::BuildDouble2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSl case Js::OpCodeAsmJs::I_Conv_VTD: instr = IR::Instr::New(Js::OpCode::Ld_A, dstOpnd, srcOpnd, m_func); break; + case Js::OpCodeAsmJs::Trunc_Db: + instr = IR::Instr::New(Js::OpCode::Trunc_A, dstOpnd, srcOpnd, m_func); + break; + case Js::OpCodeAsmJs::Nearest_Db: + instr = IR::Instr::New(Js::OpCode::Nearest_A, dstOpnd, srcOpnd, m_func); + break; default: Assume(UNREACHED); } @@ -2773,13 +2892,18 @@ IRBuilderAsmJs::BuildFloat2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlo case Js::OpCodeAsmJs::I_Conv_VTF: instr = IR::Instr::New(Js::OpCode::Ld_A, dstOpnd, srcOpnd, m_func); break; + case Js::OpCodeAsmJs::Trunc_Flt: + instr = IR::Instr::New(Js::OpCode::Trunc_A, dstOpnd, srcOpnd, m_func); + break; + case Js::OpCodeAsmJs::Nearest_Flt: + instr = IR::Instr::New(Js::OpCode::Nearest_A, dstOpnd, srcOpnd, m_func); + break; default: Assume(UNREACHED); } AddInstr(instr, offset); } - template void IRBuilderAsmJs::BuildFloat3(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -2824,13 +2948,24 @@ IRBuilderAsmJs::BuildFloat3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlo instr = IR::Instr::New(Js::OpCode::Div_A, dstOpnd, src1Opnd, src2Opnd, m_func); break; + case Js::OpCodeAsmJs::Copysign_Flt: + instr = IR::Instr::New(Js::OpCode::Copysign_A, dstOpnd, src1Opnd, src2Opnd, m_func); + break; + + case Js::OpCodeAsmJs::Min_Flt: + instr = IR::Instr::New(Js::OpCode::InlineMathMin, dstOpnd, src1Opnd, src2Opnd, m_func); + break; + + case Js::OpCodeAsmJs::Max_Flt: + instr = IR::Instr::New(Js::OpCode::InlineMathMax, dstOpnd, src1Opnd, src2Opnd, m_func); + break; + default: Assume(UNREACHED); } AddInstr(instr, offset); } - template void IRBuilderAsmJs::BuildFloat1Double1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -2870,12 +3005,24 @@ IRBuilderAsmJs::BuildFloat1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset) void IRBuilderAsmJs::BuildFloat1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, Js::RegSlot src) { - Assert(newOpcode == Js::OpCodeAsmJs::Fround_Int); + Assert(newOpcode == Js::OpCodeAsmJs::Fround_Int || newOpcode == Js::OpCodeAsmJs::Conv_UTF); Js::RegSlot dstRegSlot = GetRegSlotFromFloatReg(dst); Js::RegSlot srcRegSlot = GetRegSlotFromIntReg(src); - IR::RegOpnd * srcOpnd = BuildSrcOpnd(srcRegSlot, TyInt32); + IR::RegOpnd * srcOpnd = nullptr; + switch (newOpcode) + { + case Js::OpCodeAsmJs::Fround_Int: + srcOpnd = BuildSrcOpnd(srcRegSlot, TyInt32); + break; + case Js::OpCodeAsmJs::Conv_UTF: + srcOpnd = BuildSrcOpnd(srcRegSlot, TyUint32); + break; + default: + Assume(UNREACHED); + } + srcOpnd->SetValueType(ValueType::GetInt(false)); IR::RegOpnd * dstOpnd = BuildDstOpnd(dstRegSlot, TyFloat32); @@ -2949,6 +3096,10 @@ IRBuilderAsmJs::BuildDouble3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSl instr = IR::Instr::New(Js::OpCode::InlineMathMax, dstOpnd, src1Opnd, src2Opnd, m_func); break; + case Js::OpCodeAsmJs::Copysign_Db: + instr = IR::Instr::New(Js::OpCode::Copysign_A, dstOpnd, src1Opnd, src2Opnd, m_func); + break; + default: Assume(UNREACHED); } @@ -2967,15 +3118,25 @@ IRBuilderAsmJs::BuildBrInt1(Js::OpCodeAsmJs newOpcode, uint32 offset) void IRBuilderAsmJs::BuildBrInt1(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src) { - Assert(newOpcode == Js::OpCodeAsmJs::BrTrue_Int); - + Js::OpCode op = Js::OpCode::Nop; + switch (newOpcode) + { + case Js::OpCodeAsmJs::BrTrue_Int: + op = Js::OpCode::BrTrue_I4; + break; + case Js::OpCodeAsmJs::BrFalse_Int: + op = Js::OpCode::BrFalse_I4; + break; + default: + Assume(UNREACHED); + } Js::RegSlot src1RegSlot = GetRegSlotFromIntReg(src); IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyInt32); src1Opnd->SetValueType(ValueType::GetInt(false)); uint targetOffset = m_jnReader.GetCurrentOffset() + relativeOffset; - IR::BranchInstr * branchInstr = IR::BranchInstr::New(Js::OpCode::BrTrue_I4, nullptr, src1Opnd, m_func); + IR::BranchInstr * branchInstr = IR::BranchInstr::New(op, nullptr, src1Opnd, m_func); AddBranchInstr(branchInstr, offset, targetOffset); } @@ -2988,6 +3149,15 @@ IRBuilderAsmJs::BuildBrInt2(Js::OpCodeAsmJs newOpcode, uint32 offset) BuildBrInt2(newOpcode, offset, layout->RelativeJumpOffset, layout->I1, layout->I2); } +template +void +IRBuilderAsmJs::BuildBrInt1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset) +{ + Assert(OpCodeAttrAsmJs::HasMultiSizeLayout(newOpcode)); + auto layout = m_jnReader.GetLayout>(); + BuildBrInt1Const1(newOpcode, offset, layout->RelativeJumpOffset, layout->I1, layout->C1); +} + void IRBuilderAsmJs::BuildBrInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src1, Js::RegSlot src2) { @@ -3000,9 +3170,29 @@ IRBuilderAsmJs::BuildBrInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 rela IR::RegOpnd * src2Opnd = BuildSrcOpnd(src2RegSlot, TyInt32); src2Opnd->SetValueType(ValueType::GetInt(false)); + BuildBrCmp(newOpcode, offset, relativeOffset, src1Opnd, src2Opnd); +} + +void +IRBuilderAsmJs::BuildBrInt1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src1, int32 src2) +{ + Js::RegSlot src1RegSlot = GetRegSlotFromIntReg(src1); + + IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyInt32); + src1Opnd->SetValueType(ValueType::GetInt(false)); + + IR::Opnd * src2Opnd = IR::IntConstOpnd::New(src2, TyInt32, this->m_func); + src2Opnd->SetValueType(ValueType::GetInt(false)); + + BuildBrCmp(newOpcode, offset, relativeOffset, src1Opnd, src2Opnd); +} + +void +IRBuilderAsmJs::BuildBrCmp(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, IR::RegOpnd* src1Opnd, IR::Opnd* src2Opnd) +{ uint targetOffset = m_jnReader.GetCurrentOffset() + relativeOffset; - if (newOpcode == Js::OpCodeAsmJs::Case_Int) + if (newOpcode == Js::OpCodeAsmJs::Case_Int || newOpcode == Js::OpCodeAsmJs::Case_IntConst) { // branches for cases are generated entirely by the switch builder m_switchBuilder.OnCase( @@ -3034,7 +3224,6 @@ IRBuilderAsmJs::IsLoopBodyReturnIPInstr(IR::Instr * instr) const return (dst && dst->IsRegOpnd() && dst->AsRegOpnd()->m_sym == m_loopBodyRetIPSym); } - bool IRBuilderAsmJs::IsLoopBodyOuterOffset(uint offset) const { @@ -3061,7 +3250,6 @@ IRBuilderAsmJs::CreateLoopBodyReturnIPInstr(uint targetOffset, uint offset) return IR::Instr::New(Js::OpCode::Ld_I4, retOpnd, exitOffsetOpnd, m_func); } - IR::Opnd * IRBuilderAsmJs::InsertLoopBodyReturnIPInstr(uint targetOffset, uint offset) { @@ -3146,12 +3334,10 @@ IRBuilderAsmJs::BuildAsmJsLoopBodySlotOpnd(SymID symId, IRType opndType) propOffSet = propOffSet * TySize[type]; } - PropertySym * fieldSym = PropertySym::FindOrCreate(loopParamSym->m_id, propOffSet, (uint32)-1, (uint)-1, PropertyKindLocalSlots, m_func); return IR::SymOpnd::New(fieldSym, type, m_func); } - void IRBuilderAsmJs::EnsureLoopBodyAsmJsLoadSlot(SymID symId, IRType type) { @@ -3173,7 +3359,6 @@ IRBuilderAsmJs::EnsureLoopBodyAsmJsLoadSlot(SymID symId, IRType type) } } - void IRBuilderAsmJs::GenerateLoopBodySlotAccesses(uint offset) { @@ -3431,7 +3616,6 @@ case Js::AsmJsType::Which::##type1: \ #undef SIMD_TYPE_CHECK } - // !!NOTE: Always build the src opnds first, before dst. So we record the use of any temps before assigning new symId for the dst temp. // Float32x4 @@ -3571,7 +3755,6 @@ void IRBuilderAsmJs::BuildFloat32x4_1Float4(Js::OpCodeAsmJs newOpcode, uint32 of Js::RegSlot src3RegSlot = GetRegSlotFromFloatReg(layout->F3); Js::RegSlot src4RegSlot = GetRegSlotFromFloatReg(layout->F4); - IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyFloat32); IR::RegOpnd * src2Opnd = BuildSrcOpnd(src2RegSlot, TyFloat32); IR::RegOpnd * src3Opnd = BuildSrcOpnd(src3RegSlot, TyFloat32); @@ -3587,7 +3770,6 @@ void IRBuilderAsmJs::BuildFloat32x4_1Float4(Js::OpCodeAsmJs newOpcode, uint32 of src3Opnd->SetValueType(ValueType::Float); src4Opnd->SetValueType(ValueType::Float); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -3622,7 +3804,6 @@ IRBuilderAsmJs::BuildFloat32x4_2Int4(Js::OpCodeAsmJs newOpcode, uint32 offset) dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Float32x4)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Float32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -3659,7 +3840,6 @@ IRBuilderAsmJs::BuildFloat32x4_3Int4(Js::OpCodeAsmJs newOpcode, uint32 offset) src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Float32x4)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Float32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -3672,7 +3852,6 @@ IRBuilderAsmJs::BuildFloat32x4_3Int4(Js::OpCodeAsmJs newOpcode, uint32 offset) AddInstr(IR::Instr::New(opcode, dstOpnd, instr->GetDst(), m_func), offset); } - template void IRBuilderAsmJs::BuildFloat32x4_1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -3683,7 +3862,6 @@ IRBuilderAsmJs::BuildFloat32x4_1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset) Js::RegSlot dstRegSlot = GetRegSlotFromSimd128Reg(layout->F4_0); Js::RegSlot src1RegSlot = GetRegSlotFromFloatReg(layout->F1); - IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyFloat32); src1Opnd->SetValueType(ValueType::Float); @@ -3720,7 +3898,6 @@ IRBuilderAsmJs::BuildFloat32x4_2Float1(Js::OpCodeAsmJs newOpcode, uint32 offset) Js::OpCode opcode = GetSimdOpcode(newOpcode); AssertMsg((uint32)opcode, "Invalid backend SIMD opcode"); - IR::Instr * instr = IR::Instr::New(opcode, dstOpnd, src1Opnd, src2Opnd, m_func); AddInstr(instr, offset); } @@ -3752,7 +3929,6 @@ IRBuilderAsmJs::BuildFloat32x4_1Float64x2_1(Js::OpCodeAsmJs newOpcode, uint32 of } #endif // 0 - template void IRBuilderAsmJs::BuildFloat32x4_1Int32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -3997,7 +4173,6 @@ void IRBuilderAsmJs::BuildInt32x4_2Int4(Js::OpCodeAsmJs newOpcode, uint32 offset dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int32x4)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -4034,7 +4209,6 @@ void IRBuilderAsmJs::BuildInt32x4_3Int4(Js::OpCodeAsmJs newOpcode, uint32 offset src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int32x4)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -4214,7 +4388,6 @@ IRBuilderAsmJs::BuildInt32x4_1Uint32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offse BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128I4, TySimd128U4); } - template void IRBuilderAsmJs::BuildInt32x4_1Int16x8_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -4438,7 +4611,6 @@ IRBuilderAsmJs::BuildInt8x16_1Bool8x16_1Int8x16_2(Js::OpCodeAsmJs newOpcode, uin AddInstr(IR::Instr::New(opcode, dstOpnd, instr->GetDst(), m_func), offset); } - template void IRBuilderAsmJs::BuildInt8x16_1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -4547,7 +4719,6 @@ void IRBuilderAsmJs::BuildInt8x16_3Int16(Js::OpCodeAsmJs newOpcode, uint32 offse src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int8x16)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int8x16)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -4890,7 +5061,6 @@ void IRBuilderAsmJs::BuildFloat64x2_1Double1(Js::OpCodeAsmJs newOpcode, uint32 o AddInstr(instr, offset); } - template void IRBuilderAsmJs::BuildFloat64x2_2Double1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -4914,7 +5084,6 @@ IRBuilderAsmJs::BuildFloat64x2_2Double1(Js::OpCodeAsmJs newOpcode, uint32 offset Js::OpCode opcode = GetSimdOpcode(newOpcode); AssertMsg((uint32)opcode, "Invalid backend SIMD opcode"); - IR::Instr * instr = IR::Instr::New(opcode, dstOpnd, src1Opnd, src2Opnd, m_func); AddInstr(instr, offset); } @@ -5221,7 +5390,6 @@ void IRBuilderAsmJs::BuildInt16x8_2Int8(Js::OpCodeAsmJs newOpcode, uint32 offset dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int16x8)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int16x8)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -5266,7 +5434,6 @@ void IRBuilderAsmJs::BuildInt16x8_3Int8(Js::OpCodeAsmJs newOpcode, uint32 offset src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int16x8)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Int16x8)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -5434,7 +5601,6 @@ IRBuilderAsmJs::BuildInt16x8_1Int32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offset BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128I8, TySimd128I4); } - template void IRBuilderAsmJs::BuildInt16x8_1Int8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -5448,7 +5614,6 @@ IRBuilderAsmJs::BuildInt16x8_1Int8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offset BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128I8, TySimd128I16); } - template void IRBuilderAsmJs::BuildInt16x8_1Uint32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -5546,7 +5711,6 @@ void IRBuilderAsmJs::BuildReg1Uint32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offse } } - template void IRBuilderAsmJs::BuildInt1Uint32x4_1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -5596,7 +5760,6 @@ void IRBuilderAsmJs::BuildUint32x4_2Int4(Js::OpCodeAsmJs newOpcode, uint32 offse dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint32x4)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -5633,7 +5796,6 @@ void IRBuilderAsmJs::BuildUint32x4_3Int4(Js::OpCodeAsmJs newOpcode, uint32 offse src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint32x4)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint32x4)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -5825,7 +5987,6 @@ IRBuilderAsmJs::BuildUint32x4_1Int8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offse BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U4, TySimd128I16); } - template void IRBuilderAsmJs::BuildUint32x4_1Uint16x8_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -5969,7 +6130,6 @@ void IRBuilderAsmJs::BuildUint16x8_2Int8(Js::OpCodeAsmJs newOpcode, uint32 offse dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint16x8)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint16x8)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -6014,7 +6174,6 @@ void IRBuilderAsmJs::BuildUint16x8_3Int8(Js::OpCodeAsmJs newOpcode, uint32 offse src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint16x8)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint16x8)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -6045,7 +6204,6 @@ IRBuilderAsmJs::BuildUint16x8_1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset) BuildSimd_1Int1(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U8); } - template void IRBuilderAsmJs::BuildUint16x8_2Int2(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -6209,7 +6367,6 @@ IRBuilderAsmJs::BuildUint16x8_1Int8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offse BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U8, TySimd128I16); } - template void IRBuilderAsmJs::BuildUint16x8_1Uint32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -6236,7 +6393,6 @@ IRBuilderAsmJs::BuildUint16x8_1Uint8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offs BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U8, TySimd128U16); } - /* Uint8x16 */ template void IRBuilderAsmJs::BuildUint8x16_1Int16(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -6382,7 +6538,6 @@ void IRBuilderAsmJs::BuildUint8x16_2Int16(Js::OpCodeAsmJs newOpcode, uint32 offs dstOpnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint8x16)); src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint8x16)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -6446,7 +6601,6 @@ void IRBuilderAsmJs::BuildUint8x16_3Int16(Js::OpCodeAsmJs newOpcode, uint32 offs src1Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint8x16)); src2Opnd->SetValueType(ValueType::GetSimd128(ObjectType::Simd128Uint8x16)); - instr = AddExtendedArg(src1Opnd, nullptr, offset); instr = AddExtendedArg(src2Opnd, instr->GetDst()->AsRegOpnd(), offset); instr = AddExtendedArg(src3Opnd, instr->GetDst()->AsRegOpnd(), offset); @@ -6640,7 +6794,6 @@ IRBuilderAsmJs::BuildUint8x16_1Int8x16_1(Js::OpCodeAsmJs newOpcode, uint32 offse BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U16, TySimd128I16); } - template void IRBuilderAsmJs::BuildUint8x16_1Uint32x4_1(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -6667,7 +6820,6 @@ IRBuilderAsmJs::BuildUint8x16_1Uint16x8_1(Js::OpCodeAsmJs newOpcode, uint32 offs BuildSimdConversion(newOpcode, offset, dstRegSlot, src1RegSlot, TySimd128U16, TySimd128U8); } - //Bool32x4 template void IRBuilderAsmJs::BuildBool32x4_1Int4(Js::OpCodeAsmJs newOpcode, uint32 offset) @@ -7147,7 +7299,6 @@ IRBuilderAsmJs::BuildInt1Bool8x16_1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset AddInstr(instr, offset); } - void IRBuilderAsmJs::BuildSimd_1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstRegSlot, Js::RegSlot src1RegSlot, IRType simdType) { IR::RegOpnd * src1Opnd = BuildSrcOpnd(src1RegSlot, TyInt32); @@ -7764,3 +7915,4 @@ IRBuilderAsmJs::BuildAsmSimdTypedArr(Js::OpCodeAsmJs newOpcode, uint32 offset, u AddInstr(instr, offset); } +#endif diff --git a/lib/Backend/IRBuilderAsmJs.h b/lib/Backend/IRBuilderAsmJs.h index cf4990b064c..08e6271671c 100644 --- a/lib/Backend/IRBuilderAsmJs.h +++ b/lib/Backend/IRBuilderAsmJs.h @@ -5,6 +5,7 @@ #pragma once +#ifdef ASMJS_PLAT namespace AsmJsRegSlots { enum ConstSlots @@ -133,6 +134,8 @@ class IRBuilderAsmJs void BuildReg1Float1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstReg, Js::RegSlot srcFloatReg); void BuildReg1Int1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstReg, Js::RegSlot srcIntReg); void BuildInt1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dstInt, int constInt); + void BuildFloat1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, float constVal); + void BuildDouble1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, double constVal); void BuildInt1Double2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, Js::RegSlot src1, Js::RegSlot src2); void BuildInt1Float2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, Js::RegSlot src1, Js::RegSlot src2); void BuildInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, Js::RegSlot src); @@ -145,6 +148,8 @@ class IRBuilderAsmJs void BuildDouble3(Js::OpCodeAsmJs newOpcode, uint32 offset, Js::RegSlot dst, Js::RegSlot src1, Js::RegSlot src2); void BuildBrInt1(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src); void BuildBrInt2(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src1, Js::RegSlot src2); + void BuildBrInt1Const1(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, Js::RegSlot src1, int32 src2); + void BuildBrCmp(Js::OpCodeAsmJs newOpcode, uint32 offset, int32 relativeOffset, IR::RegOpnd* src1Opnd, IR::Opnd* src2Opnd); void GenerateLoopBodySlotAccesses(uint offset); void GenerateLoopBodyStSlots(SymID loopParamSymId, uint offset); IR::Instr* GenerateStSlotForReturn(IR::RegOpnd* srcOpnd, IRType type); @@ -190,3 +195,5 @@ class IRBuilderAsmJs uint32 m_offsetToInstructionCount; #endif }; + +#endif \ No newline at end of file diff --git a/lib/Backend/Inline.cpp b/lib/Backend/Inline.cpp index f2342876ab2..4c2ac9a1c76 100644 --- a/lib/Backend/Inline.cpp +++ b/lib/Backend/Inline.cpp @@ -1328,7 +1328,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function (isCtor && ( PHASE_TRACE(Js::FixedNewObjPhase, callInstr->m_func) || PHASE_TESTTRACE(Js::FixedNewObjPhase, callInstr->m_func))) - ) && !dontOptimizeJustCheck; + ) && !dontOptimizeJustCheck && !JITManager::GetJITManager()->IsJITServer(); if (printFixedFieldsTrace) { @@ -1414,7 +1414,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function const char16* calleeName = calleeFunctionBody != nullptr ? calleeFunctionBody->GetDisplayName() : _u(""); Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); Output::Print(_u("FixedFields: function %s (#%u): %s non-fixed method %s (%s #%u) (cache id: %d), because %s fixed %s %s is disabled.\n"), callInstr->m_func->GetJITFunctionBody()->GetDisplayName(), callInstr->m_func->GetDebugNumberSet(debugStringBuffer), @@ -1436,7 +1436,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function JITTimeFunctionBody* calleeFunctionBody = inlineeInfo != nullptr && inlineeInfo->HasBody() ? inlineeInfo->GetBody() : nullptr; const char16* calleeName = calleeFunctionBody != nullptr ? calleeFunctionBody->GetDisplayName() : _u(""); Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); Output::Print(_u("FixedFields: function %s (%s): %s non-fixed method %s (%s %s) (cache id: %d), because inline cache has no cached type.\n"), callInstr->m_func->GetJITFunctionBody()->GetDisplayName(), callInstr->m_func->GetDebugNumberSet(debugStringBuffer), @@ -1468,7 +1468,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function const char16* calleeName = calleeFunctionBody != nullptr ? calleeFunctionBody->GetDisplayName() : _u(""); Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); Output::Print(_u("FixedFields: function %s (%s): %s non-fixed method %s (%s %s) (cache id: %d, layout: %s), because inline cache has no fixed function object.\n"), callInstr->m_func->GetJITFunctionBody()->GetDisplayName(), callInstr->m_func->GetDebugNumberSet(debugStringBuffer), @@ -1494,7 +1494,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function const char16* calleeName = calleeFunctionBody != nullptr ? calleeFunctionBody->GetDisplayName() : _u(""); Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); Output::Print(_u("FixedFields: function %s (%s): %s non-fixed method %s (%s %s) (cache id: %d, layout: %s), because callee is a built-in with fast path in lowerer.\n"), callInstr->m_func->GetJITFunctionBody()->GetDisplayName(), callInstr->m_func->GetDebugNumberSet(debugStringBuffer), @@ -1515,7 +1515,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function { char16 debugStringBuffer3[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); bool isProto = methodPropertyOpnd->IsLoadedFromProto(); bool isAccessor = methodPropertyOpnd->UsesAccessor(); Js::FunctionBody* fixedFunctionBody = functionObject->GetFunctionInfo()->GetFunctionBody(); @@ -1556,7 +1556,7 @@ Inline::TryOptimizeCallInstrWithFixedMethod(IR::Instr *callInstr, const Function { JITTimeFunctionBody* calleeFunctionBody = inlineeInfo != nullptr && inlineeInfo->HasBody() ? inlineeInfo->GetBody() : nullptr; Js::PropertyId methodPropertyId = callInstr->m_func->GetJITFunctionBody()->GetPropertyIdFromCacheId(methodPropertyOpnd->m_inlineCacheIndex); - Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetThreadContextInfo()->GetPropertyRecord(methodPropertyId); + Js::PropertyRecord const * const methodPropertyRecord = callInstr->m_func->GetInProcThreadContext()->GetPropertyRecord(methodPropertyId); const char16* fixedFunctionName = calleeFunctionBody != nullptr ? calleeFunctionBody->GetDisplayName() : _u(""); Js::FunctionBody* fixedFunctionBody = functionObject->GetFunctionInfo()->GetFunctionBody(); const char16* fixedFunctionNumbers = fixedFunctionBody ? fixedFunctionBody->GetDebugNumberSet(debugStringBuffer2) : _u("(null)"); @@ -3486,10 +3486,18 @@ Inline::InlineGetterSetterFunction(IR::Instr *accessorInstr, const FunctionJITTi char16 debugStringBuffer [MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; char16 debugStringBuffer2[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; PropertySym *propertySym = isGetter ? accessorInstr->GetSrc1()->AsSymOpnd()->m_sym->AsPropertySym() : accessorInstr->GetDst()->AsSymOpnd()->m_sym->AsPropertySym(); - - Output::Print(_u("INLINING: %s: \tInlinee: %s (%s)\tCaller: %s (%s)\t fieldName: %s\n"), isGetter ? _u("Getter") : _u("Setter"), - funcBody->GetDisplayName(), inlineeData->GetDebugNumberSet(debugStringBuffer), funcCaller->GetDisplayName(), accessorInstr->m_func->GetWorkItem()->GetJITTimeInfo()->GetDebugNumberSet(debugStringBuffer2), - propertySym->GetFunc()->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer()); + if (JITManager::GetJITManager()->IsOOPJITEnabled()) + { + Output::Print(_u("INLINING: %s: \tInlinee: %s (%s)\tCaller: %s (%s)\t fieldId: %d\n"), isGetter ? _u("Getter") : _u("Setter"), + funcBody->GetDisplayName(), inlineeData->GetDebugNumberSet(debugStringBuffer), funcCaller->GetDisplayName(), accessorInstr->m_func->GetWorkItem()->GetJITTimeInfo()->GetDebugNumberSet(debugStringBuffer2), + propertySym->m_propertyId); + } + else + { + Output::Print(_u("INLINING: %s: \tInlinee: %s (%s)\tCaller: %s (%s)\t fieldName: %s\n"), isGetter ? _u("Getter") : _u("Setter"), + funcBody->GetDisplayName(), inlineeData->GetDebugNumberSet(debugStringBuffer), funcCaller->GetDisplayName(), accessorInstr->m_func->GetWorkItem()->GetJITTimeInfo()->GetDebugNumberSet(debugStringBuffer2), + propertySym->GetFunc()->GetInProcThreadContext()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer()); + } Output::Flush(); } #endif diff --git a/lib/Backend/InterpreterThunkEmitter.cpp b/lib/Backend/InterpreterThunkEmitter.cpp index d7ef3cbd98b..edef77016ed 100644 --- a/lib/Backend/InterpreterThunkEmitter.cpp +++ b/lib/Backend/InterpreterThunkEmitter.cpp @@ -222,16 +222,13 @@ const BYTE InterpreterThunkEmitter::Call[] = { #endif -const BYTE InterpreterThunkEmitter::PageCount = 1; -const uint InterpreterThunkEmitter::BlockSize = AutoSystemInfo::PageSize * InterpreterThunkEmitter::PageCount; const BYTE InterpreterThunkEmitter::HeaderSize = sizeof(InterpreterThunk); const BYTE InterpreterThunkEmitter::ThunkSize = sizeof(Call); const uint InterpreterThunkEmitter::ThunksPerBlock = (BlockSize - HeaderSize) / ThunkSize; -InterpreterThunkEmitter::InterpreterThunkEmitter(ArenaAllocator* allocator, CustomHeap::CodePageAllocators * codePageAllocators, bool isAsmInterpreterThunk) : - // TODO: michhol oop JIT move interpreter thunk emitter out of process +InterpreterThunkEmitter::InterpreterThunkEmitter(Js::ScriptContext* context, ArenaAllocator* allocator, CustomHeap::CodePageAllocators * codePageAllocators, bool isAsmInterpreterThunk) : emitBufferManager(allocator, codePageAllocators, /*scriptContext*/ nullptr, _u("Interpreter thunk buffer"), GetCurrentProcess()), - allocation(nullptr), + scriptContext(context), allocator(allocator), thunkCount(0), thunkBuffer(nullptr), @@ -287,40 +284,114 @@ void* InterpreterThunkEmitter::ConvertToEntryPoint(PVOID dynamicInterpreterThunk void InterpreterThunkEmitter::NewThunkBlock() { +#ifdef ENABLE_OOP_NATIVE_CODEGEN + if (JITManager::GetJITManager()->IsOOPJITEnabled()) + { + NewOOPJITThunkBlock(); + return; + } +#endif + Assert(this->thunkCount == 0); BYTE* buffer; - BYTE* currentBuffer; - DWORD bufferSize = BlockSize; - DWORD thunkCount = 0; - - void * interpreterThunk = nullptr; - // the static interpreter thunk invoked by the dynamic emitted thunk -#ifdef ASMJS_PLAT - if (isAsmInterpreterThunk) + EmitBufferAllocation * allocation = emitBufferManager.AllocateBuffer(BlockSize, &buffer); + if (allocation == nullptr) { - interpreterThunk = (void*)Js::InterpreterStackFrame::InterpreterAsmThunk; + Js::Throw::OutOfMemory(); } - else -#endif + if (!emitBufferManager.ProtectBufferWithExecuteReadWriteForInterpreter(allocation)) { - interpreterThunk = (void*)Js::InterpreterStackFrame::InterpreterThunk; + Js::Throw::OutOfMemory(); } - allocation = emitBufferManager.AllocateBuffer(bufferSize, &buffer); - if (allocation == nullptr) +#if PDATA_ENABLED + PRUNTIME_FUNCTION pdataStart; + intptr_t epilogEnd; +#endif + + FillBuffer( + this->scriptContext->GetThreadContext(), + this->isAsmInterpreterThunk, + (intptr_t)buffer, + BlockSize, + buffer, +#if PDATA_ENABLED + &pdataStart, + &epilogEnd, +#endif + &this->thunkCount + ); + + if (!emitBufferManager.CommitReadWriteBufferForInterpreter(allocation, buffer, BlockSize)) { Js::Throw::OutOfMemory(); } - if (!emitBufferManager.ProtectBufferWithExecuteReadWriteForInterpreter(allocation)) + + // Call to set VALID flag for CFG check + ThreadContext::GetContextForCurrentThread()->SetValidCallTargetForCFG(buffer); + + // Update object state only at the end when everything has succeeded - and no exceptions can be thrown. + auto block = this->thunkBlocks.PrependNode(allocator, buffer); +#if PDATA_ENABLED + void* pdataTable; + PDataManager::RegisterPdata((PRUNTIME_FUNCTION)pdataStart, (ULONG_PTR)buffer, (ULONG_PTR)epilogEnd, &pdataTable); + block->SetPdata(pdataTable); +#else + Unused(block); +#endif + this->thunkBuffer = buffer; +} + +#ifdef ENABLE_OOP_NATIVE_CODEGEN +void InterpreterThunkEmitter::NewOOPJITThunkBlock() +{ + InterpreterThunkInfoIDL thunkInfo; + HRESULT hr = JITManager::GetJITManager()->NewInterpreterThunkBlock( + this->scriptContext->GetRemoteScriptAddr(), + this->isAsmInterpreterThunk, + &thunkInfo + ); + JITManager::HandleServerCallResult(hr); + + + this->thunkBuffer = (BYTE*)thunkInfo.thunkBlockAddr; + + if (!CONFIG_FLAG(OOPCFGRegistration)) { - Js::Throw::OutOfMemory(); + this->scriptContext->GetThreadContext()->SetValidCallTargetForCFG(this->thunkBuffer); } - currentBuffer = buffer; + // Update object state only at the end when everything has succeeded - and no exceptions can be thrown. + auto block = this->thunkBlocks.PrependNode(allocator, this->thunkBuffer); +#if PDATA_ENABLED + void* pdataTable; + PDataManager::RegisterPdata((PRUNTIME_FUNCTION)thunkInfo.pdataTableStart, (ULONG_PTR)this->thunkBuffer, (ULONG_PTR)thunkInfo.epilogEndAddr, &pdataTable); + block->SetPdata(pdataTable); +#else + Unused(block); +#endif + + this->thunkCount = thunkInfo.thunkCount; +} +#endif +/* static */ +void InterpreterThunkEmitter::FillBuffer( + _In_ ThreadContextInfo * threadContext, + _In_ bool asmJsThunk, + _In_ intptr_t finalAddr, + _In_ size_t bufferSize, + _Out_writes_bytes_all_(bufferSize) BYTE* buffer, +#if PDATA_ENABLED + _Out_ PRUNTIME_FUNCTION * pdataTableStart, + _Out_ intptr_t * epilogEndAddr, +#endif + _Out_ DWORD * thunkCount + ) +{ #ifdef _M_X64 - PrologEncoder prologEncoder(allocator); + PrologEncoder prologEncoder; prologEncoder.EncodeSmallProlog(PrologSize, StackAllocSize); DWORD pdataSize = prologEncoder.SizeOfPData(); #elif defined(_M_ARM32_OR_ARM64) @@ -328,23 +399,43 @@ void InterpreterThunkEmitter::NewThunkBlock() #else DWORD pdataSize = 0; #endif - DWORD bytesRemaining = bufferSize; + DWORD bytesRemaining = BlockSize; DWORD bytesWritten = 0; DWORD epilogSize = sizeof(Epilog); + DWORD thunks = 0; + + intptr_t interpreterThunk; + + // the static interpreter thunk invoked by the dynamic emitted thunk +#ifdef ASMJS_PLAT + if (asmJsThunk) + { + interpreterThunk = SHIFT_ADDR(threadContext, &Js::InterpreterStackFrame::InterpreterAsmThunk); + } + else +#endif + { + interpreterThunk = SHIFT_ADDR(threadContext, &Js::InterpreterStackFrame::InterpreterThunk); + } + BYTE * currentBuffer = buffer; // Ensure there is space for PDATA at the end - BYTE* pdataStart = currentBuffer + (bufferSize - Math::Align(pdataSize, EMIT_BUFFER_ALIGNMENT)); + BYTE* pdataStart = currentBuffer + (BlockSize - Math::Align(pdataSize, EMIT_BUFFER_ALIGNMENT)); BYTE* epilogStart = pdataStart - Math::Align(epilogSize, EMIT_BUFFER_ALIGNMENT); + // Ensure there is space for PDATA at the end + intptr_t finalPdataStart = finalAddr + (BlockSize - Math::Align(pdataSize, EMIT_BUFFER_ALIGNMENT)); + intptr_t finalEpilogStart = finalPdataStart - Math::Align(epilogSize, EMIT_BUFFER_ALIGNMENT); + // Copy the thunk buffer and modify it. js_memcpy_s(currentBuffer, bytesRemaining, InterpreterThunk, HeaderSize); - EncodeInterpreterThunk(currentBuffer, buffer, HeaderSize, epilogStart, epilogSize, interpreterThunk); + EncodeInterpreterThunk(currentBuffer, finalAddr, HeaderSize, finalEpilogStart, epilogSize, interpreterThunk); currentBuffer += HeaderSize; bytesRemaining -= HeaderSize; // Copy call buffer DWORD callSize = sizeof(Call); - while(currentBuffer < epilogStart - callSize) + while (currentBuffer < epilogStart - callSize) { js_memcpy_s(currentBuffer, bytesRemaining, Call, callSize); #if _M_ARM @@ -367,7 +458,7 @@ void InterpreterThunkEmitter::NewThunkBlock() #endif currentBuffer += callSize; bytesRemaining -= callSize; - thunkCount++; + thunks++; } // Fill any gap till start of epilog @@ -394,30 +485,20 @@ void InterpreterThunkEmitter::NewThunkBlock() GeneratePdata(buffer, functionSize, &pdata); bytesWritten = CopyWithAlignment(pdataStart, bytesRemaining, (const BYTE*)&pdata, pdataSize, EMIT_BUFFER_ALIGNMENT); #endif - void* pdataTable; - PDataManager::RegisterPdata((PRUNTIME_FUNCTION) pdataStart, (ULONG_PTR) buffer, (ULONG_PTR) epilogEnd, &pdataTable); + *pdataTableStart = (PRUNTIME_FUNCTION)finalPdataStart; + *epilogEndAddr = finalEpilogStart; #endif - if (!emitBufferManager.CommitReadWriteBufferForInterpreter(allocation, buffer, bufferSize)) - { - Js::Throw::OutOfMemory(); - } - - // Call to set VALID flag for CFG check - ThreadContext::GetContextForCurrentThread()->SetValidCallTargetForCFG(buffer); - - // Update object state only at the end when everything has succeeded - and no exceptions can be thrown. - ThunkBlock* block = this->thunkBlocks.PrependNode(allocator, buffer); - UNREFERENCED_PARAMETER(block); -#if PDATA_ENABLED - block->SetPdata(pdataTable); -#endif - this->thunkCount = thunkCount; - this->thunkBuffer = buffer; + *thunkCount = thunks; } - #if _M_ARM -void InterpreterThunkEmitter::EncodeInterpreterThunk(__in_bcount(thunkSize) BYTE* thunkBuffer, __in_bcount(thunkSize) BYTE* thunkBufferStartAddress, __in const DWORD thunkSize, __in_bcount(epilogSize) BYTE* epilogStart, __in const DWORD epilogSize, __in void * const interpreterThunk) +void InterpreterThunkEmitter::EncodeInterpreterThunk( + __in_bcount(thunkSize) BYTE* thunkBuffer, + __in const intptr_t thunkBufferStartAddress, + __in const DWORD thunkSize, + __in const intptr_t epilogStart, + __in const DWORD epilogSize, + __in const intptr_t interpreterThunk) { _Analysis_assume_(thunkSize == HeaderSize); // Encode MOVW @@ -482,7 +563,13 @@ void InterpreterThunkEmitter::GeneratePdata(_In_ const BYTE* entryPoint, _In_ co } #elif _M_ARM64 -void InterpreterThunkEmitter::EncodeInterpreterThunk(__in_bcount(thunkSize) BYTE* thunkBuffer, __in_bcount(thunkSize) BYTE* thunkBufferStartAddress, __in const DWORD thunkSize, __in_bcount(epilogSize) BYTE* epilogStart, __in const DWORD epilogSize, __in void * const interpreterThunk) +void InterpreterThunkEmitter::EncodeInterpreterThunk( + __in_bcount(thunkSize) BYTE* thunkBuffer, + __in const intptr_t thunkBufferStartAddress, + __in const DWORD thunkSize, + __in const intptr_t epilogStart, + __in const DWORD epilogSize, + __in const intptr_t interpreterThunk) { int addrOffset = ThunkAddressOffset; @@ -556,7 +643,13 @@ void InterpreterThunkEmitter::GeneratePdata(_In_ const BYTE* entryPoint, _In_ co function->FrameSize = 5; // the number of bytes of stack that is allocated for this function divided by 16 } #else -void InterpreterThunkEmitter::EncodeInterpreterThunk(__in_bcount(thunkSize) BYTE* thunkBuffer, __in_bcount(thunkSize) BYTE* thunkBufferStartAddress, __in const DWORD thunkSize, __in_bcount(epilogSize) BYTE* epilogStart, __in const DWORD epilogSize, __in void * const interpreterThunk) +void InterpreterThunkEmitter::EncodeInterpreterThunk( + __in_bcount(thunkSize) BYTE* thunkBuffer, + __in const intptr_t thunkBufferStartAddress, + __in const DWORD thunkSize, + __in const intptr_t epilogStart, + __in const DWORD epilogSize, + __in const intptr_t interpreterThunk) { _Analysis_assume_(thunkSize == HeaderSize); Emit(thunkBuffer, ThunkAddressOffset, (uintptr_t)interpreterThunk); @@ -579,7 +672,6 @@ DWORD InterpreterThunkEmitter::FillDebugBreak(_In_ BYTE* dest, _In_ DWORD count) #elif defined(_M_ARM64) Assert(count % 4 == 0); #endif - // TODO: michhol OOP JIT. after mving OOP, change to runtime process handle CustomHeap::FillDebugBreak(dest, count, GetCurrentProcess()); return count; } @@ -607,6 +699,31 @@ DWORD InterpreterThunkEmitter::CopyWithAlignment( return srcSize; } +#if DBG +bool +InterpreterThunkEmitter::IsInHeap(void* address) +{ +#ifdef ENABLE_OOP_NATIVE_CODEGEN + if (JITManager::GetJITManager()->IsOOPJITEnabled()) + { + intptr_t remoteScript = this->scriptContext->GetRemoteScriptAddr(false); + if (!remoteScript) + { + return false; + } + boolean result; + HRESULT hr = JITManager::GetJITManager()->IsInterpreterThunkAddr(remoteScript, (intptr_t)address, this->isAsmInterpreterThunk, &result); + JITManager::HandleServerCallResult(hr); + return result != FALSE; + } + else +#endif + { + return emitBufferManager.IsInHeap(address); + } +} +#endif + // We only decommit at close because there might still be some // code running here. // The destructor of emitBufferManager will cause the eventual release. @@ -622,7 +739,20 @@ void InterpreterThunkEmitter::Close() #endif this->thunkBlocks.Clear(allocator); this->freeListedThunkBlocks.Clear(allocator); - emitBufferManager.Decommit(); +#ifdef ENABLE_OOP_NATIVE_CODEGEN + if (JITManager::GetJITManager()->IsOOPJITEnabled()) + { + intptr_t remoteScript = this->scriptContext->GetRemoteScriptAddr(false); + if (remoteScript) + { + JITManager::GetJITManager()->DecommitInterpreterBufferManager(remoteScript, this->isAsmInterpreterThunk); + } + } + else +#endif + { + emitBufferManager.Decommit(); + } this->thunkBuffer = nullptr; this->thunkCount = 0; } diff --git a/lib/Backend/InterpreterThunkEmitter.h b/lib/Backend/InterpreterThunkEmitter.h index 8f811c3b4f0..b80087cf0f9 100644 --- a/lib/Backend/InterpreterThunkEmitter.h +++ b/lib/Backend/InterpreterThunkEmitter.h @@ -58,12 +58,12 @@ class InterpreterThunkEmitter private: /* ------- instance methods --------*/ EmitBufferManager<> emitBufferManager; - EmitBufferAllocation *allocation; SListBase thunkBlocks; SListBase freeListedThunkBlocks; bool isAsmInterpreterThunk; // To emit address of InterpreterAsmThunk or InterpreterThunk BYTE* thunkBuffer; ArenaAllocator* allocator; + Js::ScriptContext * scriptContext; DWORD thunkCount; // Count of thunks available in the current thunk block /* -------static constants ----------*/ @@ -86,7 +86,7 @@ class InterpreterThunkEmitter static const BYTE Epilog[]; - static const BYTE PageCount; + static const BYTE PageCount = 1; #if defined(_M_X64) static const BYTE PrologSize; static const BYTE StackAllocSize; @@ -94,10 +94,21 @@ class InterpreterThunkEmitter /* ------private helpers -----------*/ void NewThunkBlock(); - void EncodeInterpreterThunk(__in_bcount(thunkSize) BYTE* thunkBuffer, __in_bcount(thunkSize) BYTE* thunkBufferStartAddress, __in const DWORD thunkSize, __in_bcount(epilogSize) BYTE* epilogStart, __in const DWORD epilogSize, __in void * const interpreterThunk); + +#ifdef ENABLE_OOP_NATIVE_CODEGEN + void NewOOPJITThunkBlock(); +#endif + + static void EncodeInterpreterThunk( + __in_bcount(thunkSize) BYTE* thunkBuffer, + __in const intptr_t thunkBufferStartAddress, + __in const DWORD thunkSize, + __in const intptr_t epilogStart, + __in const DWORD epilogSize, + __in const intptr_t interpreterThunk); #if defined(_M_ARM32_OR_ARM64) - DWORD EncodeMove(DWORD opCode, int reg, DWORD imm16); - void GeneratePdata(_In_ const BYTE* entryPoint, _In_ const DWORD functionSize, _Out_ RUNTIME_FUNCTION* function); + static DWORD EncodeMove(DWORD opCode, int reg, DWORD imm16); + static void GeneratePdata(_In_ const BYTE* entryPoint, _In_ const DWORD functionSize, _Out_ RUNTIME_FUNCTION* function); #endif /*-------static helpers ---------*/ @@ -109,31 +120,41 @@ class InterpreterThunkEmitter AssertMsg(*(T*) (dest + offset) == 0, "Overwriting an already existing opcode?"); *(T*)(dest + offset) = value; }; + + BYTE* AllocateFromFreeList(PVOID* ppDynamicInterpreterThunk); public: static const BYTE HeaderSize; static const BYTE ThunkSize; static const uint ThunksPerBlock; - static const uint BlockSize; + static const uint BlockSize= AutoSystemInfo::PageSize * PageCount; static void* ConvertToEntryPoint(PVOID dynamicInterpreterThunk); - InterpreterThunkEmitter(ArenaAllocator* allocator, CustomHeap::CodePageAllocators * codePageAllocators, bool isAsmInterpreterThunk = false); - + InterpreterThunkEmitter(Js::ScriptContext * context, ArenaAllocator* allocator, CustomHeap::CodePageAllocators * codePageAllocators, bool isAsmInterpreterThunk = false); BYTE* GetNextThunk(PVOID* ppDynamicInterpreterThunk); - BYTE* AllocateFromFreeList(PVOID* ppDynamicInterpreterThunk); - void Close(); void Release(BYTE* thunkAddress, bool addtoFreeList); - // Returns true if the argument falls within the range managed by this buffer. - inline bool IsInHeap(void* address) - { - return emitBufferManager.IsInHeap(address); - } +#if DBG + bool IsInHeap(void* address); +#endif const EmitBufferManager<>* GetEmitBufferManager() const { return &emitBufferManager; } + static void FillBuffer( + _In_ ThreadContextInfo * context, + _In_ bool asmJsThunk, + _In_ intptr_t finalAddr, + _In_ size_t bufferSize, + _Out_writes_bytes_all_(bufferSize) BYTE* buffer, +#if PDATA_ENABLED + _Out_ PRUNTIME_FUNCTION * pdataTableStart, + _Out_ intptr_t * epilogEndAddr, +#endif + _Out_ DWORD * thunkCount + ); + }; #endif diff --git a/lib/Backend/JITRecyclableObject.h b/lib/Backend/JITRecyclableObject.h index 5c0cdb6a900..0d450383023 100644 --- a/lib/Backend/JITRecyclableObject.h +++ b/lib/Backend/JITRecyclableObject.h @@ -55,10 +55,8 @@ class JITJavascriptString : JITRecyclableObject static JITJavascriptString * FromVar(Js::Var var) { -#ifdef HAS_CONSTEXPR - CompileAssert(offsetof(JITJavascriptString, m_pszValue) == Js::JavascriptString::GetOffsetOfpszValue()); - CompileAssert(offsetof(JITJavascriptString, m_charLength) == Js::JavascriptString::GetOffsetOfcharLength()); -#endif + Assert(offsetof(JITJavascriptString, m_pszValue) == Js::JavascriptString::GetOffsetOfpszValue()); + Assert(offsetof(JITJavascriptString, m_charLength) == Js::JavascriptString::GetOffsetOfcharLength()); Assert(Is(var)); return reinterpret_cast(var); diff --git a/lib/Backend/JITTimeFunctionBody.cpp b/lib/Backend/JITTimeFunctionBody.cpp index 020c1ae8e23..ec91506d74b 100644 --- a/lib/Backend/JITTimeFunctionBody.cpp +++ b/lib/Backend/JITTimeFunctionBody.cpp @@ -54,6 +54,12 @@ JITTimeFunctionBody::InitializeJITFunctionData( } } } + else if (functionBody->IsWasmFunction()) + { + // no consts in wasm + Assert(jitBody->constTable == nullptr); + jitBody->constCount = 0; + } } Js::SmallSpanSequence * statementMap = functionBody->GetStatementMapSpanSequence(); @@ -89,26 +95,25 @@ JITTimeFunctionBody::InitializeJITFunctionData( } else { - Assert(statementMap); - jitBody->byteCodeLength = functionBody->GetByteCode()->GetLength(); jitBody->byteCodeBuffer = functionBody->GetByteCode()->GetBuffer(); + if (!functionBody->IsWasmFunction()) { + Assert(statementMap); + jitBody->statementMap = AnewStructZ(arena, SmallSpanSequenceIDL); + jitBody->statementMap->baseValue = statementMap->baseValue; - jitBody->statementMap = AnewStructZ(arena, SmallSpanSequenceIDL); - jitBody->statementMap->baseValue = statementMap->baseValue; - - if (statementMap->pActualOffsetList) - { - jitBody->statementMap->actualOffsetLength = statementMap->pActualOffsetList->Count(); - jitBody->statementMap->actualOffsetList = statementMap->pActualOffsetList->GetBuffer(); - } + if (statementMap->pActualOffsetList) + { + jitBody->statementMap->actualOffsetLength = statementMap->pActualOffsetList->Count(); + jitBody->statementMap->actualOffsetList = statementMap->pActualOffsetList->GetBuffer(); + } - if (statementMap->pStatementBuffer) - { - jitBody->statementMap->statementLength = statementMap->pStatementBuffer->Count(); - jitBody->statementMap->statementBuffer = statementMap->pStatementBuffer->GetBuffer(); + if (statementMap->pStatementBuffer) + { + jitBody->statementMap->statementLength = statementMap->pStatementBuffer->Count(); + jitBody->statementMap->statementBuffer = statementMap->pStatementBuffer->GetBuffer(); + } } - } jitBody->inlineCacheCount = functionBody->GetInlineCacheCount(); @@ -184,6 +189,7 @@ JITTimeFunctionBody::InitializeJITFunctionData( jitBody->doBackendArgumentsOptimization = functionBody->GetDoBackendArgumentsOptimization(); jitBody->isLibraryCode = functionBody->GetUtf8SourceInfo()->GetIsLibraryCode(); jitBody->isAsmJsMode = functionBody->GetIsAsmjsMode(); + jitBody->isWasmFunction = functionBody->IsWasmFunction(); jitBody->isStrictMode = functionBody->GetIsStrictMode(); jitBody->isEval = functionBody->IsEval(); jitBody->isGlobalFunc = functionBody->GetIsGlobalFunc(); @@ -241,6 +247,7 @@ JITTimeFunctionBody::InitializeJITFunctionData( jitBody->literalRegexCount = functionBody->GetLiteralRegexCount(); jitBody->literalRegexes = (intptr_t*)functionBody->GetLiteralRegexesWithLock(); +#ifdef ASMJS_PLAT if (functionBody->GetIsAsmJsFunction()) { jitBody->asmJsData = Anew(arena, AsmJsDataIDL); @@ -269,6 +276,7 @@ JITTimeFunctionBody::InitializeJITFunctionData( jitBody->asmJsData->usesHeapBuffer = asmFuncInfo->UsesHeapBuffer(); jitBody->asmJsData->totalSizeInBytes = asmFuncInfo->GetTotalSizeinBytes(); } +#endif } intptr_t @@ -572,6 +580,12 @@ JITTimeFunctionBody::IsAsmJsMode() const return m_bodyData.isAsmJsMode != FALSE; } +bool +JITTimeFunctionBody::IsWasmFunction() const +{ + return m_bodyData.isWasmFunction != FALSE; +} + bool JITTimeFunctionBody::IsStrictMode() const { diff --git a/lib/Backend/JITTimeFunctionBody.h b/lib/Backend/JITTimeFunctionBody.h index 56d473f6bbe..b0c8e296460 100644 --- a/lib/Backend/JITTimeFunctionBody.h +++ b/lib/Backend/JITTimeFunctionBody.h @@ -74,6 +74,7 @@ class JITTimeFunctionBody bool IsCoroutine() const; bool IsLambda() const; bool IsAsmJsMode() const; + bool IsWasmFunction() const; bool IsStrictMode() const; bool IsEval() const; bool HasImplicitArgIns() const; diff --git a/lib/Backend/JITTimeProfileInfo.cpp b/lib/Backend/JITTimeProfileInfo.cpp index 8c6766ab7b6..cafdd5c6e18 100644 --- a/lib/Backend/JITTimeProfileInfo.cpp +++ b/lib/Backend/JITTimeProfileInfo.cpp @@ -134,6 +134,7 @@ JITTimeProfileInfo::InitializeJITProfileData( data->flags |= profileInfo->IsStackArgOptDisabled() ? Flags_disableStackArgOpt : 0; data->flags |= profileInfo->IsLoopImplicitCallInfoDisabled() ? Flags_disableLoopImplicitCallInfo : 0; data->flags |= profileInfo->IsPowIntIntTypeSpecDisabled() ? Flags_disablePowIntIntTypeSpec : 0; + data->flags |= profileInfo->IsTagCheckDisabled() ? Flags_disableTagCheck : 0; } void @@ -499,6 +500,12 @@ JITTimeProfileInfo::IsNoProfileBailoutsDisabled() const return TestFlag(Flags_disableNoProfileBailouts); } +bool +JITTimeProfileInfo::IsTagCheckDisabled() const +{ + return TestFlag(Flags_disableTagCheck); +} + bool JITTimeProfileInfo::HasLdFldCallSiteInfo() const { diff --git a/lib/Backend/JITTimeProfileInfo.h b/lib/Backend/JITTimeProfileInfo.h index 47118395aa0..760e82e8c6b 100644 --- a/lib/Backend/JITTimeProfileInfo.h +++ b/lib/Backend/JITTimeProfileInfo.h @@ -67,6 +67,7 @@ class JITTimeProfileInfo bool IsStackArgOptDisabled() const; bool IsLoopImplicitCallInfoDisabled() const; bool IsPowIntIntTypeSpecDisabled() const; + bool IsTagCheckDisabled() const; private: enum ProfileDataFlags : int64 @@ -106,7 +107,8 @@ class JITTimeProfileInfo Flags_hasLdFldCallSiteInfo = 1ll << 31, Flags_disableStackArgOpt = 1ll << 32, Flags_disableLoopImplicitCallInfo = 1ll << 33, - Flags_disablePowIntIntTypeSpec = 1ll << 34 + Flags_disablePowIntIntTypeSpec = 1ll << 34, + Flags_disableTagCheck = 1ll << 35 }; Js::ProfileId GetProfiledArrayCallSiteCount() const; diff --git a/lib/Backend/JnHelperMethod.cpp b/lib/Backend/JnHelperMethod.cpp index bcf61375674..f2423ac47e0 100644 --- a/lib/Backend/JnHelperMethod.cpp +++ b/lib/Backend/JnHelperMethod.cpp @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "Backend.h" diff --git a/lib/Backend/JnHelperMethodList.h b/lib/Backend/JnHelperMethodList.h index ece5775f0c4..75abce60df9 100644 --- a/lib/Backend/JnHelperMethodList.h +++ b/lib/Backend/JnHelperMethodList.h @@ -82,6 +82,7 @@ HELPERCALL(Op_TypeofElem_UInt32, Js::JavascriptOperators::TypeofElem_UInt32, 0) HELPERCALL(Op_TypeofElem_Int32, Js::JavascriptOperators::TypeofElem_Int32, 0) HELPERCALL(Op_TypeofPropertyScoped, Js::JavascriptOperators::OP_TypeofPropertyScoped, 0) HELPERCALL(Op_Rem_Double, Js::NumberUtilities::Modulus, 0) +HELPERCALL(Throw_Unreachable, Js::JavascriptError::ThrowUnreachable, AttrCanThrow) HELPERCALL_FULL_OR_INPLACE_MATH(Op_Increment, Js::JavascriptMath::Increment, Js::SSE2::JavascriptMath::Increment, AttrCanThrow) HELPERCALL_FULL_OR_INPLACE_MATH(Op_Decrement, Js::JavascriptMath::Decrement, Js::SSE2::JavascriptMath::Decrement, AttrCanThrow) @@ -96,7 +97,6 @@ HELPERCALL_FULL_OR_INPLACE_MATH(Op_Multiply, Js::JavascriptMath::Multiply, Js::S HELPERCALL_FULL_OR_INPLACE_MATH(Op_Subtract, Js::JavascriptMath::Subtract, Js::SSE2::JavascriptMath::Subtract, AttrCanThrow) HELPERCALL_FULL_OR_INPLACE_MATH(Op_Exponentiation, Js::JavascriptMath::Exponentiation, Js::SSE2::JavascriptMath::Exponentiation, AttrCanThrow) - HELPERCALL_FULL_OR_INPLACE_MATH(Op_And, Js::JavascriptMath::And, Js::SSE2::JavascriptMath::And, AttrCanThrow) HELPERCALL_FULL_OR_INPLACE_MATH(Op_Or, Js::JavascriptMath::Or, Js::SSE2::JavascriptMath::Or, AttrCanThrow) HELPERCALL_FULL_OR_INPLACE_MATH(Op_Xor, Js::JavascriptMath::Xor, Js::SSE2::JavascriptMath::Xor, AttrCanThrow) @@ -510,7 +510,6 @@ HELPERCALL(DirectMath_PowDoubleInt, (double(*)(double, int32))Js::JavascriptNumb HELPERCALL(DirectMath_Pow, (double(*)(double, double))Js::JavascriptNumber::DirectPow, 0) HELPERCALL_MATH(DirectMath_Random, (double(*)(Js::ScriptContext*))Js::JavascriptMath::Random, (double(*)(Js::ScriptContext*))Js::SSE2::JavascriptMath::Random, 0) - // // Putting dllimport function ptr in JnHelperMethodAddresses will cause the table to be allocated in read-write memory // as dynamic initialization is require to load these addresses. Use nullptr instead and handle these function in GetNonTableMethodAddress(). @@ -524,6 +523,13 @@ HELPERCALL(DirectMath_FloorFlt, nullptr, 0) HELPERCALL(DirectMath_CeilDb, nullptr, 0) HELPERCALL(DirectMath_CeilFlt, nullptr, 0) +HELPERCALL(DirectMath_TruncDb, (double(*)(double)) Wasm::WasmMath::Trunc, 0) +HELPERCALL(DirectMath_TruncFlt, (float(*)(float)) Wasm::WasmMath::Trunc, 0) +HELPERCALL(DirectMath_NearestDb, (double(*)(double)) Wasm::WasmMath::Nearest, 0) +HELPERCALL(DirectMath_NearestFlt, (float(*)(float)) Wasm::WasmMath::Nearest, 0) + +HELPERCALL(PopCnt32, Math::PopCnt32, 0) + #ifdef _M_IX86 HELPERCALL(DirectMath_Acos, nullptr, 0) HELPERCALL(DirectMath_Asin, nullptr, 0) diff --git a/lib/Backend/Lower.cpp b/lib/Backend/Lower.cpp index 48ff678211b..79e8106a79e 100644 --- a/lib/Backend/Lower.cpp +++ b/lib/Backend/Lower.cpp @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "Backend.h" @@ -616,6 +616,14 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa GenerateFastInlineMathImul(instr); break; + case Js::OpCode::Ctz: + GenerateCtz(instr); + break; + + case Js::OpCode::PopCnt32: + GeneratePopCnt32(instr); + break; + case Js::OpCode::InlineMathClz32: GenerateFastInlineMathClz32(instr); break; @@ -624,6 +632,10 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa GenerateFastInlineMathFround(instr); break; + case Js::OpCode::Reinterpret_Prim: + instrPrev = LowerReinterpretPrimitive(instr); + break; + case Js::OpCode::InlineMathMin: case Js::OpCode::InlineMathMax: m_lowererMD.GenerateFastInlineBuiltInCall(instr, (IR::JnHelperMethod)0); @@ -960,6 +972,8 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa case Js::OpCode::Shl_I4: case Js::OpCode::Shr_I4: case Js::OpCode::ShrU_I4: + case Js::OpCode::Rol_I4: + case Js::OpCode::Ror_I4: case Js::OpCode::BrTrue_I4: case Js::OpCode::BrFalse_I4: if(instr->HasBailOutInfo()) @@ -3010,6 +3024,37 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa instrPrev = this->LowerSlotArrayCheck(instr); break; +#ifdef ENABLE_WASM + case Js::OpCode::Copysign_A: + m_lowererMD.GenerateCopysign(instr); + break; + + case Js::OpCode::Trunc_A: + if (!AutoSystemInfo::Data.SSE4_1Available()) + { + m_lowererMD.HelperCallForAsmMathBuiltin(instr, IR::HelperDirectMath_TruncFlt, IR::HelperDirectMath_TruncDb); + break; + } + + m_lowererMD.GenerateFastInlineBuiltInCall(instr, (IR::JnHelperMethod)0); + break; + + case Js::OpCode::Nearest_A: + if (!AutoSystemInfo::Data.SSE4_1Available()) + { + m_lowererMD.HelperCallForAsmMathBuiltin(instr, IR::HelperDirectMath_NearestFlt, IR::HelperDirectMath_NearestDb); + break; + } + + m_lowererMD.GenerateFastInlineBuiltInCall(instr, (IR::JnHelperMethod)0); + break; + + case Js::OpCode::Unreachable_Void: + GenerateThrowUnreachable(instr); + break; + +#endif //ENABLE_WASM + default: #ifdef ENABLE_SIMDJS #if defined(_M_IX86) || defined(_M_X64) @@ -3598,11 +3643,9 @@ Lowerer::LowerNewScArray(IR::Instr *arrInstr) return LowerProfiledNewScArray(arrInstr->AsJitProfilingInstr()); } - IR::Instr *instrPrev = arrInstr->m_prev; IR::JnHelperMethod helperMethod = IR::HelperScrArr_OP_NewScArray; - if (arrInstr->IsProfiledInstr() && arrInstr->m_func->HasProfileInfo()) { intptr_t weakFuncRef = arrInstr->m_func->GetWeakFuncRef(); @@ -3612,7 +3655,6 @@ Lowerer::LowerNewScArray(IR::Instr *arrInstr) Js::ArrayCallSiteInfo *arrayInfo = arrInstr->m_func->GetReadOnlyProfileInfo()->GetArrayCallSiteInfo(profileId); intptr_t arrayInfoAddr = arrInstr->m_func->GetReadOnlyProfileInfo()->GetArrayCallSiteInfoAddr(profileId); - Assert(arrInstr->GetSrc1()->IsConstOpnd()); GenerateProfiledNewScArrayFastPath(arrInstr, arrayInfo, arrayInfoAddr, weakFuncRef, arrInstr->GetSrc1()->AsIntConstOpnd()->AsUint32()); @@ -3763,7 +3805,7 @@ IR::JnHelperMethod GetArrayAllocMemHelper() template IR::RegOpnd * -Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteInfo * arrayInfo, bool * pIsHeadSegmentZeroed, bool containMissingValues /* = false */) +Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteInfo * arrayInfo, bool * pIsHeadSegmentZeroed, bool isArrayObjCtor /* = false */) { Func * func = this->m_func; IR::RegOpnd * dstOpnd = instr->GetDst()->AsRegOpnd(); @@ -3777,10 +3819,18 @@ Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteI const IR::AutoReuseOpnd autoReuseHeadOpnd(headOpnd, func, false); IR::Instr * leaHeadInstr = nullptr; bool isHeadSegmentZeroed = false; + if (ArrayType::HasInlineHeadSegment(count)) { - uint32 allocCount = count == 0 ? Js::SparseArraySegmentBase::SMALL_CHUNK_SIZE : count; - arrayAllocSize = Js::JavascriptArray::DetermineAllocationSize(allocCount, nullptr, &alignedHeadSegmentSize); + if (isArrayObjCtor) + { + arrayAllocSize = Js::JavascriptArray::DetermineAllocationSizeForArrayObjects(count, nullptr, &alignedHeadSegmentSize); + } + else + { + uint32 allocCount = count == 0 ? Js::SparseArraySegmentBase::SMALL_CHUNK_SIZE : count; + arrayAllocSize = Js::JavascriptArray::DetermineAllocationSize(allocCount, nullptr, &alignedHeadSegmentSize); + } leaHeadInstr = IR::Instr::New(Js::OpCode::LEA, headOpnd, IR::IndirOpnd::New(dstOpnd, sizeof(ArrayType), TyMachPtr, func), func); isHeadSegmentZeroed = true; @@ -3837,13 +3887,10 @@ Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteI } #endif - // For "new Array(value)", we will create missing values. Set flags appropriately. - Js::DynamicObjectFlags arrayFlags = containMissingValues ? Js::DynamicObjectFlags::ObjectArrayFlagsTag : Js::DynamicObjectFlags::InitialArrayValue; - // The same at this: // GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfArrayFlags(), (uint16)Js::DynamicObjectFlags::InitialArrayValue, instr, isZeroed); // GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfArrayCallSiteIndex(), arrayCallSiteIndex, instr, isZeroed); - GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfArrayFlags(), (uint)arrayFlags | ((uint)arrayCallSiteIndex << 16), instr, isZeroed); + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfArrayFlags(), (uint)Js::DynamicObjectFlags::InitialArrayValue | ((uint)arrayCallSiteIndex << 16), instr, isZeroed); GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfLength(), count, instr, isZeroed); if (leaHeadInstr != nullptr) @@ -3857,7 +3904,7 @@ Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteI // Initialize segment head GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfLeft(), 0, instr, isHeadSegmentZeroed); - GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfLength(), count, instr, isHeadSegmentZeroed); + GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfLength(), isArrayObjCtor ? 0 : count, instr, isHeadSegmentZeroed); GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfSize(), alignedHeadSegmentSize, instr, isHeadSegmentZeroed); GenerateMemInitNull(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfNext(), instr, isHeadSegmentZeroed); @@ -3865,6 +3912,106 @@ Lowerer::GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteI return headOpnd; } +template +IR::RegOpnd * +Lowerer::GenerateArrayAlloc(IR::Instr *instr, IR::Opnd * arrayLenOpnd, Js::ArrayCallSiteInfo * arrayInfo) +{ + Func * func = this->m_func; + IR::RegOpnd * dstOpnd = instr->GetDst()->AsRegOpnd(); + + IR::RegOpnd * headOpnd = IR::RegOpnd::New(TyMachPtr, func); + const IR::AutoReuseOpnd autoReuseHeadOpnd(headOpnd, func, false); + IR::Instr * leaHeadInstr = nullptr; + + IR::Opnd * arraySizeOpnd = IR::RegOpnd::New(TyUint32, func); + IR::Opnd * alignedArrayAllocSizeOpnd = IR::RegOpnd::New(TyUint32, func); + + IR::LabelInstr * doneCalculatingAllocSize = IR::LabelInstr::New(Js::OpCode::Label, func); + IR::LabelInstr * skipToNextBucket = nullptr; + uint8 bucketsCount = ArrayType::AllocationBucketsCount; + + Js::JavascriptArray::EnsureCalculationOfAllocationBuckets(); + + for (uint8 i = 0;i < bucketsCount;i++) + { + uint elementsCountToInitialize = ArrayType::allocationBuckets[i][Js::JavascriptArray::MissingElementsCountIndex]; + uint allocationSize = ArrayType::allocationBuckets[i][Js::JavascriptArray::AllocationSizeIndex]; + + // Ensure we already have allocation size calculated and within range + Assert(elementsCountToInitialize > 0 && elementsCountToInitialize <= ArrayType::allocationBuckets[bucketsCount - 1][Js::JavascriptArray::MissingElementsCountIndex]); + Assert(allocationSize > 0 && allocationSize <= ArrayType::allocationBuckets[bucketsCount - 1][Js::JavascriptArray::AllocationSizeIndex]); + + // CMP arrayLen, currentBucket + // JG $checkNextBucket + if (i != (bucketsCount - 1)) + { + Lowerer::InsertCompare(arrayLenOpnd, IR::IntConstOpnd::New((uint16)ArrayType::allocationBuckets[i][Js::JavascriptArray::AllocationBucketIndex], TyUint32, func), instr); + + skipToNextBucket = IR::LabelInstr::New(Js::OpCode::Label, func); + Lowerer::InsertBranch(Js::OpCode::BrGt_A, skipToNextBucket, instr); + } + + // MOV $arrayAlignedSize, + // MOV $arrayAllocSize, + Lowerer::InsertMove(arraySizeOpnd, IR::IntConstOpnd::New((uint16)elementsCountToInitialize, TyUint32, func), instr); + Lowerer::InsertMove(alignedArrayAllocSizeOpnd, IR::IntConstOpnd::New((uint16)allocationSize, TyUint32, func), instr); + + // JMP $doneCalculatingAllocSize + if (i != (bucketsCount - 1)) + { + Lowerer::InsertBranch(Js::OpCode::Br, doneCalculatingAllocSize, instr); + instr->InsertBefore(skipToNextBucket); + } + } + + instr->InsertBefore(doneCalculatingAllocSize); + // ***** Call to allocation helper ***** + this->m_lowererMD.LoadHelperArgument(instr, this->LoadScriptContextValueOpnd(instr, ScriptContextValue::ScriptContextRecycler)); + this->m_lowererMD.LoadHelperArgument(instr, alignedArrayAllocSizeOpnd); + IR::Instr *newObjCall = IR::Instr::New(Js::OpCode::Call, dstOpnd, IR::HelperCallOpnd::New(GetArrayAllocMemHelper(), func), func); + instr->InsertBefore(newObjCall); + this->m_lowererMD.LowerCall(newObjCall, 0); + + // ***** Load headSeg/initialize it ***** + leaHeadInstr = IR::Instr::New(Js::OpCode::LEA, headOpnd, + IR::IndirOpnd::New(dstOpnd, sizeof(ArrayType), TyMachPtr, func), func); + GenerateMemInit(dstOpnd, 0, this->LoadVTableValueOpnd(instr, ArrayType::VtableHelper()), instr, true); + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfType(), this->LoadLibraryValueOpnd(instr, ArrayType::InitialTypeHelper()), instr, true); + GenerateMemInitNull(dstOpnd, ArrayType::GetOffsetOfAuxSlots(), instr, true); + + Js::ProfileId arrayCallSiteIndex = (Js::ProfileId)instr->AsProfiledInstr()->u.profileId; +#if DBG + if (instr->AsProfiledInstr()->u.profileId < Js::Constants::NoProfileId) + { + Assert((uint32)(arrayInfo - instr->m_func->GetReadOnlyProfileInfo()->GetArrayCallSiteInfo(0)) == arrayCallSiteIndex); + } + else + { + Assert(arrayInfo == nullptr); + } +#endif + + // ***** Array object initialization ***** + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfArrayFlags(), IR::IntConstOpnd::New((uint16)Js::DynamicObjectFlags::InitialArrayValue, TyUint16, func), instr, true); + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfLength(), arrayLenOpnd, instr, true); + + if (leaHeadInstr != nullptr) + { + instr->InsertBefore(leaHeadInstr); + LowererMD::ChangeToLea(leaHeadInstr); + } + + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfHead(), headOpnd, instr, true); + GenerateMemInit(dstOpnd, ArrayType::GetOffsetOfLastUsedSegmentOrSegmentMap(), headOpnd, instr, true); + GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfLeft(), 0, instr, true); + GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfLength(), 0, instr, true); // Set head segment length to 0 + GenerateMemInit(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfSize(), arraySizeOpnd, instr, true); + GenerateMemInitNull(headOpnd, Js::SparseArraySegmentBase::GetOffsetOfNext(), instr, true); + + return headOpnd; +} + + void Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef, uint32 length, IR::LabelInstr* labelDone) { @@ -3876,7 +4023,6 @@ Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSi Func * func = this->m_func; IR::LabelInstr * helperLabel = IR::LabelInstr::New(Js::OpCode::Label, func, true); uint32 size = length; - bool containMissingItems = (size != 0); bool isZeroed = false; IR::RegOpnd *dstOpnd = instr->GetDst()->AsRegOpnd(); IR::RegOpnd *headOpnd; @@ -3885,11 +4031,10 @@ Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSi { GenerateArrayInfoIsNativeIntArrayTest(instr, arrayInfo, arrayInfoAddr, helperLabel); Assert(Js::JavascriptNativeIntArray::GetOffsetOfArrayFlags() + sizeof(uint16) == Js::JavascriptNativeIntArray::GetOffsetOfArrayCallSiteIndex()); - headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, containMissingItems); + headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, true); GenerateMemInit(dstOpnd, Js::JavascriptNativeIntArray::GetOffsetOfArrayCallSiteIndex(), IR::IntConstOpnd::New(profileId, TyUint16, func, true), instr, isZeroed); GenerateMemInit(dstOpnd, Js::JavascriptNativeIntArray::GetOffsetOfWeakFuncRef(), IR::AddrOpnd::New(weakFuncRef, IR::AddrOpndKindDynamicFunctionBodyWeakRef, m_func), instr, isZeroed); - for (uint i = 0; i < size; i++) { GenerateMemInit(headOpnd, sizeof(Js::SparseArraySegmentBase) + i * sizeof(int32), @@ -3900,7 +4045,7 @@ Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSi { GenerateArrayInfoIsNativeFloatAndNotIntArrayTest(instr, arrayInfo, arrayInfoAddr, helperLabel); Assert(Js::JavascriptNativeFloatArray::GetOffsetOfArrayFlags() + sizeof(uint16) == Js::JavascriptNativeFloatArray::GetOffsetOfArrayCallSiteIndex()); - headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, containMissingItems); + headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, true); GenerateMemInit(dstOpnd, Js::JavascriptNativeFloatArray::GetOffsetOfArrayCallSiteIndex(), IR::IntConstOpnd::New(profileId, TyUint16, func, true), instr, isZeroed); GenerateMemInit(dstOpnd, Js::JavascriptNativeFloatArray::GetOffsetOfWeakFuncRef(), IR::AddrOpnd::New(weakFuncRef, IR::AddrOpndKindDynamicFunctionBodyWeakRef, m_func), instr, isZeroed); @@ -3919,7 +4064,7 @@ Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSi else { uint const offsetStart = sizeof(Js::SparseArraySegmentBase); - headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, containMissingItems); + headOpnd = GenerateArrayAlloc(instr, &size, arrayInfo, &isZeroed, true); for (uint i = 0; i < size; i++) { GenerateMemInit( @@ -3934,6 +4079,110 @@ Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSi instr->InsertBefore(helperLabel); } + +template +void +Lowerer::GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef, IR::LabelInstr* helperLabel, + IR::LabelInstr* labelDone, IR::Opnd* lengthOpnd, uint32 offsetOfCallSiteIndex, uint32 offsetOfWeakFuncRef) +{ + if (PHASE_OFF(Js::ArrayCtorFastPathPhase, m_func)) + { + return; + } + + Func * func = this->m_func; + + IR::RegOpnd *dstOpnd = instr->GetDst()->AsRegOpnd(); + IR::RegOpnd *headOpnd; + Js::ProfileId profileId = static_cast(instr->AsProfiledInstr()->u.profileId); + uint sizeOfElement = 0; + uint allocationBucketsCount = ArrayType::AllocationBucketsCount; + uint(*allocationBuckets)[Js::JavascriptArray::AllocationBucketsInfoSize]; + allocationBuckets = ArrayType::allocationBuckets; + uint sizeFactor = 1; + IRType missingItemType = (arrayInfo && arrayInfo->IsNativeIntArray()) ? IRType::TyInt32 : IRType::TyVar; + IR::LabelInstr * arrayInitDone = IR::LabelInstr::New(Js::OpCode::Label, func); + + bool isNativeArray = arrayInfo && (arrayInfo->IsNativeIntArray() || arrayInfo->IsNativeFloatArray()); + + if (arrayInfo && arrayInfo->IsNativeIntArray()) + { + sizeOfElement = sizeof(int32); + GenerateArrayInfoIsNativeIntArrayTest(instr, arrayInfo, arrayInfoAddr, helperLabel); + } + else if (arrayInfo && arrayInfo->IsNativeFloatArray()) + { + // Js::JavascriptArray::MissingItem is a Var, so it may be 32-bit or 64 bit. + sizeFactor = sizeof(double) / sizeof(Js::JavascriptArray::MissingItem); + sizeOfElement = sizeof(Js::JavascriptArray::MissingItem); + GenerateArrayInfoIsNativeFloatAndNotIntArrayTest(instr, arrayInfo, arrayInfoAddr, helperLabel); + } + else + { + sizeOfElement = sizeof(Js::Var); + } + + lengthOpnd = GenerateUntagVar(lengthOpnd->AsRegOpnd(), helperLabel, instr); + IR::Opnd* upperBound = IR::IntConstOpnd::New(8, TyUint8, func, true); + InsertCompare(lengthOpnd, upperBound, instr); + InsertBranch(Js::OpCode::BrGt_A, true /* isUnsigned */, helperLabel, instr); + headOpnd = GenerateArrayAlloc(instr, lengthOpnd, arrayInfo); + + if (isNativeArray) + { + Assert(ArrayType::GetOffsetOfArrayFlags() + sizeof(uint16) == offsetOfCallSiteIndex); + Assert(offsetOfWeakFuncRef > 0); + GenerateMemInit(dstOpnd, offsetOfCallSiteIndex, IR::IntConstOpnd::New(profileId, TyUint16, func, true), instr, true /* isZeroed */); + GenerateMemInit(dstOpnd, offsetOfWeakFuncRef, IR::AddrOpnd::New(weakFuncRef, IR::AddrOpndKindDynamicFunctionBodyWeakRef, m_func), instr, true /* isZeroed */); + } + + uint const offsetStart = sizeof(Js::SparseArraySegmentBase); + uint missingItemCount = 0; + uint missingItemInitializedSoFar = 0; + uint missingItemIndex = 0; + uint maxAllocationSize = allocationBuckets[allocationBucketsCount - 1][Js::JavascriptArray::AllocationSizeIndex]; + + for (uint8 i = 0;i < allocationBucketsCount;i++) + { + missingItemCount = allocationBuckets[i][Js::JavascriptArray::MissingElementsCountIndex] * sizeFactor; + + if (i > 0) + { + // Reduce missingItemCount we have already set so far + missingItemCount -= missingItemInitializedSoFar; + } + + // Generate array initialization with MissingItem + for (uint j = 0;j < missingItemCount;j++) + { + // Ensure we don't write missingItems past allocation size + Assert(offsetStart + missingItemIndex * sizeOfElement <= maxAllocationSize); + GenerateMemInit(headOpnd, offsetStart + missingItemIndex * sizeOfElement, GetMissingItemOpnd(missingItemType, func), instr, true /*isZeroed*/); + missingItemIndex++; + } + + // CMP arrayLen, currentBucket + // JG $checkNextBucket + if (i != (allocationBucketsCount - 1)) + { + Lowerer::InsertCompare(lengthOpnd, IR::IntConstOpnd::New(allocationBuckets[i][Js::JavascriptArray::AllocationBucketIndex], TyUint32, func), instr); + + Lowerer::InsertBranch(Js::OpCode::BrLe_A, arrayInitDone, instr); + } + missingItemInitializedSoFar += missingItemCount; + } + + // Ensure no. of missingItems written are same + Assert(missingItemIndex == missingItemInitializedSoFar); + // Ensure no. of missingItems match what present in allocationBuckets + Assert(missingItemIndex == allocationBuckets[allocationBucketsCount - 1][Js::JavascriptArray::MissingElementsCountIndex] * sizeFactor); + + instr->InsertBefore(arrayInitDone); + + Lowerer::InsertBranch(Js::OpCode::Br, labelDone, instr); + instr->InsertBefore(helperLabel); +} + void Lowerer::GenerateProfiledNewScIntArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef) { @@ -4987,6 +5236,7 @@ Lowerer::LowerNewScObjArray(IR::Instr *newObjInstr) Assert(weakFuncRef); } + IR::LabelInstr * helperLabel = IR::LabelInstr::New(Js::OpCode::Label, func, true); IR::LabelInstr *labelDone = IR::LabelInstr::New(Js::OpCode::Label, func); IR::Opnd *linkOpnd = newObjInstr->GetSrc2(); @@ -4995,30 +5245,67 @@ Lowerer::LowerNewScObjArray(IR::Instr *newObjInstr) Assert(linkSym->IsSingleDef()); IR::Instr* argInstr = linkSym->GetInstrDef(); IR::Opnd *opndOfArrayCtor = argInstr->GetSrc1(); + const uint16 upperBoundValue = 8; // Generate fast path only if it meets all the conditions: - // 1. 1st paramter is a constant - // 2. It is the only parameter. - // 3. It is in range 0 <= parameter <= 8 - if (opndOfArrayCtor->IsAddrOpnd()) // #1 - { - int32 length = linkSym->GetIntConstValue(); + // 1. It is the only parameter + // 2a. If 1st paramter is a variable, emit fast path with checks + // 2b. If 1st paramter is a constant, it is in range 0 and upperBoundValue (inclusive) + if (opndOfArrayCtor->IsAddrOpnd() || opndOfArrayCtor->IsRegOpnd()) // #1 - if ((linkSym->GetArgSlotNum() == 2) && (length >= 0 && length <= 8)) // #2 and #3 + { + if ((linkSym->GetArgSlotNum() == 2)) // 1. It is the only parameter { AssertMsg(linkSym->IsArgSlotSym(), "Not an argSlot symbol..."); linkOpnd = argInstr->GetSrc2(); - linkSym = linkOpnd->AsRegOpnd()->m_sym->AsStackSym(); - AssertMsg(!linkSym->IsArgSlotSym() && linkSym->m_isSingleDef, "Arg tree not single def..."); - - startCallInstr = linkSym->m_instrDef; - AssertMsg(startCallInstr->GetArgOutCount(false) == 2, "Generating ArrayFastPath for more than 1 parameter not allowed."); + bool emittedFastPath = true; + // 2a. If 1st paramter is a variable, emit fast path with checks + if (opndOfArrayCtor->IsRegOpnd()) + { + // 3. GenerateFastPath + if (arrayInfo && arrayInfo->IsNativeIntArray()) + { + GenerateProfiledNewScObjArrayFastPath(newObjInstr, arrayInfo, arrayInfoAddr, weakFuncRef, helperLabel, labelDone, opndOfArrayCtor, + Js::JavascriptNativeIntArray::GetOffsetOfArrayCallSiteIndex(), + Js::JavascriptNativeIntArray::GetOffsetOfWeakFuncRef()); + } + else if (arrayInfo && arrayInfo->IsNativeFloatArray()) + { + GenerateProfiledNewScObjArrayFastPath(newObjInstr, arrayInfo, arrayInfoAddr, weakFuncRef, helperLabel, labelDone, opndOfArrayCtor, + Js::JavascriptNativeFloatArray::GetOffsetOfArrayCallSiteIndex(), + Js::JavascriptNativeFloatArray::GetOffsetOfWeakFuncRef()); + } + else + { + GenerateProfiledNewScObjArrayFastPath(newObjInstr, arrayInfo, arrayInfoAddr, weakFuncRef, helperLabel, labelDone, opndOfArrayCtor, 0, 0); + } + } + // 2b. If 1st paramter is a constant, it is in range 0 and upperBoundValue (inclusive) + else + { + int32 length = linkSym->GetIntConstValue(); + if (length >= 0 && length <= upperBoundValue) + { + GenerateProfiledNewScObjArrayFastPath(newObjInstr, arrayInfo, arrayInfoAddr, weakFuncRef, (uint32)length, labelDone); + } + else + { + emittedFastPath = false; + } + } + // Since we emitted fast path above, move the startCall/argOut instruction right before helper + if (emittedFastPath) + { + linkSym = linkOpnd->AsRegOpnd()->m_sym->AsStackSym(); + AssertMsg(!linkSym->IsArgSlotSym() && linkSym->m_isSingleDef, "Arg tree not single def..."); - GenerateProfiledNewScObjArrayFastPath(newObjInstr, arrayInfo, arrayInfoAddr, weakFuncRef, (uint32)length, labelDone); + startCallInstr = linkSym->m_instrDef; + AssertMsg(startCallInstr->GetArgOutCount(false) == 2, "Generating ArrayFastPath for more than 1 parameter not allowed."); - // Since we emitted fast path above, move the startCall/argOut instruction right before helper - startCallInstr->Move(newObjInstr); - argInstr->Move(newObjInstr); + // Since we emitted fast path above, move the startCall/argOut instruction right before helper + startCallInstr->Move(newObjInstr); + argInstr->Move(newObjInstr); + } } } newObjInstr->UnlinkSrc1(); @@ -5621,10 +5908,9 @@ Lowerer::GenerateLdFldWithCachedType(IR::Instr * instrLdFld, bool* continueAsHel PHASE_PRINT_TESTTRACE( Js::ObjTypeSpecPhase, this->m_func, - _u("Field load: %s, property: %s, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), + _u("Field load: %s, property ID: %d, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), Js::OpCodeUtil::GetOpCodeName(instrLdFld->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord( - propertySymOpnd->m_sym->AsPropertySym()->m_propertyId)->GetBuffer(), + propertySymOpnd->m_sym->AsPropertySym()->m_propertyId, this->m_func->GetJITFunctionBody()->GetDisplayName(), propertySymOpnd->m_inlineCacheIndex, propertySymOpnd->GetCacheLayoutString(), @@ -5829,9 +6115,9 @@ Lowerer::GenerateCheckFixedFld(IR::Instr * instrChkFld) OUTPUT_TRACE_FUNC( Js::ObjTypeSpecPhase, this->m_func, - _u("Fixed field check: %s, property: %s, cache ID: %u, cloned cache: true, layout: %s, redundant check: %s count of props: %u \n"), + _u("Fixed field check: %s, property ID: %d, cache ID: %u, cloned cache: true, layout: %s, redundant check: %s count of props: %u \n"), Js::OpCodeUtil::GetOpCodeName(instrChkFld->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), + propertySym->m_propertyId, inlineCacheIndex, propertySymOpnd->GetCacheLayoutString(), propertySymOpnd->IsTypeChecked() ? _u("true") : _u("false"), propertySymOpnd->GetGuardedPropOps() ? propertySymOpnd->GetGuardedPropOps()->Count() : 0); @@ -5929,9 +6215,9 @@ Lowerer::GenerateCheckObjType(IR::Instr * instrChkObjType) PHASE_PRINT_TESTTRACE( Js::ObjTypeSpecPhase, this->m_func, - _u("Object type check: %s, property: %s, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), + _u("Object type check: %s, property ID: %d, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), Js::OpCodeUtil::GetOpCodeName(instrChkObjType->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), + propertySym->m_propertyId, this->m_func->GetJITFunctionBody()->GetDisplayName(), inlineCacheIndex, propertySymOpnd->GetCacheLayoutString(), _u("false")); @@ -6722,9 +7008,9 @@ Lowerer::GenerateStFldWithCachedType(IR::Instr *instrStFld, bool* continueAsHelp PHASE_PRINT_TESTTRACE( Js::ObjTypeSpecPhase, this->m_func, - _u("Field store: %s, property: %s, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), + _u("Field store: %s, property ID: %d, func: %s, cache ID: %d, cloned cache: true, layout: %s, redundant check: %s\n"), Js::OpCodeUtil::GetOpCodeName(instrStFld->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySymOpnd->m_sym->AsPropertySym()->m_propertyId)->GetBuffer(), + propertySymOpnd->m_sym->AsPropertySym()->m_propertyId, this->m_func->GetJITFunctionBody()->GetDisplayName(), propertySymOpnd->m_inlineCacheIndex, propertySymOpnd->GetCacheLayoutString(), propertySymOpnd->IsTypeChecked() ? _u("true") : _u("false")); @@ -7022,9 +7308,9 @@ Lowerer::PinTypeRef(JITTypeHolder type, void* typeRef, IR::Instr* instr, Js::Pro if (PHASE_TRACE(Js::TracePinnedTypesPhase, this->m_func)) { char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; - Output::Print(_u("PinnedTypes: function %s(%s) instr %s property %s(#%u) pinned %s reference 0x%p to type 0x%p.\n"), + Output::Print(_u("PinnedTypes: function %s(%s) instr %s property ID %u pinned %s reference 0x%p to type 0x%p.\n"), this->m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - Js::OpCodeUtil::GetOpCodeName(instr->m_opcode), m_func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer(), propertyId, + Js::OpCodeUtil::GetOpCodeName(instr->m_opcode), propertyId, typeRef == type.t ? _u("strong") : _u("weak"), typeRef, type.t); Output::Flush(); } @@ -7135,9 +7421,9 @@ Lowerer::CreateTypePropertyGuardForGuardedProperties(JITTypeHolder type, IR::Pro if (PHASE_TRACE(Js::ObjTypeSpecPhase, this->m_func) || PHASE_TRACE(Js::TracePropertyGuardsPhase, this->m_func)) { char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; - Output::Print(_u("ObjTypeSpec: function %s(%s) registered guard 0x%p with value 0x%p for property %s (%u).\n"), + Output::Print(_u("ObjTypeSpec: function %s(%s) registered guard 0x%p with value 0x%p for property ID %u.\n"), m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - guard, guard->GetValue(), m_func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer(), propertyId); + guard, guard->GetValue(), propertyId); Output::Flush(); } @@ -7165,9 +7451,9 @@ Lowerer::CreateEquivalentTypeGuardAndLinkToGuardedProperties(JITTypeHolder type, if (PHASE_TRACE(Js::ObjTypeSpecPhase, this->m_func) || PHASE_TRACE(Js::TracePropertyGuardsPhase, this->m_func)) { char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; - Output::Print(_u("ObjTypeSpec: function %s(%s) registered equivalent type spec guard 0x%p with value 0x%p for property %s (%u).\n"), + Output::Print(_u("ObjTypeSpec: function %s(%s) registered equivalent type spec guard 0x%p with value 0x%p for property ID %u.\n"), this->m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - guard, guard->GetValue(), m_func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer(), propertyId); + guard, guard->GetValue(), propertyId); Output::Flush(); } @@ -7244,8 +7530,8 @@ Lowerer::CreateEquivalentTypeGuardAndLinkToGuardedProperties(JITTypeHolder type, if (PHASE_TRACE(Js::EquivObjTypeSpecPhase, this->m_func)) { char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; - Output::Print(_u("EquivObjTypeSpec: top function %s (%s): duplicate property clash on %s(#%d) \n"), - m_func->GetJITFunctionBody()->GetDisplayName(), m_func->GetDebugNumberSet(debugStringBuffer), propertyId, m_func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer()); + Output::Print(_u("EquivObjTypeSpec: top function %s (%s): duplicate property clash on %d \n"), + m_func->GetJITFunctionBody()->GetDisplayName(), m_func->GetDebugNumberSet(debugStringBuffer), propertyId); Output::Flush(); } Assert(propIdCount < propOpCount); @@ -7299,9 +7585,9 @@ Lowerer::LinkCtorCacheToGuardedProperties(JITTimeConstructorCache* ctorCache) if (PHASE_TRACE(Js::ObjTypeSpecPhase, this->m_func) || PHASE_TRACE(Js::TracePropertyGuardsPhase, this->m_func)) { char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; - Output::Print(_u("ObjTypeSpec: function %s(%s) registered ctor cache 0x%p with value 0x%p for property %s (%u).\n"), + Output::Print(_u("ObjTypeSpec: function %s(%s) registered ctor cache 0x%p with value 0x%p for property %u.\n"), this->m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - ctorCache->GetRuntimeCacheAddr(), ctorCache->GetType()->GetAddr(), m_func->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer(), propertyId); + ctorCache->GetRuntimeCacheAddr(), ctorCache->GetType()->GetAddr(), propertyId); Output::Flush(); } @@ -8012,7 +8298,6 @@ Lowerer::LowerAddLeftDeadForString(IR::Instr *instr) IR::IntConstOpnd::New(1, TyUint32, m_func), Js::OpCode::BrNeq_A, labelHelper, insertBeforeInstr); - // if left->m_directCharLength == -1 InsertCompareBranch(IR::IndirOpnd::New(opndLeft->AsRegOpnd(), (int32)Js::CompoundString::GetOffsetOfDirectCharLength(), TyUint32, m_func), IR::IntConstOpnd::New(UINT32_MAX, TyUint32, m_func), @@ -8031,21 +8316,18 @@ Lowerer::LowerAddLeftDeadForString(IR::Instr *instr) IR::RegOpnd *charResultOpnd = IR::RegOpnd::New(TyUint16, this->m_func); InsertMove(charResultOpnd, IR::IndirOpnd::New(pszValue0Opnd, 0, TyUint16, this->m_func), insertBeforeInstr); - // lastBlockInfo.buffer[blockCharLength] = c; IR::RegOpnd *baseOpnd = IR::RegOpnd::New(TyMachPtr, this->m_func); InsertMove(baseOpnd, IR::IndirOpnd::New(opndLeft->AsRegOpnd(), (int32)Js::CompoundString::GetOffsetOfLastBlockInfo() + (int32)Js::CompoundString::GetOffsetOfLastBlockInfoBuffer(), TyMachPtr, m_func), insertBeforeInstr); IR::IndirOpnd *indirBufferToStore = IR::IndirOpnd::New(baseOpnd, charLengthOpnd, (byte)Math::Log2(sizeof(char16)), TyUint16, m_func); InsertMove(indirBufferToStore, charResultOpnd, insertBeforeInstr); - // left->m_charLength++ InsertAdd(false, indirLeftCharLengthOpnd, regLeftCharLengthOpnd, IR::IntConstOpnd::New(1, TyUint32, this->m_func), insertBeforeInstr); // lastBlockInfo.charLength++ InsertAdd(false, indirCharLength, indirCharLength, IR::IntConstOpnd::New(1, TyUint32, this->m_func), insertBeforeInstr); - InsertBranch(Js::OpCode::Br, labelFallThrough, insertBeforeInstr); return this->LowerBinaryHelperMemWithTemp(instr, IR::HelperOp_AddLeftDead); @@ -8493,6 +8775,7 @@ void Lowerer::LowerLdLen(IR::Instr *const instr, const bool isHelper) IR::Instr * Lowerer::LowerLdArrViewElem(IR::Instr * instr) { +#ifdef ASMJS_PLAT Assert(m_func->GetJITFunctionBody()->IsAsmJsMode()); Assert(instr); Assert(instr->m_opcode == Js::OpCode::LdInt8ArrViewElem || @@ -8545,6 +8828,10 @@ Lowerer::LowerLdArrViewElem(IR::Instr * instr) instr->Remove(); return instrPrev; +#else + Assert(UNREACHED); + return instr; +#endif } IR::Instr * @@ -8703,6 +8990,7 @@ Lowerer::LowerMemOp(IR::Instr * instr) IR::Instr * Lowerer::LowerStArrViewElem(IR::Instr * instr) { +#ifdef ASMJS_PLAT Assert(m_func->GetJITFunctionBody()->IsAsmJsMode()); Assert(instr); Assert(instr->m_opcode == Js::OpCode::StInt8ArrViewElem || @@ -8754,6 +9042,10 @@ Lowerer::LowerStArrViewElem(IR::Instr * instr) InsertMove(dst, src1, done); instr->Remove(); return instrPrev; +#else + Assert(UNREACHED); + return instr; +#endif } IR::Instr * @@ -9513,10 +9805,12 @@ Lowerer::CreateOpndForSlotAccess(IR::Opnd * opnd) { offset = offset * TySize[opnd->GetType()]; } +#ifdef ASMJS_PLAT if (m_func->IsTJLoopBody()) { offset = offset - m_func->GetJITFunctionBody()->GetAsmJsInfo()->GetTotalSizeInBytes(); } +#endif IR::IndirOpnd *indirOpnd = IR::IndirOpnd::New(symOpnd->CreatePropertyOwnerOpnd(m_func), offset , opnd->GetType(), this->m_func); @@ -9661,7 +9955,6 @@ Lowerer::LowerStElemC(IR::Instr * stElem) return instrPrev; } - IntConstType base; IR::RegOpnd *baseOpnd = indirOpnd->GetBaseOpnd(); const ValueType baseValueType(baseOpnd->GetValueType()); @@ -10050,7 +10343,6 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn) instrInsert->InsertBefore(labelUndef); instrInsert->InsertBefore(labelNormal); - //Adjustment for deadstore of ArgIn_A Js::ArgSlot highestSlotNum = instrArgIn->GetSrc1()->AsSymOpnd()->m_sym->AsStackSym()->GetParamSlotNum(); Js::ArgSlot missingSlotNums = this->m_func->GetInParamsCount() - highestSlotNum; @@ -10067,7 +10359,6 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn) opndUndef = IR::RegOpnd::New(TyMachPtr, this->m_func); LowererMD::CreateAssign(opndUndef, opndUndefAddress, labelNormal); - BVSparse *formalsBv = JitAnew(this->m_alloc, BVSparse, this->m_alloc); while (currArgInCount > 0) @@ -10090,7 +10381,6 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn) labelInitNext = IR::LabelInstr::New(Js::OpCode::Label, this->m_func); - // And insert the "normal" initialization before the "done" label // sn = assign paramn @@ -11237,7 +11527,7 @@ Lowerer::LowerBailForDebugger(IR::Instr* instr, bool isInsideHelper /* = false * if (!(bailOutKind & IR::BailOutExplicit)) { - intptr_t flags = m_func->GetThreadContextInfo()->GetDebuggingFlagsAddr(); + intptr_t flags = m_func->GetScriptContextInfo()->GetDebuggingFlagsAddr(); // Check 1 (do we need to bail out?) // JXX bailoutLabel @@ -11311,13 +11601,13 @@ Lowerer::LowerBailForDebugger(IR::Instr* instr, bool isInsideHelper /* = false * { // TEST STEP_BAILOUT, [&stepController->StepType] // BNE BailoutLabel - IR::Opnd* opnd1 = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); + IR::Opnd* opnd1 = IR::MemRefOpnd::New(m_func->GetScriptContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); IR::Opnd* opnd2 = IR::IntConstOpnd::New(Js::STEP_BAILOUT, TyInt8, this->m_func, /*dontEncode*/ true); InsertTestBranch(opnd1, opnd2, Js::OpCode::BrNeq_A, bailOutLabel, continueBranchInstr); // CMP STEP_DOCUMENT, [&stepController->StepType] // BEQ BailoutDocumentLabel - opnd1 = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); + opnd1 = IR::MemRefOpnd::New(m_func->GetScriptContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); opnd2 = IR::IntConstOpnd::New(Js::STEP_DOCUMENT, TyInt8, this->m_func, /*dontEncode*/ true); InsertCompareBranch(opnd1, opnd2, Js::OpCode::BrEq_A, /*isUnsigned*/ true, bailOutDocumentLabel, continueBranchInstr); @@ -11338,12 +11628,12 @@ Lowerer::LowerBailForDebugger(IR::Instr* instr, bool isInsideHelper /* = false * effectiveFrameBaseReg = m_lowererMD.GetRegFramePointer(); #endif IR::Opnd* opnd1 = IR::RegOpnd::New(nullptr, effectiveFrameBaseReg, TyMachReg, m_func); - IR::Opnd* opnd2 = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDebugFrameAddressAddr(), TyMachReg, m_func); + IR::Opnd* opnd2 = IR::MemRefOpnd::New(m_func->GetScriptContextInfo()->GetDebugFrameAddressAddr(), TyMachReg, m_func); this->InsertCompareBranch(opnd1, opnd2, Js::OpCode::BrGt_A, /*isUnsigned*/ true, bailOutLabel, continueBranchInstr); // CMP STEP_DOCUMENT, [&stepController->StepType] // BEQ BailoutDocumentLabel - opnd1 = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); + opnd1 = IR::MemRefOpnd::New(m_func->GetScriptContextInfo()->GetDebugStepTypeAddr(), TyInt8, m_func); opnd2 = IR::IntConstOpnd::New(Js::STEP_DOCUMENT, TyInt8, this->m_func, /*dontEncode*/ true); InsertCompareBranch(opnd1, opnd2, Js::OpCode::BrEq_A, /*isUnsigned*/ true, bailOutDocumentLabel, continueBranchInstr); @@ -11378,7 +11668,7 @@ Lowerer::LowerBailForDebugger(IR::Instr* instr, bool isInsideHelper /* = false * // bailOutLabel: // (fallthrough bailOutLabel) IR::Opnd* opnd1 = IR::MemRefOpnd::New(m_func->GetJITFunctionBody()->GetScriptIdAddr(), TyInt32, m_func); - IR::Opnd* opnd2 = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDebugScriptIdWhenSetAddr(), TyInt32, m_func); + IR::Opnd* opnd2 = IR::MemRefOpnd::New(m_func->GetScriptContextInfo()->GetDebugScriptIdWhenSetAddr(), TyInt32, m_func); IR::RegOpnd* reg1 = IR::RegOpnd::New(TyInt32, m_func); InsertMove(reg1, opnd2, bailOutLabel); @@ -12866,7 +13156,6 @@ Lowerer::LowerInlineeStart(IR::Instr * inlineeStartInstr) return false; }); - IR::Instr *argInsertInstr = inlineeStartInstr; uint i = 0; inlineeStartInstr->IterateMetaArgs( [&] (IR::Instr* metaArg) @@ -13856,9 +14145,9 @@ IR::BranchInstr *Lowerer::InsertCompareBranch( Func *const func = insertBeforeInstr->m_func; - if(compareSrc1->IsFloat64()) + if(compareSrc1->IsFloat()) { - Assert(compareSrc2->IsFloat64()); + Assert(compareSrc2->IsFloat()); Assert(!isUnsigned); IR::BranchInstr *const instr = IR::BranchInstr::New(branchOpCode, target, compareSrc1, compareSrc2, func); insertBeforeInstr->InsertBefore(instr); @@ -15342,7 +15631,7 @@ Lowerer::GenerateFastLdElemI(IR::Instr *& ldElem, bool *instrIsInHelperBlockRef) // TEST index, 1 -- index tagged int // JEQ $helper // MOV r2, index - // SAR r2, Js::VarTag_Shift -- remote atom tag + // SAR r2, Js::VarTag_Shift -- remoe atom tag // JS $helper -- exclude negative index // MOV r4, [base + offset(head)] // CMP r2, [r4 + offset(length)] -- bounds check @@ -15979,7 +16268,6 @@ Lowerer::GenerateFastStElemI(IR::Instr *& stElem, bool *instrIsInHelperBlockRef) m_lowererMD.EmitLoadFloat(indirOpnd, reg, stElem); } - } } else if (objectType == ObjectType::Uint8ClampedArray || objectType == ObjectType::Uint8ClampedVirtualArray || objectType == ObjectType::Uint8ClampedMixedArray) @@ -17588,6 +17876,27 @@ Lowerer::GenerateFastInlineStringCharCodeAt(IR::Instr * instr, Js::BuiltinFuncti return true; } +void +Lowerer::GenerateCtz(IR::Instr* instr) +{ + Assert(instr->GetDst()->IsInt32()); + Assert(instr->GetSrc1()->IsInt32()); + m_lowererMD.GenerateCtz(instr); +} + +void Lowerer::GenerateThrowUnreachable(IR::Instr* instr) +{ + m_lowererMD.GenerateThrowUnreachable(instr); +} + +void +Lowerer::GeneratePopCnt32(IR::Instr* instr) +{ + Assert(instr->GetSrc1()->IsInt32() || instr->GetSrc1()->IsUInt32()); + Assert(instr->GetDst()->IsInt32() || instr->GetDst()->IsUInt32()); + m_lowererMD.GeneratePopCnt32(instr); +} + void Lowerer::GenerateFastInlineMathClz32(IR::Instr* instr) { @@ -17615,6 +17924,18 @@ Lowerer::GenerateFastInlineMathImul(IR::Instr* instr) instr->Remove(); } +IR::Instr * +Lowerer::LowerReinterpretPrimitive(IR::Instr* instr) +{ + Assert(m_func->GetJITFunctionBody()->IsWasmFunction()); + IR::Opnd* src1 = instr->GetSrc1(); + IR::Opnd* dst = instr->GetDst(); + + Assert(dst->GetSize() == src1->GetSize()); + Assert((dst->IsFloat32() && src1->IsInt32()) || (dst->IsInt32() && src1->IsFloat32())); + return m_lowererMD.LowerReinterpretPrimitive(instr); +} + void Lowerer::GenerateFastInlineMathFround(IR::Instr* instr) { @@ -18740,9 +19061,9 @@ Lowerer::GenerateFastLdFld(IR::Instr * const instrLdFld, IR::JnHelperMethod help PHASE_PRINT_TESTTRACE( Js::ObjTypeSpecPhase, this->m_func, - _u("Field load: %s, property: %s, func: %s, cache ID: %d, cloned cache: false\n"), + _u("Field load: %s, property ID: %d, func: %s, cache ID: %d, cloned cache: false\n"), Js::OpCodeUtil::GetOpCodeName(instrLdFld->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), + propertySym->m_propertyId, this->m_func->GetJITFunctionBody()->GetDisplayName(), propertySymOpnd->m_inlineCacheIndex); @@ -18802,7 +19123,6 @@ Lowerer::GenerateFastLdFld(IR::Instr * const instrLdFld, IR::JnHelperMethod help IR::RegOpnd * opndBase = propertySymOpnd->CreatePropertyOwnerOpnd(m_func); bool usePolymorphicInlineCache = !!propertySymOpnd->m_runtimePolymorphicInlineCache; - IR::RegOpnd * opndInlineCache = IR::RegOpnd::New(TyMachPtr, this->m_func); if (usePolymorphicInlineCache) { @@ -18996,9 +19316,9 @@ Lowerer::GenerateFastStFld(IR::Instr * const instrStFld, IR::JnHelperMethod help PHASE_PRINT_TESTTRACE( Js::ObjTypeSpecPhase, this->m_func, - _u("Field store: %s, property: %s, func: %s, cache ID: %d, cloned cache: false\n"), + _u("Field store: %s, property ID: %u, func: %s, cache ID: %d, cloned cache: false\n"), Js::OpCodeUtil::GetOpCodeName(instrStFld->m_opcode), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), + propertySym->m_propertyId, this->m_func->GetJITFunctionBody()->GetDisplayName(), propertySymOpnd->m_inlineCacheIndex); @@ -19042,9 +19362,9 @@ Lowerer::GenerateFastStFld(IR::Instr * const instrStFld, IR::JnHelperMethod help char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; #endif PHASE_PRINT_TRACE(Js::AddFldFastPathPhase, this->m_func, - _u("AddFldFastPath: function: %s(%s) property: %s(#%d) no fast path, because the phase is off.\n"), + _u("AddFldFastPath: function: %s(%s) property ID: %u no fast path, because the phase is off.\n"), this->m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), propertySym->m_propertyId); + propertySym->m_propertyId); } if ((profiledInstrStFld->u.FldInfo().flags & (Js::FldInfo_FromInlineSlots | Js::FldInfo_FromAuxSlots)) == Js::FldInfo_FromInlineSlots) @@ -19083,9 +19403,9 @@ Lowerer::GenerateFastStFld(IR::Instr * const instrStFld, IR::JnHelperMethod help char16 debugStringBuffer[MAX_FUNCTION_BODY_DEBUG_STRING_SIZE]; #endif PHASE_PRINT_TRACE(Js::AddFldFastPathPhase, this->m_func, - _u("AddFldFastPath: function: %s(%s) property: %s(#%d) %s fast path for %s.\n"), + _u("AddFldFastPath: function: %s(%s) property ID: %d %s fast path for %s.\n"), this->m_func->GetJITFunctionBody()->GetDisplayName(), this->m_func->GetDebugNumberSet(debugStringBuffer), - this->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), propertySym->m_propertyId, + propertySym->m_propertyId, usePolymorphicInlineCache ? _u("poly") : _u("mono"), doStore ? _u("store and add") : _u("add only")); } @@ -20313,7 +20633,6 @@ Lowerer::GenerateFastCmTypeOf(IR::Instr *compare, IR::RegOpnd *object, IR::IntCo m_lowererMD.GenerateObjectTest(object, compare, target); - // MOV typeRegOpnd, [object + offset(Type)] InsertMove(typeRegOpnd, IR::IndirOpnd::New(object, Js::RecyclableObject::GetOffsetOfType(), TyMachReg, m_func), @@ -20835,7 +21154,6 @@ Lowerer::GenerateLoadNewTarget(IR::Instr* instrInsert) instrInsert->Remove(); } - void Lowerer::GenerateGetCurrentFunctionObject(IR::Instr * instr) { @@ -21290,6 +21608,15 @@ Lowerer::GenerateMemInit(IR::RegOpnd * opnd, int32 offset, IR::Opnd * value, IR: InsertMove(IR::IndirOpnd::New(opnd, offset, type, func), value, insertBeforeInstr); } +void +Lowerer::GenerateMemInit(IR::RegOpnd * opnd, IR::RegOpnd * offset, IR::Opnd * value, IR::Instr * insertBeforeInstr, bool isZeroed) +{ + IRType type = value->GetType(); + + Func * func = this->m_func; + InsertMove(IR::IndirOpnd::New(opnd, offset, type, func), value, insertBeforeInstr); +} + void Lowerer::GenerateRecyclerMemInit(IR::RegOpnd * opnd, int32 offset, int32 value, IR::Instr * insertBeforeInstr) { @@ -21414,7 +21741,6 @@ Lowerer::GenerateSimplifiedInt4Rem( return true; } - #if DBG bool Lowerer::ValidOpcodeAfterLower(IR::Instr* instr, Func * func) @@ -21727,7 +22053,6 @@ Lowerer::LowerDivI4Common(IR::Instr * instr) // dst = IDIV src2, src1 // $done: - IR::LabelInstr * div0Label = InsertLabel(true, instr); IR::LabelInstr * divLabel = InsertLabel(false, instr); IR::LabelInstr * doneLabel = InsertLabel(false, instr->m_next); @@ -22248,7 +22573,6 @@ void Lowerer::LowerBrFncCachedScopeEq(IR::Instr *instr) instr->Remove(); } - IR::Instr* Lowerer::InsertLoweredRegionStartMarker(IR::Instr* instrToInsertBefore) { AssertMsg(instrToInsertBefore->m_prev != nullptr, "Can't insert lowered region start marker as the first instr in the func."); diff --git a/lib/Backend/Lower.h b/lib/Backend/Lower.h index 67a53c006d9..7d7df7dc4c6 100644 --- a/lib/Backend/Lower.h +++ b/lib/Backend/Lower.h @@ -364,6 +364,9 @@ class Lowerer void GenerateFastInlineStringSplitMatch(IR::Instr * instr); void GenerateFastInlineMathImul(IR::Instr* instr); void GenerateFastInlineMathClz32(IR::Instr* instr); + void GenerateCtz(IR::Instr* instr); + void GeneratePopCnt32(IR::Instr* instr); + void GenerateThrowUnreachable(IR::Instr* instr); void GenerateFastInlineMathFround(IR::Instr* instr); void GenerateFastInlineRegExpExec(IR::Instr * instr); bool GenerateFastPush(IR::Opnd *baseOpndParam, IR::Opnd *src, IR::Instr *callInstr, IR::Instr *insertInstr, IR::LabelInstr *labelHelper, IR::LabelInstr *doneLabel, IR::LabelInstr * bailOutLabelHelper, bool returnLength = false); @@ -391,6 +394,7 @@ class Lowerer void LowerBailOnNotString(IR::Instr *instr); IR::Instr * LowerBailForDebugger(IR::Instr* instr, bool isInsideHelper = false); IR::Instr * LowerBailOnException(IR::Instr* instr); + IR::Instr * LowerReinterpretPrimitive(IR::Instr* instr); void LowerOneBailOutKind(IR::Instr *const instr, const IR::BailOutKind bailOutKindToLower, const bool isInHelperBlock, const bool preserveBailOutKindInInstr = false); @@ -489,14 +493,21 @@ class Lowerer void GenerateRecyclerAlloc(IR::JnHelperMethod allocHelper, size_t allocSize, IR::RegOpnd* newObjDst, IR::Instr* insertionPointInstr, bool inOpHelper = false); template - IR::RegOpnd * GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteInfo * arrayInfo, bool * pIsHeadSegmentZeroed, bool containMissingValues = false); + IR::RegOpnd * GenerateArrayAlloc(IR::Instr *instr, uint32 * psize, Js::ArrayCallSiteInfo * arrayInfo, bool * pIsHeadSegmentZeroed, bool isArrayObjCtor = false); + template + IR::RegOpnd * GenerateArrayAlloc(IR::Instr *instr, IR::Opnd * sizeOpnd, Js::ArrayCallSiteInfo * arrayInfo); void GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef, uint32 length, IR::LabelInstr* labelDone); + + template + void GenerateProfiledNewScObjArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef, IR::LabelInstr* helperLabel, IR::LabelInstr* labelDone, IR::Opnd* lengthOpnd, uint32 offsetOfCallSiteIndex, uint32 offsetOfWeakFuncRef); void GenerateProfiledNewScArrayFastPath(IR::Instr *instr, Js::ArrayCallSiteInfo * arrayInfo, intptr_t arrayInfoAddr, intptr_t weakFuncRef, uint32 length); + void GenerateMemInit(IR::RegOpnd * opnd, int32 offset, int32 value, IR::Instr * insertBeforeInstr, bool isZeroed = false); void GenerateMemInit(IR::RegOpnd * opnd, int32 offset, uint32 value, IR::Instr * insertBeforeInstr, bool isZeroed = false); void GenerateMemInitNull(IR::RegOpnd * opnd, int32 offset, IR::Instr * insertBeforeInstr, bool isZeroed = false); void GenerateMemInit(IR::RegOpnd * opnd, int32 offset, IR::Opnd * value, IR::Instr * insertBeforeInstr, bool isZeroed = false); + void GenerateMemInit(IR::RegOpnd * opnd, IR::RegOpnd * offset, IR::Opnd * value, IR::Instr * insertBeforeInstr, bool isZeroed = false); void GenerateRecyclerMemInit(IR::RegOpnd * opnd, int32 offset, int32 value, IR::Instr * insertBeforeInstr); void GenerateRecyclerMemInit(IR::RegOpnd * opnd, int32 offset, uint32 value, IR::Instr * insertBeforeInstr); void GenerateRecyclerMemInitNull(IR::RegOpnd * opnd, int32 offset, IR::Instr * insertBeforeInstr); @@ -533,7 +544,6 @@ class Lowerer IR::AddrOpnd * CreateFunctionBodyOpnd(Func *const func) const; IR::AddrOpnd * CreateFunctionBodyOpnd(Js::FunctionBody *const functionBody) const; - bool GenerateRecyclerOrMarkTempAlloc(IR::Instr * instr, IR::RegOpnd * dstOpnd, IR::JnHelperMethod allocHelper, size_t allocSize, IR::SymOpnd ** tempObjectSymOpnd); IR::SymOpnd * GenerateMarkTempAlloc(IR::RegOpnd *const dstOpnd, const size_t allocSize, IR::Instr *const insertBeforeInstr); void LowerBrFncCachedScopeEq(IR::Instr *instr); diff --git a/lib/Backend/LowerMDShared.cpp b/lib/Backend/LowerMDShared.cpp index 938ae3b6d63..9e69e957301 100644 --- a/lib/Backend/LowerMDShared.cpp +++ b/lib/Backend/LowerMDShared.cpp @@ -303,7 +303,6 @@ LowererMD::LoadFloatHelperArgument(IR::Instr * instr, IR::Opnd * opndArg) return this->lowererMDArch.LoadFloatHelperArgument(instr, opndArg); } - IR::Instr * LowererMD::LowerEntryInstr(IR::EntryInstr * entryInstr) { @@ -455,7 +454,6 @@ LowererMD::LowerLeaveNull(IR::Instr *finallyEndInstr) m_func); finallyEndInstr->InsertBefore(movR8); - // MOV REG_EH_ARGS_SIZE, argsSize IR::Instr *movR9 = IR::Instr::New(Js::OpCode::LdArgSize, IR::RegOpnd::New(nullptr, REG_EH_ARGS_SIZE, TyMachReg, m_func), @@ -792,6 +790,7 @@ LowererMD::LowerRet(IR::Instr * retInstr) { IR::RegOpnd * retReg; +#ifdef ASMJS_PLAT if (m_func->GetJITFunctionBody()->IsAsmJsMode() && !m_func->IsLoopBody()) // for loop body ret is the bytecodeoffset { Js::AsmJsRetType::Which asmType = m_func->GetJITFunctionBody()->GetAsmJsInfo()->GetRetType(); @@ -848,6 +847,7 @@ LowererMD::LowerRet(IR::Instr * retInstr) retReg = IR::RegOpnd::New(nullptr, lowererMDArch.GetRegReturnAsmJs(regType), regType, m_func); } else +#endif { retReg = IR::RegOpnd::New(nullptr, lowererMDArch.GetRegReturn(TyMachReg), TyMachReg, m_func); } @@ -857,7 +857,6 @@ LowererMD::LowerRet(IR::Instr * retInstr) return this->ChangeToAssign(retInstr); } - ///---------------------------------------------------------------------------- /// /// LowererMD::LowerUncondBranch @@ -1185,6 +1184,14 @@ void LowererMD::ChangeToShift(IR::Instr *const instr, const bool needFlags) instr->m_opcode = Js::OpCode::SHR; break; + case Js::OpCode::Rol_I4: + instr->m_opcode = Js::OpCode::ROL; + break; + + case Js::OpCode::Ror_I4: + instr->m_opcode = Js::OpCode::ROR; + break; + default: Assert(false); __assume(false); @@ -1462,6 +1469,44 @@ LowererMD::Legalize(IR::Instr *const instr, bool fPostRegAlloc) break; } + case Js::OpCode::CMOVA: + case Js::OpCode::CMOVAE: + case Js::OpCode::CMOVB: + case Js::OpCode::CMOVBE: + case Js::OpCode::CMOVE: + case Js::OpCode::CMOVG: + case Js::OpCode::CMOVGE: + case Js::OpCode::CMOVL: + case Js::OpCode::CMOVLE: + case Js::OpCode::CMOVNE: + case Js::OpCode::CMOVNO: + case Js::OpCode::CMOVNP: + case Js::OpCode::CMOVNS: + case Js::OpCode::CMOVO: + case Js::OpCode::CMOVP: + case Js::OpCode::CMOVS: + if (instr->GetSrc2()) + { + Assert(instr->GetDst()->GetSize() == instr->GetSrc2()->GetSize()); + Assert(instr->GetDst()->GetSize() == instr->GetSrc1()->GetSize()); + // sometimes we have fake src1 to help reg alloc + LegalizeOpnds( + instr, + L_Reg, + L_Reg, + L_Reg | L_Mem); + } + else + { + Assert(instr->GetDst()->GetSize() == instr->GetSrc1()->GetSize()); + LegalizeOpnds( + instr, + L_Reg, + L_Reg | L_Mem, + L_None); + } + break; + case Js::OpCode::MOVSD: Assert(AutoSystemInfo::Data.SSE2Available()); case Js::OpCode::MOVSS: @@ -1631,6 +1676,8 @@ LowererMD::Legalize(IR::Instr *const instr, bool fPostRegAlloc) case Js::OpCode::SHL: case Js::OpCode::SHR: case Js::OpCode::SAR: + case Js::OpCode::ROL: + case Js::OpCode::ROR: if (verify) { Assert(instr->GetSrc2()->IsIntConstOpnd() @@ -1663,8 +1710,13 @@ LowererMD::Legalize(IR::Instr *const instr, bool fPostRegAlloc) L_Reg | L_Mem | L_Imm32); // for L_Imm32, the encoder converts it into an IMUL3 break; + case Js::OpCode::TZCNT: case Js::OpCode::LZCNT: - Assert(AutoSystemInfo::Data.LZCntAvailable()); + Assert( + (instr->m_opcode == Js::OpCode::LZCNT && AutoSystemInfo::Data.LZCntAvailable()) || + (instr->m_opcode == Js::OpCode::TZCNT && AutoSystemInfo::Data.TZCntAvailable()) + ); + case Js::OpCode::BSF: case Js::OpCode::BSR: LegalizeOpnds( instr, @@ -1908,7 +1960,6 @@ void LowererMD::LegalizeSrc(IR::Instr *const instr, IR::Opnd *src, const uint fo Assert(src == instr->GetSrc1() || src == instr->GetSrc2()); Assert(forms); - switch(src->GetKind()) { case IR::OpndKindReg: @@ -2288,7 +2339,6 @@ LowererMD::GenerateFastDivByPow2(IR::Instr *instr) lowererMDArch.LowerCall(call, 0); } - // JMP $done instr->InsertBefore(IR::BranchInstr::New(Js::OpCode::JMP, done, m_func)); @@ -2503,7 +2553,6 @@ LowererMD::GenerateFastStringCheck(IR::Instr *instr, IR::RegOpnd *srcReg1, IR::R // TEST eax, eax // JEQ $success // JMP $fail - IR::Instr* instrInsert = instr; this->m_lowerer->GenerateStringTest(srcReg1, instrInsert, labelHelper); @@ -3346,7 +3395,6 @@ LowererMD::GenerateFastSub(IR::Instr * instrSub) this->GenerateSmIntPairTest(instrSub, opndSrc1, opndSrc2, labelHelper); } - // // For 32 bit arithmetic we copy them and set the size of operands to be 32 bits. This is // relevant only on AMD64. @@ -3355,7 +3403,6 @@ LowererMD::GenerateFastSub(IR::Instr * instrSub) opndSrc1 = opndSrc1->UseWithNewType(TyInt32, this->m_func); opndSrc2 = opndSrc2->UseWithNewType(TyInt32, this->m_func); - // s1 = MOV src1 opndReg = IR::RegOpnd::New(TyInt32, this->m_func); @@ -3484,7 +3531,6 @@ LowererMD::GenerateFastMul(IR::Instr * instrMul) this->GenerateSmIntPairTest(instrMul, opndSrc1, opndSrc2, labelHelper); - // // For 32 bit arithmetic we copy them and set the size of operands to be 32 bits. This is // relevant only on AMD64. @@ -3604,7 +3650,6 @@ LowererMD::GenerateFastMul(IR::Instr * instrMul) instr = IR::BranchInstr::New(Js::OpCode::JMP, labelFallThru, this->m_func); instrMul->InsertBefore(instr); - // $nonzero: instrMul->InsertBefore(labelNonZero); @@ -3783,9 +3828,6 @@ LowererMD::GenerateFastNeg(IR::Instr * instrNeg) instr = IR::BranchInstr::New(Js::OpCode::JMP, labelFallThru, this->m_func); instrNeg->InsertBefore(instr); - - - // $helper: // (caller generates helper sequence) // $fallthru: @@ -3966,7 +4008,6 @@ LowererMD::GenerateSmIntPairTest( // s1 = MOV src1 - instr = IR::Instr::New(Js::OpCode::MOV, opndReg, opndSrc1, this->m_func); instrInsert->InsertBefore(instr); @@ -4345,7 +4386,6 @@ LowererMD::GenerateLdFldFromFlagInlineCache( insertBeforeInstr->InsertBefore(instr); } - void LowererMD::GenerateLdFldFromProtoInlineCache( IR::Instr * instrLdFld, @@ -4690,7 +4730,6 @@ LowererMD::GenerateWriteBarrier(IR::Instr * assignInstr) } #endif - void LowererMD::GenerateStFldFromLocalInlineCache( IR::Instr * instrStFld, @@ -4760,7 +4799,6 @@ void LowererMD::InsertIncUInt8PreventOverflow( // inc dst, src Lowerer::InsertAdd(true, dst, src, IR::IntConstOpnd::New(1, TyUint8, func, true), noOverflowLabel); - // $done: if(onOverflowInsertBeforeInstrRef) @@ -4909,7 +4947,6 @@ LowererMD::GenerateFastScopedLdFld(IR::Instr * instrLdScopedFld) return instrLdScopedFld->m_prev; } - //---------------------------------------------------------------------------- // // LowererMD::GenerateFastScopedStFld @@ -5127,7 +5164,6 @@ LowererMD::GenerateFastElemIStringIndexCommon(IR::Instr * instrInsert, bool isSt // MOVZXW offsetOpnd, [propertyCacheOpnd->dataSlotIndex] -- load the slot index // - // CMP indexOpnd, PropertyString::`vtable' -- check if index is property string // JNE $helper @@ -5771,6 +5807,56 @@ bool LowererMD::GenerateFastCharAt(Js::BuiltinFunction index, IR::Opnd *dst, IR: return true; } +void +LowererMD::GenerateCtz(IR::Instr * instr) +{ + Assert(instr->GetSrc1()->IsInt32() || instr->GetSrc1()->IsUInt32()); + Assert(IRType_IsNativeInt(instr->GetDst()->GetType())); + if (AutoSystemInfo::Data.TZCntAvailable()) + { + instr->m_opcode = Js::OpCode::TZCNT; + Legalize(instr); + } + else + { + // dst = BSF src + // dst = CMOVE dst, 32 // dst is src1 to help reg alloc + instr->m_opcode = Js::OpCode::BSF; + Legalize(instr); + + IR::IntConstOpnd * const32 = IR::IntConstOpnd::New(32, instr->GetDst()->GetType(), m_func); + IR::Instr* cmove = IR::Instr::New(Js::OpCode::CMOVE, instr->GetDst(), instr->GetDst(), const32, this->m_func); + instr->InsertAfter(cmove); + Legalize(cmove); + } +} + +void +LowererMD::GenerateThrowUnreachable(IR::Instr * instr) +{ + this->m_lowerer->LoadScriptContext(instr); + ChangeToHelperCall(instr, IR::HelperThrow_Unreachable); +} + +void +LowererMD::GeneratePopCnt32(IR::Instr * instr) +{ + Assert(instr->GetSrc1()->IsInt32() || instr->GetSrc1()->IsUInt32()); + Assert(instr->GetDst()->IsInt32() || instr->GetSrc1()->IsUInt32()); + + if (AutoSystemInfo::Data.PopCntAvailable()) + { + instr->m_opcode = Js::OpCode::POPCNT; + Legalize(instr); + } + else + { + LoadHelperArgument(instr, instr->GetSrc1()); + instr->UnlinkSrc1(); + this->ChangeToHelperCall(instr, IR::HelperPopCnt32); + } +} + void LowererMD::GenerateClz(IR::Instr * instr) { @@ -5939,7 +6025,6 @@ LowererMD::GenerateCFGCheck(IR::Opnd * entryPointOpnd, IR::Instr * insertBeforeI cfgCallInstr->SetSrc1(targetOpnd); #endif - //CALL cfg(rax) insertBeforeInstr->InsertBefore(cfgCallInstr); @@ -6003,6 +6088,35 @@ LowererMD::GenerateFastRecyclerAlloc(size_t allocSize, IR::RegOpnd* newObjDst, I insertionPointInstr->InsertBefore(branchToAllocDoneInstr); } +#ifdef ENABLE_WASM +void +LowererMD::GenerateCopysign(IR::Instr * instr) +{ +#if defined(_M_IX86) + // We should only generate this if sse2 is available + Assert(AutoSystemInfo::Data.SSE2Available()); +#endif + + // ANDPS reg0, absDoubleCst + // ANDPS reg1, sgnBitDoubleCst + // ORPS reg0, reg1 + + // Copy sign from src2 to src1 + IR::Opnd* src1 = instr->GetSrc1(); + Assert(src1->IsFloat32() || src1->IsFloat64()); + GenerateFloatAbs(src1->AsRegOpnd(), instr); + + IR::Instr* t2 = IR::Instr::New(Js::OpCode::ANDPS, instr->GetSrc2(), instr->GetSrc2(), + IR::MemRefOpnd::New(this->m_func->GetThreadContextInfo()->GetSgnBitCst(), src1->GetType(), this->m_func, src1->IsFloat32() ? IR::AddrOpndKindDynamicFloatRef : IR::AddrOpndKindDynamicDoubleRef), + m_func); + instr->InsertBefore(t2); + Legalize(t2); + + instr->m_opcode = Js::OpCode::ORPS; + Legalize(instr); +}; +#endif //ENABLE_WASM + void LowererMD::SaveDoubleToVar(IR::RegOpnd * dstOpnd, IR::RegOpnd *opndFloat, IR::Instr *instrOrig, IR::Instr *instrInsert, bool isHelper) { @@ -6632,7 +6746,6 @@ LowererMD::LowerInt4SubWithBailOut( // Fall through to bailOutLabel } - bool LowererMD::GenerateSimplifiedInt4Mul( IR::Instr *const mulInstr, @@ -6981,7 +7094,6 @@ LowererMD::LowerInt4RemWithBailOut( IR::LabelInstr *const skipBailOutLabel) const { - Assert(instr); Assert(instr->m_opcode == Js::OpCode::Rem_I4); Assert(!instr->HasBailOutInfo()); @@ -7032,7 +7144,6 @@ LowererMD::LowerInt4RemWithBailOut( } // Fall through to bailOutLabel - // Lower the instruction LowererMDArch::EmitInt4Instr(instr); @@ -7262,7 +7373,6 @@ bool LowererMD::GenerateObjectTest(IR::Opnd * opndSrc, IR::Instr * insertInstr, instr = IR::Instr::New(Js::OpCode::SHR, opndReg, opndReg, IR::IntConstOpnd::New(Js::VarTag_Shift, TyInt8, this->m_func), this->m_func); insertInstr->InsertBefore(instr); - if (fContinueLabel) { // JEQ $labelHelper @@ -7544,7 +7654,6 @@ void LowererMD::GenerateFloatTest(IR::RegOpnd * opndSrc, IR::Instr * insertInstr #endif - #if DBG // // Helps in debugging of fast paths. @@ -8238,7 +8347,6 @@ LowererMD::GenerateLdThisCheck(IR::Instr * instr) return true; } - // // TEST src, Js::AtomTag // JNE $done @@ -8322,7 +8430,6 @@ LowererMD::GenerateLdThisStrict(IR::Instr* instr) // JNE done // - // fallback if object's type is not the cached type // MOV typeReg, objectSrc + offsetof(RecyclableObject::type) // CMP typeReg, [&(inlineCache->type] @@ -8478,6 +8585,14 @@ void LowererMD::GenerateIsJsObjectTest(IR::RegOpnd* instanceReg, IR::Instr* inse insertInstr->InsertBefore(IR::BranchInstr::New(Js::OpCode::JLE, labelHelper, this->m_func)); } +IR::Instr * +LowererMD::LowerReinterpretPrimitive(IR::Instr* instr) +{ + instr->m_opcode = Js::OpCode::MOVD; + Legalize(instr); + return instr; +} + IR::Instr * LowererMD::LowerToFloat(IR::Instr *instr) { @@ -8690,7 +8805,7 @@ LowererMD::LowerFloatCondBranch(IR::BranchInstr *instrBranch, bool ignoreNan) } void LowererMD::HelperCallForAsmMathBuiltin(IR::Instr* instr, IR::JnHelperMethod helperMethodFloat, IR::JnHelperMethod helperMethodDouble) { - Assert(instr->m_opcode == Js::OpCode::InlineMathFloor || instr->m_opcode == Js::OpCode::InlineMathCeil); + Assert(instr->m_opcode == Js::OpCode::InlineMathFloor || instr->m_opcode == Js::OpCode::InlineMathCeil || instr->m_opcode == Js::OpCode::Trunc_A || instr->m_opcode == Js::OpCode::Nearest_A); AssertMsg(instr->GetDst()->IsFloat(), "dst must be float."); Assert(instr->GetDst()->GetType() == instr->GetSrc1()->GetType()); Assert(!instr->GetSrc2()); @@ -8820,6 +8935,10 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth case Js::OpCode::InlineMathFloor: case Js::OpCode::InlineMathCeil: case Js::OpCode::InlineMathRound: +#ifdef ENABLE_WASM + case Js::OpCode::Trunc_A: + case Js::OpCode::Nearest_A: +#endif //ENABLE_WASM { Assert(AutoSystemInfo::Data.SSE4_1Available()); Assert(instr->GetDst()->IsInt32() || instr->GetDst()->IsFloat()); @@ -8904,7 +9023,6 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth instr->InsertBefore(argOut); bool negZeroCheckDone = false; - IR::LabelInstr * bailoutLabel = nullptr; bool sharedBailout = false; if (instr->GetDst()->IsInt32()) @@ -8923,7 +9041,7 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth Assert(src->IsFloat32()); zero = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetFloatZeroAddr(), TyFloat32, this->m_func, IR::AddrOpndKindDynamicFloatRef); } - + IR::AutoReuseOpnd autoReuseZero(zero, this->m_func); IR::LabelInstr * skipRoundSd = IR::LabelInstr::New(Js::OpCode::Label, this->m_func); if(instr->m_opcode == Js::OpCode::InlineMathRound) @@ -9051,19 +9169,27 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth } // ROUNDSD srcCopy, srcCopy, round_mode - IR::Opnd * roundMode; - if(isNotCeil) + IR::Opnd * roundMode = nullptr; + + switch (instr->m_opcode) { +#ifdef ENABLE_WASM + case Js::OpCode::Trunc_A: + roundMode = IR::IntConstOpnd::New(0x03, TyInt32, this->m_func); + break; + case Js::OpCode::Nearest_A: + roundMode = IR::IntConstOpnd::New(0x00, TyInt32, this->m_func); + break; +#endif //ENABLE_WASM + case Js::OpCode::InlineMathRound: + case Js::OpCode::InlineMathFloor: roundMode = IR::IntConstOpnd::New(0x01, TyInt32, this->m_func); - } - else if (instr->GetDst()->IsInt32() || instr->m_opcode != Js::OpCode::InlineMathFloor) - { + break; + case Js::OpCode::InlineMathCeil: roundMode = IR::IntConstOpnd::New(0x02, TyInt32, this->m_func); + break; } - else - { - roundMode = IR::IntConstOpnd::New(0x03, TyInt32, this->m_func); - } + IR::Instr* roundInstr = IR::Instr::New(src->IsFloat64() ? Js::OpCode::ROUNDSD : Js::OpCode::ROUNDSS, roundedFloat, roundedFloat, roundMode, this->m_func); instr->InsertBefore(roundInstr); @@ -9175,16 +9301,15 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth instr->InsertBefore(branchInstr); LowererMDArch::EmitInt4Instr(branchInstr); } - // MOV dst, src1 - this->m_lowerer->InsertMove(dst, src1, instr); + // MOV dst, src1 + this->m_lowerer->InsertMove(dst, src1, instr); } - - else if(dst->IsFloat64()) + else if(dst->IsFloat()) { - // COMISD src1 (src2), src2 (src1) + // COMISD/COMISS src1 (src2), src2 (src1) // JA $doneLabel // JEQ $labelNegZeroAndNaNCheckHelper - // MOVSD dst, src2 + // MOVSD/MOVSS dst, src2 // JMP $doneLabel // // $labelNegZeroAndNaNCheckHelper @@ -9192,24 +9317,24 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth // if(min) // { // if(src2 == -0.0) - // MOVSD dst, src2 + // MOVSD/MOVSS dst, src2 // } // else // { // if(src1 == -0.0) - // MOVSD dst, src2 + // MOVSD/MOVSS dst, src2 // } // JMP $doneLabel // // $labelNaNHelper - // MOVSD dst, NaN + // MOVSD/MOVSS dst, NaN // // $doneLabel - //MOVSD dst, src1; + //MOVSD/MOVSS dst, src1; Assert(!dst->IsEqual(src1)); - this->m_lowerer->InsertMove(dst, src1, instr); + this->m_lowerer->InsertMove(dst, src1, instr); if(min) { this->m_lowerer->InsertCompareBranch(src1, src2, Js::OpCode::BrLt_A, doneLabel, instr); // Lowering of BrLt_A for floats is done to JA with operands swapped @@ -9244,7 +9369,17 @@ void LowererMD::GenerateFastInlineBuiltInCall(IR::Instr* instr, IR::JnHelperMeth instr->InsertBefore(IR::BranchInstr::New(Js::OpCode::JMP, doneLabel, instr->m_func)); instr->InsertBefore(labelNaNHelper); - IR::Opnd * opndNaN = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDoubleNaNAddr(), IRType::TyFloat64, this->m_func); + IR::Opnd * opndNaN = nullptr; + + if (dst->IsFloat32()) + { + opndNaN = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetFloatNaNAddr(), IRType::TyFloat32, this->m_func); + } + else + { + opndNaN = IR::MemRefOpnd::New(m_func->GetThreadContextInfo()->GetDoubleNaNAddr(), IRType::TyFloat64, this->m_func); + } + this->m_lowerer->InsertMove(dst, opndNaN, instr); } instr->InsertBefore(doneLabel); @@ -9263,7 +9398,10 @@ IR::Opnd* LowererMD::IsOpndNegZero(IR::Opnd* opnd, IR::Instr* instr) { IR::Opnd * isNegZero = IR::RegOpnd::New(TyInt32, this->m_func); - LoadDoubleHelperArgument(instr, opnd); + if (opnd->IsFloat64()) + LoadDoubleHelperArgument(instr, opnd); + else + LoadFloatHelperArgument(instr, opnd); IR::Instr * helperCallInstr = IR::Instr::New(Js::OpCode::CALL, isNegZero, this->m_func); instr->InsertBefore(helperCallInstr); this->ChangeToHelperCall(helperCallInstr, IR::HelperIsNegZero); diff --git a/lib/Backend/LowerMDShared.h b/lib/Backend/LowerMDShared.h index 2e802e98b3f..b50d0118679 100644 --- a/lib/Backend/LowerMDShared.h +++ b/lib/Backend/LowerMDShared.h @@ -171,6 +171,9 @@ class LowererMD bool GenerateFastCharAt(Js::BuiltinFunction index, IR::Opnd *dst, IR::Opnd *srcStr, IR::Opnd *srcIndex, IR::Instr *callInstr, IR::Instr *insertInstr, IR::LabelInstr *labelHelper, IR::LabelInstr *doneLabel); void GenerateClz(IR::Instr * instr); + void GenerateCtz(IR::Instr * instr); + void GeneratePopCnt32(IR::Instr * instr); + void GenerateThrowUnreachable(IR::Instr * instr); bool TryGenerateFastMulAdd(IR::Instr * instrAdd, IR::Instr ** pInstrPrev); bool GenerateLdThisCheck(IR::Instr * instr); bool GenerateLdThisStrict(IR::Instr * instr); @@ -191,6 +194,9 @@ class LowererMD #ifdef _CONTROL_FLOW_GUARD void GenerateCFGCheck(IR::Opnd * entryPointOpnd, IR::Instr * insertBeforeInstr); #endif + + void GenerateCopysign(IR::Instr * instr); + static IR::Instr *LoadFloatZero(IR::Opnd * opndDst, IR::Instr * instrInsert); static IR::Instr *LoadFloatValue(IR::Opnd * opndDst, double value, IR::Instr * instrInsert); IR::Instr * LoadStackAddress(StackSym *sym, IR::RegOpnd *optionalDstOpnd = nullptr); @@ -257,6 +263,7 @@ class LowererMD IR::Instr * LowerExitInstrAsmJs(IR::ExitInstr * exitInstr); IR::Instr * LoadNewScObjFirstArg(IR::Instr * instr, IR::Opnd * dst, ushort extraArgs = 0); IR::Instr * LowerToFloat(IR::Instr *instr); + IR::Instr * LowerReinterpretPrimitive(IR::Instr* instr); static IR::BranchInstr * LowerFloatCondBranch(IR::BranchInstr *instrBranch, bool ignoreNan = false); static Js::OpCode GetLoadOp(IRType type) { return LowererMDArch::GetAssignOp(type); } diff --git a/lib/Backend/NativeCodeData.cpp b/lib/Backend/NativeCodeData.cpp index eba76e483b9..79f8bc19276 100644 --- a/lib/Backend/NativeCodeData.cpp +++ b/lib/Backend/NativeCodeData.cpp @@ -4,7 +4,8 @@ //------------------------------------------------------------------------------------------------------- #include "Backend.h" -NativeCodeData::NativeCodeData(DataChunk * chunkList) : chunkList(chunkList) +NativeCodeData::NativeCodeData(DataChunk * chunkList) + : chunkList(chunkList) { #ifdef PERF_COUNTERS this->size = 0; @@ -13,7 +14,14 @@ NativeCodeData::NativeCodeData(DataChunk * chunkList) : chunkList(chunkList) NativeCodeData::~NativeCodeData() { - NativeCodeData::DeleteChunkList(this->chunkList); + if (JITManager::GetJITManager()->IsJITServer()) + { + NativeCodeData::DeleteChunkList(this->chunkList); + } + else + { + NativeCodeData::DeleteChunkList(this->noFixupChunkList); + } PERF_COUNTER_SUB(Code, DynamicNativeCodeDataSize, this->size); PERF_COUNTER_SUB(Code, TotalNativeCodeDataSize, this->size); } @@ -161,7 +169,9 @@ NativeCodeData::VerifyExistFixupEntry(void* targetAddr, void* addrToFixup, void* { if (entry->addrOffset == offset) { - Assert(entry->targetTotalOffset == targetChunk->offset); + // The following assertions can be false positive in case a data field happen to + // have value fall into NativeCodeData memory range + AssertMsg(entry->targetTotalOffset == targetChunk->offset, "Missing fixup"); return; } entry = entry->next; @@ -169,19 +179,23 @@ NativeCodeData::VerifyExistFixupEntry(void* targetAddr, void* addrToFixup, void* AssertMsg(false, "Data chunk not found"); } +template void -NativeCodeData::DeleteChunkList(DataChunk * chunkList) +NativeCodeData::DeleteChunkList(DataChunkT * chunkList) { - DataChunk * next = chunkList; + DataChunkT * next = chunkList; while (next != nullptr) { - DataChunk * current = next; + DataChunkT * current = next; next = next->next; delete current; } } -NativeCodeData::Allocator::Allocator() : chunkList(nullptr), lastChunkList(nullptr) +NativeCodeData::Allocator::Allocator() + : chunkList(nullptr), + lastChunkList(nullptr), + isOOPJIT(JITManager::GetJITManager()->IsJITServer()) { this->totalSize = 0; this->allocCount = 0; @@ -196,42 +210,73 @@ NativeCodeData::Allocator::Allocator() : chunkList(nullptr), lastChunkList(nullp NativeCodeData::Allocator::~Allocator() { Assert(!finalized || this->chunkList == nullptr); - NativeCodeData::DeleteChunkList(this->chunkList); + if (JITManager::GetJITManager()->IsJITServer()) + { + NativeCodeData::DeleteChunkList(this->chunkList); + } + else + { + NativeCodeData::DeleteChunkList(this->noFixupChunkList); + } PERF_COUNTER_SUB(Code, DynamicNativeCodeDataSize, this->size); PERF_COUNTER_SUB(Code, TotalNativeCodeDataSize, this->size); } char * -NativeCodeData::Allocator::Alloc(size_t requestSize) +NativeCodeData::Allocator::Alloc(DECLSPEC_GUARD_OVERFLOW size_t requestSize) { - char * data = nullptr; Assert(!finalized); + char * data = nullptr; requestSize = Math::Align(requestSize, sizeof(void*)); - DataChunk * newChunk = HeapNewStructPlus(requestSize, DataChunk); + + if (isOOPJIT) + { #if DBG - newChunk->dataType = nullptr; + // Always zero out the data for chk build to reduce the chance of false + // positive while verifying missing fixup entries + // Allocation without zeroing out, and with bool field in the structure + // will increase the chance of false positive because of reusing memory + // without zeroing, and the bool field is set to false, makes the garbage + // memory not changed, and the garbage memory might be just pointing to the + // same range of NativeCodeData memory, the checking tool will report false + // poisitive, see NativeCodeData::VerifyExistFixupEntry for more + DataChunk * newChunk = HeapNewStructPlusZ(requestSize, DataChunk); +#else + DataChunk * newChunk = HeapNewStructPlus(requestSize, DataChunk); #endif - newChunk->next = nullptr; - newChunk->allocIndex = this->allocCount++; - newChunk->len = (unsigned int)requestSize; - newChunk->fixupList = nullptr; - newChunk->fixupFunc = nullptr; - newChunk->offset = this->totalSize; - if (this->chunkList == nullptr) - { - this->chunkList = newChunk; - this->lastChunkList = newChunk; +#if DBG + newChunk->dataType = nullptr; +#endif + + newChunk->next = nullptr; + newChunk->allocIndex = this->allocCount++; + newChunk->len = (unsigned int)requestSize; + newChunk->fixupList = nullptr; + newChunk->fixupFunc = nullptr; + newChunk->offset = this->totalSize; + if (this->chunkList == nullptr) + { + this->chunkList = newChunk; + this->lastChunkList = newChunk; + } + else + { + this->lastChunkList->next = newChunk; + this->lastChunkList = newChunk; + } + this->totalSize += (unsigned int)requestSize; + data = newChunk->data; } else { - this->lastChunkList->next = newChunk; - this->lastChunkList = newChunk; + DataChunkNoFixup * newChunk = HeapNewStructPlus(requestSize, DataChunkNoFixup); + newChunk->next = this->noFixupChunkList; + this->noFixupChunkList = newChunk; + data = newChunk->data; } - data = newChunk->data; - this->totalSize += (unsigned int)requestSize; #ifdef PERF_COUNTERS this->size += requestSize; @@ -243,16 +288,24 @@ NativeCodeData::Allocator::Alloc(size_t requestSize) } char * -NativeCodeData::Allocator::AllocLeaf(size_t requestSize) +NativeCodeData::Allocator::AllocLeaf(DECLSPEC_GUARD_OVERFLOW size_t requestSize) { return Alloc(requestSize); } char * -NativeCodeData::Allocator::AllocZero(size_t requestSize) +NativeCodeData::Allocator::AllocZero(DECLSPEC_GUARD_OVERFLOW size_t requestSize) { char * data = Alloc(requestSize); +#if !DBG + // Allocated with HeapNewStructPlusZ for chk build memset(data, 0, requestSize); +#else + if (!isOOPJIT) + { + memset(data, 0, requestSize); + } +#endif return data; } diff --git a/lib/Backend/NativeCodeData.h b/lib/Backend/NativeCodeData.h index 5591ef6ad0f..eb418ac9601 100644 --- a/lib/Backend/NativeCodeData.h +++ b/lib/Backend/NativeCodeData.h @@ -42,8 +42,15 @@ class NativeCodeData char data[0]; }; + struct DataChunkNoFixup + { + DataChunkNoFixup * next; + char data[0]; + }; + static DataChunk* GetDataChunk(void* data) { + Assert(JITManager::GetJITManager()->IsJITServer()); return (NativeCodeData::DataChunk*)((char*)data - offsetof(NativeCodeData::DataChunk, data)); } @@ -51,11 +58,16 @@ class NativeCodeData static unsigned int GetDataTotalOffset(void* data) { + Assert(JITManager::GetJITManager()->IsJITServer()); return GetDataChunk(data)->offset; } NativeCodeData(DataChunk * chunkList); - DataChunk * chunkList; + union + { + DataChunk * chunkList; + DataChunkNoFixup * noFixupChunkList; + }; #ifdef PERF_COUNTERS size_t size; @@ -66,7 +78,8 @@ class NativeCodeData static void AddFixupEntry(void* targetAddr, void* addrToFixup, void* startAddress, DataChunk * chunkList); static void AddFixupEntry(void* targetAddr, void* targetStartAddr, void* addrToFixup, void* startAddress, DataChunk * chunkList); static void AddFixupEntryForPointerArray(void* startAddress, DataChunk * chunkList); - static void DeleteChunkList(DataChunk * chunkList); + template + static void DeleteChunkList(DataChunkT * chunkList); public: class Allocator { @@ -83,8 +96,12 @@ class NativeCodeData NativeCodeData * Finalize(); void Free(void * buffer, size_t byteSize); - DataChunk * chunkList; - DataChunk * lastChunkList; + union + { + DataChunk * chunkList; + DataChunkNoFixup* noFixupChunkList; + }; + DataChunk * lastChunkList; // used to maintain the allocation order in the list unsigned int totalSize; unsigned int allocCount; @@ -93,8 +110,9 @@ class NativeCodeData Allocator * TrackAllocInfo(TrackAllocData const& data) { return this; } void ClearTrackAllocInfo(TrackAllocData* data = NULL) {} #endif + protected: + bool isOOPJIT; private: - #if DBG bool finalized; #endif @@ -125,12 +143,15 @@ class NativeCodeData { char* dataBlock = __super::Alloc(requestedBytes); #if DBG - DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); - chunk->dataType = typeid(T).name(); - if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + if (JITManager::GetJITManager()->IsJITServer()) { - Output::Print(_u("NativeCodeData AllocNoFix: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), - chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); + chunk->dataType = typeid(T).name(); + if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + { + Output::Print(_u("NativeCodeData AllocNoFix: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), + chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + } } #endif @@ -141,12 +162,15 @@ class NativeCodeData char* dataBlock = __super::AllocZero(requestedBytes); #if DBG - DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); - chunk->dataType = typeid(T).name(); - if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + if (JITManager::GetJITManager()->IsJITServer()) { - Output::Print(_u("NativeCodeData AllocNoFix: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), - chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); + chunk->dataType = typeid(T).name(); + if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + { + Output::Print(_u("NativeCodeData AllocNoFix: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), + chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + } } #endif @@ -161,22 +185,21 @@ class NativeCodeData template class AllocatorT : public Allocator { -#if DBG - __declspec(noinline) // compiler inline this function even in chk build... maybe because it's in .h file? -#endif char* AddFixup(char* dataBlock) { - DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); - chunk->fixupFunc = &Fixup; -#if DBG - chunk->dataType = typeid(T).name(); - if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + if (isOOPJIT) { - Output::Print(_u("NativeCodeData Alloc: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), - chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); - } + DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); + chunk->fixupFunc = &Fixup; +#if DBG + chunk->dataType = typeid(T).name(); + if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + { + Output::Print(_u("NativeCodeData Alloc: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), + chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + } #endif - + } return dataBlock; } diff --git a/lib/Backend/NativeCodeGenerator.cpp b/lib/Backend/NativeCodeGenerator.cpp index cf51f126f1d..98811d4eefb 100644 --- a/lib/Backend/NativeCodeGenerator.cpp +++ b/lib/Backend/NativeCodeGenerator.cpp @@ -211,15 +211,13 @@ NativeCodeGenerator::NewLoopBodyCodeGen(Js::FunctionBody *functionBody, Js::Entr bool NativeCodeGenerator::DoBackEnd(Js::FunctionBody *fn) { - if (PHASE_OFF(Js::BackEndPhase, fn)) - { - return false; - } - if (fn->IsAsmJSModule() || fn->IsGeneratorAndJitIsDisabled()) - { - return false; - } - return true; + return ( + !PHASE_OFF(Js::BackEndPhase, fn) + && !fn->IsGeneratorAndJitIsDisabled() +#ifdef ASMJS_PLAT + && !fn->IsAsmJSModule() +#endif + ); } void @@ -535,6 +533,7 @@ NativeCodeGenerator::GenerateFunction(Js::FunctionBody *fn, Js::ScriptFunction * entryPointInfo = fn->GetDefaultFunctionEntryPointInfo(); Assert(fn->IsInterpreterThunk() || fn->IsSimpleJitOriginalEntryPoint()); } + bool doPreJit = IS_PREJIT_ON(); #ifdef ASMJS_PLAT if (fn->GetIsAsmjsMode()) { @@ -557,6 +556,7 @@ NativeCodeGenerator::GenerateFunction(Js::FunctionBody *fn, Js::ScriptFunction * if (PHASE_TRACE1(Js::AsmjsEntryPointInfoPhase)) Output::Print(_u("New Entrypoint is CheckAsmJsCodeGenThunk for function: %s\n"), fn->GetDisplayName()); + doPreJit |= CONFIG_FLAG(MaxAsmJsInterpreterRunCount) == 0 || CONFIG_ISENABLED(Js::ForceNativeFlag); } else #endif @@ -574,7 +574,7 @@ NativeCodeGenerator::GenerateFunction(Js::FunctionBody *fn, Js::ScriptFunction * entryPointInfo->SetCodeGenPending(workitem); InterlockedIncrement(&pendingCodeGenWorkItems); - if(!IS_PREJIT_ON()) + if(!doPreJit) { workItems.LinkToEnd(workitem); return true; @@ -633,11 +633,16 @@ void NativeCodeGenerator::GenerateLoopBody(Js::FunctionBody * fn, Js::LoopHeader // function is currently being interpreted. If it is being interpreted, // We'd still like to jit the loop body. // We reset the interpretCount to 0 in case we switch back to the interpreter - if (fn->GetNativeEntryPointUsed() && fn->GetCanReleaseLoopHeaders() && (!fn->GetIsAsmJsFunction() || !(loopHeader->GetCurrentEntryPointInfo()->GetIsTJMode()))) + if (fn->GetNativeEntryPointUsed() && fn->GetCanReleaseLoopHeaders() +#ifdef ASMJS_PLAT + && (!fn->GetIsAsmJsFunction() || !(loopHeader->GetCurrentEntryPointInfo()->GetIsTJMode())) +#endif + ) { loopHeader->ResetInterpreterCount(); return; } +#ifdef ASMJS_PLAT if (fn->GetIsAsmJsFunction()) { Js::FunctionEntryPointInfo* functionEntryPointInfo = (Js::FunctionEntryPointInfo*) fn->GetDefaultEntryPointInfo(); @@ -645,6 +650,7 @@ void NativeCodeGenerator::GenerateLoopBody(Js::FunctionBody * fn, Js::LoopHeader loopEntryPointInfo->SetIsAsmJSFunction(true); loopEntryPointInfo->SetModuleAddress(functionEntryPointInfo->GetModuleAddress()); } +#endif JsLoopBodyCodeGen * workitem = this->NewLoopBodyCodeGen(fn, entryPoint, loopHeader); if (!workitem) { @@ -884,6 +890,7 @@ NativeCodeGenerator::CodeGen(PageAllocator * pageAllocator, CodeGenWorkItem* wor #if !FLOATVAR workItem->GetJITData()->xProcNumberPageSegment = scriptContext->GetThreadContext()->GetXProcNumberPageSegmentManager()->GetFreeSegment(&alloc); #endif + workItem->GetJITData()->globalThisAddr = (intptr_t)workItem->RecyclableData()->JitTimeData()->GetGlobalThisObject(); LARGE_INTEGER start_time = { 0 }; NativeCodeGenerator::LogCodeGenStart(workItem, &start_time); @@ -904,7 +911,6 @@ NativeCodeGenerator::CodeGen(PageAllocator * pageAllocator, CodeGenWorkItem* wor JITTimeWorkItem * jitWorkItem = Anew(&jitArena, JITTimeWorkItem, workItem->GetJITData()); - workItem->GetJITData()->globalThisAddr = (intptr_t)scriptContext->GetLibrary()->GetGlobalObject()->ToThis(); #if !FLOATVAR CodeGenNumberAllocator* pNumberAllocator = nullptr; @@ -1082,6 +1088,11 @@ NativeCodeGenerator::CodeGen(PageAllocator * pageAllocator, CodeGenWorkItem* wor } #endif + if (!CONFIG_FLAG(OOPCFGRegistration)) + { + scriptContext->GetThreadContext()->SetValidCallTargetForCFG((PVOID)jitWriteData.codeAddress); + } + workItem->SetCodeAddress((size_t)jitWriteData.codeAddress); workItem->GetEntryPoint()->SetCodeGenRecorded((Js::JavascriptMethod)jitWriteData.codeAddress, jitWriteData.codeSize); @@ -1572,7 +1583,11 @@ NativeCodeGenerator::CheckCodeGenDone( // PrioritizeJob will return false Assert(entryPointInfo->IsCodeGenDone() || entryPointInfo->IsCleanedUp() || entryPointInfo->IsPendingCleanup()); - if (!functionBody->GetHasBailoutInstrInJittedCode() && functionBody->GetHasAllocatedLoopHeaders() && (!functionBody->GetIsAsmJsFunction() || !(((Js::FunctionEntryPointInfo*)functionBody->GetDefaultEntryPointInfo())->GetIsTJMode()))) + if (!functionBody->GetHasBailoutInstrInJittedCode() && functionBody->GetHasAllocatedLoopHeaders() +#ifdef ASMJS_PLAT + && (!functionBody->GetIsAsmJsFunction() || !(((Js::FunctionEntryPointInfo*)functionBody->GetDefaultEntryPointInfo())->GetIsTJMode())) +#endif + ) { if (functionBody->GetCanReleaseLoopHeaders()) { @@ -1750,7 +1765,11 @@ NativeCodeGenerator::Process(JsUtil::Job *const job, JsUtil::ParallelThreadData JsLoopBodyCodeGen* loopBodyCodeGenWorkItem = (JsLoopBodyCodeGen*)codeGenWork; Js::FunctionBody* fn = loopBodyCodeGenWorkItem->GetFunctionBody(); - if (fn->GetNativeEntryPointUsed() && fn->GetCanReleaseLoopHeaders() && (!fn->GetIsAsmJsFunction() || !(loopBodyCodeGenWorkItem->loopHeader->GetCurrentEntryPointInfo()->GetIsTJMode()))) + if (fn->GetNativeEntryPointUsed() && fn->GetCanReleaseLoopHeaders() +#ifdef ASMJS_PLAT + && (!fn->GetIsAsmJsFunction() || !(loopBodyCodeGenWorkItem->loopHeader->GetCurrentEntryPointInfo()->GetIsTJMode())) +#endif + ) { loopBodyCodeGenWorkItem->loopHeader->ResetInterpreterCount(); return false; @@ -1843,7 +1862,7 @@ NativeCodeGenerator::Prioritize(JsUtil::Job *const job, const bool forceAddJobTo ExecutionMode NativeCodeGenerator::PrejitJitMode(Js::FunctionBody *const functionBody) { - Assert(IS_PREJIT_ON()); + Assert(IS_PREJIT_ON() || functionBody->GetIsAsmjsMode()); Assert(functionBody->DoSimpleJit() || !PHASE_OFF(Js::FullJitPhase, functionBody)); // Prefer full JIT for prejitting unless it's off or simple JIT is forced @@ -2007,20 +2026,17 @@ NativeCodeGenerator::UpdateJITState() } // update all property records on server that have been changed since last jit - ThreadContext::PropertyMap * pendingProps = scriptContext->GetThreadContext()->GetPendingJITProperties(); - PropertyRecordIDL ** newPropArray = nullptr; + ThreadContext::PropertyList * pendingProps = scriptContext->GetThreadContext()->GetPendingJITProperties(); + int * newPropArray = nullptr; uint newCount = 0; if (pendingProps->Count() > 0) { newCount = (uint)pendingProps->Count(); - newPropArray = HeapNewArray(PropertyRecordIDL*, newCount); + newPropArray = HeapNewArray(int, newCount); uint index = 0; - auto iter = pendingProps->GetIteratorWithRemovalSupport(); - while (iter.IsValid()) + while (!pendingProps->Empty()) { - newPropArray[index++] = (PropertyRecordIDL*)iter.CurrentValue(); - iter.RemoveCurrent(); - iter.MoveNext(); + newPropArray[index++] = (int)pendingProps->Pop(); } Assert(index == newCount); } @@ -2045,8 +2061,8 @@ NativeCodeGenerator::UpdateJITState() UpdatedPropertysIDL props = {0}; props.reclaimedPropertyCount = reclaimedCount; props.reclaimedPropertyIdArray = reclaimedPropArray; - props.newRecordCount = newCount; - props.newRecordArray = newPropArray; + props.newPropertyCount = newCount; + props.newPropertyIdArray = newPropArray; HRESULT hr = JITManager::GetJITManager()->UpdatePropertyRecordMap(scriptContext->GetThreadContext()->GetRemoteThreadContextAddr(), &props); @@ -3183,7 +3199,7 @@ NativeCodeGenerator::QueueFreeNativeCodeGenAllocation(void* address) return; } - if (!JITManager::GetJITManager()->IsOOPJITEnabled()) + if (!JITManager::GetJITManager()->IsOOPJITEnabled() || !CONFIG_FLAG(OOPCFGRegistration)) { //DeRegister Entry Point for CFG ThreadContext::GetContextForCurrentThread()->SetValidCallTargetForCFG(address, false); @@ -3654,6 +3670,6 @@ JITManager::HandleServerCallResult(HRESULT hr) case VBSERR_OutOfStack: throw Js::StackOverflowException(); default: - Js::Throw::FatalInternalError(); + RpcFailure_fatal_error(hr); } } \ No newline at end of file diff --git a/lib/Backend/Opnd.cpp b/lib/Backend/Opnd.cpp index d52ce41568e..0154c685b0c 100644 --- a/lib/Backend/Opnd.cpp +++ b/lib/Backend/Opnd.cpp @@ -2818,7 +2818,12 @@ Opnd::Dump(IRDumpFlags flags, Func *func) Output::Print(_u(",")); } const JITObjTypeSpecFldInfo* propertyOpInfo = func->GetTopFunc()->GetGlobalObjTypeSpecFldInfo(propertyOpId); - Output::Print(_u("%s(%u)"), func->GetThreadContextInfo()->GetPropertyRecord(propertyOpInfo->GetPropertyId())->GetBuffer(), propertyOpId); + if (!JITManager::GetJITManager()->IsOOPJITEnabled()) + { + Output::Print(_u("%s"), func->GetInProcThreadContext()->GetPropertyRecord(propertyOpInfo->GetPropertyId())->GetBuffer(), propertyOpId); + } + Output::Print(_u("(%u)"), propertyOpId); + if (propertyOpInfo->IsLoadedFromProto()) { Output::Print(_u("~")); diff --git a/lib/Backend/PageAllocatorPool.cpp b/lib/Backend/PageAllocatorPool.cpp new file mode 100644 index 00000000000..49771361734 --- /dev/null +++ b/lib/Backend/PageAllocatorPool.cpp @@ -0,0 +1,136 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "Backend.h" + +#if ENABLE_OOP_NATIVE_CODEGEN +#include "JITServer/JITServer.h" +#include "PageAllocatorPool.h" + +CriticalSection PageAllocatorPool::cs; +PageAllocatorPool* PageAllocatorPool::Instance = nullptr; + +PageAllocatorPool::PageAllocatorPool() + :pageAllocators(&NoThrowHeapAllocator::Instance), + activePageAllocatorCount(0) +{ + idleCleanupTimer = CreateWaitableTimerEx(NULL, L"JITServerIdle", 0/*auto reset*/, TIMER_ALL_ACCESS); +} + +PageAllocatorPool::~PageAllocatorPool() +{ + RemoveAll(); +} + +void PageAllocatorPool::Initialize() +{ + Instance = HeapNewNoThrow(PageAllocatorPool); + if (Instance == nullptr) + { + Js::Throw::FatalInternalError(); + } +} +void PageAllocatorPool::Shutdown() +{ + AutoCriticalSection autoCS(&cs); + if (Instance) + { + CloseHandle(Instance->idleCleanupTimer); + HeapDelete(Instance); + Instance = nullptr; + } +} +void PageAllocatorPool::RemoveAll() +{ + AutoCriticalSection autoCS(&cs); + while (!pageAllocators.Empty()) + { + HeapDelete(pageAllocators.Pop()); + } +} + +unsigned int PageAllocatorPool::GetInactivePageAllocatorCount() +{ + AutoCriticalSection autoCS(&cs); + return pageAllocators.Count(); +} + +PageAllocator* PageAllocatorPool::GetPageAllocator() +{ + AutoCriticalSection autoCS(&cs); + PageAllocator* pageAllocator = nullptr; + if (pageAllocators.Count() > 0) + { + // TODO: OOP JIT, select the page allocator with right count of free pages + // base on some heuristic + pageAllocator = this->pageAllocators.Pop(); + } + else + { + pageAllocator = HeapNew(PageAllocator, nullptr, Js::Configuration::Global.flags, PageAllocatorType_BGJIT, + AutoSystemInfo::Data.IsLowMemoryProcess() ? PageAllocator::DefaultLowMaxFreePageCount : PageAllocator::DefaultMaxFreePageCount); + } + + activePageAllocatorCount++; + return pageAllocator; + +} +void PageAllocatorPool::ReturnPageAllocator(PageAllocator* pageAllocator) +{ + AutoCriticalSection autoCS(&cs); + if (!this->pageAllocators.PrependNoThrow(&HeapAllocator::Instance, pageAllocator)) + { + HeapDelete(pageAllocator); + } + + activePageAllocatorCount--; + if (activePageAllocatorCount == 0 || GetInactivePageAllocatorCount() > (uint)Js::Configuration::Global.flags.JITServerMaxInactivePageAllocatorCount) + { + PageAllocatorPool::IdleCleanup(); + } +} + +void PageAllocatorPool::IdleCleanup() +{ + AutoCriticalSection autoCS(&cs); + if (Instance) + { + LARGE_INTEGER liDueTime; + liDueTime.QuadPart = Js::Configuration::Global.flags.JITServerIdleTimeout * -10000000LL; // wait for 10 seconds to do the cleanup + + // If the timer is already active when you call SetWaitableTimer, the timer is stopped, then it is reactivated. + if (!SetWaitableTimer(Instance->idleCleanupTimer, &liDueTime, 0, IdleCleanupRoutine, NULL, 0)) + { + Instance->RemoveAll(); + } + } +} + +VOID CALLBACK PageAllocatorPool::IdleCleanupRoutine( + _In_opt_ LPVOID lpArgToCompletionRoutine, + _In_ DWORD dwTimerLowValue, + _In_ DWORD dwTimerHighValue) +{ + AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); + try + { + if (Instance) + { + // TODO: OOP JIT, use better stragtegy to do the cleanup, like do not remove all, + // instead keep couple inactivate page allocator for next calls + Instance->RemoveAll(); + } + + ServerContextManager::IdleCleanup(); + } + catch (Js::OutOfMemoryException&) + { + } + catch (...) + { + Assert(false); + } +} +#endif diff --git a/lib/Backend/PageAllocatorPool.h b/lib/Backend/PageAllocatorPool.h new file mode 100644 index 00000000000..2db4e76c7f6 --- /dev/null +++ b/lib/Backend/PageAllocatorPool.h @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +class PageAllocatorPool +{ + friend class AutoReturnPageAllocator; +public: + PageAllocatorPool(); + ~PageAllocatorPool(); + void RemoveAll(); + + static void Initialize(); + static void Shutdown(); + static void IdleCleanup(); +private: + + static VOID CALLBACK IdleCleanupRoutine( + _In_opt_ LPVOID lpArgToCompletionRoutine, + _In_ DWORD dwTimerLowValue, + _In_ DWORD dwTimerHighValue); + + PageAllocator* GetPageAllocator(); + void ReturnPageAllocator(PageAllocator* pageAllocator); + unsigned int GetInactivePageAllocatorCount(); + + SList pageAllocators; + static CriticalSection cs; + static PageAllocatorPool* Instance; + HANDLE idleCleanupTimer; + volatile unsigned long long activePageAllocatorCount; +}; + +class AutoReturnPageAllocator +{ +public: + AutoReturnPageAllocator() :pageAllocator(nullptr) {} + ~AutoReturnPageAllocator() + { + if (pageAllocator) + { + PageAllocatorPool::Instance->ReturnPageAllocator(pageAllocator); + } + } + PageAllocator* GetPageAllocator() + { + if (pageAllocator == nullptr) + { + pageAllocator = PageAllocatorPool::Instance->GetPageAllocator(); + } + + return pageAllocator; + } + +private: + PageAllocator* pageAllocator; +}; diff --git a/lib/Backend/PrologEncoder.cpp b/lib/Backend/PrologEncoder.cpp index 5b41041e50a..47410f98e4d 100644 --- a/lib/Backend/PrologEncoder.cpp +++ b/lib/Backend/PrologEncoder.cpp @@ -32,25 +32,14 @@ DWORD PrologEncoder::SizeOfPData() return sizeof(PData) + (sizeof(UNWIND_CODE) * requiredUnwindCodeNodeCount); } -void PrologEncoder::SetPDataPtr(void *pdata) -{ - this->pdata = static_cast(pdata); -} - void PrologEncoder::EncodeSmallProlog(uint8 prologSize, size_t allocaSize) { - Assert(!pdata); Assert(allocaSize <= 128); Assert(requiredUnwindCodeNodeCount == 0); // Increment requiredUnwindCodeNodeCount to ensure we do the Alloc for the correct size currentUnwindCodeNodeIndex = ++requiredUnwindCodeNodeCount; - if (!pdata) - { - pdata = (PData *)alloc->Alloc(SizeOfPData()); - } - currentInstrOffset = prologSize; UnwindCode* unwindCode = GetUnwindCode(1); @@ -67,15 +56,6 @@ void PrologEncoder::EncodeInstr(IR::Instr *instr, unsigned __int8 size) Assert(instr); Assert(size); - // We've started encoding instructions. This is a good time to initialize - // pdata as we now have the final size. - if (!pdata) - { - pdata = (PData *)alloc->Alloc(SizeOfPData()); - } - - Assert(pdata); - UnwindCode *unwindCode = nullptr; unsigned __int8 unwindCodeOp = PrologEncoderMD::GetOp(instr); unsigned __int8 unwindCodeOpInfo = 0; @@ -172,33 +152,32 @@ BYTE *PrologEncoder::Finalize(BYTE *functionStart, DWORD codeSize, BYTE *pdataBuffer) { - Assert(pdata); Assert(pdataBuffer > functionStart); Assert((size_t)pdataBuffer % sizeof(DWORD) == 0); - pdata->runtimeFunction.BeginAddress = 0; - pdata->runtimeFunction.EndAddress = codeSize; - pdata->runtimeFunction.UnwindData = (DWORD)((pdataBuffer + sizeof(RUNTIME_FUNCTION)) - functionStart); + pdata.runtimeFunction.BeginAddress = 0; + pdata.runtimeFunction.EndAddress = codeSize; + pdata.runtimeFunction.UnwindData = (DWORD)((pdataBuffer + sizeof(RUNTIME_FUNCTION)) - functionStart); FinalizeUnwindInfo(functionStart, codeSize); - return (BYTE *)&pdata->runtimeFunction; + return (BYTE *)&pdata.runtimeFunction; } void PrologEncoder::FinalizeUnwindInfo(BYTE *functionStart, DWORD codeSize) { - pdata->unwindInfo.Version = 1; - pdata->unwindInfo.Flags = 0; - pdata->unwindInfo.SizeOfProlog = currentInstrOffset; - pdata->unwindInfo.CountOfCodes = requiredUnwindCodeNodeCount; + pdata.unwindInfo.Version = 1; + pdata.unwindInfo.Flags = 0; + pdata.unwindInfo.SizeOfProlog = currentInstrOffset; + pdata.unwindInfo.CountOfCodes = requiredUnwindCodeNodeCount; // We don't use the frame pointer in the standard way, and since we don't do dynamic stack allocation, we don't change the // stack pointer except during calls. From the perspective of the unwind info, it needs to restore information relative to // the stack pointer, so don't register the frame pointer. - pdata->unwindInfo.FrameRegister = 0; - pdata->unwindInfo.FrameOffset = 0; + pdata.unwindInfo.FrameRegister = 0; + pdata.unwindInfo.FrameOffset = 0; - AssertMsg(requiredUnwindCodeNodeCount <= 34, "We allocate 72 bytes for xdata - 34 (UnwindCodes) * 2 + 4 (UnwindInfo)"); + AssertMsg(requiredUnwindCodeNodeCount <= MaxRequiredUnwindCodeNodeCount, "We allocate 72 bytes for xdata - 34 (UnwindCodes) * 2 + 4 (UnwindInfo)"); } PrologEncoder::UnwindCode *PrologEncoder::GetUnwindCode(unsigned __int8 nodeCount) @@ -206,7 +185,7 @@ PrologEncoder::UnwindCode *PrologEncoder::GetUnwindCode(unsigned __int8 nodeCoun Assert(nodeCount && ((currentUnwindCodeNodeIndex - nodeCount) >= 0)); currentUnwindCodeNodeIndex -= nodeCount; - return static_cast(&pdata->unwindInfo.unwindCodes[currentUnwindCodeNodeIndex]); + return static_cast(&pdata.unwindInfo.unwindCodes[currentUnwindCodeNodeIndex]); } DWORD PrologEncoder::SizeOfUnwindInfo() @@ -216,7 +195,7 @@ DWORD PrologEncoder::SizeOfUnwindInfo() BYTE *PrologEncoder::GetUnwindInfo() { - return (BYTE *)&pdata->unwindInfo; + return (BYTE *)&pdata.unwindInfo; } #else // !_WIN32 @@ -224,65 +203,51 @@ BYTE *PrologEncoder::GetUnwindInfo() // !_WIN32 x64 unwind uses .eh_frame // ---------------------------------------------------------------------------- -static const int SMALL_EHFRAME_SIZE = 0x40; - void PrologEncoder::EncodeSmallProlog(uint8 prologSize, size_t size) { - Assert(ehFrame == nullptr); - - BYTE* buffer = AnewArray(alloc, BYTE, SMALL_EHFRAME_SIZE); - ehFrame = Anew(alloc, EhFrame, buffer, SMALL_EHFRAME_SIZE); - - auto fde = ehFrame->GetFDE(); + auto fde = ehFrame.GetFDE(); // prolog: push rbp fde->cfi_advance_loc(1); // DW_CFA_advance_loc: 1 fde->cfi_def_cfa_offset(MachPtr * 2); // DW_CFA_def_cfa_offset: 16 fde->cfi_offset(GetDwarfRegNum(LowererMDArch::GetRegFramePointer()), 2); // DW_CFA_offset: r6 (rbp) at cfa-16 - ehFrame->End(); + ehFrame.End(); } DWORD PrologEncoder::SizeOfPData() { - return ehFrame->Count(); + return ehFrame.Count(); } BYTE* PrologEncoder::Finalize(BYTE *functionStart, DWORD codeSize, BYTE *pdataBuffer) { - auto fde = ehFrame->GetFDE(); + auto fde = ehFrame.GetFDE(); fde->UpdateAddressRange(functionStart, codeSize); - return ehFrame->Buffer(); + return ehFrame.Buffer(); } -// TODO: We can also pre-calculate size needed based on #push/xmm/saves/stack allocs -static const int JIT_EHFRAME_SIZE = 0x80; - void PrologEncoder::Begin(size_t prologStartOffset) { - Assert(ehFrame == nullptr); Assert(currentInstrOffset == 0); - BYTE* buffer = AnewArray(alloc, BYTE, JIT_EHFRAME_SIZE); - ehFrame = Anew(alloc, EhFrame, buffer, JIT_EHFRAME_SIZE); - currentInstrOffset = prologStartOffset; } void PrologEncoder::End() { - ehFrame->End(); + ehFrame.End(); } void PrologEncoder::FinalizeUnwindInfo(BYTE *functionStart, DWORD codeSize) { - auto fde = ehFrame->GetFDE(); + auto fde = ehFrame.GetFDE(); fde->UpdateAddressRange(functionStart, codeSize); } void PrologEncoder::EncodeInstr(IR::Instr *instr, unsigned __int8 size) { - auto fde = ehFrame->GetFDE(); + auto fde = ehFrame.GetFDE(); uint8 unwindCodeOp = PrologEncoderMD::GetOp(instr); diff --git a/lib/Backend/PrologEncoder.h b/lib/Backend/PrologEncoder.h index b6badde4bf2..381caf84a90 100644 --- a/lib/Backend/PrologEncoder.h +++ b/lib/Backend/PrologEncoder.h @@ -119,17 +119,23 @@ class PrologEncoder }; #pragma pack(pop) - PData *pdata; - ArenaAllocator *alloc; + static const unsigned __int8 MaxRequiredUnwindCodeNodeCount = 34; + static const size_t MaxPDataSize = sizeof(PData) + (sizeof(UNWIND_CODE) * MaxRequiredUnwindCodeNodeCount); + + union + { + PData pdata; + BYTE pdataBuffer[MaxPDataSize]; + }; unsigned __int8 currentUnwindCodeNodeIndex; unsigned __int8 requiredUnwindCodeNodeCount; unsigned __int8 currentInstrOffset; + + public: - PrologEncoder(ArenaAllocator *alloc) - : alloc(alloc), - pdata(nullptr), - requiredUnwindCodeNodeCount(0), + PrologEncoder() + : requiredUnwindCodeNodeCount(0), currentUnwindCodeNodeIndex(0), currentInstrOffset(0) { @@ -145,7 +151,6 @@ class PrologEncoder // Pre-Win8 PDATA registration. // DWORD SizeOfPData(); - void SetPDataPtr(void *pdata); BYTE *Finalize(BYTE *functionStart, DWORD codeSize, BYTE *pdataBuffer); @@ -170,9 +175,13 @@ class PrologEncoder class PrologEncoder { +public: + static const int SMALL_EHFRAME_SIZE = 0x40; + static const int JIT_EHFRAME_SIZE = 0x80; + private: - ArenaAllocator* alloc; - EhFrame* ehFrame; + EhFrame ehFrame; + BYTE buffer[JIT_EHFRAME_SIZE]; size_t cfiInstrOffset; // last cfi emit instr offset size_t currentInstrOffset; // current instr offset @@ -180,8 +189,8 @@ class PrologEncoder unsigned cfaWordOffset; public: - PrologEncoder(ArenaAllocator *alloc) - : alloc(alloc), ehFrame(nullptr), + PrologEncoder() + :ehFrame(buffer, JIT_EHFRAME_SIZE), cfiInstrOffset(0), currentInstrOffset(0), cfaWordOffset(1) {} @@ -197,7 +206,7 @@ class PrologEncoder void Begin(size_t prologStartOffset); void End(); DWORD SizeOfUnwindInfo() { return SizeOfPData(); } - BYTE *GetUnwindInfo() { return ehFrame->Buffer(); } + BYTE *GetUnwindInfo() { return ehFrame.Buffer(); } void FinalizeUnwindInfo(BYTE *functionStart, DWORD codeSize); }; diff --git a/lib/Backend/ServerScriptContext.cpp b/lib/Backend/ServerScriptContext.cpp index 4e8c2402adc..684edfdb56d 100644 --- a/lib/Backend/ServerScriptContext.cpp +++ b/lib/Backend/ServerScriptContext.cpp @@ -4,11 +4,27 @@ //------------------------------------------------------------------------------------------------------- #include "Backend.h" +#if ENABLE_OOP_NATIVE_CODEGEN +#include "JITServer/JITServer.h" +#endif + + +ServerScriptContext::ThreadContextHolder::ThreadContextHolder(ServerThreadContext* threadContextInfo) : threadContextInfo(threadContextInfo) +{ + threadContextInfo->AddRef(); +} +ServerScriptContext::ThreadContextHolder::~ThreadContextHolder() +{ + threadContextInfo->Release(); +} ServerScriptContext::ServerScriptContext(ScriptContextDataIDL * contextData, ServerThreadContext* threadContextInfo) : m_contextData(*contextData), - threadContextInfo(threadContextInfo), + threadContextHolder(threadContextInfo), m_isPRNGSeeded(false), + m_interpreterThunkBufferManager(nullptr), + m_asmJsInterpreterThunkBufferManager(nullptr), + m_sourceCodeArena(_u("JITSourceCodeArena"), threadContextInfo->GetForegroundPageAllocator(), Js::Throw::OutOfMemory), m_domFastPathHelperMap(nullptr), m_moduleRecords(&HeapAllocator::Instance), m_globalThisAddr(0), @@ -23,12 +39,36 @@ ServerScriptContext::ServerScriptContext(ScriptContextDataIDL * contextData, Ser { m_codeGenProfiler = HeapNew(Js::ScriptContextProfiler); } +#endif +#if DYNAMIC_INTERPRETER_THUNK || defined(ASMJS_PLAT) + m_interpreterThunkBufferManager = HeapNew(EmitBufferManager<>, &m_sourceCodeArena, threadContextInfo->GetThunkPageAllocators(), nullptr, _u("Interpreter thunk buffer"), GetThreadContext()->GetProcessHandle()); + m_asmJsInterpreterThunkBufferManager = HeapNew(EmitBufferManager<>, &m_sourceCodeArena, threadContextInfo->GetThunkPageAllocators(), nullptr, _u("Asm.js interpreter thunk buffer"), GetThreadContext()->GetProcessHandle()); #endif m_domFastPathHelperMap = HeapNew(JITDOMFastPathHelperMap, &HeapAllocator::Instance, 17); } ServerScriptContext::~ServerScriptContext() { + HeapDelete(m_domFastPathHelperMap); + m_moduleRecords.Map([](uint, Js::ServerSourceTextModuleRecord* record) + { + HeapDelete(record); + }); + +#ifdef PROFILE_EXEC + if (m_codeGenProfiler) + { + HeapDelete(m_codeGenProfiler); + } +#endif + if (m_asmJsInterpreterThunkBufferManager) + { + HeapDelete(m_asmJsInterpreterThunkBufferManager); + } + if (m_interpreterThunkBufferManager) + { + HeapDelete(m_interpreterThunkBufferManager); + } } intptr_t @@ -178,8 +218,6 @@ ServerScriptContext::GetGlobalObjectThisAddr() const void ServerScriptContext::UpdateGlobalObjectThisAddr(intptr_t globalThis) { - // this should stay constant once context initialization is complete - Assert(!m_globalThisAddr || m_globalThisAddr == globalThis); m_globalThisAddr = globalThis; } @@ -244,6 +282,30 @@ ServerScriptContext::IsPRNGSeeded() const return m_isPRNGSeeded; } +intptr_t +ServerScriptContext::GetDebuggingFlagsAddr() const +{ + return static_cast(m_contextData.debuggingFlagsAddr); +} + +intptr_t +ServerScriptContext::GetDebugStepTypeAddr() const +{ + return static_cast(m_contextData.debugStepTypeAddr); +} + +intptr_t +ServerScriptContext::GetDebugFrameAddressAddr() const +{ + return static_cast(m_contextData.debugFrameAddressAddr); +} + +intptr_t +ServerScriptContext::GetDebugScriptIdWhenSetAddr() const +{ + return static_cast(m_contextData.debugScriptIdWhenSetAddr); +} + bool ServerScriptContext::IsClosed() const { @@ -256,6 +318,35 @@ ServerScriptContext::AddToDOMFastPathHelperMap(intptr_t funcInfoAddr, IR::JnHelp m_domFastPathHelperMap->Add(funcInfoAddr, helper); } +ArenaAllocator * +ServerScriptContext::GetSourceCodeArena() +{ + return &m_sourceCodeArena; +} + +void +ServerScriptContext::DecommitEmitBufferManager(bool asmJsManager) +{ + EmitBufferManager<> * manager = GetEmitBufferManager(asmJsManager); + if (manager != nullptr) + { + manager->Decommit(); + } +} + +EmitBufferManager<> * +ServerScriptContext::GetEmitBufferManager(bool asmJsManager) +{ + if (asmJsManager) + { + return m_asmJsInterpreterThunkBufferManager; + } + else + { + return m_interpreterThunkBufferManager; + } +} + IR::JnHelperMethod ServerScriptContext::GetDOMFastPathHelper(intptr_t funcInfoAddr) { @@ -274,8 +365,9 @@ ServerScriptContext::Close() { Assert(!IsClosed()); m_isClosed = true; + #ifdef STACK_BACK_TRACE - closingStack = StackBackTrace::Capture(&NoThrowHeapAllocator::Instance); + ServerContextManager::RecordCloseContext(this); #endif } @@ -291,23 +383,9 @@ ServerScriptContext::Release() InterlockedExchangeSubtract(&m_refCount, 1u); if (m_isClosed && m_refCount == 0) { - HeapDelete(m_domFastPathHelperMap); - m_moduleRecords.Map([](uint, Js::ServerSourceTextModuleRecord* record) - { - HeapDelete(record); - }); - -#ifdef PROFILE_EXEC - if (m_codeGenProfiler) - { - HeapDelete(m_codeGenProfiler); - } -#endif - - // OOP JIT TODO: fix leak in chk build after the issue that script context closed prematurely is identified -#ifndef STACK_BACK_TRACE - HeapDelete(this); -#endif + // Not freeing here, we'll expect explicit ServerCleanupScriptContext() call to do the free + // otherwise after free, the CodeGen call can still get same scriptContext if there's another + // ServerInitializeScriptContext call } } diff --git a/lib/Backend/ServerScriptContext.h b/lib/Backend/ServerScriptContext.h index ede0ad7904e..4390b128919 100644 --- a/lib/Backend/ServerScriptContext.h +++ b/lib/Backend/ServerScriptContext.h @@ -7,6 +7,15 @@ class ServerScriptContext : public ScriptContextInfo { +private: + struct ThreadContextHolder + { + ServerThreadContext* threadContextInfo; + ThreadContextHolder(ServerThreadContext* threadContextInfo); + ~ThreadContextHolder(); + }; + ThreadContextHolder threadContextHolder; + public: ServerScriptContext(ScriptContextDataIDL * contextData, ServerThreadContext* threadContextInfo); ~ServerScriptContext(); @@ -42,6 +51,11 @@ class ServerScriptContext : public ScriptContextInfo virtual bool IsClosed() const override; virtual intptr_t GetBuiltinFunctionsBaseAddr() const override; + virtual intptr_t GetDebuggingFlagsAddr() const override; + virtual intptr_t GetDebugStepTypeAddr() const override; + virtual intptr_t GetDebugFrameAddressAddr() const override; + virtual intptr_t GetDebugScriptIdWhenSetAddr() const override; + virtual intptr_t GetAddr() const override; virtual intptr_t GetVTableAddress(VTableValue vtableType) const override; @@ -61,10 +75,12 @@ class ServerScriptContext : public ScriptContextInfo void SetIsPRNGSeeded(bool value); void AddModuleRecordInfo(unsigned int moduleId, __int64 localExportSlotsAddr); void UpdateGlobalObjectThisAddr(intptr_t globalThis); - + EmitBufferManager<> * GetEmitBufferManager(bool asmJsManager); + void DecommitEmitBufferManager(bool asmJsManager); Js::ScriptContextProfiler * GetCodeGenProfiler() const; - ServerThreadContext* GetThreadContext() { return threadContextInfo; } + ServerThreadContext* GetThreadContext() { return threadContextHolder.threadContextInfo; } + ArenaAllocator * GetSourceCodeArena(); void Close(); void AddRef(); void Release(); @@ -74,16 +90,16 @@ class ServerScriptContext : public ScriptContextInfo #ifdef PROFILE_EXEC Js::ScriptContextProfiler * m_codeGenProfiler; #endif + ArenaAllocator m_sourceCodeArena; + + EmitBufferManager<> * m_interpreterThunkBufferManager; + EmitBufferManager<> * m_asmJsInterpreterThunkBufferManager; ScriptContextDataIDL m_contextData; intptr_t m_globalThisAddr; - ServerThreadContext* threadContextInfo; uint m_refCount; bool m_isPRNGSeeded; bool m_isClosed; -#ifdef STACK_BACK_TRACE - StackBackTrace* closingStack; -#endif }; diff --git a/lib/Backend/ServerThreadContext.cpp b/lib/Backend/ServerThreadContext.cpp index 79e790de642..8770f0448f0 100644 --- a/lib/Backend/ServerThreadContext.cpp +++ b/lib/Backend/ServerThreadContext.cpp @@ -5,15 +5,25 @@ #include "Backend.h" +#if ENABLE_OOP_NATIVE_CODEGEN +#include "JITServer/JITServer.h" +#endif //ENABLE_OOP_NATIVE_CODEGEN + ServerThreadContext::ServerThreadContext(ThreadContextDataIDL * data) : m_threadContextData(*data), m_refCount(0), - m_policyManager(true), - m_propertyMap(nullptr), - m_pageAllocs(&HeapAllocator::Instance), + m_numericPropertySet(nullptr), m_preReservedVirtualAllocator((HANDLE)data->processHandle), - m_codePageAllocators(&m_policyManager, ALLOC_XDATA, &m_preReservedVirtualAllocator, (HANDLE)data->processHandle), - m_codeGenAlloc(&m_policyManager, nullptr, &m_codePageAllocators, (HANDLE)data->processHandle), + m_codePageAllocators(nullptr, ALLOC_XDATA, &m_preReservedVirtualAllocator, (HANDLE)data->processHandle), +#if DYNAMIC_INTERPRETER_THUNK || defined(ASMJS_PLAT) + m_thunkPageAllocators(nullptr, /* allocXData */ false, /* virtualAllocator */ nullptr, (HANDLE)data->processHandle), +#endif + m_codeGenAlloc(nullptr, nullptr, &m_codePageAllocators, (HANDLE)data->processHandle), + m_pageAlloc(nullptr, Js::Configuration::Global.flags, PageAllocatorType_BGJIT, + AutoSystemInfo::Data.IsLowMemoryProcess() ? + PageAllocator::DefaultLowMaxFreePageCount : + PageAllocator::DefaultMaxFreePageCount + ), // TODO: OOP JIT, don't hardcode name #ifdef NTBUILD m_jitChakraBaseAddress((intptr_t)GetModuleHandle(_u("Chakra.dll"))), @@ -29,26 +39,18 @@ ServerThreadContext::ServerThreadContext(ThreadContextDataIDL * data) : #if !_M_X64_OR_ARM64 && _CONTROL_FLOW_GUARD m_codeGenAlloc.canCreatePreReservedSegment = data->allowPrereserveAlloc != FALSE; #endif - m_propertyMap = HeapNew(PropertyMap, &HeapAllocator::Instance, TotalNumberOfBuiltInProperties + 700); + m_numericPropertySet = HeapNew(PropertySet, &HeapAllocator::Instance); } ServerThreadContext::~ServerThreadContext() { // TODO: OOP JIT, clear out elements of map. maybe should arena alloc? - if (this->m_propertyMap != nullptr) + if (this->m_numericPropertySet != nullptr) { - this->m_propertyMap->Map([](const Js::PropertyRecord* record) - { - size_t allocLength = record->byteCount + sizeof(char16) + (record->isNumeric ? sizeof(uint32) : 0); - HeapDeletePlus(allocLength, const_cast(record)); - }); - HeapDelete(m_propertyMap); - this->m_propertyMap = nullptr; + HeapDelete(m_numericPropertySet); + this->m_numericPropertySet = nullptr; } - this->m_pageAllocs.Map([](DWORD thread, PageAllocator* alloc) - { - HeapDelete(alloc); - }); + } PreReservedVirtualAllocWrapper * @@ -57,56 +59,12 @@ ServerThreadContext::GetPreReservedVirtualAllocator() return &m_preReservedVirtualAllocator; } -PageAllocator* -ServerThreadContext::GetPageAllocator() -{ - PageAllocator * alloc; - - if (!m_pageAllocs.TryGetValue(GetCurrentThreadId(), &alloc)) - { - alloc = HeapNew(PageAllocator, - &m_policyManager, - Js::Configuration::Global.flags, PageAllocatorType_BGJIT, - AutoSystemInfo::Data.IsLowMemoryProcess() ? - PageAllocator::DefaultLowMaxFreePageCount : - PageAllocator::DefaultMaxFreePageCount); - - m_pageAllocs.Add(GetCurrentThreadId(), alloc); - } - return alloc; -} - - intptr_t ServerThreadContext::GetBailOutRegisterSaveSpaceAddr() const { return static_cast(m_threadContextData.bailOutRegisterSaveSpaceAddr); } -intptr_t -ServerThreadContext::GetDebuggingFlagsAddr() const -{ - return static_cast(m_threadContextData.debuggingFlagsAddr); -} - -intptr_t -ServerThreadContext::GetDebugStepTypeAddr() const -{ - return static_cast(m_threadContextData.debugStepTypeAddr); -} - -intptr_t -ServerThreadContext::GetDebugFrameAddressAddr() const -{ - return static_cast(m_threadContextData.debugFrameAddressAddr); -} - -intptr_t -ServerThreadContext::GetDebugScriptIdWhenSetAddr() const -{ - return static_cast(m_threadContextData.debugScriptIdWhenSetAddr); -} - ptrdiff_t ServerThreadContext::GetChakraBaseAddressDifference() const { @@ -164,6 +122,14 @@ ServerThreadContext::GetProcessHandle() const return reinterpret_cast(m_threadContextData.processHandle); } +#if DYNAMIC_INTERPRETER_THUNK || defined(ASMJS_PLAT) +CustomHeap::CodePageAllocators * +ServerThreadContext::GetThunkPageAllocators() +{ + return &m_thunkPageAllocators; +} +#endif + CustomHeap::CodePageAllocators * ServerThreadContext::GetCodePageAllocators() { @@ -176,12 +142,6 @@ ServerThreadContext::GetCodeGenAllocators() return &m_codeGenAlloc; } -AllocationPolicyManager * -ServerThreadContext::GetAllocationPolicyManager() -{ - return &m_policyManager; -} - intptr_t ServerThreadContext::GetRuntimeChakraBaseAddress() const { @@ -194,36 +154,34 @@ ServerThreadContext::GetRuntimeCRTBaseAddress() const return static_cast(m_threadContextData.crtBaseAddress); } -Js::PropertyRecord const * -ServerThreadContext::GetPropertyRecord(Js::PropertyId propertyId) +PageAllocator * +ServerThreadContext::GetForegroundPageAllocator() +{ + return &m_pageAlloc; +} + +bool +ServerThreadContext::IsNumericProperty(Js::PropertyId propertyId) { if (propertyId >= 0 && Js::IsInternalPropertyId(propertyId)) { - return Js::InternalPropertyRecords::GetInternalPropertyName(propertyId); + return Js::InternalPropertyRecords::GetInternalPropertyName(propertyId)->IsNumeric(); } - const Js::PropertyRecord * propertyRecord = nullptr; - m_propertyMap->LockResize(); - bool found = m_propertyMap->TryGetValue(propertyId, &propertyRecord); - m_propertyMap->UnlockResize(); + m_numericPropertySet->LockResize(); + bool found = m_numericPropertySet->ContainsKey(propertyId); + m_numericPropertySet->UnlockResize(); - AssertMsg(found && propertyRecord != nullptr, "using invalid propertyid"); - return propertyRecord; + return found; } void -ServerThreadContext::RemoveFromPropertyMap(Js::PropertyId reclaimedId) +ServerThreadContext::RemoveFromNumericPropertySet(Js::PropertyId reclaimedId) { - const Js::PropertyRecord * oldRecord = nullptr; - if (m_propertyMap->TryGetValue(reclaimedId, &oldRecord)) + if (m_numericPropertySet->ContainsKey(reclaimedId)) { // if there was reclaimed property that had its pid reused, delete the old property record - m_propertyMap->Remove(oldRecord); - - PropertyRecordTrace(_u("Reclaimed JIT property '%s' at 0x%08x, pid = %d\n"), oldRecord->GetBuffer(), oldRecord, oldRecord->pid); - - size_t oldLength = oldRecord->byteCount + sizeof(char16) + (oldRecord->isNumeric ? sizeof(uint32) : 0); - HeapDeletePlus(oldLength, const_cast(oldRecord)); + m_numericPropertySet->Remove(reclaimedId); } else { @@ -233,37 +191,15 @@ ServerThreadContext::RemoveFromPropertyMap(Js::PropertyId reclaimedId) } void -ServerThreadContext::AddToPropertyMap(const Js::PropertyRecord * origRecord) +ServerThreadContext::AddToNumericPropertySet(Js::PropertyId propId) { - size_t allocLength = origRecord->byteCount + sizeof(char16) + (origRecord->isNumeric ? sizeof(uint32) : 0); - Js::PropertyRecord * record = HeapNewPlus(allocLength, Js::PropertyRecord, origRecord->byteCount, origRecord->isNumeric, origRecord->hash, origRecord->isSymbol); - record->isBound = origRecord->isBound; - - char16* buffer = (char16 *)(record + 1); - js_memcpy_s(buffer, origRecord->byteCount, origRecord->GetBuffer(), origRecord->byteCount); - - buffer[record->GetLength()] = _u('\0'); - - if (record->isNumeric) - { - *(uint32 *)(buffer + record->GetLength() + 1) = origRecord->GetNumericValue(); - Assert(record->GetNumericValue() == origRecord->GetNumericValue()); - } - record->pid = origRecord->pid; - - const Js::PropertyRecord * oldRecord = nullptr; - // this should only happen if there was reclaimed property that we failed to add to reclaimed list due to a prior oom - if (m_propertyMap->TryGetValue(origRecord->GetPropertyId(), &oldRecord)) + if (m_numericPropertySet->ContainsKey(propId)) { - m_propertyMap->Remove(oldRecord); - size_t oldLength = oldRecord->byteCount + sizeof(char16) + (oldRecord->isNumeric ? sizeof(uint32) : 0); - HeapDeletePlus(oldLength, const_cast(oldRecord)); + m_numericPropertySet->Remove(propId); } - m_propertyMap->Add(record); - - PropertyRecordTrace(_u("Added JIT property '%s' at 0x%08x, pid = %d\n"), record->GetBuffer(), record, record->pid); + m_numericPropertySet->Add(propId); } void ServerThreadContext::AddRef() @@ -281,4 +217,7 @@ void ServerThreadContext::Release() void ServerThreadContext::Close() { this->m_isClosed = true; +#ifdef STACK_BACK_TRACE + ServerContextManager::RecordCloseContext(this); +#endif } diff --git a/lib/Backend/ServerThreadContext.h b/lib/Backend/ServerThreadContext.h index 58f5a3afc32..c39925c89a9 100644 --- a/lib/Backend/ServerThreadContext.h +++ b/lib/Backend/ServerThreadContext.h @@ -27,42 +27,45 @@ class ServerThreadContext : public ThreadContextInfo virtual intptr_t GetImplicitCallFlagsAddr() const override; virtual intptr_t GetBailOutRegisterSaveSpaceAddr() const override; - virtual intptr_t GetDebuggingFlagsAddr() const override; - virtual intptr_t GetDebugStepTypeAddr() const override; - virtual intptr_t GetDebugFrameAddressAddr() const override; - virtual intptr_t GetDebugScriptIdWhenSetAddr() const override; + virtual PreReservedVirtualAllocWrapper * GetPreReservedVirtualAllocator() override; + + virtual bool IsNumericProperty(Js::PropertyId propId) override; ptrdiff_t GetChakraBaseAddressDifference() const; ptrdiff_t GetCRTBaseAddressDifference() const; - virtual Js::PropertyRecord const * GetPropertyRecord(Js::PropertyId propertyId) override; - virtual PreReservedVirtualAllocWrapper * GetPreReservedVirtualAllocator() override; - CodeGenAllocators * GetCodeGenAllocators(); - AllocationPolicyManager * GetAllocationPolicyManager(); CustomHeap::CodePageAllocators * GetCodePageAllocators(); - PageAllocator* GetPageAllocator(); - void RemoveFromPropertyMap(Js::PropertyId reclaimedId); - void AddToPropertyMap(const Js::PropertyRecord * propertyRecord); + void RemoveFromNumericPropertySet(Js::PropertyId reclaimedId); + void AddToNumericPropertySet(Js::PropertyId propertyId); void SetWellKnownHostTypeId(Js::TypeId typeId) { this->wellKnownHostTypeHTMLAllCollectionTypeId = typeId; } - +#if DYNAMIC_INTERPRETER_THUNK || defined(ASMJS_PLAT) + CustomHeap::CodePageAllocators * GetThunkPageAllocators(); +#endif void AddRef(); void Release(); - void Close(); + void Close(); + PageAllocator * GetForegroundPageAllocator(); +#ifdef STACK_BACK_TRACE + DWORD GetRuntimePid() { return m_pid; } +#endif private: intptr_t GetRuntimeChakraBaseAddress() const; intptr_t GetRuntimeCRTBaseAddress() const; - typedef JsUtil::BaseHashSet PropertyMap; - PropertyMap * m_propertyMap; + typedef JsUtil::BaseHashSet PropertySet; + PropertySet * m_numericPropertySet; - AllocationPolicyManager m_policyManager; - JsUtil::BaseDictionary m_pageAllocs; PreReservedVirtualAllocWrapper m_preReservedVirtualAllocator; +#if DYNAMIC_INTERPRETER_THUNK || defined(ASMJS_PLAT) + CustomHeap::CodePageAllocators m_thunkPageAllocators; +#endif CustomHeap::CodePageAllocators m_codePageAllocators; CodeGenAllocators m_codeGenAlloc; + // only allocate with this from foreground calls (never from CodeGen calls) + PageAllocator m_pageAlloc; ThreadContextDataIDL m_threadContextData; @@ -71,5 +74,4 @@ class ServerThreadContext : public ThreadContextInfo intptr_t m_jitChakraBaseAddress; intptr_t m_jitCRTBaseAddress; uint m_refCount; - }; diff --git a/lib/Backend/SwitchIRBuilder.cpp b/lib/Backend/SwitchIRBuilder.cpp index 6a29bf5f6fd..98ea3b93670 100644 --- a/lib/Backend/SwitchIRBuilder.cpp +++ b/lib/Backend/SwitchIRBuilder.cpp @@ -60,6 +60,7 @@ IRBuilderSwitchAdapter::ConvertToBailOut(IR::Instr * instr, IR::BailOutKind kind /// by a SwitchIRBuilder to an IRBuilder instance ///---------------------------------------------------------------------------- +#ifdef ASMJS_PLAT void IRBuilderAsmJsSwitchAdapter::AddBranchInstr(IR::BranchInstr * instr, uint32 offset, uint32 targetOffset, bool clearBackEdge) { @@ -99,6 +100,7 @@ IRBuilderAsmJsSwitchAdapter::ConvertToBailOut(IR::Instr * instr, IR::BailOutKind // switches, since we already know ahead of time that the // switch expression is Int32 } +#endif ///---------------------------------------------------------------------------- /// @@ -222,18 +224,27 @@ SwitchIRBuilder::SetProfiledInstruction(IR::Instr * instr, Js::ProfileId profile ///---------------------------------------------------------------------------- void -SwitchIRBuilder::OnCase(IR::RegOpnd * src1Opnd, IR::RegOpnd * src2Opnd, uint32 offset, uint32 targetOffset) +SwitchIRBuilder::OnCase(IR::RegOpnd * src1Opnd, IR::Opnd * src2Opnd, uint32 offset, uint32 targetOffset) { IR::BranchInstr * branchInstr; - if (GlobOpt::IsSwitchOptEnabled(m_func->GetTopFunc()) && src2Opnd->m_sym->m_isIntConst && m_intConstSwitchCases->TestAndSet(src2Opnd->m_sym->GetIntConstValue())) + Assert(src2Opnd->IsIntConstOpnd() || src2Opnd->IsRegOpnd()); + // Support only int32 const opnd + Assert(!src2Opnd->IsIntConstOpnd() || src2Opnd->GetType() == TyInt32); + StackSym* sym = src2Opnd->GetStackSym(); + const bool isIntConst = src2Opnd->IsIntConstOpnd() || (sym && sym->IsIntConst()); + const bool isStrConst = !isIntConst && sym && sym->m_isStrConst; + + if (GlobOpt::IsSwitchOptEnabled(m_func->GetTopFunc()) && + isIntConst && + m_intConstSwitchCases->TestAndSet(sym ? sym->GetIntConstValue() : src2Opnd->AsIntConstOpnd()->AsInt32())) { // We've already seen a case statement with the same int const value. No need to emit anything for this. return; } - if (GlobOpt::IsSwitchOptEnabled(m_func->GetTopFunc()) && src2Opnd->m_sym->m_isStrConst - && TestAndAddStringCaseConst(JITJavascriptString::FromVar(src2Opnd->GetStackSym()->GetConstAddress(true)))) + if (GlobOpt::IsSwitchOptEnabled(m_func->GetTopFunc()) && isStrConst + && TestAndAddStringCaseConst(JITJavascriptString::FromVar(sym->GetConstAddress(true)))) { // We've already seen a case statement with the same string const value. No need to emit anything for this. return; @@ -255,17 +266,17 @@ SwitchIRBuilder::OnCase(IR::RegOpnd * src1Opnd, IR::RegOpnd * src2Opnd, uint32 o if (GlobOpt::IsSwitchOptEnabled(m_func->GetTopFunc())) { - if (m_switchIntDynProfile && src2Opnd->m_sym->IsIntConst()) + if (m_switchIntDynProfile && isIntConst) { CaseNode* caseNode = JitAnew(m_tempAlloc, CaseNode, branchInstr, offset, targetOffset, src2Opnd); m_caseNodes->Add(caseNode); deferred = true; } - else if (m_switchStrDynProfile && src2Opnd->m_sym->m_isStrConst) + else if (m_switchStrDynProfile && isStrConst) { CaseNode* caseNode = JitAnew(m_tempAlloc, CaseNode, branchInstr, offset, targetOffset, src2Opnd); m_caseNodes->Add(caseNode); - m_seenOnlySingleCharStrCaseNodes = m_seenOnlySingleCharStrCaseNodes && caseNode->GetSrc2StringConstLocal()->GetLength() == 1; + m_seenOnlySingleCharStrCaseNodes = m_seenOnlySingleCharStrCaseNodes && caseNode->GetUpperBoundStringConstLocal()->GetLength() == 1; deferred = true; } } @@ -332,8 +343,8 @@ SwitchIRBuilder::RefineCaseNodes() CaseNode * currCaseNode = m_caseNodes->Item(currCaseIndex); uint32 prevCaseTargetOffset = prevCaseNode->GetTargetOffset(); uint32 currCaseTargetOffset = currCaseNode->GetTargetOffset(); - int prevCaseConstValue = prevCaseNode->GetSrc2IntConst(); - int currCaseConstValue = currCaseNode->GetSrc2IntConst(); + int prevCaseConstValue = prevCaseNode->GetUpperBoundIntConst(); + int currCaseConstValue = currCaseNode->GetUpperBoundIntConst(); /*To handle empty case statements with/without repetition*/ if (prevCaseTargetOffset == currCaseTargetOffset && @@ -345,7 +356,7 @@ SwitchIRBuilder::RefineCaseNodes() { if (tmpCaseNodes->Count() != 0) { - int lastTmpCaseConstValue = tmpCaseNodes->Item(tmpCaseNodes->Count() - 1)->GetSrc2IntConst(); + int lastTmpCaseConstValue = tmpCaseNodes->Item(tmpCaseNodes->Count() - 1)->GetUpperBoundIntConst(); /*To handle duplicate non empty case statements*/ if (lastTmpCaseConstValue != prevCaseConstValue) { @@ -460,17 +471,17 @@ SwitchIRBuilder::BuildLinearTraverseInstr(int start, int end, uint fallThrOffset bool dontBuildEmptyCases = false; - if (currCaseNode->IsSrc2IntConst()) + if (currCaseNode->IsUpperBoundIntConst()) { - int lowerBoundCaseConstValue = currCaseNode->GetLowerBound()->GetStackSym()->GetIntConstValue(); - int upperBoundCaseConstValue = currCaseNode->GetUpperBound()->GetStackSym()->GetIntConstValue(); + int lowerBoundCaseConstValue = currCaseNode->GetLowerBoundIntConst(); + int upperBoundCaseConstValue = currCaseNode->GetUpperBoundIntConst(); if (lowerBoundCaseConstValue == upperBoundCaseConstValue) { dontBuildEmptyCases = true; } } - else if (currCaseNode->IsSrc2StrConst()) + else if (currCaseNode->IsUpperBoundStrConst()) { dontBuildEmptyCases = true; } @@ -577,13 +588,13 @@ SwitchIRBuilder::BuildOptimizedIntegerCaseInstrs(uint32 targetOffset) { int nextIndex = currentIndex + 1; //Check if there is no missing value between subsequent case arms - if (m_caseNodes->Item(currentIndex)->GetSrc2IntConst() + 1 != m_caseNodes->Item(nextIndex)->GetSrc2IntConst()) + if (m_caseNodes->Item(currentIndex)->GetUpperBoundIntConst() + 1 != m_caseNodes->Item(nextIndex)->GetUpperBoundIntConst()) { //value of the case nodes are guaranteed to be 32 bits or less than 32bits at this point(if it is more, the Switch Opt will not kick in) Assert(nextIndex == endjmpTableIndex + 1); - int64 speculatedEndJmpCaseValue = m_caseNodes->Item(nextIndex)->GetSrc2IntConst(); - int64 endJmpCaseValue = m_caseNodes->Item(endjmpTableIndex)->GetSrc2IntConst(); - int64 startJmpCaseValue = m_caseNodes->Item(startjmpTableIndex)->GetSrc2IntConst(); + int64 speculatedEndJmpCaseValue = m_caseNodes->Item(nextIndex)->GetUpperBoundIntConst(); + int64 endJmpCaseValue = m_caseNodes->Item(endjmpTableIndex)->GetUpperBoundIntConst(); + int64 startJmpCaseValue = m_caseNodes->Item(startjmpTableIndex)->GetUpperBoundIntConst(); int64 speculatedJmpTableSize = speculatedEndJmpCaseValue - startJmpCaseValue + 1; int64 jmpTableSize = endJmpCaseValue - startJmpCaseValue + 1; @@ -618,8 +629,8 @@ SwitchIRBuilder::BuildOptimizedIntegerCaseInstrs(uint32 targetOffset) } } - int64 endJmpCaseValue = m_caseNodes->Item(endjmpTableIndex)->GetSrc2IntConst(); - int64 startJmpCaseValue = m_caseNodes->Item(startjmpTableIndex)->GetSrc2IntConst(); + int64 endJmpCaseValue = m_caseNodes->Item(endjmpTableIndex)->GetUpperBoundIntConst(); + int64 startJmpCaseValue = m_caseNodes->Item(startjmpTableIndex)->GetUpperBoundIntConst(); int64 jmpTableSize = endJmpCaseValue - startJmpCaseValue + 1; if (jmpTableSize < CONFIG_FLAG(MinSwitchJumpTableSize)) @@ -825,7 +836,7 @@ SwitchIRBuilder::BuildMultiBrCaseInstrForStrings(uint32 targetOffset) generateDictionary = false; for (uint i = 0; i < caseCount; i++) { - JITJavascriptString * str = m_caseNodes->Item(i)->GetSrc2StringConstLocal(); + JITJavascriptString * str = m_caseNodes->Item(i)->GetUpperBoundStringConstLocal(); Assert(str->GetLength() == 1); char16 currChar = str->GetString()[0]; minChar = min(minChar, currChar); @@ -846,9 +857,9 @@ SwitchIRBuilder::BuildMultiBrCaseInstrForStrings(uint32 targetOffset) //Adding normal cases to the instruction (except the default case, which we do it later) for (uint i = 0; i < caseCount; i++) { - JITJavascriptString * str = m_caseNodes->Item(i)->GetSrc2StringConstLocal(); + JITJavascriptString * str = m_caseNodes->Item(i)->GetUpperBoundStringConstLocal(); uint32 caseTargetOffset = m_caseNodes->Item(i)->GetTargetOffset(); - multiBranchInstr->AddtoDictionary(caseTargetOffset, str, m_caseNodes->Item(i)->GetSrc2StringConst()); + multiBranchInstr->AddtoDictionary(caseTargetOffset, str, m_caseNodes->Item(i)->GetUpperBoundStrConst()); } } else @@ -871,7 +882,7 @@ SwitchIRBuilder::BuildMultiBrCaseInstrForStrings(uint32 targetOffset) //Adding normal cases to the instruction (except the default case, which we do it later) for (uint i = 0; i < caseCount; i++) { - JITJavascriptString * str = m_caseNodes->Item(i)->GetSrc2StringConstLocal(); + JITJavascriptString * str = m_caseNodes->Item(i)->GetUpperBoundStringConstLocal(); Assert(str->GetLength() == 1); uint32 caseTargetOffset = m_caseNodes->Item(i)->GetTargetOffset(); multiBranchInstr->AddtoJumpTable(caseTargetOffset, str->GetString()[0] - minChar); @@ -907,8 +918,8 @@ SwitchIRBuilder::BuildMultiBrCaseInstrForInts(uint32 start, uint32 end, uint32 t uint32 lastCaseOffset = m_caseNodes->Item(end)->GetOffset(); - int32 baseCaseValue = m_caseNodes->Item(start)->GetLowerBound()->GetStackSym()->GetIntConstValue(); - int32 lastCaseValue = m_caseNodes->Item(end)->GetUpperBound()->GetStackSym()->GetIntConstValue(); + int32 baseCaseValue = m_caseNodes->Item(start)->GetLowerBoundIntConst(); + int32 lastCaseValue = m_caseNodes->Item(end)->GetUpperBoundIntConst(); multiBranchInstr->m_baseCaseValue = baseCaseValue; multiBranchInstr->m_lastCaseValue = lastCaseValue; @@ -923,10 +934,10 @@ SwitchIRBuilder::BuildMultiBrCaseInstrForInts(uint32 start, uint32 end, uint32 t for (int jmpIndex = jmpTableSize - 1; jmpIndex >= 0; jmpIndex--) { - if (caseIndex >= 0 && jmpIndex == m_caseNodes->Item(caseIndex)->GetSrc2IntConst() - baseCaseValue) + if (caseIndex >= 0 && jmpIndex == m_caseNodes->Item(caseIndex)->GetUpperBoundIntConst() - baseCaseValue) { - lowerBoundCaseConstValue = m_caseNodes->Item(caseIndex)->GetLowerBound()->GetStackSym()->GetIntConstValue(); - upperBoundCaseConstValue = m_caseNodes->Item(caseIndex)->GetUpperBound()->GetStackSym()->GetIntConstValue(); + lowerBoundCaseConstValue = m_caseNodes->Item(caseIndex)->GetLowerBoundIntConst(); + upperBoundCaseConstValue = m_caseNodes->Item(caseIndex)->GetUpperBoundIntConst(); caseTargetOffset = m_caseNodes->Item(caseIndex--)->GetTargetOffset(); multiBranchInstr->AddtoJumpTable(caseTargetOffset, jmpIndex); } diff --git a/lib/Backend/SwitchIRBuilder.h b/lib/Backend/SwitchIRBuilder.h index b1db0a57b1a..b2a99afaaac 100644 --- a/lib/Backend/SwitchIRBuilder.h +++ b/lib/Backend/SwitchIRBuilder.h @@ -41,6 +41,7 @@ struct IRBuilderSwitchAdapter : public SwitchAdapter { /** * Handles delegating actions generated by a SwitchIRBuilder to an IRBuilderAsmJs */ +#ifdef ASMJS_PLAT struct IRBuilderAsmJsSwitchAdapter : public SwitchAdapter { private: IRBuilderAsmJs * m_builder; @@ -56,6 +57,7 @@ struct IRBuilderAsmJsSwitchAdapter : public SwitchAdapter { virtual void ConvertToBailOut(IR::Instr * instr, IR::BailOutKind kind); }; +#endif /** * Handles construction of switch statements, with appropriate optimizations @@ -100,7 +102,7 @@ class SwitchIRBuilder { void BeginSwitch(); void EndSwitch(uint32 offset, uint32 targetOffset); void SetProfiledInstruction(IR::Instr * instr, Js::ProfileId profileId); - void OnCase(IR::RegOpnd * src1Opnd, IR::RegOpnd * src2Opnd, uint32 offset, uint32 targetOffset); + void OnCase(IR::RegOpnd * src1Opnd, IR::Opnd * src2Opnd, uint32 offset, uint32 targetOffset); void FlushCases(uint32 targetOffset); void RefineCaseNodes(); diff --git a/lib/Backend/Sym.cpp b/lib/Backend/Sym.cpp index 9d211e303bc..2aa41580358 100644 --- a/lib/Backend/Sym.cpp +++ b/lib/Backend/Sym.cpp @@ -45,10 +45,10 @@ StackSym::New(SymID id, IRType type, Js::RegSlot byteCodeRegSlot, Func *func) stackSym->m_isStrEmpty = false; stackSym->m_allocated = false; stackSym->m_isTypeSpec = false; - stackSym->m_isArgSlotSym = false; - stackSym->m_isArgSlotRegSym = false; - stackSym->m_isParamSym = false; - stackSym->m_isImplicitParamSym = false; + stackSym->m_isArgSlotSym = false; + stackSym->m_isArgSlotRegSym = false; + stackSym->m_isParamSym = false; + stackSym->m_isImplicitParamSym = false; stackSym->m_isBailOutReferenced = false; stackSym->m_isArgCaptured = false; stackSym->m_requiresBailOnNotNumber = false; @@ -115,20 +115,20 @@ StackSym::New(IRType type, Func *func) StackSym * StackSym::NewImplicitParamSym(Js::ArgSlot paramSlotNum, Func * func) { - return func->m_symTable->GetImplicitParam(paramSlotNum); + return func->m_symTable->GetImplicitParam(paramSlotNum); } StackSym * StackSym::NewParamSlotSym(Js::ArgSlot paramSlotNum, Func * func) { - return NewParamSlotSym(paramSlotNum, func, TyVar); + return NewParamSlotSym(paramSlotNum, func, TyVar); } StackSym * StackSym::NewParamSlotSym(Js::ArgSlot paramSlotNum, Func * func, IRType type) { StackSym * stackSym = StackSym::New(type, func); - stackSym->m_isParamSym = true; + stackSym->m_isParamSym = true; stackSym->m_slotNum = paramSlotNum; return stackSym; } @@ -460,10 +460,10 @@ StackSym::CloneDef(Func *func) newSym->m_isConst = m_isConst; newSym->m_isIntConst = m_isIntConst; newSym->m_isTaggableIntConst = m_isTaggableIntConst; - newSym->m_isArgSlotSym = m_isArgSlotSym; - newSym->m_isArgSlotRegSym = m_isArgSlotRegSym; - newSym->m_isParamSym = m_isParamSym; - newSym->m_isImplicitParamSym = m_isImplicitParamSym; + newSym->m_isArgSlotSym = m_isArgSlotSym; + newSym->m_isArgSlotRegSym = m_isArgSlotRegSym; + newSym->m_isParamSym = m_isParamSym; + newSym->m_isImplicitParamSym = m_isImplicitParamSym; newSym->m_isArgCaptured = m_isArgCaptured; newSym->m_isBailOutReferenced = m_isBailOutReferenced; newSym->m_slotNum = m_slotNum; @@ -975,17 +975,6 @@ PropertySym::FindOrCreate(SymID stackSymID, int32 propertyId, uint32 propertyIdI return PropertySym::New(stackSymID, propertyId, propertyIdIndex, inlineCacheIndex, fieldKind, func); } -#ifdef ENABLE_DEBUG_CONFIG_OPTIONS -const char16* PropertySym::GetName() const -{ - if (this->m_fieldKind == PropertyKindData) - { - return m_func->GetThreadContextInfo()->GetPropertyRecord(this->m_propertyId)->GetBuffer(); - } - Assert(false); - return _u(""); -} -#endif #if DBG_DUMP || defined(ENABLE_IR_VIEWER) ///---------------------------------------------------------------------------- @@ -1069,7 +1058,7 @@ Sym::Dump(IRDumpFlags flags, const ValueType valueType) { uint index = stackSym->GetByteCodeRegSlot() - stackSym->GetByteCodeFunc()->GetJITFunctionBody()->GetConstCount(); Js::PropertyId propertyId = functionBody->GetPropertyIdOnRegSlotsContainer()->propertyIdsForRegSlots[index]; - Output::Print(_u("(%s)"), stackSym->GetByteCodeFunc()->GetThreadContextInfo()->GetPropertyRecord(propertyId)->GetBuffer()); + Output::Print(_u("(%s)"), stackSym->GetByteCodeFunc()->GetInProcThreadContext()->GetPropertyRecord(propertyId)->GetBuffer()); } } } @@ -1111,12 +1100,17 @@ Sym::Dump(IRDumpFlags flags, const ValueType valueType) switch (propertySym->m_fieldKind) { case PropertyKindData: - { propertySym->m_stackSym->Dump(flags, valueType); - Js::PropertyRecord const* fieldName = propertySym->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId); - Output::Print(_u("->%s"), fieldName->GetBuffer()); + if (JITManager::GetJITManager()->IsOOPJITEnabled()) + { + Output::Print(_u("->#%d"), propertySym->m_propertyId); + } + else + { + Js::PropertyRecord const* fieldName = propertySym->m_func->GetInProcThreadContext()->GetPropertyRecord(propertySym->m_propertyId); + Output::Print(_u("->%s"), fieldName->GetBuffer()); + } break; - } case PropertyKindSlots: case PropertyKindSlotArray: propertySym->m_stackSym->Dump(flags, valueType); diff --git a/lib/Backend/Sym.h b/lib/Backend/Sym.h index 0f973873a26..1a7b2a471af 100644 --- a/lib/Backend/Sym.h +++ b/lib/Backend/Sym.h @@ -91,7 +91,7 @@ class StackSym: public Sym static StackSym * NewArgSlotRegSym(Js::ArgSlot argSlotNum, Func * func, IRType = TyVar); static StackSym * NewParamSlotSym(Js::ArgSlot argSlotNum, Func * func); static StackSym * NewParamSlotSym(Js::ArgSlot argSlotNum, Func * func, IRType type); - static StackSym *NewImplicitParamSym(Js::ArgSlot paramSlotNum, Func * func); + static StackSym *NewImplicitParamSym(Js::ArgSlot paramSlotNum, Func * func); static StackSym * New(SymID id, IRType type, Js::RegSlot byteCodeRegSlot, Func *func); static StackSym * New(IRType type, Func *func); static StackSym * New(Func *func); @@ -99,8 +99,8 @@ class StackSym: public Sym IRType GetType() const { return this->m_type; } bool IsArgSlotSym() const; - bool IsParamSlotSym() const; - bool IsImplicitParamSym() const { return this->m_isImplicitParamSym; } + bool IsParamSlotSym() const; + bool IsImplicitParamSym() const { return this->m_isImplicitParamSym; } bool IsAllocated() const; int32 GetIntConstValue() const; Js::Var GetFloatConstValueAsVar_PostGlobOpt() const; @@ -191,7 +191,7 @@ class StackSym: public Sym Js::ArgSlot m_slotNum; public: uint8 m_isSingleDef:1; // the symbol only has a single definition in the IR - uint8 m_isNotInt:1; + uint8 m_isNotInt:1; uint8 m_isSafeThis : 1; uint8 m_isConst : 1; // single def and it is a constant uint8 m_isIntConst : 1; // a constant and it's value is an Int32 @@ -210,10 +210,10 @@ class StackSym: public Sym uint8 m_isFromByteCodeConstantTable:1; uint8 m_mayNotBeTempLastUse:1; uint8 m_isArgSlotSym: 1; // When set this implies an argument stack slot with no lifetime for register allocation - uint8 m_isArgSlotRegSym : 1; - uint8 m_isParamSym : 1; - uint8 m_isImplicitParamSym : 1; - uint8 m_isBailOutReferenced: 1; // argument sym referenced by bailout + uint8 m_isArgSlotRegSym : 1; + uint8 m_isParamSym : 1; + uint8 m_isImplicitParamSym : 1; + uint8 m_isBailOutReferenced: 1; // argument sym referenced by bailout uint8 m_isArgCaptured: 1; // True if there is a ByteCodeArgOutCapture for this symbol uint8 m_nonEscapingArgObjAlias : 1; uint8 m_isCatchObjectSym : 1; // a catch object sym (used while jitting loop bodies) @@ -313,9 +313,6 @@ class PropertySym: public Sym Func * m_func; Func * m_loadInlineCacheFunc; uint m_loadInlineCacheIndex; -#ifdef ENABLE_DEBUG_CONFIG_OPTIONS - const char16* GetName() const; -#endif private: uint32 m_propertyIdIndex; uint m_inlineCacheIndex; diff --git a/lib/Backend/TempTracker.cpp b/lib/Backend/TempTracker.cpp index 0edf8416564..0c2ee2c9284 100644 --- a/lib/Backend/TempTracker.cpp +++ b/lib/Backend/TempTracker.cpp @@ -263,9 +263,8 @@ TempTracker::ProcessUse(StackSym * sym, BackwardPass * backwardPass) #if DBG_DUMP if (T::DoTrace(backwardPass) && this->tempTransferDependencies) { - Output::Print(_u("%s: %8s (PropId:%d %s)+[] -> s%d: "), T::GetTraceName(), - backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), propertySym->m_propertyId, - backwardPass->func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer(), usedSymID); + Output::Print(_u("%s: %8s (PropId:%d)+[] -> s%d: "), T::GetTraceName(), + backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), propertySym->m_propertyId, usedSymID); BVSparse ** transferDependencies = this->tempTransferDependencies->Get(usedSymID); if (transferDependencies) { @@ -712,7 +711,7 @@ NumberTemp::IsTempPropertyTransferStore(IR::Instr * instr, BackwardPass * backwa PropertySym *propertySym = dst->AsSymOpnd()->m_sym->AsPropertySym(); SymID propertySymId = this->GetRepresentativePropertySymId(propertySym, backwardPass); return !this->nonTempSyms.Test(propertySymId) && - !instr->m_func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->IsNumeric(); + !instr->m_func->GetThreadContextInfo()->IsNumericProperty(propertySym->m_propertyId); } }; @@ -914,9 +913,8 @@ NumberTemp::ProcessPropertySymUse(IR::SymOpnd * symOpnd, IR::Instr * instr, Back #if DBG_DUMP if (NumberTemp::DoTrace(backwardPass)) { - Output::Print(_u("%s: %8s s%d -> PropId:%d %s: "), NumberTemp::GetTraceName(), - backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), dstSymID, propertySym->m_propertyId, - backwardPass->func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer()); + Output::Print(_u("%s: %8s s%d -> PropId:%d: "), NumberTemp::GetTraceName(), + backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), dstSymID, propertySym->m_propertyId); (*this->propertyIdsTempTransferDependencies->Get(propertySym->m_propertyId))->Dump(); } #endif @@ -925,9 +923,8 @@ NumberTemp::ProcessPropertySymUse(IR::SymOpnd * symOpnd, IR::Instr * instr, Back #if DBG_DUMP if (NumberTemp::DoTrace(backwardPass)) { - Output::Print(_u("%s: %8s%4sTemp Use (PropId:%d %s)"), NumberTemp::GetTraceName(), - backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), isTempUse ? _u("") : _u("Non "), propertySym->m_propertyId, - backwardPass->func->GetThreadContextInfo()->GetPropertyRecord(propertySym->m_propertyId)->GetBuffer()); + Output::Print(_u("%s: %8s%4sTemp Use (PropId:%d)"), NumberTemp::GetTraceName(), + backwardPass->IsPrePass() ? _u("Prepass ") : _u(""), isTempUse ? _u("") : _u("Non "), propertySym->m_propertyId); instr->DumpSimple(); } #endif diff --git a/lib/Backend/amd64/EncoderMD.cpp b/lib/Backend/amd64/EncoderMD.cpp index 21b735812a5..7197674cbc6 100644 --- a/lib/Backend/amd64/EncoderMD.cpp +++ b/lib/Backend/amd64/EncoderMD.cpp @@ -506,8 +506,8 @@ EncoderMD::EmitImmed(IR::Opnd * opnd, int opSize, int sbit, bool allow64Immediat break; case IR::OpndKindLabel: - value = (size_t)opnd->AsLabelOpnd()->GetLabel(); - AppendRelocEntry(RelocTypeLabelUse, (void*) m_pc, nullptr); + value = 0; + AppendRelocEntry(RelocTypeLabelUse, (void*) m_pc, opnd->AsLabelOpnd()->GetLabel()); break; default: @@ -1473,7 +1473,7 @@ EncoderMD::FixRelocListEntry(uint32 index, int totalBytesSaved, BYTE *buffStart, uint32 count = field & 0xf; AssertMsg(offset < (size_t)(buffEnd - buffStart), "Inlinee entry offset out of range"); - *((size_t*) relocRecord.m_origPtr) = ((offset - totalBytesSaved) << 4) | count; + relocRecord.SetInlineOffset(((offset - totalBytesSaved) << 4) | count); } // adjust the ptr to the buffer itself relocRecord.m_ptr = (BYTE*) relocRecord.m_ptr - totalBytesSaved; @@ -1531,7 +1531,7 @@ EncoderMD::FixMaps(uint32 brOffset, uint32 bytesSaved, uint32 *inlineeFrameRecor ///---------------------------------------------------------------------------- void -EncoderMD::ApplyRelocs(size_t codeBufferAddress_) +EncoderMD::ApplyRelocs(size_t codeBufferAddress_, size_t codeSize, uint * bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation) { if (m_relocList == nullptr) { @@ -1565,22 +1565,52 @@ EncoderMD::ApplyRelocs(size_t codeBufferAddress_) // short branch pcrel = (uint32)(labelInstr->GetPC() - ((BYTE*)reloc->m_ptr + 1)); AssertMsg((int32)pcrel >= -128 && (int32)pcrel <= 127, "Offset doesn't fit in imm8."); - *(BYTE*)relocAddress = (BYTE)pcrel; + if (!isFinalBufferValidation) + { + Assert(*(BYTE*)relocAddress == 0); + *(BYTE*)relocAddress = (BYTE)pcrel; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress_, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(BYTE), (ptrdiff_t)labelInstr->GetPC() - ((ptrdiff_t)reloc->m_ptr + 1)); + } } else { pcrel = (uint32)(labelInstr->GetPC() - ((BYTE*)reloc->m_ptr + 4)); - *(uint32 *)relocAddress = pcrel; + if (!isFinalBufferValidation) + { + Assert(*(uint32*)relocAddress == 0); + *(uint32 *)relocAddress = pcrel; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress_, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(uint32), (ptrdiff_t)labelInstr->GetPC() - ((ptrdiff_t)reloc->m_ptr + 4)); + } } - break; + *bufferCRC = Encoder::CalculateCRC(*bufferCRC, pcrel); + + break; } case RelocTypeLabelUse: { - IR::LabelInstr *labelInstr = *(IR::LabelInstr**)relocAddress; + IR::LabelInstr *labelInstr = reloc->getBrTargetLabel(); AssertMsg(labelInstr->GetPC() != nullptr, "Branch to unemitted label?"); - *(size_t *)relocAddress = (size_t)(labelInstr->GetPC() - m_encoder->m_encodeBuffer + codeBufferAddress_); + + size_t offset = (size_t)(labelInstr->GetPC() - m_encoder->m_encodeBuffer); + size_t targetAddress = (size_t)(offset + codeBufferAddress_); + if (!isFinalBufferValidation) + { + Assert(*(size_t *)relocAddress == 0); + *(size_t *)relocAddress = targetAddress; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress_, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(size_t), targetAddress, false); + } + *bufferCRC = Encoder::CalculateCRC(*bufferCRC, offset); break; } case RelocTypeLabel: @@ -1593,6 +1623,39 @@ EncoderMD::ApplyRelocs(size_t codeBufferAddress_) } } +uint +EncoderMD::GetRelocDataSize(EncodeRelocAndLabels *reloc) +{ + switch (reloc->m_type) + { + case RelocTypeBranch: + { + if (reloc->isShortBr()) + { + return sizeof(BYTE); + } + else + { + return sizeof(uint); + } + } + case RelocTypeLabelUse: + { + return sizeof(size_t); + } + default: + { + return 0; + } + } +} + +BYTE * +EncoderMD::GetRelocBufferAddress(EncodeRelocAndLabels * reloc) +{ + return (BYTE*)reloc->m_ptr; +} + #ifdef DBG ///---------------------------------------------------------------------------- /// diff --git a/lib/Backend/amd64/EncoderMD.h b/lib/Backend/amd64/EncoderMD.h index 42dac6f90c8..061e52a1a95 100644 --- a/lib/Backend/amd64/EncoderMD.h +++ b/lib/Backend/amd64/EncoderMD.h @@ -33,7 +33,7 @@ class EncodeRelocAndLabels { IR::LabelInstr* m_labelInstr; // ptr to Br Label BYTE m_nopCount; - uint64 m_origInlineeOffset; + uint64 m_InlineeOffset; }; bool m_isShortBr; @@ -42,6 +42,9 @@ class EncodeRelocAndLabels { m_type = type; m_ptr = ptr; + m_InlineeOffset = 0; + m_isShortBr = false; + if (type == RelocTypeLabel) { // preserve original PC for labels @@ -51,16 +54,17 @@ class EncodeRelocAndLabels else { m_origPtr = ptr; - // in case we have to revert, we need to store original offset in code buffer - if (type == RelocTypeInlineeEntryOffset) + + if (type == RelocTypeBranch) { - m_origInlineeOffset = *((uint64*)m_origPtr); + Assert(labelInstr); + m_labelInstr = labelInstr; + m_isShortBr = false; } - else if (type == RelocTypeBranch) + else if (type == RelocTypeLabelUse) { Assert(labelInstr); m_labelInstr = labelInstr; - m_isShortBr = false; } } } @@ -77,12 +81,6 @@ class EncodeRelocAndLabels return; } - // re-write original inlinee offset to code buffer - if (m_type == RelocTypeInlineeEntryOffset) - { - *(uint64*) m_origPtr = m_origInlineeOffset; - } - if (m_type == RelocTypeBranch) { m_isShortBr = false; @@ -99,7 +97,7 @@ class EncodeRelocAndLabels IR::LabelInstr * getBrTargetLabel() const { - Assert(m_type == RelocTypeBranch && m_labelInstr); + Assert((m_type == RelocTypeBranch || m_type == RelocTypeLabelUse) && m_labelInstr); return m_labelInstr; } IR::LabelInstr * getLabel() const @@ -153,6 +151,16 @@ class EncodeRelocAndLabels getBrTargetLabel()->GetPC() - ((BYTE*)m_ptr + 1) >= -128 && getBrTargetLabel()->GetPC() - ((BYTE*)m_ptr + 1) <= 127; } + + uint64 GetInlineOffset() + { + return m_InlineeOffset; + } + + void SetInlineOffset(uint64 offset) + { + m_InlineeOffset = offset; + } }; @@ -173,7 +181,9 @@ class EncoderMD EncoderMD(Func * func) : m_func(func) {} ptrdiff_t Encode(IR::Instr * instr, BYTE *pc, BYTE* beginCodeAddress = nullptr); void Init(Encoder *encoder); - void ApplyRelocs(size_t codeBufferAddress); + void ApplyRelocs(size_t codeBufferAddress, size_t codeSize, uint* bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation = false); + uint GetRelocDataSize(EncodeRelocAndLabels *reloc); + BYTE * GetRelocBufferAddress(EncodeRelocAndLabels * reloc); void EncodeInlineeCallInfo(IR::Instr *instr, uint32 offset); static bool TryConstFold(IR::Instr *instr, IR::RegOpnd *regOpnd); static bool TryFold(IR::Instr *instr, IR::RegOpnd *regOpnd); diff --git a/lib/Backend/amd64/LowererMDArch.cpp b/lib/Backend/amd64/LowererMDArch.cpp index be9269d889e..2c8e004932b 100644 --- a/lib/Backend/amd64/LowererMDArch.cpp +++ b/lib/Backend/amd64/LowererMDArch.cpp @@ -2198,6 +2198,8 @@ LowererMDArch::EmitInt4Instr(IR::Instr *instr, bool signExtend /* = false */) case Js::OpCode::Shl_I4: case Js::OpCode::ShrU_I4: case Js::OpCode::Shr_I4: + case Js::OpCode::Rol_I4: + case Js::OpCode::Ror_I4: LowererMD::ChangeToShift(instr, false /* needFlags */); legalize = true; break; diff --git a/lib/Backend/amd64/MdOpCodes.h b/lib/Backend/amd64/MdOpCodes.h index bfd0945b561..b2ab9c83502 100644 --- a/lib/Backend/amd64/MdOpCodes.h +++ b/lib/Backend/amd64/MdOpCodes.h @@ -30,6 +30,7 @@ MACRO(ANDNPS, Reg2, None, RNON, f(MODRM), o(ANDNPS), DNO16|DOP MACRO(ANDPD, Reg2, None, RNON, f(MODRM), o(ANDPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F) MACRO(ANDPS, Reg2, None, RNON, f(MODRM), o(ANDPS), DNO16|DOPEQ|DCOMMOP, OLB_0F) +MACRO(BSF, Reg2, None, RNON, f(MODRM), o(BSF), DDST, OLB_0F) MACRO(BSR, Reg2, None, RNON, f(MODRM), o(BSR), DDST, OLB_0F) MACRO(BT, Reg2, OpSideEffect, R100, f(SPMOD), o(BT), DSETCC, OLB_0F) MACRO(BTR, Reg2, OpSideEffect, R110, f(SPMOD), o(BTR), DOPEQ|DSETCC, OLB_0F) @@ -76,7 +77,6 @@ MACRO(CVTSI2SD, Reg2, None, RNON, f(MODRM), o(CVTSI2SD),DDST|DNO1 MACRO(CVTSI2SS, Reg2, None, RNON, f(MODRM), o(CVTSI2SS),DDST|DNO16|DF3, OLB_0F) MACRO(CVTPD2PS, Reg2, None, RNON, f(MODRM), o(CVTPD2PS),DDST|DNO16|D66, OLB_0F) - MACRO(CVTPS2PD, Reg2, None, RNON, f(MODRM), o(CVTPS2PD),DDST|DNO16, OLB_0F) MACRO(CVTSD2SS, Reg2, None, RNON, f(MODRM), o(CVTSD2SS),DDST|DNO16|DF2, OLB_0F) MACRO(CVTSS2SD, Reg2, None, RNON, f(MODRM), o(CVTSS2SD),DDST|DNO16|DF3, OLB_0F) @@ -85,17 +85,14 @@ MACRO(CVTSS2SI, Reg2, None, RNON, f(MODRM), o(CVTSS2SI),DDST|DNO1 MACRO(CVTTPD2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPD2DQ),DDST|DNO16|D66, OLB_0F) MACRO(CVTTPS2DQ,Reg2, None, RNON, f(MODRM), o(CVTTPS2DQ),DDST|DNO16|DF3, OLB_0F) - MACRO(CVTTSD2SI,Reg2, None, RNON, f(MODRM), o(CVTTSD2SI),DDST|DNO16|DF2, OLB_0F) MACRO(CVTTSS2SI,Reg2, None, RNON, f(MODRM), o(CVTTSS2SI),DDST|DNO16|DF3, OLB_0F) MACRO(DEC, Reg2, OpSideEffect, R001, f(INCDEC), o(DEC), DOPEQ|DSETCC, OLB_NONE) MACRO(DIV, Reg3, None, R110, f(MULDIV), o(DIV), DSETCC, OLB_NONE) - MACRO(DIVPD, Reg3, None, RNON, f(MODRM), o(DIVPD), DNO16|DOPEQ|D66, OLB_0F) MACRO(DIVPS, Reg3, None, RNON, f(MODRM), o(DIVPS), DNO16|DOPEQ, OLB_0F) - MACRO(DIVSD, Reg3, None, RNON, f(MODRM), o(DIVSD), DNO16|DOPEQ|DF2, OLB_0F) MACRO(DIVSS, Reg3, None, RNON, f(MODRM), o(DIVSS), DNO16|DOPEQ|DF3, OLB_0F) MACRO(IDIV, Reg3, None, R111, f(MULDIV), o(IDIV), DSETCC, OLB_NONE) @@ -133,7 +130,6 @@ MACRO(MOV, Reg2, None, R000, f(MOV), o(MOV), DDST|DMOV MACRO(MOV_TRUNC,Reg2, None, R000, f(MOV), o(MOV), DDST|DMOV, OLB_NONE)// Like a MOV, but MOV ECX, ECX can't be removed (truncation) MACRO(MOVD, Reg2, None, RNON, f(SPECIAL), o(MOVD), DDST|DNO16|D66, OLB_0F) - MACRO(MOVHLPS, Reg2, None, RNON, f(SPECIAL), o(MOVHLPS), DDST|DNO16, OLB_0F) MACRO(MOVHPD, Reg2, None, RNON, f(SPECIAL), o(MOVHPD), DDST|DNO16|D66, OLB_0F) MACRO(MOVLHPS, Reg2, None, RNON, f(SPECIAL), o(MOVLHPS), DDST|DNO16, OLB_0F) @@ -160,7 +156,6 @@ MACRO(MOVSXD, Reg2, None, RNON, f(MODRM), o(MOVSXD), DDST, MACRO(MULPD, Reg3, None, RNON, f(MODRM), o(MULPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F) MACRO(MULPS, Reg3, None, RNON, f(MODRM), o(MULPS), DNO16|DOPEQ|DCOMMOP, OLB_0F) - MACRO(MULSD, Reg3, None, RNON, f(MODRM), o(MULSD), DNO16|DOPEQ|DF2, OLB_0F) MACRO(MULSS, Reg3, None, RNON, f(MODRM), o(MULSS), DNO16|DOPEQ|DF3|DCOMMOP, OLB_0F) MACRO(NEG, Reg2, OpSideEffect, R011, f(MODRMW), o(NEG), DOPEQ|DSETCC, OLB_NONE) @@ -207,7 +202,6 @@ MACRO(PSRAD, Reg2, None, R100, f(SPECIAL), o(PSRAD), DNO16|DO MACRO(PSRLW, Reg2, None, R010, f(SPECIAL), o(PSRLW), DNO16|DOPEQ|D66|DSSE, OLB_0F) MACRO(PSRLD, Reg2, None, R010, f(SPECIAL), o(PSRLD), DNO16|DOPEQ|D66|DSSE, OLB_0F) - MACRO(PSUBB, Reg2, None, RNON, f(MODRM), o(PSUBB), DNO16|DOPEQ|D66, OLB_0F) MACRO(PSUBD, Reg2, None, RNON, f(MODRM), o(PSUBD), DNO16|DOPEQ|D66, OLB_0F) MACRO(PSUBW, Reg2, None, RNON, f(MODRM), o(PSUBW), DNO16|DOPEQ|D66, OLB_0F) @@ -220,8 +214,9 @@ MACRO(PUNPCKLDQ, Reg2, None, RNON, f(MODRM), o(PUNPCKLDQ), DNO16| MACRO(PUNPCKLWD, Reg2, None, RNON, f(MODRM), o(PUNPCKLWD), DNO16|DOPEQ|D66, OLB_0F) MACRO(PXOR, Reg2, None, RNON, f(MODRM), o(PXOR), DNO16|DOPEQ|D66|DCOMMOP, OLB_0F) - MACRO(RET, Empty, OpSideEffect, RNON, f(SPECIAL), o(RET), DSETCC, OLB_NONE) +MACRO(ROL, Reg2, None /* XXX */,R000, f(SHIFT), o(ROL), DOPEQ | DSETCC, OLB_NONE) +MACRO(ROR, Reg2, None /* XXX */,R001, f(SHIFT), o(ROR), DOPEQ | DSETCC, OLB_NONE) MACRO(ROUNDSD, Reg3, None, RNON, f(MODRM), o(ROUNDSD), DDST|DNO16|DSSE|D66, OLB_0F3A) MACRO(ROUNDSS, Reg3, None, RNON, f(MODRM), o(ROUNDSS), DDST|DNO16|DSSE|D66, OLB_0F3A) MACRO(SAR, Reg2, OpSideEffect, R111, f(SHIFT), o(SAR), DOPEQ|DSETCC, OLB_NONE) @@ -256,12 +251,16 @@ MACRO(SUBPS, Reg3, None, RNON, f(MODRM), o(SUBPS), DNO16|DO MACRO(SUBSD, Reg3, None, RNON, f(MODRM), o(SUBSD), DNO16|DOPEQ|DF2, OLB_0F) MACRO(SUBSS, Reg3, None, RNON, f(MODRM), o(SUBSS), DNO16|DOPEQ|DF3, OLB_0F) MACRO(TEST, Empty, OpSideEffect, R000, f(TEST), o(TEST), DSETCC|DCOMMOP, OLB_NONE) + +MACRO(TZCNT, Reg2, None, RNON, f(MODRM), o(TZCNT), DF3|DSETCC|DDST, OLB_0F) + MACRO(UCOMISD, Empty, None, RNON, f(MODRM), o(UCOMISD), DNO16|D66|DSETCC, OLB_0F) MACRO(UCOMISS, Empty, None, RNON, f(MODRM), o(UCOMISS), DNO16|DSETCC, OLB_0F) MACRO(XCHG, Reg2, None, R000, f(XCHG), o(XCHG), DOPEQ, OLB_NONE) MACRO(XOR, Reg2, OpSideEffect, R110, f(BINOP), o(XOR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE) MACRO(XORPS, Reg3, None, RNON, f(MODRM), o(XORPS), DNO16|DOPEQ|DCOMMOP, OLB_0F) MACRO(PINSRW, Reg2, None, RNON, f(MODRM), o(PINSRW), DDST|DNO16|DSSE|D66, OLB_0F) +MACRO(POPCNT, Reg2, None, RNON, f(MODRM), o(POPCNT), DF3|DSETCC|DDST, OLB_0F) #undef o #undef f diff --git a/lib/Backend/amd64/X64Encode.h b/lib/Backend/amd64/X64Encode.h index 92528731200..7b6ca526c25 100644 --- a/lib/Backend/amd64/X64Encode.h +++ b/lib/Backend/amd64/X64Encode.h @@ -135,11 +135,11 @@ enum Forms : BYTE #define OPBYTE_ANDNPD {0x55} // modrm #define OPBYTE_ANDNPS {0x55} // modrm - #define OPBYTE_ANDPD {0x54} // modrm #define OPBYTE_ANDPS {0x54} // modrm #define OPBYTE_SUB {0x2c, 0x80, 0x28} // binop, byte2=0x5 #define OPBYTE_AND {0x24, 0x80, 0x20} // binop, byte2=0x4 +#define OPBYTE_BSF {0xbc} // modrm #define OPBYTE_BSR {0xbd} // modrm #define OPBYTE_BT {0xba, 0xa3} // special, modrm #define OPBYTE_BTR {0xba, 0xb3} // special, modrm @@ -223,6 +223,7 @@ enum Forms : BYTE #define OPBYTE_MINPD {0x5d} // modrm #define OPBYTE_MINPS {0x5d} // modrm +#define OPBYTE_TZCNT {0xbc} // modrm #define OPBYTE_LZCNT {0xbd} // modrm #define OPBYTE_OR {0x0c, 0x80, 0x08} // binop, byte2=0x1 @@ -287,9 +288,10 @@ enum Forms : BYTE #define OPBYTE_POP {0x58, 0, 0x8f} // pshpop, byte2=0 immed not legal #define OPBYTE_POR {0xeb} // modrm +#define OPBYTE_POPCNT {0xB8} // modrm #define OPBYTE_PSHUFD {0x70} // special -#define OPBYTE_PEXTRW {0xc5} // special -#define OPBYTE_PINSRW {0xc4} // special +#define OPBYTE_PEXTRW {0xc5} // special +#define OPBYTE_PINSRW {0xc4} // special #define OPBYTE_PSLLDQ {0x73} // mmxshift #define OPBYTE_PSRLDQ {0x73} // mmxshift @@ -316,6 +318,8 @@ enum Forms : BYTE #define OPBYTE_PXOR {0xef} // modrm #define OPBYTE_RET {0xc2} // special +#define OPBYTE_ROL {0xc0, 0xd2} // shift, byte2=0 +#define OPBYTE_ROR {0xc0, 0xd2} // shift, byte2=1 #define OPBYTE_ROUNDSD {0x0B} // modrm #define OPBYTE_ROUNDSS {0x0A} // modrm #define OPBYTE_SAR {0xc0, 0xd2} // shift, byte2=7 diff --git a/lib/Backend/arm/EncoderMD.cpp b/lib/Backend/arm/EncoderMD.cpp index f6977a813e4..f0fde7a94ae 100644 --- a/lib/Backend/arm/EncoderMD.cpp +++ b/lib/Backend/arm/EncoderMD.cpp @@ -2263,7 +2263,7 @@ EncoderMD::BaseAndOffsetFromSym(IR::SymOpnd *symOpnd, RegNum *pBaseReg, int32 *p /// before we copy the contents of the temporary buffer to the target buffer. ///---------------------------------------------------------------------------- void -EncoderMD::ApplyRelocs(uint32 codeBufferAddress) +EncoderMD::ApplyRelocs(uint32 codeBufferAddress, size_t codeSize, uint* bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation) { for (EncodeReloc *reloc = m_relocList; reloc; reloc = reloc->m_next) { diff --git a/lib/Backend/arm/EncoderMD.h b/lib/Backend/arm/EncoderMD.h index 3243788330f..eaed327c271 100644 --- a/lib/Backend/arm/EncoderMD.h +++ b/lib/Backend/arm/EncoderMD.h @@ -55,7 +55,7 @@ class EncoderMD EncoderMD(Func * func) : m_func(func), consecutiveThumbInstrCount(0) { } ptrdiff_t Encode(IR::Instr * instr, BYTE *pc, BYTE* beginCodeAddress = nullptr); void Init(Encoder *encoder); - void ApplyRelocs(uint32 codeBufferAddress); + void ApplyRelocs(uint32 codeBufferAddress, size_t codeSize, uint* bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation = false); static bool TryConstFold(IR::Instr *instr, IR::RegOpnd *regOpnd); static bool TryFold(IR::Instr *instr, IR::RegOpnd *regOpnd); const BYTE GetRegEncode(IR::RegOpnd *regOpnd); diff --git a/lib/Backend/arm/LowerMD.h b/lib/Backend/arm/LowerMD.h index f32af8edf27..4be2cdab2bb 100644 --- a/lib/Backend/arm/LowerMD.h +++ b/lib/Backend/arm/LowerMD.h @@ -102,6 +102,9 @@ class LowererMD bool GenerateFastCmXxTaggedInt(IR::Instr *instr); IR::Instr * GenerateConvBool(IR::Instr *instr); void GenerateClz(IR::Instr * instr); + void GenerateCtz(IR::Instr * instr) { Assert(UNREACHED); } + void GeneratePopCnt32(IR::Instr * instr) { Assert(UNREACHED); } + void GenerateThrowUnreachable(IR::Instr * instr) { Assert(UNREACHED); } void GenerateFastDivByPow2(IR::Instr *instr); bool GenerateFastAdd(IR::Instr * instrAdd); bool GenerateFastSub(IR::Instr * instrSub); @@ -191,6 +194,7 @@ class LowererMD IR::Instr * LoadDoubleHelperArgument(IR::Instr * instr, IR::Opnd * opndArg); IR::Instr * LoadFloatHelperArgument(IR::Instr * instr, IR::Opnd * opndArg) { Assert(UNREACHED); return nullptr; } // only used for asm.js right now IR::Instr * LowerToFloat(IR::Instr *instr); + IR::Instr * LowerReinterpretPrimitive(IR::Instr* instr) { Assert(UNREACHED); return nullptr; } static IR::BranchInstr * LowerFloatCondBranch(IR::BranchInstr *instrBranch, bool ignoreNaN = false); void ConvertFloatToInt32(IR::Opnd* intOpnd, IR::Opnd* floatOpnd, IR::LabelInstr * labelHelper, IR::LabelInstr * labelDone, IR::Instr * instInsert); void CheckOverflowOnFloatToInt32(IR::Instr* instr, IR::Opnd* intOpnd, IR::LabelInstr * labelHelper, IR::LabelInstr * labelDone); diff --git a/lib/Backend/arm64/EncoderMD.h b/lib/Backend/arm64/EncoderMD.h index 962ed027371..4fc3bdf9da3 100644 --- a/lib/Backend/arm64/EncoderMD.h +++ b/lib/Backend/arm64/EncoderMD.h @@ -53,7 +53,7 @@ class EncoderMD EncoderMD(Func * func) { } ptrdiff_t Encode(IR::Instr * instr, BYTE *pc, BYTE* beginCodeAddress = nullptr) { __debugbreak(); return 0; } void Init(Encoder *encoder) { __debugbreak(); } - void ApplyRelocs(size_t codeBufferAddress) { __debugbreak(); } + void ApplyRelocs(size_t codeBufferAddress, size_t codeSize, uint* bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation = false) { __debugbreak(); } static bool TryConstFold(IR::Instr *instr, IR::RegOpnd *regOpnd) { __debugbreak(); return 0; } static bool TryFold(IR::Instr *instr, IR::RegOpnd *regOpnd) { __debugbreak(); return 0; } const BYTE GetRegEncode(IR::RegOpnd *regOpnd) { __debugbreak(); return 0; } diff --git a/lib/Backend/arm64/LowerMD.h b/lib/Backend/arm64/LowerMD.h index bbfa6678af8..e254aac1d05 100644 --- a/lib/Backend/arm64/LowerMD.h +++ b/lib/Backend/arm64/LowerMD.h @@ -95,8 +95,10 @@ class LowererMD bool GenerateFastCmXxTaggedInt(IR::Instr *instr) { __debugbreak(); return 0; } IR::Instr * GenerateConvBool(IR::Instr *instr) { __debugbreak(); return 0; } - void GenerateClz(IR::Instr * instr) { __debugbreak(); } + void GenerateCtz(IR::Instr * instr) { __debugbreak(); } + void GeneratePopCnt32(IR::Instr * instr) { __debugbreak(); } + void GenerateThrowUnreachable(IR::Instr * instr) { __debugbreak(); } void GenerateFastDivByPow2(IR::Instr *instr) { __debugbreak(); } bool GenerateFastAdd(IR::Instr * instrAdd) { __debugbreak(); return 0; } bool GenerateFastSub(IR::Instr * instrSub) { __debugbreak(); return 0; } @@ -190,6 +192,7 @@ class LowererMD IR::Instr * LoadDoubleHelperArgument(IR::Instr * instr, IR::Opnd * opndArg) { __debugbreak(); return 0; } IR::Instr * LoadFloatHelperArgument(IR::Instr * instr, IR::Opnd * opndArg) { __debugbreak(); return 0; } IR::Instr * LowerToFloat(IR::Instr *instr) { __debugbreak(); return 0; } + IR::Instr * LowerReinterpretPrimitive(IR::Instr* instr) { __debugbreak(); return 0; } static IR::BranchInstr * LowerFloatCondBranch(IR::BranchInstr *instrBranch, bool ignoreNaN = false) { __debugbreak(); return 0; } void ConvertFloatToInt32(IR::Opnd* intOpnd, IR::Opnd* floatOpnd, IR::LabelInstr * labelHelper, IR::LabelInstr * labelDone, IR::Instr * instInsert) { __debugbreak(); } void CheckOverflowOnFloatToInt32(IR::Instr* instr, IR::Opnd* intOpnd, IR::LabelInstr * labelHelper, IR::LabelInstr * labelDone) { __debugbreak(); } diff --git a/lib/Backend/i386/EncoderMD.cpp b/lib/Backend/i386/EncoderMD.cpp index 94ed42e253c..d5d85eaf5e3 100644 --- a/lib/Backend/i386/EncoderMD.cpp +++ b/lib/Backend/i386/EncoderMD.cpp @@ -481,7 +481,6 @@ void EncoderMD::EmitCondBranch(IR::BranchInstr * branchInstr) { IR::LabelInstr * labelInstr; - // TODO: Make this more table-driven by mapping opcodes to condcodes. // (Will become more useful when we're emitting short branches as well.) @@ -556,12 +555,10 @@ EncoderMD::EmitCondBranch(IR::BranchInstr * branchInstr) break; } - AppendRelocEntry(RelocTypeBranch, (void*) m_pc); - - // Save the target LabelInstr's address in the encoder buffer itself, using the 4-byte - // pcrel field of the branch instruction. This only works for long branches, obviously. labelInstr = branchInstr->GetTarget(); - this->EmitConst((uint32)labelInstr, MachInt); + AppendRelocEntry(RelocTypeBranch, (void*) m_pc, labelInstr); + + this->EmitConst(0, MachInt); } ///---------------------------------------------------------------------------- @@ -764,8 +761,8 @@ EncoderMD::Encode(IR::Instr *instr, BYTE *pc, BYTE* beginCodeAddress) this->EmitModRM(instr, opr1, this->GetOpcodeByte2(instr) >> 3); if (opr2->IsLabelOpnd()) { - AppendRelocEntry( RelocTypeLabelUse, (void*) m_pc); - this->EmitConst((uint32)opr2->AsLabelOpnd()->GetLabel(), 4); + AppendRelocEntry( RelocTypeLabelUse, (void*) m_pc, opr2->AsLabelOpnd()->GetLabel()); + this->EmitConst(0, 4); } else { @@ -874,8 +871,8 @@ EncoderMD::Encode(IR::Instr *instr, BYTE *pc, BYTE* beginCodeAddress) { continue; } - AppendRelocEntry(RelocTypeLabelUse, (void*) m_pc); - this->EmitConst((uint32)opr1->AsLabelOpnd()->GetLabel(), 4); + AppendRelocEntry(RelocTypeLabelUse, (void*) m_pc, opr1->AsLabelOpnd()->GetLabel()); + this->EmitConst(0, 4); } else { @@ -917,34 +914,22 @@ EncoderMD::Encode(IR::Instr *instr, BYTE *pc, BYTE* beginCodeAddress) // Unconditional branch AssertMsg(instr->IsBranchInstr(), "Invalid LABREL2 form"); - AppendRelocEntry(RelocTypeBranch, (void*)m_pc); - - // Save the target LabelInstr's address in the encoder buffer itself, using the 4-byte - // pcrel field of the branch instruction. This only works for long branches, obviously. - this->EmitConst((uint32)instr->AsBranchInstr()->GetTarget(), 4); + AppendRelocEntry(RelocTypeBranch, (void*)m_pc, instr->AsBranchInstr()->GetTarget()); + this->EmitConst(0, 4); } else if (opr1->IsIntConstOpnd()) { - AppendRelocEntry(RelocTypeCallPcrel, (void*)m_pc); - this->EmitConst(opr1->AsIntConstOpnd()->GetValue(), 4); - AssertMsg( ( ((BYTE*)opr1->AsIntConstOpnd()->GetValue()) < m_encoder->m_encodeBuffer || ((BYTE *)opr1->AsIntConstOpnd()->GetValue()) >= m_encoder->m_encodeBuffer + m_encoder->m_encodeBufferSize), "Call Target within buffer."); + AppendRelocEntry(RelocTypeCallPcrel, (void*)m_pc, nullptr, (void*)opr1->AsIntConstOpnd()->GetValue()); + this->EmitConst(0, 4); + AssertMsg(m_func->IsOOPJIT() || ( ((BYTE*)opr1->AsIntConstOpnd()->GetValue()) < m_encoder->m_encodeBuffer || ((BYTE *)opr1->AsIntConstOpnd()->GetValue()) >= m_encoder->m_encodeBuffer + m_encoder->m_encodeBufferSize), "Call Target within buffer."); } else if (opr1->IsHelperCallOpnd()) { - AppendRelocEntry(RelocTypeCallPcrel, (void*)m_pc); const void* fnAddress = (void*)IR::GetMethodAddress(m_func->GetThreadContextInfo(), opr1->AsHelperCallOpnd()); + AppendRelocEntry(RelocTypeCallPcrel, (void*)m_pc, nullptr, fnAddress); AssertMsg(sizeof(uint32) == sizeof(void*), "Sizes of void* assumed to be 32-bits"); - this->EmitConst((uint32)fnAddress, 4); -#if DBG - if (this->m_func->IsOOPJIT()) - { - // TODO: OOP JIT, use the helper function address from JIT process to do the assertion - } - else - { - AssertMsg((((BYTE*)fnAddress) < m_encoder->m_encodeBuffer || ((BYTE *)fnAddress) >= m_encoder->m_encodeBuffer + m_encoder->m_encodeBufferSize), "Call Target within buffer."); - } -#endif + this->EmitConst(0, 4); + AssertMsg(m_func->IsOOPJIT() || (((BYTE*)fnAddress) < m_encoder->m_encodeBuffer || ((BYTE *)fnAddress) >= m_encoder->m_encodeBuffer + m_encoder->m_encodeBufferSize), "Call Target within buffer."); } else { @@ -1289,13 +1274,13 @@ EncoderMD::Encode(IR::Instr *instr, BYTE *pc, BYTE* beginCodeAddress) } int -EncoderMD::AppendRelocEntry(RelocType type, void *ptr) +EncoderMD::AppendRelocEntry(RelocType type, void *ptr, IR::LabelInstr* labelInstr, const void * fnAddress) { if (m_relocList == nullptr) m_relocList = Anew(m_encoder->m_tempAlloc, RelocList, m_encoder->m_tempAlloc); EncodeRelocAndLabels reloc; - reloc.init(type, ptr); + reloc.init(type, ptr, labelInstr, fnAddress); return m_relocList->Add(reloc); } @@ -1349,7 +1334,7 @@ EncoderMD::FixRelocListEntry(uint32 index, int32 totalBytesSaved, BYTE *buffStar uint32 count = field & 0xf; AssertMsg(offset < (uint32)(buffEnd - buffStart), "Inlinee entry offset out of range"); - *((uint32*) relocRecord.m_origPtr) = ((offset - totalBytesSaved) << 4) | count; + relocRecord.SetInlineOffset(((offset - totalBytesSaved) << 4) | count); } // adjust the ptr to the buffer itself relocRecord.m_ptr = (BYTE*) relocRecord.m_ptr - totalBytesSaved; @@ -1404,7 +1389,7 @@ EncoderMD::FixMaps(uint32 brOffset, int32 bytesSaved, uint32 *inlineeFrameRecord /// before we copy the contents of the temporary buffer to the target buffer. ///---------------------------------------------------------------------------- void -EncoderMD::ApplyRelocs(uint32 codeBufferAddress) +EncoderMD::ApplyRelocs(uint32 codeBufferAddress, size_t codeSize, uint * bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation) { for (int32 i = 0; i < m_relocList->Count(); i++) { @@ -1417,7 +1402,13 @@ EncoderMD::ApplyRelocs(uint32 codeBufferAddress) case RelocTypeCallPcrel: { pcrel = (uint32)(codeBufferAddress + (BYTE*)reloc->m_ptr - m_encoder->m_encodeBuffer + 4); - *(uint32 *)relocAddress -= pcrel; + uint32 offset = (uint32)reloc->GetFnAddress() - pcrel; + if (!isFinalBufferValidation) + { + Assert(*(uint32 *)relocAddress == 0); + *(uint32 *)relocAddress = offset; + } + *bufferCRC = Encoder::CalculateCRC(*bufferCRC, offset); break; } case RelocTypeBranch: @@ -1429,20 +1420,48 @@ EncoderMD::ApplyRelocs(uint32 codeBufferAddress) // short branch pcrel = (uint32)(labelInstr->GetPC() - ((BYTE*)reloc->m_ptr + 1)); AssertMsg((int32)pcrel >= -128 && (int32)pcrel <= 127, "Offset doesn't fit in imm8."); - *(BYTE*)relocAddress = (BYTE)pcrel; + if (!isFinalBufferValidation) + { + Assert(*(BYTE*)relocAddress == 0); + *(BYTE*)relocAddress = (BYTE)pcrel; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(BYTE), (ptrdiff_t)labelInstr->GetPC() - ((ptrdiff_t)reloc->m_ptr + 1)); + } } else { pcrel = (uint32)(labelInstr->GetPC() - ((BYTE*)reloc->m_ptr + 4)); - *(uint32 *)relocAddress = pcrel; + if (!isFinalBufferValidation) + { + Assert(*(uint32 *)relocAddress == 0); + *(uint32 *)relocAddress = pcrel; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(uint32), (ptrdiff_t)labelInstr->GetPC() - ((ptrdiff_t)reloc->m_ptr + 4)); + } } + *bufferCRC = Encoder::CalculateCRC(*bufferCRC, pcrel); break; } case RelocTypeLabelUse: { - IR::LabelInstr * labelInstr = *(IR::LabelInstr**)relocAddress; + IR::LabelInstr * labelInstr = reloc->GetLabelInstrForRelocTypeLabelUse(); AssertMsg(labelInstr->GetPC() != nullptr, "Branch to unemitted label?"); - *(uint32 *)relocAddress = (uint32)(labelInstr->GetPC() - m_encoder->m_encodeBuffer + codeBufferAddress); + uint32 offset = uint32(labelInstr->GetPC() - m_encoder->m_encodeBuffer); + size_t targetAddress = (uint32)(offset + codeBufferAddress); + if (!isFinalBufferValidation) + { + Assert(*(uint32 *)relocAddress == 0); + *(uint32 *)relocAddress = targetAddress; + } + else + { + Encoder::EnsureRelocEntryIntegrity(codeBufferAddress, codeSize, (size_t)m_encoder->m_encodeBuffer, (size_t)relocAddress, sizeof(size_t), targetAddress, false); + } + *bufferCRC = Encoder::CalculateCRC(*bufferCRC, offset); break; } case RelocTypeLabel: @@ -1455,6 +1474,40 @@ EncoderMD::ApplyRelocs(uint32 codeBufferAddress) } } +uint +EncoderMD::GetRelocDataSize(EncodeRelocAndLabels *reloc) +{ + switch (reloc->m_type) + { + case RelocTypeCallPcrel: + case RelocTypeLabelUse: + { + return sizeof(uint32); + } + case RelocTypeBranch: + { + if (reloc->isShortBr()) + { + return sizeof(BYTE); + } + else + { + return sizeof(uint32); + } + } + default: + { + return 0; + } + } +} + +BYTE * +EncoderMD::GetRelocBufferAddress(EncodeRelocAndLabels * reloc) +{ + return (BYTE*)reloc->m_ptr; +} + ///---------------------------------------------------------------------------- /// /// EncodeRelocAndLabels::VerifyRelocList diff --git a/lib/Backend/i386/EncoderMD.h b/lib/Backend/i386/EncoderMD.h index 4f22fb9a7be..1919d44505b 100644 --- a/lib/Backend/i386/EncoderMD.h +++ b/lib/Backend/i386/EncoderMD.h @@ -31,15 +31,23 @@ class EncodeRelocAndLabels union { IR::LabelInstr * m_shortBrLabel; // NULL if not a short branch - uint32 m_origInlineeOffset; + uint32 m_InlineeOffset; BYTE m_nopCount; // for AlignedLabel, how many nops do we need to be 16-byte aligned }; + union + { + IR::LabelInstr * m_labelInstr; + const void * m_fnAddress; + }; + public: - void init(RelocType type, void* ptr) + void init(RelocType type, void* ptr, IR::LabelInstr* labelInstr, const void * fnAddress) { m_type = type; m_ptr = ptr; + m_InlineeOffset = 0; + m_labelInstr = nullptr; if (type == RelocTypeLabel) { @@ -50,16 +58,21 @@ class EncodeRelocAndLabels else { m_origPtr = ptr; - // in case we have to revert, we need to store original offset in code buffer - if (type == RelocTypeInlineeEntryOffset) + if (type == RelocTypeBranch) { - m_origInlineeOffset = *((uint32*)m_origPtr); + m_shortBrLabel = NULL; + m_labelInstr = labelInstr; } - else if (type == RelocTypeBranch) + else if (type == RelocTypeLabelUse) { - m_shortBrLabel = NULL; + Assert(labelInstr); + m_labelInstr = labelInstr; + } + else if (type == RelocTypeCallPcrel) + { + Assert(fnAddress); + m_fnAddress = fnAddress; } - } } @@ -76,12 +89,6 @@ class EncodeRelocAndLabels return; } - // re-write original inlinee offset to code buffer - if (m_type == RelocTypeInlineeEntryOffset) - { - *((uint32*)m_origPtr) = m_origInlineeOffset; - } - if (m_type == RelocTypeBranch) { m_shortBrLabel = NULL; @@ -104,16 +111,27 @@ class EncodeRelocAndLabels IR::LabelInstr * getBrTargetLabel() const { Assert(m_type == RelocTypeBranch); - return m_shortBrLabel == NULL ? *(IR::LabelInstr**)m_origPtr : m_shortBrLabel; + return m_shortBrLabel == NULL ? m_labelInstr : m_shortBrLabel; } - IR::LabelInstr * getLabel() const { Assert(isLabel()); return (IR::LabelInstr*) m_ptr; } + IR::LabelInstr * GetLabelInstrForRelocTypeLabelUse() + { + Assert(m_type == RelocTypeLabelUse && m_labelInstr); + return m_labelInstr; + } + + const void * GetFnAddress() + { + Assert(m_type == RelocTypeCallPcrel && m_fnAddress); + return m_fnAddress; + } + // get label original PC without shortening/alignment BYTE * getLabelOrigPC() const { @@ -160,6 +178,16 @@ class EncodeRelocAndLabels m_shortBrLabel->GetPC() - ((BYTE*)m_ptr + 1) >= -128 && m_shortBrLabel->GetPC() - ((BYTE*)m_ptr + 1) <= 127; } + + uint32 GetInlineOffset() + { + return m_InlineeOffset; + } + + void SetInlineOffset(uint32 offset) + { + m_InlineeOffset = offset; + } }; @@ -181,8 +209,8 @@ class EncoderMD ptrdiff_t Encode(IR::Instr * instr, BYTE *pc, BYTE* beginCodeAddress = nullptr); void Init(Encoder *encoder); - void ApplyRelocs(uint32 codeBufferAddress); - + void ApplyRelocs(uint32 codeBufferAddress, size_t codeSize, uint * bufferCRC, BOOL isBrShorteningSucceeded, bool isFinalBufferValidation = false); + uint GetRelocDataSize(EncodeRelocAndLabels *reloc); void EncodeInlineeCallInfo(IR::Instr *instr, uint32 offset); static bool TryConstFold(IR::Instr *instr, IR::RegOpnd *regOpnd); static bool TryFold(IR::Instr *instr, IR::RegOpnd *regOpnd); @@ -190,7 +218,7 @@ class EncoderMD static bool UsesConditionCode(IR::Instr *instr); static bool IsOPEQ(IR::Instr *instr); RelocList* GetRelocList() const { return m_relocList; } - int AppendRelocEntry(RelocType type, void *ptr); + int AppendRelocEntry(RelocType type, void *ptr, IR::LabelInstr * labelInstr = nullptr, const void * fnAddress = nullptr); int FixRelocListEntry(uint32 index, int32 totalBytesSaved, BYTE *buffStart, BYTE* buffEnd); void FixMaps(uint32 brOffset, int32 bytesSaved, uint32 *inlineeFrameRecordsIndex, uint32 *inlineeFrameMapIndex, uint32 *pragmaInstToRecordOffsetIndex, uint32 *offsetBuffIndex); void UpdateRelocListWithNewBuffer(RelocList * relocList, BYTE * newBuffer, BYTE * oldBufferStart, BYTE * oldBufferEnd); @@ -198,6 +226,7 @@ class EncoderMD void VerifyRelocList(BYTE *buffStart, BYTE *buffEnd); #endif void AddLabelReloc(BYTE* relocAddress); + BYTE * GetRelocBufferAddress(EncodeRelocAndLabels * reloc); private: const BYTE GetOpcodeByte2(IR::Instr *instr); diff --git a/lib/Backend/i386/LowererMDArch.cpp b/lib/Backend/i386/LowererMDArch.cpp index 21caac0cbcc..8cd2ce75928 100644 --- a/lib/Backend/i386/LowererMDArch.cpp +++ b/lib/Backend/i386/LowererMDArch.cpp @@ -2009,6 +2009,8 @@ LowererMDArch::EmitInt4Instr(IR::Instr *instr) case Js::OpCode::Shl_I4: case Js::OpCode::ShrU_I4: case Js::OpCode::Shr_I4: + case Js::OpCode::Rol_I4: + case Js::OpCode::Ror_I4: LowererMD::ChangeToShift(instr, false /* needFlags */); legalize = true; break; diff --git a/lib/Backend/i386/MdOpCodes.h b/lib/Backend/i386/MdOpCodes.h index 0e5446d4202..00f334415e0 100644 --- a/lib/Backend/i386/MdOpCodes.h +++ b/lib/Backend/i386/MdOpCodes.h @@ -28,6 +28,7 @@ MACRO(ANDNPD, Reg2, None, RNON, f(MODRM), o(ANDNPD), DNO1 MACRO(ANDNPS, Reg2, None, RNON, f(MODRM), o(ANDNPS), DNO16|DOPEQ|DZEROF, OLB_NONE) MACRO(ANDPD, Reg2, None, RNON, f(MODRM), o(ANDPD), DNO16|DOPEQ|D66|DCOMMOP, OLB_NONE) MACRO(ANDPS, Reg2, None, RNON, f(MODRM), o(ANDPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE) +MACRO(BSF, Reg2, None, RNON, f(MODRM), o(BSF), DZEROF|DDST, OLB_NONE) MACRO(BSR, Reg2, None, RNON, f(MODRM), o(BSR), DZEROF|DDST, OLB_NONE) MACRO(BT, Reg2, OpSideEffect, R100, f(SPMOD), o(BT), DZEROF|DSETCC, OLB_NONE) MACRO(BTR, Reg2, OpSideEffect, R110, f(SPMOD), o(BTR), DZEROF|DSETCC, OLB_NONE) @@ -62,7 +63,6 @@ MACRO(CMPLEPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66| MACRO(CMPEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE) MACRO(CMPNEQPD, Empty, None, RNON, f(MODRM), o(CMPPD), D66|DSSE, OLB_NONE) - MACRO(COMISD, Empty, OpSideEffect, RNON, f(MODRM), o(COMISD), DNO16|D66|DSETCC, OLB_NONE) MACRO(COMISS, Empty, OpSideEffect, RNON, f(MODRM), o(COMISS), DNO16|DZEROF|DSETCC, OLB_NONE) MACRO(CVTDQ2PD, Reg2, None, RNON, f(MODRM), o(CVTDQ2PD),DDST|DNO16|DF3, OLB_NONE) @@ -224,6 +224,8 @@ MACRO(SETB, Reg1, None, RNON, f(MODRM), o(SETB), DOPE MACRO(SETBE, Reg1, None, RNON, f(MODRM), o(SETBE), DOPEQ|DUSECC|DZEROF|DDST, OLB_NONE) MACRO(SHL, Reg2, None, R100, f(SHIFT), o(SHL), DOPEQ|DSETCC, OLB_NONE) MACRO(SHR, Reg2, None, R101, f(SHIFT), o(SHR), DOPEQ|DSETCC, OLB_NONE) +MACRO(ROL, Reg2, None /* XXX */, R000, f(SHIFT), o(ROL), DOPEQ|DSETCC, OLB_NONE) +MACRO(ROR, Reg2, None /* XXX */, R001, f(SHIFT), o(ROR), DOPEQ|DSETCC, OLB_NONE) MACRO(SHUFPD, Reg2, None, RNON, f(MODRM), o(SHUFPD), DDST|DNO16|D66|DSSE, OLB_NONE) MACRO(SHUFPS, Reg2, None, RNON, f(MODRM), o(SHUFPS), DDST|DNO16|DZEROF|DSSE, OLB_NONE) @@ -241,11 +243,15 @@ MACRO(SUBSD, Reg3, None, RNON, f(MODRM), o(SUBSD), DNO1 MACRO(SUBSS, Reg3, None, RNON, f(MODRM), o(SUBSS), DNO16|DOPEQ|DF3, OLB_NONE) MACRO(TEST, Empty, None, R000, f(TEST), o(TEST), DSETCC|DCOMMOP, OLB_NONE) MACRO(TEST_AH, Empty, None, R000, f(TEST_AH), o(TEST_AH), DSETCC|DCOMMOP, OLB_NONE) + +MACRO(TZCNT, Reg2, None, RNON, f(MODRM), o(TZCNT), DF3|DSETCC|DDST, OLB_NONE) + MACRO(UCOMISD, Empty, None, RNON, f(MODRM), o(UCOMISD), DNO16|D66|DSETCC, OLB_NONE) MACRO(UCOMISS, Empty, None, RNON, f(MODRM), o(UCOMISS), DNO16|DZEROF|DSETCC, OLB_NONE) MACRO(XCHG, Reg2, None, RNON, f(XCHG), o(XCHG), DOPEQ, OLB_NONE) MACRO(XOR, Reg2, None, R110, f(BINOP), o(XOR), DOPEQ|DSETCC|DCOMMOP, OLB_NONE) MACRO(XORPS, Reg3, None, RNON, f(MODRM), o(XORPS), DNO16|DOPEQ|DZEROF|DCOMMOP, OLB_NONE) +MACRO(POPCNT, Reg2, None, RNON, f(MODRM), o(POPCNT), DF3|DDST|DSETCC , OLB_NONE) #undef o #undef f diff --git a/lib/Backend/i386/X86Encode.h b/lib/Backend/i386/X86Encode.h index 6f71e7aa938..524cc855539 100644 --- a/lib/Backend/i386/X86Encode.h +++ b/lib/Backend/i386/X86Encode.h @@ -9,8 +9,6 @@ // Contains constants and tables used by the encoder. // - - // Define the encodings of the second byte in instructions. This value is // or'ed in with the mod r/m fields to build a constant reg field. // @@ -47,7 +45,6 @@ #define NDPinc 0x800000 /* instruction incs stack level by 1 */ #define NDPdec 0x1000000 /* instruction decs stack level by 1 */ - // 2nd 3 bits is options #define SBIT 0x20 #define DBIT 0x40 @@ -79,7 +76,6 @@ #define FMODRMR 21 #define FILD 22 - // Forms #define TEMPLATE_FORM_BINOP {AX_IM+SBIT+WBIT,IMM+SBIT+WBIT, MODRM+DBIT+WBIT, INVALID} #define TEMPLATE_FORM_CALL {LABREL2, MODRM, INVALID} @@ -141,6 +137,7 @@ enum Forms : BYTE #define OPBYTE_ANDPD {0x54} // modrm #define OPBYTE_ANDPS {0x54} // modrm +#define OPBYTE_BSF {0xbc} // modrm #define OPBYTE_BSR {0xbd} // modrm #define OPBYTE_BT {0xba, 0xa3} // special, modrm #define OPBYTE_BTR {0xba, 0xb3} // special, modrm @@ -211,6 +208,7 @@ enum Forms : BYTE #define OPBYTE_MINPD {0x5d} // modrm #define OPBYTE_MINPS {0x5d} // modrm +#define OPBYTE_TZCNT {0xbc} // modrm #define OPBYTE_LZCNT {0xbd} // modrm #define OPBYTE_MOV {0xa0, 0xb0, 0xc6, 0x88} // mov, byte2=0 @@ -271,9 +269,10 @@ enum Forms : BYTE #define OPBYTE_POP {0x58, 0, 0x8f} // pshpop, byte2=0 immed not legal #define OPBYTE_POR {0xeb} // modrm +#define OPBYTE_POPCNT {0xB8} // modrm #define OPBYTE_PSHUFD {0x70} // special -#define OPBYTE_PEXTRW {0xc5} // special -#define OPBYTE_PINSRW {0xc4} // special +#define OPBYTE_PEXTRW {0xc5} // special +#define OPBYTE_PINSRW {0xc4} // special #define OPBYTE_PSLLDQ {0x73} // mmxshift #define OPBYTE_PSRLDQ {0x73} // mmxshift @@ -301,6 +300,8 @@ enum Forms : BYTE #define OPBYTE_PXOR {0xef} // modrm #define OPBYTE_RET {0xc2} // special +#define OPBYTE_ROL {0xc0, 0xd2} // shift, byte2=0 +#define OPBYTE_ROR {0xc0, 0xd2} // shift, byte2=1 #define OPBYTE_ROUNDSD {0x0B} // modrm #define OPBYTE_ROUNDSS {0x0A} // modrm #define OPBYTE_SAR {0xc0, 0xd2} // shift, byte2=7 diff --git a/lib/Common/ChakraCoreVersion.h b/lib/Common/ChakraCoreVersion.h index 4c2ebb470ee..428141bf181 100644 --- a/lib/Common/ChakraCoreVersion.h +++ b/lib/Common/ChakraCoreVersion.h @@ -17,7 +17,8 @@ // ChakraCore version number definitions (used in ChakraCore binary metadata) #define CHAKRA_CORE_MAJOR_VERSION 1 #define CHAKRA_CORE_MINOR_VERSION 4 -#define CHAKRA_CORE_VERSION_RELEASE_QFE 0 +#define CHAKRA_CORE_PATCH_VERSION 0 +#define CHAKRA_CORE_VERSION_RELEASE_QFE 0 // Redundant with PATCH_VERSION. Keep this value set to 0. // ------------- // RELEASE FLAGS diff --git a/lib/Common/Codex/Utf8Helper.h b/lib/Common/Codex/Utf8Helper.h index 28af8eb18d5..b4db884bb03 100644 --- a/lib/Common/Codex/Utf8Helper.h +++ b/lib/Common/Codex/Utf8Helper.h @@ -14,9 +14,7 @@ namespace utf8 /// The returned string is null terminated. /// template - HRESULT WideStringToNarrow( - LPCWSTR sourceString, size_t sourceCount, - LPSTR* destStringPtr, size_t* destCount) + HRESULT WideStringToNarrow(_In_ LPCWSTR sourceString, size_t sourceCount, _Out_ LPSTR* destStringPtr, _Out_ size_t* destCount) { size_t cchSourceString = sourceCount; @@ -54,9 +52,7 @@ namespace utf8 /// The returned string is null terminated. /// template - HRESULT NarrowStringToWide( - LPCSTR sourceString, size_t sourceCount, - LPWSTR* destStringPtr, size_t* destCount) + HRESULT NarrowStringToWide(_In_ LPCSTR sourceString, size_t sourceCount, _Out_ LPWSTR* destStringPtr, _Out_ size_t* destCount) { size_t cbSourceString = sourceCount; charcount_t cchDestString = utf8::ByteIndexIntoCharacterIndex((LPCUTF8) sourceString, cbSourceString); @@ -93,21 +89,21 @@ namespace utf8 static void free(void* ptr, size_t count) { ::free(ptr); } }; - inline HRESULT WideStringToNarrowDynamic(LPCWSTR sourceString, LPSTR* destStringPtr) + inline HRESULT WideStringToNarrowDynamic(_In_ LPCWSTR sourceString, _Out_ LPSTR* destStringPtr) { size_t unused; return WideStringToNarrow( sourceString, wcslen(sourceString), destStringPtr, &unused); } - inline HRESULT NarrowStringToWideDynamic(LPCSTR sourceString, LPWSTR* destStringPtr) + inline HRESULT NarrowStringToWideDynamic(_In_ LPCSTR sourceString, _Out_ LPWSTR* destStringPtr) { size_t unused; return NarrowStringToWide( sourceString, strlen(sourceString), destStringPtr, &unused); } - inline HRESULT NarrowStringToWideDynamicGetLength(LPCSTR sourceString, LPWSTR* destStringPtr, size_t* destLength) + inline HRESULT NarrowStringToWideDynamicGetLength(_In_ LPCSTR sourceString, _Out_ LPWSTR* destStringPtr, _Out_ size_t* destLength) { return NarrowStringToWide( sourceString, strlen(sourceString), destStringPtr, destLength); diff --git a/lib/Common/Common/MathUtil.h b/lib/Common/Common/MathUtil.h index 96d4ae2ebc5..17880a0eaab 100644 --- a/lib/Common/Common/MathUtil.h +++ b/lib/Common/Common/MathUtil.h @@ -14,6 +14,19 @@ class Math { public: + static uint32 PopCnt32(uint32 x) + { + // sum set bits in every bit pair + x -= (x >> 1) & 0x55555555u; + // sum pairs into quads + x = (x & 0x33333333u) + ((x >> 2) & 0x33333333u); + // sum quads into octets + x = (x + (x >> 4)) & 0x0f0f0f0fu; + // sum octets into topmost octet + x *= 0x01010101u; + return x >> 24; + } + // Explicit cast to integral (may truncate). Avoids warning C4302 'type cast': truncation template static T PointerCastToIntegralTruncate(void * pointer) diff --git a/lib/Common/Common/NumberUtilities.cpp b/lib/Common/Common/NumberUtilities.cpp index 67eccace8f9..e52490b5310 100644 --- a/lib/Common/Common/NumberUtilities.cpp +++ b/lib/Common/Common/NumberUtilities.cpp @@ -15,6 +15,7 @@ namespace Js #if !defined(_MSC_VER) || _MSC_VER >= 1900 // Redeclare static constants const UINT64 NumberConstantsBase::k_Nan; + const UINT32 NumberConstantsBase::k_Nan32; const INT64 NumberUtilitiesBase::Pos_InvalidInt64; const INT64 NumberUtilitiesBase::Neg_InvalidInt64; const uint64 NumberConstants::k_PosInf; @@ -56,6 +57,12 @@ namespace Js 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F }; + __declspec(align(16)) const BYTE NumberConstants::SgnBitCst[] = + { 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x80 }; + __declspec(align(16)) double const NumberConstants::UIntConvertConst[2] = { 0, 4294967296.000000 }; __declspec(align(16)) float const NumberConstants::MaskNegFloat[] = { -0.0f, -0.0f, -0.0f, -0.0f }; __declspec(align(16)) double const NumberConstants::MaskNegDouble[] = { -0.0, -0.0 }; diff --git a/lib/Common/Common/NumberUtilities.h b/lib/Common/Common/NumberUtilities.h index 4c86118b2ba..d06cebd1aae 100644 --- a/lib/Common/Common/NumberUtilities.h +++ b/lib/Common/Common/NumberUtilities.h @@ -45,6 +45,7 @@ namespace Js static const BYTE AbsDoubleCst[]; static const BYTE AbsFloatCst[]; + static const BYTE SgnBitCst[]; static double const UIntConvertConst[]; static double const MaskNegDouble[]; static float const MaskNegFloat[]; @@ -72,6 +73,7 @@ namespace Js static bool IsSpecial(double value, uint64 nSpecial); static uint64 ToSpecial(double value); static uint32 ToSpecial(float value); + static float ReinterpretBits(int value); // Convert a given UINT16 into its corresponding string. // outBufferSize is in WCHAR elements (and used only for ASSERTs) diff --git a/lib/Common/Common/NumberUtilities.inl b/lib/Common/Common/NumberUtilities.inl index 3073c9c7720..2ff66d3cdd7 100644 --- a/lib/Common/Common/NumberUtilities.inl +++ b/lib/Common/Common/NumberUtilities.inl @@ -167,6 +167,11 @@ namespace Js return *(reinterpret_cast(&value)); } + NUMBER_UTIL_INLINE float NumberUtilities::ReinterpretBits(int value) + { + return *(reinterpret_cast(&value)); + } + NUMBER_UTIL_INLINE bool NumberUtilities::IsFloat32NegZero(float value) { uint32 nCompare = ToSpecial(value); diff --git a/lib/Common/Common/NumberUtilitiesBase.h b/lib/Common/Common/NumberUtilitiesBase.h index ba9a6c0adac..d4bbcf9addd 100644 --- a/lib/Common/Common/NumberUtilitiesBase.h +++ b/lib/Common/Common/NumberUtilitiesBase.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- ////////////////////////////////////////////////////////// @@ -13,6 +13,7 @@ namespace Js { public: static const UINT64 k_Nan = 0xFFF8000000000000ull; + static const UINT32 k_Nan32 = 0x7FFF8000ul; }; class NumberUtilitiesBase diff --git a/lib/Common/Common/NumberUtilities_strtod.cpp b/lib/Common/Common/NumberUtilities_strtod.cpp index b28f5b8934e..9efd252c4aa 100644 --- a/lib/Common/Common/NumberUtilities_strtod.cpp +++ b/lib/Common/Common/NumberUtilities_strtod.cpp @@ -2068,25 +2068,23 @@ static int FormatDigitsFixed(byte *pbSrc, byte *pbLim, int wExp10, int nFraction return n; } -__success(return <= cchDst) +_Success_(return <= cchDst) +// The return value is not the number of elements set in pchDst in the 'failure' case. +// We need to suppress 6101 as it expects us to return 0 in that case. +#pragma prefast(suppress:6101) static int FormatDigitsExponential( - byte * pbSrc, - byte * pbLim, - int wExp10, - int nFractionDigits, - __out_ecount_part(cchDst,return) char16 * pchDst, - int cchDst - ) + _In_reads_bytes_(pbLim - pbSrc) byte * pbSrc, + _In_ byte * pbLim, + _In_range_(0, 1000) int wExp10, + int nFractionDigits, + _Out_writes_to_(cchDst, return) char16 * pchDst, + int cchDst) { AnalysisAssert(pbLim > pbSrc); Assert(pbLim - pbSrc <= kcbMaxRgb); AssertArrMem(pbSrc, pbLim - pbSrc); AssertArrMem(pchDst, cchDst); - AnalysisAssert(wExp10 < 1000); - - __analysis_assume(pbLim > pbSrc); - __analysis_assume(pbLim - pbSrc <= kcbMaxRgb); - __analysis_assume(wExp10 < 1000); + Assert(wExp10 < 1000); int n = 1; // first digit @@ -2158,7 +2156,6 @@ static int FormatDigitsExponential( *pchDst++ = 'e'; if (--wExp10 < 0) { -#pragma prefast(suppress:26014, "We have calculate the check the buffer size above already") *pchDst++ = '-'; wExp10 = -wExp10; } diff --git a/lib/Common/CommonDefines.h b/lib/Common/CommonDefines.h index 90d36a8081d..008ed9168ac 100644 --- a/lib/Common/CommonDefines.h +++ b/lib/Common/CommonDefines.h @@ -170,9 +170,6 @@ #define DYNAMIC_INTERPRETER_THUNK 0 #define DISABLE_DYNAMIC_PROFILE_DEFER_PARSE #define ENABLE_COPYONACCESS_ARRAY 0 - -// Used to temporarily disable ASMjs related code to get nonative compiling -#define TEMP_DISABLE_ASMJS #else // By default, enable the JIT #define ENABLE_NATIVE_CODEGEN 1 @@ -584,10 +581,13 @@ #endif #endif -#if defined(_M_IX86) || defined(_M_X64) -#ifndef TEMP_DISABLE_ASMJS +#if (defined(_M_IX86) || defined(_M_X64)) && !defined(DISABLE_JIT) #define ASMJS_PLAT #endif + +#if defined(ASMJS_PLAT) && defined(ENABLE_DEBUG_CONFIG_OPTIONS) && defined(_WIN32) +// Enable WebAssembly only in debug and test build for the time being +#define ENABLE_WASM #endif #if _M_IX86 diff --git a/lib/Common/ConfigFlagsList.h b/lib/Common/ConfigFlagsList.h index 5613f43ec8c..59c3a4dc4c9 100644 --- a/lib/Common/ConfigFlagsList.h +++ b/lib/Common/ConfigFlagsList.h @@ -31,6 +31,15 @@ PHASE(All) PHASE(Delay) PHASE(Speculation) PHASE(GatherCodeGenData) + PHASE(Wasm) + PHASE(WasmBytecode) + PHASE(WasmParser) + PHASE(WasmReader) + PHASE(WasmSection) + PHASE(WasmLEB128) + PHASE(WasmFunctionBody) + PHASE(WasmLazyTrap) + PHASE(WasmDeferred) PHASE(Asmjs) PHASE(AsmjsTmpRegisterAllocation) PHASE(AsmjsEncoder) @@ -571,7 +580,12 @@ PHASE(All) #define DEFAULT_CONFIG_ES7TrailingComma (true) #define DEFAULT_CONFIG_ES7ValuesEntries (true) #define DEFAULT_CONFIG_ESObjectGetOwnPropertyDescriptors (true) + +#ifdef COMPILE_DISABLE_ESSharedArrayBuffer +#define DEFAULT_CONFIG_ESSharedArrayBuffer (false) +#else #define DEFAULT_CONFIG_ESSharedArrayBuffer (false) +#endif #define DEFAULT_CONFIG_ES6Verbose (false) #define DEFAULT_CONFIG_ES6All (false) // ES6 DEFAULT BEHAVIOR @@ -647,6 +661,7 @@ PHASE(All) #define DEFAULT_CONFIG_DumpHeap (false) #define DEFAULT_CONFIG_PerfHintLevel (1) #define DEFAULT_CONFIG_OOPJITMissingOpts (true) +#define DEFAULT_CONFIG_OOPCFGRegistration (true) #define DEFAULT_CONFIG_FailFastIfDisconnectedDelegate (false) @@ -786,7 +801,7 @@ PHASE(All) // Release flags with parent and acronym #ifndef FLAGPRA #define FLAGPRA(Type, ParentName, Name, Acronym, String, Default) \ - FLAGPR(Type, ParentName, Name, String, Default) \ + FLAG_REGOVR_EXP(Type, Name, String, Default, ParentName, FALSE) \ FLAGNR(Type, Acronym, String, Default) #endif @@ -1018,6 +1033,10 @@ FLAGPR (Boolean, ES6, ES6Verbose , "Enable ES6 verbose tra FLAGPR_REGOVR_EXP(Boolean, ES6, ArrayBufferTransfer , "Enable ArrayBuffer.transfer" , DEFAULT_CONFIG_ArrayBufferTransfer) FLAGPR (Boolean, ES6, ESObjectGetOwnPropertyDescriptors, "Enable Object.getOwnPropertyDescriptors" , DEFAULT_CONFIG_ESObjectGetOwnPropertyDescriptors) + +#ifndef COMPILE_DISABLE_ESSharedArrayBuffer + #define COMPILE_DISABLE_ESSharedArrayBuffer 0 +#endif FLAGPRA (Boolean, ES6, ESSharedArrayBuffer , sab , "Enable SharedArrayBuffer" , DEFAULT_CONFIG_ESSharedArrayBuffer) // /ES6 (BLUE+1) features/flags @@ -1193,6 +1212,7 @@ FLAGNR(Number, FuncObjectInlineCacheThreshold , "Maximum number of inline cach FLAGNR(Boolean, NoDeferParse , "Disable deferred parsing", false) FLAGNR(Boolean, NoLogo , "No logo, which we don't display anyways", false) FLAGNR(Boolean, OOPJITMissingOpts , "Use optimizations that are missing from OOP JIT", DEFAULT_CONFIG_OOPJITMissingOpts) +FLAGNR(Boolean, OOPCFGRegistration , "Do CFG registration OOP (under OOP JIT)", DEFAULT_CONFIG_OOPCFGRegistration) #ifdef _ARM64_ FLAGR (Boolean, NoNative , "Disable native codegen", true) #else @@ -1470,6 +1490,8 @@ FLAGNR(Boolean, CFG, "Force enable CFG on jshost. version in the jshost's manife FLAGNR(Number, SimulatePolyCacheWithOneTypeForInlineCacheIndex, "Use with SimulatePolyCacheWithOneTypeForFunction to simulate creating a polymorphic inline cache containing only one type due to a collision, for testing ObjTypeSpec", -1) #endif +FLAGR(Number, JITServerIdleTimeout, "Idle timeout in seconds to do the cleanup in JIT server", 10) +FLAGR(Number, JITServerMaxInactivePageAllocatorCount, "Max inactive page allocators to keep before schedule a cleanup", 10) #undef FLAG_REGOVR_EXP #undef FLAG_REGOVR_ASMJS diff --git a/lib/Common/Core/SysInfo.cpp b/lib/Common/Core/SysInfo.cpp index 08f484f6431..351092bb004 100644 --- a/lib/Common/Core/SysInfo.cpp +++ b/lib/Common/Core/SysInfo.cpp @@ -245,6 +245,13 @@ AutoSystemInfo::SSE4_1Available() const return VirtualSseAvailable(4) && (CPUInfo[2] & (0x1 << 19)); } +BOOL +AutoSystemInfo::SSE4_2Available() const +{ + Assert(initialized); + return VirtualSseAvailable(4) && (CPUInfo[2] & (0x1 << 20)); +} + BOOL AutoSystemInfo::PopCntAvailable() const { @@ -262,6 +269,16 @@ AutoSystemInfo::LZCntAvailable() const return VirtualSseAvailable(4) && (CPUInfo[2] & (1 << 5)); } +BOOL +AutoSystemInfo::TZCntAvailable() const +{ + Assert(initialized); + int CPUInfo[4]; + get_cpuid(CPUInfo, 7); + + return VirtualSseAvailable(4) && (CPUInfo[1] & (1 << 3)); +} + bool AutoSystemInfo::IsAtomPlatform() const { diff --git a/lib/Common/Core/SysInfo.h b/lib/Common/Core/SysInfo.h index 51689b1e55f..7d596411873 100644 --- a/lib/Common/Core/SysInfo.h +++ b/lib/Common/Core/SysInfo.h @@ -27,8 +27,10 @@ class AutoSystemInfo : public SYSTEM_INFO #if defined(_M_IX86) || defined(_M_X64) BOOL SSE3Available() const; BOOL SSE4_1Available() const; + BOOL SSE4_2Available() const; BOOL PopCntAvailable() const; BOOL LZCntAvailable() const; + BOOL TZCntAvailable() const; bool IsAtomPlatform() const; #endif bool IsLowMemoryProcess(); diff --git a/lib/Common/DataStructures/GrowingArray.h b/lib/Common/DataStructures/GrowingArray.h index 4eb868a70ba..c4c3b476fbe 100644 --- a/lib/Common/DataStructures/GrowingArray.h +++ b/lib/Common/DataStructures/GrowingArray.h @@ -38,11 +38,11 @@ namespace JsUtil } } - TValue ItemInBuffer(uint32 index) + TValue ItemInBuffer(uint32 index) const { if (index >= count) { - return 0; + return (TValue)0; } return buffer[index]; diff --git a/lib/Common/DataStructures/SparseBitVector.h b/lib/Common/DataStructures/SparseBitVector.h index 43f6b554a32..4533cc1e997 100644 --- a/lib/Common/DataStructures/SparseBitVector.h +++ b/lib/Common/DataStructures/SparseBitVector.h @@ -4,11 +4,7 @@ //------------------------------------------------------------------------------------------------------- #pragma once -#if defined(_M_ARM64) || defined(_M_X64) -typedef BVUnit32 SparseBVUnit; -#else typedef BVUnit64 SparseBVUnit; -#endif #define FOREACH_BITSET_IN_SPARSEBV(index, bv) \ { \ @@ -64,15 +60,8 @@ typedef BVUnit64 SparseBVUnit; struct BVSparseNode { BVIndex startIndex; -#if defined(_M_ARM64) || defined(_M_X64) - //64-bit: the order is changed to make sure it fits in 16 bytes - SparseBVUnit data; - BVSparseNode * next; -#else //_M_IX86 and _M_ARM32 BVSparseNode * next; SparseBVUnit data; -#endif - BVSparseNode(BVIndex beginIndex, BVSparseNode * nextNode); @@ -91,7 +80,11 @@ struct BVSparseNode #endif }; -CompileAssert(sizeof(BVSparseNode) == 16); // Performance assert, BVSparseNode is heavily used in the backend, do perf measurement before changing this. +#if defined(_M_ARM64) || defined(_M_X64) +CompileAssert(sizeof(BVSparseNode) == 24); // Performance assert, BVSparseNode is heavily used in the backend, do perf measurement before changing this. +#else +CompileAssert(sizeof(BVSparseNode) == 16); +#endif template class BVSparse diff --git a/lib/Common/Exceptions/ReportError.cpp b/lib/Common/Exceptions/ReportError.cpp index c1263e57e40..1b738cbd361 100644 --- a/lib/Common/Exceptions/ReportError.cpp +++ b/lib/Common/Exceptions/ReportError.cpp @@ -132,4 +132,10 @@ _NOINLINE void UnexpectedExceptionHandling_fatal_error(EXCEPTION_POINTERS * orig ReportFatalException(NULL, E_UNEXPECTED, Fatal_UnexpectedExceptionHandling, scenario); } +_NOINLINE void RpcFailure_fatal_error(HRESULT hr) +{ + int scenario = 8; + ReportFatalException(NULL, hr, Fatal_RpcFailure, scenario); +} + #pragma optimize("",on) diff --git a/lib/Common/Exceptions/ReportError.h b/lib/Common/Exceptions/ReportError.h index e5a30ba2ed8..1f310968f61 100644 --- a/lib/Common/Exceptions/ReportError.h +++ b/lib/Common/Exceptions/ReportError.h @@ -22,7 +22,8 @@ enum ErrorReason Fatal_Recycler_MemoryCorruption = 14, Fatal_Debugger_AttachDetach_Failure = 15, Fatal_EntryExitRecordCorruption = 16, - Fatal_UnexpectedExceptionHandling = 17 + Fatal_UnexpectedExceptionHandling = 17, + Fatal_RpcFailure = 18 }; extern "C" void ReportFatalException( @@ -65,6 +66,7 @@ void LargeHeapBlock_Metadata_Corrupted( void FromDOM_NoScriptScope_fatal_error(); void Debugger_AttachDetach_fatal_error(HRESULT hr); +void RpcFailure_fatal_error(HRESULT hr); #ifndef DISABLE_SEH // RtlReportException is available on Vista and up, but we cannot use it for OOB release. diff --git a/lib/Common/Memory/ArenaAllocator.cpp b/lib/Common/Memory/ArenaAllocator.cpp index b59938a5865..ef27f148ecb 100644 --- a/lib/Common/Memory/ArenaAllocator.cpp +++ b/lib/Common/Memory/ArenaAllocator.cpp @@ -166,7 +166,6 @@ ArenaAllocatorBase 0) + { + if (byteCount % 2 != 0) + { + localBuffer[(byteCount - 1) % bufferSize] = 0; + } + if (!WriteProcessMemory(processHandle, buffer, localBuffer, byteCount % bufferSize, NULL)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(processHandle); + } } - HeapDeleteArray(byteCount, writeBuffer); } #elif defined(_M_ARM64) diff --git a/lib/Common/Memory/MemUtils.cpp b/lib/Common/Memory/MemUtils.cpp index 16369770c2d..0c8d6b5f14d 100644 --- a/lib/Common/Memory/MemUtils.cpp +++ b/lib/Common/Memory/MemUtils.cpp @@ -8,25 +8,33 @@ void Memory::ChakraMemSet(_In_ void *dst, int val, size_t sizeInBytes, HANDLE processHandle) { - const bool isLocalProc = processHandle == GetCurrentProcess(); - byte * writeBuffer; - - if (isLocalProc) + byte* dest = (byte*)dst; + if (processHandle == GetCurrentProcess()) { - writeBuffer = (byte*)dst; + memset(dest, val, sizeInBytes); } else { - writeBuffer = HeapNewArray(byte, sizeInBytes); - } - memset(writeBuffer, val, sizeInBytes); - if (!isLocalProc) - { - if (!WriteProcessMemory(processHandle, dst, writeBuffer, sizeInBytes, NULL)) + const size_t bufferSize = 0x1000; + byte writeBuffer[bufferSize]; + memset(writeBuffer, val, bufferSize < sizeInBytes ? bufferSize : sizeInBytes); + + for (size_t i = 0; i < sizeInBytes / bufferSize; i++) + { + if (!WriteProcessMemory(processHandle, dest, writeBuffer, bufferSize, NULL)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(processHandle); + } + dest += bufferSize; + } + + if (sizeInBytes % bufferSize > 0) { - MemoryOperationLastError::CheckProcessAndThrowFatalError(processHandle); + if (!WriteProcessMemory(processHandle, dest, writeBuffer, sizeInBytes%bufferSize, NULL)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(processHandle); + } } - HeapDeleteArray(sizeInBytes, writeBuffer); } } diff --git a/lib/Common/Memory/Recycler.cpp b/lib/Common/Memory/Recycler.cpp index 7ff804e798b..3c2ac3a5a57 100644 --- a/lib/Common/Memory/Recycler.cpp +++ b/lib/Common/Memory/Recycler.cpp @@ -242,7 +242,9 @@ Recycler::Recycler(AllocationPolicyManager * policyManager, IdleDecommitPageAllo #ifdef HEAP_ENUMERATION_VALIDATION ,pfPostHeapEnumScanCallback(nullptr) #endif +#ifdef NTBUILD , telemetryBlock(&localTelemetryBlock) +#endif #ifdef ENABLE_JS_ETW ,bulkFreeMemoryWrittenCount(0) #endif @@ -321,7 +323,9 @@ Recycler::Recycler(AllocationPolicyManager * policyManager, IdleDecommitPageAllo this->inDetachProcess = false; #endif +#ifdef NTBUILD memset(&localTelemetryBlock, 0, sizeof(localTelemetryBlock)); +#endif #ifdef ENABLE_DEBUG_CONFIG_OPTIONS // recycler requires at least Recycler::PrimaryMarkStackReservedPageCount to function properly for the main mark context @@ -3426,8 +3430,10 @@ Recycler::Collect() { RECORD_TIMESTAMP(initialCollectionStartTime); +#ifdef NTBUILD this->telemetryBlock->initialCollectionStartProcessUsedBytes = PageAllocator::GetProcessUsedBytes(); this->telemetryBlock->exhaustiveRepeatedCount = 0; +#endif return DoCollectWrapped(finalFlags); } @@ -3554,7 +3560,9 @@ Recycler::DoCollect(CollectionFlags flags) { INC_TIMESTAMP_FIELD(exhaustiveRepeatedCount); RECORD_TIMESTAMP(currentCollectionStartTime); +#ifdef NTBUILD this->telemetryBlock->currentCollectionStartProcessUsedBytes = PageAllocator::GetProcessUsedBytes(); +#endif #if ENABLE_CONCURRENT_GC // DisposeObject may call script again and start another GC, so we may still be in concurrent GC state @@ -6910,7 +6918,7 @@ Recycler::FillCheckPad(void * address, size_t size, size_t alignedAllocSize, boo } } -void +void Recycler::FillPadNoCheck(void * address, size_t size, size_t alignedAllocSize, bool objectAlreadyInitialized) { // Ignore the first word @@ -8187,4 +8195,3 @@ RecyclerHeapObjectInfo::GetSize() const } template char* Recycler::AllocWithAttributesInlined<(Memory::ObjectInfoBits)32, false>(size_t); - diff --git a/lib/Common/Memory/Recycler.h b/lib/Common/Memory/Recycler.h index ba9f6e816b2..33e142146f2 100644 --- a/lib/Common/Memory/Recycler.h +++ b/lib/Common/Memory/Recycler.h @@ -1031,9 +1031,10 @@ class Recycler #if DBG || defined(RECYCLER_STATS) bool isForceSweeping; #endif +#ifdef NTBUILD RecyclerWatsonTelemetryBlock localTelemetryBlock; RecyclerWatsonTelemetryBlock * telemetryBlock; - +#endif #ifdef RECYCLER_STATS RecyclerCollectionStats collectionStats; void PrintHeapBlockStats(char16 const * name, HeapBlock::HeapBlockType type); @@ -1094,7 +1095,9 @@ class Recycler void LogMemProtectHeapSize(bool fromGC); char* Realloc(void* buffer, DECLSPEC_GUARD_OVERFLOW size_t existingBytes, DECLSPEC_GUARD_OVERFLOW size_t requestedBytes, bool truncate = true); +#ifdef NTBUILD void SetTelemetryBlock(RecyclerWatsonTelemetryBlock * telemetryBlock) { this->telemetryBlock = telemetryBlock; } +#endif void Prime(); diff --git a/lib/Common/Memory/RecyclerWatsonTelemetry.h b/lib/Common/Memory/RecyclerWatsonTelemetry.h index a866584cc63..0fadfa0e0b9 100644 --- a/lib/Common/Memory/RecyclerWatsonTelemetry.h +++ b/lib/Common/Memory/RecyclerWatsonTelemetry.h @@ -2,6 +2,13 @@ // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- +#ifndef NTBUILD + +#define RECORD_TIMESTAMP(Field) +#define INC_TIMESTAMP_FIELD(Field) +#define AUTO_TIMESTAMP(Field) + +#else // CHAKRA_FULL namespace Memory { /* @@ -46,3 +53,4 @@ namespace Memory DWORD exhaustiveRepeatedCount; }; }; +#endif diff --git a/lib/Common/Memory/VirtualAllocWrapper.cpp b/lib/Common/Memory/VirtualAllocWrapper.cpp index c88887b528c..909711d4b1b 100644 --- a/lib/Common/Memory/VirtualAllocWrapper.cpp +++ b/lib/Common/Memory/VirtualAllocWrapper.cpp @@ -73,7 +73,11 @@ LPVOID VirtualAllocWrapper::Alloc(LPVOID lpAddress, size_t dwSize, DWORD allocat #endif { address = VirtualAllocEx(process, lpAddress, dwSize, allocationType, protectFlags); - Assert(process == GetCurrentProcess()); + if (address == nullptr) + { + MemoryOperationLastError::RecordLastError(); + return nullptr; + } } return address; diff --git a/lib/JITClient/JITManager.cpp b/lib/JITClient/JITManager.cpp index 1e293eb8c00..2b24ec2859a 100644 --- a/lib/JITClient/JITManager.cpp +++ b/lib/JITClient/JITManager.cpp @@ -37,7 +37,7 @@ JITManager::JITManager() : JITManager::~JITManager() { - if(m_targetHandle) + if (m_targetHandle) { CleanupProcess(); } @@ -255,37 +255,47 @@ HRESULT JITManager::CleanupProcess() { Assert(JITManager::IsOOPJITEnabled()); + Assert(m_targetHandle != nullptr); HRESULT hr = E_FAIL; RpcTryExcept { hr = ClientCleanupProcess(m_rpcBindingHandle, (intptr_t)m_targetHandle); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } RpcEndExcept; + m_targetHandle = nullptr; + return hr; } HRESULT JITManager::Shutdown() { + // this is special case of shutdown called when runtime process is a parent of the server process + // used for console host type scenarios HRESULT hr = S_OK; Assert(IsOOPJITEnabled()); + Assert(m_rpcBindingHandle != nullptr); + + CleanupProcess(); RpcTryExcept { ClientShutdown(m_rpcBindingHandle); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } RpcEndExcept; + m_rpcBindingHandle = nullptr; + return hr; } @@ -302,7 +312,7 @@ JITManager::InitializeThreadContext( { hr = ClientInitializeThreadContext(m_rpcBindingHandle, data, threadContextInfoAddress, prereservedRegionAddr); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -322,7 +332,7 @@ JITManager::CleanupThreadContext( { hr = ClientCleanupThreadContext(m_rpcBindingHandle, threadContextInfoAddress); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -344,7 +354,7 @@ JITManager::AddDOMFastPathHelper( { hr = ClientAddDOMFastPathHelper(m_rpcBindingHandle, scriptContextInfoAddress, funcInfoAddr, helper); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -363,14 +373,57 @@ JITManager::SetIsPRNGSeeded( { hr = ClientSetIsPRNGSeeded(m_rpcBindingHandle, scriptContextInfoAddress, value); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + { + hr = HRESULT_FROM_WIN32(RpcExceptionCode()); + } + RpcEndExcept; + + return hr; + +} + +HRESULT +JITManager::DecommitInterpreterBufferManager( + __in intptr_t scriptContextInfoAddress, + __in boolean asmJsThunk) +{ + Assert(IsOOPJITEnabled()); + + HRESULT hr = E_FAIL; + RpcTryExcept + { + hr = ClientDecommitInterpreterBufferManager(m_rpcBindingHandle, scriptContextInfoAddress, asmJsThunk); + } + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } RpcEndExcept; return hr; +} + +HRESULT +JITManager::NewInterpreterThunkBlock( + __in intptr_t scriptContextInfoAddress, + __in boolean asmJsThunk, + __out InterpreterThunkInfoIDL * thunkInfo) +{ + Assert(IsOOPJITEnabled()); + + HRESULT hr = E_FAIL; + RpcTryExcept + { + hr = ClientNewInterpreterThunkBlock(m_rpcBindingHandle, scriptContextInfoAddress, asmJsThunk, thunkInfo); + } + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + { + hr = HRESULT_FROM_WIN32(RpcExceptionCode()); + } + RpcEndExcept; + return hr; } HRESULT @@ -386,7 +439,7 @@ JITManager::AddModuleRecordInfo( { hr = ClientAddModuleRecordInfo(m_rpcBindingHandle, scriptContextInfoAddress, moduleId, localExportSlotsAddr); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -409,7 +462,7 @@ JITManager::SetWellKnownHostTypeId( { hr = ClientSetWellKnownHostTypeId(m_rpcBindingHandle, threadContextRoot, typeId); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -431,7 +484,7 @@ JITManager::UpdatePropertyRecordMap( { hr = ClientUpdatePropertyRecordMap(m_rpcBindingHandle, threadContextInfoAddress, updatedProps); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -453,7 +506,7 @@ JITManager::InitializeScriptContext( { hr = ClientInitializeScriptContext(m_rpcBindingHandle, data, threadContextInfoAddress, scriptContextInfoAddress); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -473,7 +526,7 @@ JITManager::CleanupScriptContext( { hr = ClientCleanupScriptContext(m_rpcBindingHandle, scriptContextInfoAddress); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -493,7 +546,7 @@ JITManager::CloseScriptContext( { hr = ClientCloseScriptContext(m_rpcBindingHandle, scriptContextInfoAddress); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -513,6 +566,30 @@ JITManager::FreeAllocation( RpcTryExcept { hr = ClientFreeAllocation(m_rpcBindingHandle, threadContextInfoAddress, address); + } + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + { + hr = HRESULT_FROM_WIN32(RpcExceptionCode()); + } + RpcEndExcept; + + return hr; +} + +#if DBG +HRESULT +JITManager::IsInterpreterThunkAddr( + __in intptr_t scriptContextInfoAddress, + __in intptr_t address, + __in boolean asmjsThunk, + __out boolean * result) +{ + Assert(IsOOPJITEnabled()); + + HRESULT hr = E_FAIL; + RpcTryExcept + { + hr = ClientIsInterpreterThunkAddr(m_rpcBindingHandle, scriptContextInfoAddress, address, asmjsThunk, result); } RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { @@ -522,6 +599,7 @@ JITManager::FreeAllocation( return hr; } +#endif HRESULT JITManager::IsNativeAddr( @@ -536,7 +614,7 @@ JITManager::IsNativeAddr( { hr = ClientIsNativeAddr(m_rpcBindingHandle, threadContextInfoAddress, address, result); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } @@ -558,7 +636,7 @@ JITManager::RemoteCodeGenCall( { hr = ClientRemoteCodeGen(m_rpcBindingHandle, scriptContextInfoAddress, workItemData, jitData); } - RpcExcept(RpcExceptionFilter(RpcExceptionCode())) + RpcExcept(RpcExceptionFilter(RpcExceptionCode())) { hr = HRESULT_FROM_WIN32(RpcExceptionCode()); } diff --git a/lib/JITClient/JITManager.h b/lib/JITClient/JITManager.h index 55d7f3d737b..85233c8c677 100644 --- a/lib/JITClient/JITManager.h +++ b/lib/JITClient/JITManager.h @@ -33,6 +33,15 @@ class JITManager __in intptr_t threadContextInfoAddress, __in UpdatedPropertysIDL * updatedProps); + HRESULT DecommitInterpreterBufferManager( + __in intptr_t scriptContextInfoAddress, + __in boolean asmJsThunk); + + HRESULT NewInterpreterThunkBlock( + __in intptr_t scriptContextInfoAddress, + __in boolean asmJsThunk, + __out InterpreterThunkInfoIDL * thunkInfo); + HRESULT AddDOMFastPathHelper( __in intptr_t scriptContextInfoAddress, __in intptr_t funcInfoAddr, @@ -78,6 +87,14 @@ class JITManager __in intptr_t scriptContextInfoAddress, __out JITOutputIDL *jitData); +#if DBG + HRESULT IsInterpreterThunkAddr( + __in intptr_t scriptContextInfoAddress, + __in intptr_t address, + __in boolean asmjsThunk, + __out boolean * result); +#endif + HRESULT Shutdown(); diff --git a/lib/JITIDL/ChakraJIT.idl b/lib/JITIDL/ChakraJIT.idl index 08345b0c703..c39d79e4c93 100644 --- a/lib/JITIDL/ChakraJIT.idl +++ b/lib/JITIDL/ChakraJIT.idl @@ -68,6 +68,17 @@ interface IChakraJIT [in] CHAKRA_PTR threadContextInfoAddress, [in] CHAKRA_PTR address); + HRESULT NewInterpreterThunkBlock( + [in] handle_t binding, + [in] CHAKRA_PTR scriptContextInfoAddress, + [in] boolean asmJsThunk, + [out] InterpreterThunkInfoIDL * thunkInfo); + + HRESULT DecommitInterpreterBufferManager( + [in] handle_t binding, + [in] CHAKRA_PTR scriptContextInfoAddress, + [in] boolean asmJsManager); + HRESULT IsNativeAddr( [in] handle_t binding, [in] CHAKRA_PTR threadContextInfoAddress, @@ -85,4 +96,12 @@ interface IChakraJIT [in] CodeGenWorkItemIDL * workItemData, [out] JITOutputIDL * jitData); +#if DBG + HRESULT IsInterpreterThunkAddr( + [in] handle_t binding, + [in] CHAKRA_PTR scriptContextInfoAddress, + [in] CHAKRA_PTR address, + [in] boolean asmjsThunk, + [out] boolean * result); +#endif } diff --git a/lib/JITIDL/JITTypes.h b/lib/JITIDL/JITTypes.h index b8ee5278cb1..364934f4f2d 100644 --- a/lib/JITIDL/JITTypes.h +++ b/lib/JITIDL/JITTypes.h @@ -283,10 +283,6 @@ typedef struct ThreadContextDataIDL CHAKRA_PTR bailOutRegisterSaveSpaceAddr; CHAKRA_PTR disableImplicitFlagsAddr; CHAKRA_PTR implicitCallFlagsAddr; - CHAKRA_PTR debuggingFlagsAddr; - CHAKRA_PTR debugStepTypeAddr; - CHAKRA_PTR debugFrameAddressAddr; - CHAKRA_PTR debugScriptIdWhenSetAddr; CHAKRA_PTR stringReplaceNameAddr; CHAKRA_PTR stringMatchNameAddr; CHAKRA_PTR simdTempAreaBaseAddr; @@ -328,6 +324,10 @@ typedef struct ScriptContextDataIDL CHAKRA_PTR numberAllocatorAddr; CHAKRA_PTR recyclerAddr; CHAKRA_PTR builtinFunctionsBaseAddr; + CHAKRA_PTR debuggingFlagsAddr; + CHAKRA_PTR debugStepTypeAddr; + CHAKRA_PTR debugFrameAddressAddr; + CHAKRA_PTR debugScriptIdWhenSetAddr; } ScriptContextDataIDL; typedef struct SmallSpanSequenceIDL @@ -390,19 +390,6 @@ typedef struct AsmJsDataIDL IDL_DEF([size_is(argCount)]) byte * argTypeArray; } AsmJsDataIDL; -typedef struct PropertyRecordIDL -{ - CHAKRA_PTR vTable; - int pid; - unsigned int hash; - boolean isNumeric; - boolean isBound; - boolean isSymbol; - IDL_PAD1(0) - unsigned int byteCount; - IDL_DEF([size_is(byteCount + sizeof(wchar_t) + (isNumeric ? sizeof(unsigned int) : 0))]) byte buffer[IDL_DEF(*)]; -} PropertyRecordIDL; - typedef struct FunctionJITRuntimeIDL { unsigned int clonedCacheCount; @@ -463,6 +450,7 @@ typedef struct FunctionBodyDataIDL boolean doBackendArgumentsOptimization; boolean isLibraryCode; boolean isAsmJsMode; + boolean isWasmFunction; boolean hasImplicitArgIns; boolean isStrictMode; boolean isEval; @@ -804,7 +792,16 @@ typedef struct JITOutputIDL typedef struct UpdatedPropertysIDL { unsigned int reclaimedPropertyCount; - unsigned int newRecordCount; + unsigned int newPropertyCount; [size_is(reclaimedPropertyCount)] int * reclaimedPropertyIdArray; - [size_is(newRecordCount)] PropertyRecordIDL ** newRecordArray; + [size_is(newPropertyCount)] int * newPropertyIdArray; } UpdatedPropertysIDL; + +typedef struct InterpreterThunkInfoIDL +{ + unsigned int thunkCount; + X64_PAD4(0) + CHAKRA_PTR pdataTableStart; + CHAKRA_PTR epilogEndAddr; + CHAKRA_PTR thunkBlockAddr; +} InterpreterThunkInfoIDL; diff --git a/lib/JITServer/JITServer.cpp b/lib/JITServer/JITServer.cpp index adb0be069fd..62da3177c2d 100644 --- a/lib/JITServer/JITServer.cpp +++ b/lib/JITServer/JITServer.cpp @@ -51,6 +51,7 @@ HRESULT JsInitializeJITServer( { return status; } + status = RpcServerInqBindings(&bindingVector); if (status != RPC_S_OK) { @@ -62,14 +63,20 @@ HRESULT JsInitializeJITServer( bindingVector, &uuidVector, NULL); + if (status != RPC_S_OK) + { + return status; + } - RpcBindingVectorFree(&bindingVector); + status = RpcBindingVectorFree(&bindingVector); if (status != RPC_S_OK) { return status; } + JITManager::GetJITManager()->SetIsJITServer(); + PageAllocatorPool::Initialize(); status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE); @@ -86,6 +93,9 @@ ShutdownCommon() } status = RpcServerUnregisterIf(ServerIChakraJIT_v0_0_s_ifspec, NULL, FALSE); + + ServerContextManager::Shutdown(); + PageAllocatorPool::Shutdown(); return status; } @@ -129,19 +139,20 @@ ServerInitializeThreadContext( /* [out] */ __RPC__out intptr_t *threadContextRoot, /* [out] */ __RPC__out intptr_t *prereservedRegionAddr) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - - ServerThreadContext * contextInfo = HeapNewNoThrow(ServerThreadContext, threadContextData); - if (contextInfo == nullptr) + ServerThreadContext * contextInfo = nullptr; + try + { + AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory)); + contextInfo = HeapNew(ServerThreadContext, threadContextData); + ServerContextManager::RegisterThreadContext(contextInfo); + } + catch (Js::OutOfMemoryException) { return E_OUTOFMEMORY; } - AutoReleaseContext autoThreadContext(contextInfo); return ServerCallWrapper(contextInfo, [&]()->HRESULT { - ServerContextManager::RegisterThreadContext(contextInfo); - *threadContextRoot = (intptr_t)EncodePointer(contextInfo); *prereservedRegionAddr = (intptr_t)contextInfo->GetPreReservedVirtualAllocator()->EnsurePreReservedRegion(); @@ -154,8 +165,6 @@ ServerCleanupThreadContext( /* [in] */ handle_t binding, /* [in] */ intptr_t threadContextRoot) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - ServerThreadContext * threadContextInfo = (ServerThreadContext*)DecodePointer((void*)threadContextRoot); if (threadContextInfo == nullptr) { @@ -163,13 +172,12 @@ ServerCleanupThreadContext( return RPC_S_INVALID_ARG; } - if (ServerContextManager::IsThreadContextAlive(threadContextInfo)) + return ServerCallWrapper(threadContextInfo, [&]()->HRESULT { - AutoReleaseContext autoThreadContext(threadContextInfo); threadContextInfo->Close(); ServerContextManager::UnRegisterThreadContext(threadContextInfo); - } - return S_OK; + return S_OK; + }); } HRESULT @@ -178,8 +186,6 @@ ServerUpdatePropertyRecordMap( /* [in] */ intptr_t threadContextInfoAddress, /* [in] */ __RPC__in UpdatedPropertysIDL * updatedProps) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - ServerThreadContext * threadContextInfo = (ServerThreadContext*)DecodePointer((void*)threadContextInfoAddress); if (threadContextInfo == nullptr) @@ -188,23 +194,16 @@ ServerUpdatePropertyRecordMap( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsThreadContextAlive(threadContextInfo)) - { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoThreadContext(threadContextInfo); return ServerCallWrapper(threadContextInfo, [&]()->HRESULT { for (uint i = 0; i < updatedProps->reclaimedPropertyCount; ++i) { - threadContextInfo->RemoveFromPropertyMap((Js::PropertyId)updatedProps->reclaimedPropertyIdArray[i]); + threadContextInfo->RemoveFromNumericPropertySet((Js::PropertyId)updatedProps->reclaimedPropertyIdArray[i]); } - for (uint i = 0; i < updatedProps->newRecordCount; ++i) + for (uint i = 0; i < updatedProps->newPropertyCount; ++i) { - threadContextInfo->AddToPropertyMap((Js::PropertyRecord *)updatedProps->newRecordArray[i]); + threadContextInfo->AddToNumericPropertySet((Js::PropertyId)updatedProps->newPropertyIdArray[i]); } return S_OK; @@ -218,8 +217,6 @@ ServerAddDOMFastPathHelper( /* [in] */ intptr_t funcInfoAddr, /* [in] */ int helper) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - ServerScriptContext * scriptContextInfo = (ServerScriptContext*)DecodePointer((void*)scriptContextRoot); if (scriptContextInfo == nullptr) @@ -228,13 +225,6 @@ ServerAddDOMFastPathHelper( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsScriptContextAlive(scriptContextInfo)) - { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoScriptContext(scriptContextInfo); return ServerCallWrapper(scriptContextInfo, [&]()->HRESULT { scriptContextInfo->AddToDOMFastPathHelperMap(funcInfoAddr, (IR::JnHelperMethod)helper); @@ -249,8 +239,6 @@ ServerAddModuleRecordInfo( /* [in] */ unsigned int moduleId, /* [in] */ intptr_t localExportSlotsAddr) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - ServerScriptContext * serverScriptContext = (ServerScriptContext*)DecodePointer((void*)scriptContextInfoAddress); if (serverScriptContext == nullptr) { @@ -258,13 +246,6 @@ ServerAddModuleRecordInfo( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsScriptContextAlive(serverScriptContext)) - { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoScriptContext(serverScriptContext); return ServerCallWrapper(serverScriptContext, [&]()->HRESULT { serverScriptContext->AddModuleRecordInfo(moduleId, localExportSlotsAddr); @@ -287,16 +268,11 @@ ServerSetWellKnownHostTypeId( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsThreadContextAlive(threadContextInfo)) + return ServerCallWrapper(threadContextInfo, [&]()->HRESULT { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoThreadContext(threadContextInfo); - threadContextInfo->SetWellKnownHostTypeId((Js::TypeId)typeId); - - return S_OK; + threadContextInfo->SetWellKnownHostTypeId((Js::TypeId)typeId); + return S_OK; + }); } HRESULT @@ -306,30 +282,19 @@ ServerInitializeScriptContext( /* [in] */ intptr_t threadContextInfoAddress, /* [out] */ __RPC__out intptr_t * scriptContextInfoAddress) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - ServerThreadContext * threadContextInfo = (ServerThreadContext*)DecodePointer((void*)threadContextInfoAddress); + *scriptContextInfoAddress = 0; if (threadContextInfo == nullptr) { Assert(false); - *scriptContextInfoAddress = 0; return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsThreadContextAlive(threadContextInfo)) - { - Assert(false); - *scriptContextInfoAddress = 0; - return E_ACCESSDENIED; - } - return ServerCallWrapper(threadContextInfo, [&]()->HRESULT { ServerScriptContext * contextInfo = HeapNew(ServerScriptContext, scriptContextData, threadContextInfo); - ServerContextManager::RegisterScriptContext(contextInfo); - *scriptContextInfoAddress = (intptr_t)EncodePointer(contextInfo); #if !FLOATVAR @@ -341,7 +306,7 @@ ServerInitializeScriptContext( } HRESULT -ServerCloseScriptContext( +ServerCleanupScriptContext( /* [in] */ handle_t binding, /* [in] */ intptr_t scriptContextRoot) { @@ -353,10 +318,27 @@ ServerCloseScriptContext( return RPC_S_INVALID_ARG; } - if (ServerContextManager::IsScriptContextAlive(scriptContextInfo)) + Assert(scriptContextInfo->IsClosed()); + HeapDelete(scriptContextInfo); + + return S_OK; +} + +HRESULT +ServerCloseScriptContext( + /* [in] */ handle_t binding, + /* [in] */ intptr_t scriptContextRoot) +{ + ServerScriptContext * scriptContextInfo = (ServerScriptContext*)DecodePointer((void*)scriptContextRoot); + + if (scriptContextInfo == nullptr) { - AutoReleaseContext autoScriptContext(scriptContextInfo); + Assert(false); + return RPC_S_INVALID_ARG; + } + return ServerCallWrapper(scriptContextInfo, [&]()->HRESULT + { #ifdef PROFILE_EXEC auto profiler = scriptContextInfo->GetCodeGenProfiler(); if (profiler && profiler->IsInitialized()) @@ -364,35 +346,110 @@ ServerCloseScriptContext( profiler->ProfilePrint(Js::Configuration::Global.flags.Profile.GetFirstPhase()); } #endif - scriptContextInfo->Close(); ServerContextManager::UnRegisterScriptContext(scriptContextInfo); - } - return S_OK; + return S_OK; + }); } HRESULT -ServerCleanupScriptContext( +ServerDecommitInterpreterBufferManager( /* [in] */ handle_t binding, - /* [in] */ intptr_t scriptContextRoot) + /* [in] */ intptr_t scriptContextInfoAddress, + /* [in] */ boolean asmJsManager) { - ServerScriptContext * scriptContextInfo = (ServerScriptContext*)DecodePointer((void*)scriptContextRoot); + ServerScriptContext * scriptContext = (ServerScriptContext *)DecodePointer((void*)scriptContextInfoAddress); - if (scriptContextInfo == nullptr) + if (scriptContext == nullptr) { Assert(false); return RPC_S_INVALID_ARG; } - if (ServerContextManager::IsScriptContextAlive(scriptContextInfo)) + return ServerCallWrapper(scriptContext, [&]()->HRESULT { - AutoReleaseContext autoScriptContext(scriptContextInfo); - scriptContextInfo->Close(); - ServerContextManager::UnRegisterScriptContext(scriptContextInfo); + scriptContext->DecommitEmitBufferManager(asmJsManager != FALSE); + return S_OK; + }); +} + +HRESULT +ServerNewInterpreterThunkBlock( + /* [in] */ handle_t binding, + /* [in] */ intptr_t scriptContextInfo, + /* [in] */ boolean asmJsThunk, + /* [out] */ __RPC__out InterpreterThunkInfoIDL * thunkInfo) +{ + ServerScriptContext * scriptContext = (ServerScriptContext *)DecodePointer((void*)scriptContextInfo); + + memset(thunkInfo, 0, sizeof(InterpreterThunkInfoIDL)); + + if (scriptContext == nullptr) + { + Assert(false); + return RPC_S_INVALID_ARG; } - return S_OK; + return ServerCallWrapper(scriptContext, [&]()->HRESULT + { + const DWORD bufferSize = InterpreterThunkEmitter::BlockSize; + DWORD thunkCount = 0; + +#if PDATA_ENABLED + PRUNTIME_FUNCTION pdataStart; + intptr_t epilogEnd; +#endif + ServerThreadContext * threadContext = scriptContext->GetThreadContext(); + EmitBufferManager<> * emitBufferManager = scriptContext->GetEmitBufferManager(asmJsThunk != FALSE); + + BYTE* remoteBuffer; + EmitBufferAllocation * allocation = emitBufferManager->AllocateBuffer(bufferSize, &remoteBuffer); + + Assert(bufferSize <= 0x1000); // in case this is changed some day we might switch to use other allocator + BYTE localBuffer[bufferSize]; + InterpreterThunkEmitter::FillBuffer( + threadContext, + asmJsThunk != FALSE, + (intptr_t)remoteBuffer, + bufferSize, + localBuffer, +#if PDATA_ENABLED + &pdataStart, + &epilogEnd, +#endif + &thunkCount + ); + + if (!emitBufferManager->ProtectBufferWithExecuteReadWriteForInterpreter(allocation)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(threadContext->GetProcessHandle()); + } + + if (!WriteProcessMemory(threadContext->GetProcessHandle(), remoteBuffer, localBuffer, bufferSize, nullptr)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(threadContext->GetProcessHandle()); + } + + if (!emitBufferManager->CommitReadWriteBufferForInterpreter(allocation, remoteBuffer, bufferSize)) + { + MemoryOperationLastError::CheckProcessAndThrowFatalError(threadContext->GetProcessHandle()); + } + + if(CONFIG_FLAG(OOPCFGRegistration)) + { + threadContext->SetValidCallTargetForCFG(remoteBuffer); + } + + thunkInfo->thunkBlockAddr = (intptr_t)remoteBuffer; + thunkInfo->thunkCount = thunkCount; +#if PDATA_ENABLED + thunkInfo->pdataTableStart = (intptr_t)pdataStart; + thunkInfo->epilogEndAddr = epilogEnd; +#endif + + return S_OK; + }); } HRESULT @@ -401,7 +458,6 @@ ServerFreeAllocation( /* [in] */ intptr_t threadContextInfo, /* [in] */ intptr_t address) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); ServerThreadContext * context = (ServerThreadContext*)DecodePointer((void*)threadContextInfo); if (context == nullptr) @@ -410,45 +466,62 @@ ServerFreeAllocation( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsThreadContextAlive(context)) - { - Assert(false); - return E_ACCESSDENIED; - } - return ServerCallWrapper(context, [&]()->HRESULT { - AutoReleaseContext autoThreadContext(context); - context->SetValidCallTargetForCFG((PVOID)address, false); + if (CONFIG_FLAG(OOPCFGRegistration)) + { + context->SetValidCallTargetForCFG((PVOID)address, false); + } context->GetCodeGenAllocators()->emitBufferManager.FreeAllocation((void*)address); return S_OK; }); } +#if DBG HRESULT -ServerIsNativeAddr( +ServerIsInterpreterThunkAddr( /* [in] */ handle_t binding, - /* [in] */ intptr_t threadContextInfo, + /* [in] */ intptr_t scriptContextInfoAddress, /* [in] */ intptr_t address, + /* [in] */ boolean asmjsThunk, /* [out] */ __RPC__out boolean * result) { - ServerThreadContext * context = (ServerThreadContext*)DecodePointer((void*)threadContextInfo); + ServerScriptContext * context = (ServerScriptContext*)DecodePointer((void*)scriptContextInfoAddress); if (context == nullptr) { *result = false; - Assert(false); return RPC_S_INVALID_ARG; } - - if (!ServerContextManager::IsThreadContextAlive(context)) + EmitBufferManager<> * manager = context->GetEmitBufferManager(asmjsThunk != FALSE); + if (manager == nullptr) { *result = false; + return S_OK; + } + + *result = manager->IsInHeap((void*)address); + + return S_OK; +} +#endif + +HRESULT +ServerIsNativeAddr( + /* [in] */ handle_t binding, + /* [in] */ intptr_t threadContextInfo, + /* [in] */ intptr_t address, + /* [out] */ __RPC__out boolean * result) +{ + ServerThreadContext * context = (ServerThreadContext*)DecodePointer((void*)threadContextInfo); + + *result = false; + if (context == nullptr) + { Assert(false); - return E_ACCESSDENIED; + return RPC_S_INVALID_ARG; } - AutoReleaseContext autoThreadContext(context); return ServerCallWrapper(context, [&]()->HRESULT { PreReservedVirtualAllocWrapper *preReservedVirtualAllocWrapper = context->GetPreReservedVirtualAllocator(); @@ -484,15 +557,11 @@ ServerSetIsPRNGSeeded( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsScriptContextAlive(scriptContextInfo)) + return ServerCallWrapper(scriptContextInfo, [&]()->HRESULT { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoScriptContext(scriptContextInfo); - scriptContextInfo->SetIsPRNGSeeded(value != FALSE); - return S_OK; + scriptContextInfo->SetIsPRNGSeeded(value != FALSE); + return S_OK; + }); } HRESULT @@ -502,12 +571,6 @@ ServerRemoteCodeGen( /* [in] */ __RPC__in CodeGenWorkItemIDL *workItemData, /* [out] */ __RPC__out JITOutputIDL *jitData) { - AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); - LARGE_INTEGER start_time = { 0 }; - if (PHASE_TRACE1(Js::BackEndPhase)) - { - QueryPerformanceCounter(&start_time); - } memset(jitData, 0, sizeof(JITOutputIDL)); ServerScriptContext * scriptContextInfo = (ServerScriptContext*)DecodePointer((void*)scriptContextInfoAddress); @@ -518,20 +581,21 @@ ServerRemoteCodeGen( return RPC_S_INVALID_ARG; } - if (!ServerContextManager::IsScriptContextAlive(scriptContextInfo)) - { - Assert(false); - return E_ACCESSDENIED; - } - - AutoReleaseContext autoScriptContext(scriptContextInfo); - return ServerCallWrapper(scriptContextInfo, [&]() ->HRESULT { + LARGE_INTEGER start_time = { 0 }; + if (PHASE_TRACE1(Js::BackEndPhase)) + { + QueryPerformanceCounter(&start_time); + } + scriptContextInfo->UpdateGlobalObjectThisAddr(workItemData->globalThisAddr); ServerThreadContext * threadContextInfo = scriptContextInfo->GetThreadContext(); - NoRecoverMemoryJitArenaAllocator jitArena(L"JITArena", threadContextInfo->GetPageAllocator(), Js::Throw::OutOfMemory); + AutoReturnPageAllocator autoReturnPageAllocator; + PageAllocator* pageAllocator = autoReturnPageAllocator.GetPageAllocator(); + + NoRecoverMemoryJitArenaAllocator jitArena(L"JITArena", pageAllocator, Js::Throw::OutOfMemory); JITTimeWorkItem * jitWorkItem = Anew(&jitArena, JITTimeWorkItem, workItemData); if (PHASE_VERBOSE_TRACE_RAW(Js::BackEndPhase, jitWorkItem->GetJITTimeInfo()->GetSourceContextId(), jitWorkItem->GetJITTimeInfo()->GetLocalFunctionId())) @@ -552,7 +616,7 @@ ServerRemoteCodeGen( #ifdef PROFILE_EXEC if (profiler && !profiler->IsInitialized()) { - profiler->Initialize(threadContextInfo->GetPageAllocator(), nullptr); + profiler->Initialize(pageAllocator, nullptr); } #endif if (jitWorkItem->GetWorkItemData()->xProcNumberPageSegment) @@ -620,6 +684,11 @@ JsUtil::BaseHashSet ServerContextManager::t JsUtil::BaseHashSet ServerContextManager::scriptContexts(&HeapAllocator::Instance); CriticalSection ServerContextManager::cs; +#ifdef STACK_BACK_TRACE +SList*, NoThrowHeapAllocator> ServerContextManager::ClosedThreadContextList(&NoThrowHeapAllocator::Instance); +SList*, NoThrowHeapAllocator> ServerContextManager::ClosedScriptContextList(&NoThrowHeapAllocator::Instance); +#endif + void ServerContextManager::RegisterThreadContext(ServerThreadContext* threadContext) { AutoCriticalSection autoCS(&cs); @@ -636,21 +705,50 @@ void ServerContextManager::UnRegisterThreadContext(ServerThreadContext* threadCo ServerScriptContext* scriptContext = iter.Current().Key(); if (scriptContext->GetThreadContext() == threadContext) { - scriptContext->Close(); + if (!scriptContext->IsClosed()) + { + scriptContext->Close(); + } iter.RemoveCurrent(); } iter.MoveNext(); } } -bool ServerContextManager::IsThreadContextAlive(ServerThreadContext* threadContext) +void ServerContextManager::CleanUpForProcess(HANDLE hProcess) { + // there might be multiple thread context(webworker) AutoCriticalSection autoCS(&cs); - if (threadContexts.LookupWithKey(threadContext)) + + auto iterScriptCtx = scriptContexts.GetIteratorWithRemovalSupport(); + while (iterScriptCtx.IsValid()) { - return !threadContext->IsClosed(); + ServerScriptContext* scriptContext = iterScriptCtx.Current().Key(); + if (scriptContext->GetThreadContext()->GetProcessHandle() == hProcess) + { + if (!scriptContext->IsClosed()) + { + scriptContext->Close(); + } + iterScriptCtx.RemoveCurrent(); + } + iterScriptCtx.MoveNext(); + } + + auto iterThreadCtx = threadContexts.GetIteratorWithRemovalSupport(); + while (iterThreadCtx.IsValid()) + { + ServerThreadContext* threadContext = iterThreadCtx.Current().Key(); + if (threadContext->GetProcessHandle() == hProcess) + { + if (!threadContext->IsClosed()) + { + threadContext->Close(); + } + iterThreadCtx.RemoveCurrent(); + } + iterThreadCtx.MoveNext(); } - return false; } void ServerContextManager::RegisterScriptContext(ServerScriptContext* scriptContext) @@ -665,16 +763,58 @@ void ServerContextManager::UnRegisterScriptContext(ServerScriptContext* scriptCo scriptContexts.Remove(scriptContext); } -bool ServerContextManager::IsScriptContextAlive(ServerScriptContext* scriptContext) +bool ServerContextManager::CheckLivenessAndAddref(ServerScriptContext* context) +{ + AutoCriticalSection autoCS(&cs); + if (scriptContexts.LookupWithKey(context)) + { + if (!context->IsClosed() && !context->GetThreadContext()->IsClosed()) + { + context->AddRef(); + context->GetThreadContext()->AddRef(); + return true; + } + } + return false; +} +bool ServerContextManager::CheckLivenessAndAddref(ServerThreadContext* context) { AutoCriticalSection autoCS(&cs); - if (scriptContexts.LookupWithKey(scriptContext)) + if (threadContexts.LookupWithKey(context)) { - return !scriptContext->IsClosed(); + if (!context->IsClosed()) + { + context->AddRef(); + return true; + } } return false; } +void ServerContextManager::IdleCleanup() +{ + JsUtil::BaseHashSet clientProcesses(&HeapAllocator::Instance); + { + AutoCriticalSection autoCS(&cs); + threadContexts.Map([&clientProcesses](ServerThreadContext* threadContext) + { + if (!clientProcesses.ContainsKey(threadContext->GetProcessHandle())) + { + clientProcesses.Add(threadContext->GetProcessHandle()); + } + }); + } + + clientProcesses.Map([](HANDLE hProcess) + { + DWORD exitCode = STILL_ACTIVE; + if (!GetExitCodeProcess(hProcess, &exitCode) && exitCode != STILL_ACTIVE) + { + CleanUpForProcess(hProcess); + } + }); +} + template HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn) { @@ -682,7 +822,26 @@ HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn) HRESULT hr = S_OK; try { + AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); + AutoReleaseThreadContext autoThreadContext(threadContextInfo); hr = fn(); + + DWORD exitCode = STILL_ACTIVE; + if (!GetExitCodeProcess(threadContextInfo->GetProcessHandle(), &exitCode)) + { + Assert(false); // fail to check target process + hr = E_FAIL; + } + + if (exitCode != STILL_ACTIVE) + { + ServerContextManager::CleanUpForProcess(threadContextInfo->GetProcessHandle()); + hr = E_FAIL; + } + } + catch (ContextClosedException&) + { + hr = E_ACCESSDENIED; } catch (Js::OutOfMemoryException) { @@ -706,20 +865,6 @@ HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn) hr = E_FAIL; } - DWORD exitCode = STILL_ACTIVE; - if (!GetExitCodeProcess(threadContextInfo->GetProcessHandle(), &exitCode)) - { - Assert(false); // fail to check target process - hr = E_FAIL; - } - - if (exitCode != STILL_ACTIVE) - { - threadContextInfo->Close(); - ServerContextManager::UnRegisterThreadContext(threadContextInfo); - hr = E_FAIL; - } - if (hr == E_OUTOFMEMORY || hr == E_FAIL) { if (HRESULT_FROM_WIN32(MemoryOperationLastError::GetLastError()) != S_OK) @@ -734,12 +879,14 @@ HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn) template HRESULT ServerCallWrapper(ServerScriptContext* scriptContextInfo, Fn fn) { - ServerThreadContext* threadContextInfo = scriptContextInfo->GetThreadContext(); - if (!ServerContextManager::IsThreadContextAlive(threadContextInfo)) + try + { + AutoReleaseScriptContext autoScriptContext(scriptContextInfo); + ServerThreadContext* threadContextInfo = scriptContextInfo->GetThreadContext(); + return ServerCallWrapper(threadContextInfo, fn); + } + catch (ContextClosedException&) { - Assert(false); return E_ACCESSDENIED; } - AutoReleaseContext autoThreadContext(threadContextInfo); - return ServerCallWrapper(threadContextInfo, fn); } \ No newline at end of file diff --git a/lib/JITServer/JITServer.h b/lib/JITServer/JITServer.h index 7b9fdcf7e3b..08d43d8ccd3 100644 --- a/lib/JITServer/JITServer.h +++ b/lib/JITServer/JITServer.h @@ -8,34 +8,154 @@ class ServerContextManager public: static void RegisterThreadContext(ServerThreadContext* threadContext); static void UnRegisterThreadContext(ServerThreadContext* threadContext); - static bool IsThreadContextAlive(ServerThreadContext* threadContext); + + static void CleanUpForProcess(HANDLE hProcess); static void RegisterScriptContext(ServerScriptContext* scriptContext); static void UnRegisterScriptContext(ServerScriptContext* scriptContext); - static bool IsScriptContextAlive(ServerScriptContext* scriptContext); + + static bool CheckLivenessAndAddref(ServerScriptContext* context); + static bool CheckLivenessAndAddref(ServerThreadContext* context); + + static void IdleCleanup(); + private: static JsUtil::BaseHashSet threadContexts; static JsUtil::BaseHashSet scriptContexts; static CriticalSection cs; + +#ifdef STACK_BACK_TRACE +public: + template + struct ClosedContextEntry + { + __declspec(noinline) + ClosedContextEntry(T* context) + :context(context) + { + stack = StackBackTrace::Capture(&NoThrowHeapAllocator::Instance, 2); + } + ~ClosedContextEntry() + { + if (stack) + { + stack->Delete(&NoThrowHeapAllocator::Instance); + } + } + T* context; + union { + DWORD runtimeProcId; + ServerThreadContext* threadCtx; + }; + StackBackTrace* stack; + }; + + static void RecordCloseContext(ServerThreadContext* context) + { + auto record = HeapNewNoThrow(ClosedContextEntry, context); + if (record) + { + record->runtimeProcId = context->GetRuntimePid(); + } + ClosedThreadContextList.PrependNoThrow(&HeapAllocator::Instance, record); + } + static void RecordCloseContext(ServerScriptContext* context) + { + auto record = HeapNewNoThrow(ClosedContextEntry, context); + if (record) + { + record->threadCtx = context->GetThreadContext(); + } + ClosedScriptContextList.PrependNoThrow(&HeapAllocator::Instance, record); + } + + static SList*, NoThrowHeapAllocator> ClosedThreadContextList; + static SList*, NoThrowHeapAllocator> ClosedScriptContextList; +#endif + + static void Shutdown() + { +#ifdef STACK_BACK_TRACE + while (!ClosedThreadContextList.Empty()) + { + auto record = ClosedThreadContextList.Pop(); + if (record) + { + HeapDelete(record); + } + } + while (!ClosedScriptContextList.Empty()) + { + auto record = ClosedScriptContextList.Pop(); + if (record) + { + HeapDelete(record); + } + } +#endif + } }; -template -struct AutoReleaseContext +struct ContextClosedException {}; + +struct AutoReleaseThreadContext { - AutoReleaseContext(T* context) - :context(context) + AutoReleaseThreadContext(ServerThreadContext* threadContext) + :threadContext(threadContext) { - context->AddRef(); + if (!ServerContextManager::CheckLivenessAndAddref(threadContext)) + { + // Don't assert here because ThreadContext can be closed before scriptContext closing call + // and ThreadContext closing causes all related scriptContext be closed + threadContext = nullptr; + throw ContextClosedException(); + } } - ~AutoReleaseContext() + ~AutoReleaseThreadContext() { - context->Release(); + if (threadContext) + { + threadContext->Release(); + } } - T* context; + ServerThreadContext* threadContext; }; +struct AutoReleaseScriptContext +{ + AutoReleaseScriptContext(ServerScriptContext* scriptContext) + :scriptContext(scriptContext) + { + if (!ServerContextManager::CheckLivenessAndAddref(scriptContext)) + { + // Don't assert here because ThreadContext can be closed before scriptContext closing call + // and ThreadContext closing causes all related scriptContext be closed + scriptContext = nullptr; + threadContext = nullptr; + throw ContextClosedException(); + } + threadContext = scriptContext->GetThreadContext(); + } + + ~AutoReleaseScriptContext() + { + if (scriptContext) + { + scriptContext->Release(); + } + if (threadContext) + { + threadContext->Release(); + } + } + + ServerScriptContext* scriptContext; + ServerThreadContext* threadContext; +}; + + template HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn); template diff --git a/lib/JITServer/JITServerPch.h b/lib/JITServer/JITServerPch.h index 95d193976ae..bfd14c8b697 100644 --- a/lib/JITServer/JITServerPch.h +++ b/lib/JITServer/JITServerPch.h @@ -12,3 +12,4 @@ #include "Runtime.h" #include "Backend.h" #include "JITServer.h" +#include "PageAllocatorPool.h" diff --git a/lib/Jsrt/Chakra.Jsrt.vcxproj b/lib/Jsrt/Chakra.Jsrt.vcxproj index 1e35b54f209..f9fa8edd02a 100644 --- a/lib/Jsrt/Chakra.Jsrt.vcxproj +++ b/lib/Jsrt/Chakra.Jsrt.vcxproj @@ -30,6 +30,7 @@ $(MSBuildThisFileDirectory)..\Runtime\Base; $(MSBuildThisFileDirectory)..\Runtime\Debug; $(MSBuildThisFileDirectory)..\Parser; + $(MSBuildThisFileDirectory)..\WasmReader; $(MSBuildThisFileDirectory)..\Backend; $(IntDir); %(AdditionalIncludeDirectories) diff --git a/lib/Jsrt/ChakraDebug.h b/lib/Jsrt/ChakraDebug.h index a1e39a8ce8b..4af70f9e6bc 100644 --- a/lib/Jsrt/ChakraDebug.h +++ b/lib/Jsrt/ChakraDebug.h @@ -551,7 +551,7 @@ typedef __int64 int64_t; /// /// Evaluates an expression on given frame. /// - /// Expression to evaluate. + /// A null-terminated expression to evaluate. /// Index of stack frame on which to evaluate the expression. /// Result of evaluation. /// @@ -587,7 +587,7 @@ typedef __int64 int64_t; /// CHAKRA_API JsDiagEvaluate( - _In_ const wchar_t *expression, + _In_z_ const wchar_t *expression, _In_ unsigned int stackFrameIndex, _Out_ JsValueRef *evalResult); @@ -596,7 +596,7 @@ typedef __int64 int64_t; /// /// Evaluates an expression on given frame. /// - /// Expression to evaluate. + /// A null-terminated expression to evaluate. /// Index of stack frame on which to evaluate the expression. /// Result of evaluation. /// @@ -631,7 +631,7 @@ typedef __int64 int64_t; /// The current runtime should be in debug state. This API can only be called when runtime is at a break. /// CHAKRA_API JsDiagEvaluateUtf8( - _In_ const char *expression, + _In_z_ const char *expression, _In_ unsigned int stackFrameIndex, _Out_ JsValueRef *evalResult); diff --git a/lib/Jsrt/Core/Chakra.Jsrt.Core.vcxproj b/lib/Jsrt/Core/Chakra.Jsrt.Core.vcxproj index fc721c337cd..97efdbf415a 100644 --- a/lib/Jsrt/Core/Chakra.Jsrt.Core.vcxproj +++ b/lib/Jsrt/Core/Chakra.Jsrt.Core.vcxproj @@ -29,6 +29,7 @@ $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Backend; %(AdditionalIncludeDirectories) diff --git a/lib/Jsrt/JsrtDiag.cpp b/lib/Jsrt/JsrtDiag.cpp index cea91f23bf2..ce7dbdd3eea 100644 --- a/lib/Jsrt/JsrtDiag.cpp +++ b/lib/Jsrt/JsrtDiag.cpp @@ -651,7 +651,7 @@ CHAKRA_API JsDiagGetObjectFromHandle( } CHAKRA_API JsDiagEvaluate( - _In_ const wchar_t *expression, + _In_z_ const wchar_t *expression, _In_ unsigned int stackFrameIndex, _Out_ JsValueRef *evalResult) { @@ -697,7 +697,7 @@ CHAKRA_API JsDiagEvaluate( } CHAKRA_API JsDiagEvaluateUtf8( - _In_ const char *expression, + _In_z_ const char *expression, _In_ unsigned int stackFrameIndex, _Out_ JsValueRef *evalResult) { diff --git a/lib/Parser/Chakra.Parser.vcxproj b/lib/Parser/Chakra.Parser.vcxproj index 8be8515c2ed..3377050108a 100644 --- a/lib/Parser/Chakra.Parser.vcxproj +++ b/lib/Parser/Chakra.Parser.vcxproj @@ -23,6 +23,7 @@ $(MSBuildThisFileDirectory)..\Common; $(MSBuildThisFileDirectory)..\Backend; + $(MSBuildThisFileDirectory)..\WasmReader; $(MSBuildThisFileDirectory)..\JITClient; $(MSBuildThisFileDirectory)..\Runtime; $(MSBuildThisFileDirectory)..\Runtime\ByteCode; @@ -145,4 +146,4 @@ - \ No newline at end of file + diff --git a/lib/Parser/CharSet.cpp b/lib/Parser/CharSet.cpp index 40630b0acde..9a3ca0e81b9 100644 --- a/lib/Parser/CharSet.cpp +++ b/lib/Parser/CharSet.cpp @@ -3,6 +3,7 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "ParserPch.h" +#include "Common/MathUtil.h" namespace UnifiedRegex { @@ -10,25 +11,12 @@ namespace UnifiedRegex // CharBitVec // ---------------------------------------------------------------------- - inline uint32 popcnt(uint32 x) - { - // sum set bits in every bit pair - x -= (x >> 1) & 0x55555555u; - // sum pairs into quads - x = (x & 0x33333333u) + ((x >> 2) & 0x33333333u); - // sum quads into octets - x = (x + (x >> 4)) & 0x0f0f0f0fu; - // sum octets into topmost octet - x *= 0x01010101u; - return x >> 24; - } - uint CharBitvec::Count() const { uint n = 0; for (int w = 0; w < vecSize; w++) { - n += popcnt(vec[w]); + n += Math::PopCnt32(vec[w]); } return n; } diff --git a/lib/Parser/rterrors.h b/lib/Parser/rterrors.h old mode 100644 new mode 100755 index 8ff6597bd6c..6f4f13b94b6 --- a/lib/Parser/rterrors.h +++ b/lib/Parser/rterrors.h @@ -272,8 +272,8 @@ RT_ERROR_MSG(JSERR_DeletePropertyWithSuper, 5146, "Unable to delete property '%s RT_ERROR_MSG(JSERR_DetachedTypedArray, 5147, "%s: The ArrayBuffer is detached.", "The ArrayBuffer is detached.", kjstTypeError, 0) RT_ERROR_MSG(JSERR_AsmJsCompileError, 5148, "%s: Compiling asm.js failed.", "Compiling asm.js failed.", kjstError, 0) - RT_ERROR_MSG(JSERR_ImmutablePrototypeSlot, 5149, "%s: Can't set the prototype of this object.", "Can't set the prototype of this object.", kjstTypeError, 0) +RT_ERROR_MSG(JSERR_WasmCompileError, 5150, "Compiling wasm failed: %s", "Compiling wasm failed.", kjstError, 0) /* Error messages for misbehaved Async Operations for use in Promise.js */ RT_ERROR_MSG(ASYNCERR_NoErrorInErrorState, 5200, "", "Status is 'error', but getResults did not return an error", kjstError, 0) @@ -363,3 +363,4 @@ RT_ERROR_MSG(JSERR_InvalidTypedArrayIndex, 5663, "", "Access index is out of ran RT_ERROR_MSG(JSERR_InvalidOperationOnTypedArray, 5664, "", "The operation is not supported on this typed array type", kjstRangeError, 0) RT_ERROR_MSG(JSERR_CannotSuspendBuffer, 5665, "", "Current agent cannot be suspended", kjstRangeError, 0) RT_ERROR_MSG(JSERR_CantDeleteNonConfigProp, 5666, "Cannot delete non-configurable property '%s'", "Cannot delete non-configurable property", kjstTypeError, 0) +RT_ERROR_MSG(WASMERR_Unreachable, 5667, "", "Unreachable Code", kjstError, 0) \ No newline at end of file diff --git a/lib/Parser/screrror.cpp b/lib/Parser/screrror.cpp index 25b369d4111..a139ecfa543 100644 --- a/lib/Parser/screrror.cpp +++ b/lib/Parser/screrror.cpp @@ -286,7 +286,7 @@ HRESULT CompileScriptException::ProcessError(IScanner * pScan, HRESULT hr, Pars // Remove E_FAIL once we have this feature. // error during code gen - no line number info available // E_ABORT may result if compilation does stack probe while thread is in disabled state. - Assert(hr == JSERR_AsmJsCompileError || hr == ERRnoMemory || hr == VBSERR_OutOfStack || hr == E_OUTOFMEMORY || hr == E_FAIL || hr == E_ABORT); + Assert(hr == JSERR_WasmCompileError || hr == JSERR_AsmJsCompileError || hr == ERRnoMemory || hr == VBSERR_OutOfStack || hr == E_OUTOFMEMORY || hr == E_FAIL || hr == E_ABORT); } return SCRIPT_E_RECORDED; } diff --git a/lib/Runtime/Base/Chakra.Runtime.Base.vcxproj b/lib/Runtime/Base/Chakra.Runtime.Base.vcxproj index 83c09ee6d17..22bfc68b526 100644 --- a/lib/Runtime/Base/Chakra.Runtime.Base.vcxproj +++ b/lib/Runtime/Base/Chakra.Runtime.Base.vcxproj @@ -26,6 +26,7 @@ $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(ChakraJITIDLIntDir); $(MSBuildThisFileDirectory)..\..\JITClient; %(AdditionalIncludeDirectories) diff --git a/lib/Runtime/Base/CrossSite.cpp b/lib/Runtime/Base/CrossSite.cpp index 7f2a38f960c..b9b0eadc099 100644 --- a/lib/Runtime/Base/CrossSite.cpp +++ b/lib/Runtime/Base/CrossSite.cpp @@ -288,7 +288,17 @@ namespace Js if (funcInfo->GetFunctionProxy()->IsFunctionBody() && funcInfo->GetFunctionBody()->GetIsAsmJsFunction()) { - entryPoint = Js::AsmJsExternalEntryPoint; +#ifdef ENABLE_WASM + AsmJsFunctionInfo* asmInfo = funcInfo->GetFunctionBody()->GetAsmJsFunctionInfo(); + if (asmInfo && asmInfo->IsWasmDeferredParse()) + { + entryPoint = WasmLibrary::WasmDeferredParseExternalThunk; + } + else +#endif + { + entryPoint = Js::AsmJsExternalEntryPoint; + } } else #endif diff --git a/lib/Runtime/Base/FunctionBody.cpp b/lib/Runtime/Base/FunctionBody.cpp index 5e55edfe5bf..141094d7532 100644 --- a/lib/Runtime/Base/FunctionBody.cpp +++ b/lib/Runtime/Base/FunctionBody.cpp @@ -851,7 +851,7 @@ namespace Js entryPointInfo->entryPointIndex = this->entryPoints->Add(recycler->CreateWeakReferenceHandle(entryPointInfo)); } - +#if DBG BOOL FunctionBody::IsInterpreterThunk() const { bool isInterpreterThunk = this->originalEntryPoint == DefaultEntryThunk; @@ -869,6 +869,7 @@ namespace Js return FALSE; #endif } +#endif FunctionEntryPointInfo * FunctionBody::TryGetEntryPointInfo(int index) const { @@ -1951,7 +1952,7 @@ namespace Js return returnFunctionBody; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT FunctionBody* ParseableFunctionInfo::ParseAsmJs(Parser * ps, __out CompileScriptException * se, __out ParseNodePtr * parseTree) { Assert(IsDeferredParseFunction()); @@ -2317,6 +2318,35 @@ namespace Js #endif } + void ParseableFunctionInfo::SetSourceInfo(uint sourceIndex) + { + // TODO (michhol): how do we want to handle wasm source? + if (!m_utf8SourceHasBeenSet) + { + this->m_sourceIndex = sourceIndex; + this->m_cchStartOffset = 0; + this->m_cchLength = 0; + this->m_lineNumber = 0; + this->m_columnNumber = 0; + + this->m_cbStartOffset = 0; + this->m_cbLength = 0; + + this->m_utf8SourceHasBeenSet = true; + + if (this->IsFunctionBody()) + { + this->GetFunctionBody()->FinishSourceInfo(); + } + } +#if DBG + else + { + AssertMsg(this->m_sourceIndex == sourceIndex, "Mismatched source index"); + } +#endif + } + bool FunctionBody::Is(void* ptr) { if(!ptr) @@ -2867,7 +2897,9 @@ namespace Js return !this->m_isFromNativeCodeModule && !this->m_isAsmJsFunction && +#ifdef ASMJS_PLAT !this->GetAsmJsModuleInfo() && +#endif !this->HasExecutionDynamicProfileInfo() && DynamicProfileInfo::IsEnabled(this); } @@ -3174,6 +3206,7 @@ namespace Js { entryPointInfo->jsMethod = directEntryPoint; } +#ifdef ASMJS_PLAT if (isAsmJs) { // release the old entrypointinfo if available @@ -3184,6 +3217,7 @@ namespace Js oldEntryPointInfo = nullptr; } } +#endif this->CaptureDynamicProfileState(entryPointInfo); if(entryPointInfo->GetJitMode() == ExecutionMode::SimpleJit) @@ -3794,6 +3828,12 @@ namespace Js void FunctionBody::PrintStatementSourceLine(uint statementIndex) { + if (m_isWasmFunction) + { + // currently no source view support for wasm + return; + } + const uint startOffset = GetStatementStartOffset(statementIndex); // startOffset should only be 0 if statementIndex is 0, otherwise it is EOF and we should skip printing anything @@ -4308,7 +4348,7 @@ namespace Js #if DYNAMIC_INTERPRETER_THUNK if (m_isAsmJsFunction && m_dynamicInterpreterThunk) { - m_scriptContext->ReleaseDynamicAsmJsInterpreterThunk(this->m_dynamicInterpreterThunk, true); + m_scriptContext->ReleaseDynamicAsmJsInterpreterThunk((BYTE*)this->m_dynamicInterpreterThunk, true); this->m_dynamicInterpreterThunk = nullptr; } #endif @@ -5631,7 +5671,7 @@ namespace Js this->SetLiteralRegexs(RecyclerNewArrayZ(m_scriptContext->GetRecycler(), UnifiedRegex::RegexPattern *, literalRegexCount)); } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT AsmJsFunctionInfo* FunctionBody::AllocateAsmJsFunctionInfo() { Assert( !this->GetAsmJsFunctionInfo() ); @@ -6775,12 +6815,14 @@ namespace Js bool FunctionBody::DoInterpreterProfile() const { #if ENABLE_PROFILE_INFO +#ifdef ASMJS_PLAT // Switch off profiling is asmJsFunction if (this->GetIsAsmJsFunction() || this->GetAsmJsModuleInfo()) { return false; } else +#endif { return !PHASE_OFF(InterpreterProfilePhase, this) && DynamicProfileInfo::IsEnabled(this); } @@ -6792,12 +6834,14 @@ namespace Js bool FunctionBody::DoInterpreterProfileWithLock() const { #if ENABLE_PROFILE_INFO +#ifdef ASMJS_PLAT // Switch off profiling is asmJsFunction if (this->GetIsAsmJsFunction() || this->GetAsmJsModuleInfoWithLock()) { return false; } else +#endif { return !PHASE_OFF(InterpreterProfilePhase, this) && DynamicProfileInfo::IsEnabled(this); } @@ -7329,11 +7373,11 @@ namespace Js { if (m_isAsmJsFunction) { - m_scriptContext->ReleaseDynamicAsmJsInterpreterThunk(this->m_dynamicInterpreterThunk, /*addtoFreeList*/!isScriptContextClosing); + m_scriptContext->ReleaseDynamicAsmJsInterpreterThunk((BYTE*)this->m_dynamicInterpreterThunk, /*addtoFreeList*/!isScriptContextClosing); } else { - m_scriptContext->ReleaseDynamicInterpreterThunk(this->m_dynamicInterpreterThunk, /*addtoFreeList*/!isScriptContextClosing); + m_scriptContext->ReleaseDynamicInterpreterThunk((BYTE*)this->m_dynamicInterpreterThunk, /*addtoFreeList*/!isScriptContextClosing); } } } @@ -8066,8 +8110,6 @@ namespace Js } guard->SetCache(&cache[i]); } - - midl_user_free(jitTransferData->equivalentTypeGuardOffsets); } // OOP JIT @@ -8114,10 +8156,7 @@ namespace Js } } } - - auto current = (*next); *next = (*next)->next; - midl_user_free(current); } } @@ -8203,22 +8242,20 @@ namespace Js { for (uint j = 0; j < entries[i]->cacheCount; ++j) { - Js::ConstructorCache* cache = (Js::ConstructorCache*)(entries[i]->caches[j]); - // We use the shared cache here to make sure the conditions we assumed didn't change while we were JIT-ing. - // If they did, we proactively invalidate the cache here, so that we bail out if we try to call this code. - if (isValid) - { - threadContext->RegisterConstructorCache(propertyId, cache); - } - else - { - cache->InvalidateAsGuard(); - } + Js::ConstructorCache* cache = (Js::ConstructorCache*)(entries[i]->caches[j]); + // We use the shared cache here to make sure the conditions we assumed didn't change while we were JIT-ing. + // If they did, we proactively invalidate the cache here, so that we bail out if we try to call this code. + if (isValid) + { + threadContext->RegisterConstructorCache(propertyId, cache); + } + else + { + cache->InvalidateAsGuard(); + } } } - midl_user_free(entries[i]); } - midl_user_free(entries); } if (this->jitTransferData->ctorCacheGuardsByPropertyId != nullptr) @@ -8544,6 +8581,32 @@ namespace Js jitTransferData->jitTransferRawData = nullptr; } + if (jitTransferData->equivalentTypeGuardOffsets) + { + midl_user_free(jitTransferData->equivalentTypeGuardOffsets); + } + + if (jitTransferData->typeGuardTransferData.entries != nullptr) + { + auto next = &jitTransferData->typeGuardTransferData.entries; + while (*next) + { + auto current = (*next); + *next = (*next)->next; + midl_user_free(current); + } + } + + if (jitTransferData->ctorCacheTransferData.entries != nullptr) + { + CtorCacheTransferEntryIDL ** entries = jitTransferData->ctorCacheTransferData.entries; + for (uint i = 0; i < jitTransferData->ctorCacheTransferData.ctorCachesCount; ++i) + { + midl_user_free(entries[i]); + } + midl_user_free(entries); + } + jitTransferData = nullptr; } } @@ -8897,7 +8960,7 @@ namespace Js { } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT void FunctionEntryPointInfo::SetOldFunctionEntryPointInfo(FunctionEntryPointInfo* entrypointInfo) { Assert(this->GetIsAsmJSFunction()); @@ -9000,7 +9063,7 @@ namespace Js } FunctionBody* functionBody = this->functionProxy->GetFunctionBody(); -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (this->GetIsTJMode()) { // release LoopHeaders here if the entrypointInfo is TJ @@ -9292,7 +9355,7 @@ namespace Js void LoopEntryPointInfo::OnCleanup(bool isShutdown) { -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (this->IsCodeGenDone() && !this->GetIsTJMode()) #else if (this->IsCodeGenDone()) diff --git a/lib/Runtime/Base/FunctionBody.h b/lib/Runtime/Base/FunctionBody.h index 76ac7633091..29c92657c30 100644 --- a/lib/Runtime/Base/FunctionBody.h +++ b/lib/Runtime/Base/FunctionBody.h @@ -50,7 +50,7 @@ namespace Js class DebuggerScope; class FunctionEntryPointInfo; -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT class AsmJsFunctionInfo; class AmsJsModuleInfo; #endif @@ -807,7 +807,7 @@ namespace Js } #endif -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT void SetModuleAddress(uintptr_t moduleAddress) { Assert(this->GetIsAsmJSFunction()); @@ -940,7 +940,7 @@ namespace Js return this->workItem; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT // set code size, used by TJ to set the code size void SetCodeSize(ptrdiff_t size) { @@ -965,7 +965,7 @@ namespace Js return this->isAsmJsFunction; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT void SetTJCodeGenDone() { Assert(isAsmJsFunction); @@ -1079,7 +1079,7 @@ namespace Js public: FunctionEntryPointInfo(FunctionProxy * functionInfo, Js::JavascriptMethod method, ThreadContext* context, void* validationCookie); -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT //AsmJS Support void SetOldFunctionEntryPointInfo(FunctionEntryPointInfo* entrypointInfo); @@ -1143,7 +1143,7 @@ namespace Js } #endif -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT void SetIsTJMode(bool value) { Assert(this->GetIsAsmJSFunction()); @@ -1401,7 +1401,7 @@ namespace Js template void MapFunctionObjectTypes(Fn func); - static uint GetOffsetOfDeferredPrototypeType() { return offsetof(Js::FunctionProxy, deferredPrototypeType); } + static uint GetOffsetOfDeferredPrototypeType() { return static_cast(offsetof(Js::FunctionProxy, deferredPrototypeType)); } static Js::ScriptFunctionType * EnsureFunctionProxyDeferredPrototypeType(FunctionProxy * proxy) { return proxy->EnsureDeferredPrototypeType(); @@ -1547,7 +1547,7 @@ namespace Js DEFINE_VTABLE_CTOR_NO_REGISTER(ParseableFunctionInfo, FunctionProxy); FunctionBody* Parse(ScriptFunction ** functionRef = nullptr, bool isByteCodeDeserialization = false); -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT FunctionBody* ParseAsmJs(Parser * p, __out CompileScriptException * se, __out ParseNodePtr * ptree); #endif virtual uint GetDisplayNameLength() const { return m_displayNameLength; } @@ -1693,6 +1693,7 @@ namespace Js } void SetSourceInfo(uint sourceIndex, ParseNodePtr node, bool isEval, bool isDynamicFunction); + void SetSourceInfo(uint sourceIndex); void Copy(FunctionBody* other); const char16* GetExternalDisplayName() const; @@ -1753,6 +1754,7 @@ namespace Js bool m_isStrictMode : 1; bool m_isAsmjsMode : 1; bool m_isAsmJsFunction : 1; + bool m_isWasmFunction : 1; bool m_isGlobalFunc : 1; bool m_doBackendArgumentsOptimization : 1; bool m_usesArgumentsObject : 1; @@ -2331,7 +2333,7 @@ namespace Js Assert(this->GetLoopHeaderArray() != nullptr); return this->GetLoopHeaderArray(); } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT void SetIsAsmJsFullJitScheduled(bool val){ m_isAsmJsScheduledForFullJIT = val; } bool GetIsAsmJsFullJitScheduled(){ return m_isAsmJsScheduledForFullJIT; } uint32 GetAsmJSTotalLoopCount() const @@ -2350,7 +2352,16 @@ namespace Js return m_isAsmJsFunction; } -#ifndef TEMP_DISABLE_ASMJS + void SetIsWasmFunction(bool val) + { + m_isWasmFunction = val; + } + bool IsWasmFunction() const + { + return m_isWasmFunction; + } + +#ifdef ASMJS_PLAT bool IsHotAsmJsLoop() { // Negative MinTemplatizedJitLoopRunCount treats all loops as hot asm loop @@ -2636,8 +2647,10 @@ namespace Js void AddEntryPointToEntryPointList(FunctionEntryPointInfo* entryPoint); // Kind of entry point for original entry point +#if DBG BOOL IsInterpreterThunk() const; BOOL IsDynamicInterpreterThunk() const; +#endif BOOL IsNativeOriginalEntryPoint() const; bool IsSimpleJitOriginalEntryPoint() const; @@ -3091,7 +3104,7 @@ namespace Js void SetLiteralRegexs(UnifiedRegex::RegexPattern ** literalRegexes) { this->SetAuxPtr(AuxPointerType::LiteralRegexes, literalRegexes); } UnifiedRegex::RegexPattern *GetLiteralRegex(const uint index); UnifiedRegex::RegexPattern *GetLiteralRegexWithLock(const uint index); -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT AsmJsFunctionInfo* GetAsmJsFunctionInfo()const { return static_cast(this->GetAuxPtr(AuxPointerType::AsmJsFunctionInfo)); } AsmJsFunctionInfo* GetAsmJsFunctionInfoWithLock()const { return static_cast(this->GetAuxPtrWithLock(AuxPointerType::AsmJsFunctionInfo)); } AsmJsFunctionInfo* AllocateAsmJsFunctionInfo(); diff --git a/lib/Runtime/Base/JnDirectFields.h b/lib/Runtime/Base/JnDirectFields.h index 158b5fe9e65..b03492c92ec 100644 --- a/lib/Runtime/Base/JnDirectFields.h +++ b/lib/Runtime/Base/JnDirectFields.h @@ -274,6 +274,12 @@ ENTRY(map) ENTRY(Map) ENTRY(Math) +// Wasm +ENTRY(Wasm) +ENTRY(instantiateModule) +ENTRY(experimentalVersion) +// End Wasm + // SIMD_JS ENTRY(SIMD) diff --git a/lib/Runtime/Base/RuntimeBasePch.h b/lib/Runtime/Base/RuntimeBasePch.h index ec173c7e226..cd5d945452c 100644 --- a/lib/Runtime/Base/RuntimeBasePch.h +++ b/lib/Runtime/Base/RuntimeBasePch.h @@ -7,6 +7,7 @@ #include "Parser.h" #include "Runtime.h" +#include "WasmReader.h" #include "Debug/DebuggingFlags.h" #include "Debug/DiagProbe.h" diff --git a/lib/Runtime/Base/ScriptContext.cpp b/lib/Runtime/Base/ScriptContext.cpp index ae0b9b414f1..9a40c18017f 100644 --- a/lib/Runtime/Base/ScriptContext.cpp +++ b/lib/Runtime/Base/ScriptContext.cpp @@ -28,6 +28,7 @@ #ifdef ASMJS_PLAT #include "Language/AsmJsEncoder.h" #include "Language/AsmJsCodeGenerator.h" +#include "Language/AsmJsUtils.h" #endif #ifdef ENABLE_BASIC_TELEMETRY @@ -387,12 +388,6 @@ namespace Js { HeapDelete(m_domFastPathHelperMap); } - if (m_remoteScriptContextAddr != 0) - { - Assert(JITManager::GetJITManager()->IsOOPJITEnabled()); - JITManager::GetJITManager()->CleanupScriptContext(m_remoteScriptContextAddr); - m_remoteScriptContextAddr = 0; - } #endif // TODO: Can we move this on Close()? @@ -504,6 +499,15 @@ namespace Js // In case there is something added to the list between close and dtor, just reset the list again this->weakReferenceDictionaryList.Reset(); +#if ENABLE_NATIVE_CODEGEN + if (m_remoteScriptContextAddr != 0) + { + Assert(JITManager::GetJITManager()->IsOOPJITEnabled()); + JITManager::GetJITManager()->CleanupScriptContext(m_remoteScriptContextAddr); + m_remoteScriptContextAddr = 0; + } +#endif + PERF_COUNTER_DEC(Basic, ScriptContext); } @@ -1206,11 +1210,11 @@ if (!sourceList) } #if DYNAMIC_INTERPRETER_THUNK - interpreterThunkEmitter = HeapNew(InterpreterThunkEmitter, SourceCodeAllocator(), this->GetThreadContext()->GetThunkPageAllocators()); + interpreterThunkEmitter = HeapNew(InterpreterThunkEmitter, this, SourceCodeAllocator(), this->GetThreadContext()->GetThunkPageAllocators()); #endif #ifdef ASMJS_PLAT - asmJsInterpreterThunkEmitter = HeapNew(InterpreterThunkEmitter, SourceCodeAllocator(), this->GetThreadContext()->GetThunkPageAllocators(), + asmJsInterpreterThunkEmitter = HeapNew(InterpreterThunkEmitter, this, SourceCodeAllocator(), this->GetThreadContext()->GetThunkPageAllocators(), true); #endif @@ -4485,6 +4489,11 @@ void ScriptContext::RegisterPrototypeChainEnsuredToHaveOnlyWritableDataPropertie contextData.isRecyclerVerifyEnabled = FALSE; contextData.recyclerVerifyPad = 0; #endif + contextData.debuggingFlagsAddr = GetDebuggingFlagsAddr(); + contextData.debugStepTypeAddr = GetDebugStepTypeAddr(); + contextData.debugFrameAddressAddr = GetDebugFrameAddressAddr(); + contextData.debugScriptIdWhenSetAddr = GetDebugScriptIdWhenSetAddr(); + contextData.numberAllocatorAddr = (intptr_t)GetNumberAllocator(); contextData.isSIMDEnabled = GetConfig()->IsSimdjsEnabled(); CompileAssert(VTableValue::Count == VTABLE_COUNT); // need to update idl when this changes @@ -4647,6 +4656,26 @@ void ScriptContext::RegisterPrototypeChainEnsuredToHaveOnlyWritableDataPropertie return (intptr_t)GetRecycler(); } + intptr_t ScriptContext::GetDebuggingFlagsAddr() const + { + return this->threadContext->GetDebugManager()->GetDebuggingFlagsAddr(); + } + + intptr_t ScriptContext::GetDebugStepTypeAddr() const + { + return (intptr_t)this->threadContext->GetDebugManager()->stepController.GetAddressOfStepType(); + } + + intptr_t ScriptContext::GetDebugFrameAddressAddr() const + { + return (intptr_t)this->threadContext->GetDebugManager()->stepController.GetAddressOfFrameAddress(); + } + + intptr_t ScriptContext::GetDebugScriptIdWhenSetAddr() const + { + return (intptr_t)this->threadContext->GetDebugManager()->stepController.GetAddressOfScriptIdWhenSet(); + } + bool ScriptContext::GetRecyclerAllowNativeCodeBumpAllocation() const { return GetRecycler()->AllowNativeCodeBumpAllocation(); @@ -4848,20 +4877,22 @@ void ScriptContext::RegisterPrototypeChainEnsuredToHaveOnlyWritableDataPropertie return (JavascriptMethod)this->interpreterThunkEmitter->GetNextThunk(ppDynamicInterpreterThunk); } +#if DBG BOOL ScriptContext::IsDynamicInterpreterThunk(JavascriptMethod address) { return this->interpreterThunkEmitter->IsInHeap((void*)address); } +#endif - void ScriptContext::ReleaseDynamicInterpreterThunk(void* address, bool addtoFreeList) + void ScriptContext::ReleaseDynamicInterpreterThunk(BYTE* address, bool addtoFreeList) { - this->interpreterThunkEmitter->Release((BYTE*)address, addtoFreeList); + this->interpreterThunkEmitter->Release(address, addtoFreeList); } - void ScriptContext::ReleaseDynamicAsmJsInterpreterThunk(void* address, bool addtoFreeList) + void ScriptContext::ReleaseDynamicAsmJsInterpreterThunk(BYTE* address, bool addtoFreeList) { #ifdef ASMJS_PLAT - this->asmJsInterpreterThunkEmitter->Release((BYTE*)address, addtoFreeList); + this->asmJsInterpreterThunkEmitter->Release(address, addtoFreeList); #else Assert(UNREACHED); #endif diff --git a/lib/Runtime/Base/ScriptContext.h b/lib/Runtime/Base/ScriptContext.h index 63b2ffe5699..d9d5171e826 100644 --- a/lib/Runtime/Base/ScriptContext.h +++ b/lib/Runtime/Base/ScriptContext.h @@ -910,10 +910,10 @@ namespace Js void SetDirectHostTypeId(TypeId typeId) {directHostTypeId = typeId; } TypeId GetDirectHostTypeId() const { return directHostTypeId; } - intptr_t GetRemoteScriptAddr() + intptr_t GetRemoteScriptAddr(bool allowInitialize = true) { #if ENABLE_OOP_NATIVE_CODEGEN - if (!m_remoteScriptContextAddr) + if (!m_remoteScriptContextAddr && allowInitialize) { InitializeRemoteScriptContext(); } @@ -1656,9 +1656,11 @@ namespace Js #if DYNAMIC_INTERPRETER_THUNK JavascriptMethod GetNextDynamicAsmJsInterpreterThunk(PVOID* ppDynamicInterpreterThunk); JavascriptMethod GetNextDynamicInterpreterThunk(PVOID* ppDynamicInterpreterThunk); +#if DBG BOOL IsDynamicInterpreterThunk(JavascriptMethod address); - void ReleaseDynamicInterpreterThunk(void* address, bool addtoFreeList); - void ReleaseDynamicAsmJsInterpreterThunk(void* address, bool addtoFreeList); +#endif + void ReleaseDynamicInterpreterThunk(BYTE* address, bool addtoFreeList); + void ReleaseDynamicAsmJsInterpreterThunk(BYTE* address, bool addtoFreeList); #endif static Var DebugProfileProbeThunk(RecyclableObject* function, CallInfo callInfo, ...); @@ -1759,6 +1761,11 @@ namespace Js virtual bool IsPRNGSeeded() const override; virtual intptr_t GetBuiltinFunctionsBaseAddr() const override; + virtual intptr_t GetDebuggingFlagsAddr() const override; + virtual intptr_t GetDebugStepTypeAddr() const override; + virtual intptr_t GetDebugFrameAddressAddr() const override; + virtual intptr_t GetDebugScriptIdWhenSetAddr() const override; + #if ENABLE_NATIVE_CODEGEN virtual void AddToDOMFastPathHelperMap(intptr_t funcInfoAddr, IR::JnHelperMethod helper) override; virtual IR::JnHelperMethod GetDOMFastPathHelper(intptr_t funcInfoAddr) override; @@ -1876,8 +1883,40 @@ namespace Js return functionBody; } + + class AutoProfilingPhase + { + public: + AutoProfilingPhase(ScriptContext* scriptcontext, Js::Phase phase) : scriptcontext(scriptcontext), phase(phase), isPhaseComplete(false) + { + #ifdef PROFILE_EXEC + scriptcontext->ProfileBegin(phase); + #endif + } + + ~AutoProfilingPhase() + { + if(!this->isPhaseComplete) + { + EndProfile(); + } + } + + void EndProfile() + { + this->isPhaseComplete = true; +#ifdef PROFILE_EXEC + scriptcontext->ProfileEnd(phase); +#endif + } + private: + ScriptContext* scriptcontext; + Js::Phase phase; + bool isPhaseComplete; + }; } + #define BEGIN_TEMP_ALLOCATOR(allocator, scriptContext, name) \ Js::TempArenaAllocatorObject *temp##allocator = scriptContext->GetTemporaryAllocator(name); \ ArenaAllocator * allocator = temp##allocator->GetAllocator(); diff --git a/lib/Runtime/Base/ScriptContextInfo.h b/lib/Runtime/Base/ScriptContextInfo.h index 48da813e773..b4ddb679736 100644 --- a/lib/Runtime/Base/ScriptContextInfo.h +++ b/lib/Runtime/Base/ScriptContextInfo.h @@ -50,6 +50,11 @@ class ScriptContextInfo virtual Js::Var* GetModuleExportSlotArrayAddress(uint moduleIndex, uint slotIndex) = 0; + virtual intptr_t GetDebuggingFlagsAddr() const = 0; + virtual intptr_t GetDebugStepTypeAddr() const = 0; + virtual intptr_t GetDebugFrameAddressAddr() const = 0; + virtual intptr_t GetDebugScriptIdWhenSetAddr() const = 0; + #if ENABLE_NATIVE_CODEGEN virtual void AddToDOMFastPathHelperMap(intptr_t funcInfoAddr, IR::JnHelperMethod helper) = 0; virtual IR::JnHelperMethod GetDOMFastPathHelper(intptr_t funcInfoAddr) = 0; diff --git a/lib/Runtime/Base/ThreadContext.cpp b/lib/Runtime/Base/ThreadContext.cpp index 4b9825922ad..44d8f7943a7 100644 --- a/lib/Runtime/Base/ThreadContext.cpp +++ b/lib/Runtime/Base/ThreadContext.cpp @@ -178,7 +178,9 @@ ThreadContext::ThreadContext(AllocationPolicyManager * allocationPolicyManager, #endif dynamicObjectEnumeratorCacheMap(&HeapAllocator::Instance, 16), //threadContextFlags(ThreadContextFlagNoFlag), +#ifdef NTBUILD telemetryBlock(&localTelemetryBlock), +#endif configuration(enableExperimentalFeatures), jsrtRuntime(nullptr), propertyMap(nullptr), @@ -248,7 +250,9 @@ ThreadContext::ThreadContext(AllocationPolicyManager * allocationPolicyManager, this->threadId = ::GetCurrentThreadId(); #endif +#ifdef NTBUILD memset(&localTelemetryBlock, 0, sizeof(localTelemetryBlock)); +#endif AutoCriticalSection autocs(ThreadContext::GetCriticalSection()); ThreadContext::LinkToBeginning(this, &ThreadContext::globalListFirst, &ThreadContext::globalListLast); @@ -341,30 +345,6 @@ ThreadContext::GetImplicitCallFlagsAddr() const return (intptr_t)&implicitCallFlags; } -intptr_t -ThreadContext::GetDebuggingFlagsAddr() const -{ - return this->debugManager->GetDebuggingFlagsAddr(); -} - -intptr_t -ThreadContext::GetDebugStepTypeAddr() const -{ - return (intptr_t)this->debugManager->stepController.GetAddressOfStepType(); -} - -intptr_t -ThreadContext::GetDebugFrameAddressAddr() const -{ - return (intptr_t)this->debugManager->stepController.GetAddressOfFrameAddress(); -} - -intptr_t -ThreadContext::GetDebugScriptIdWhenSetAddr() const -{ - return (intptr_t)this->debugManager->stepController.GetAddressOfScriptIdWhenSet(); -} - ptrdiff_t ThreadContext::GetChakraBaseAddressDifference() const { @@ -905,6 +885,12 @@ ThreadContext::GetPropertyRecord(Js::PropertyId propertyId) return GetPropertyNameLocked(propertyId); } +bool +ThreadContext::IsNumericProperty(Js::PropertyId propertyId) +{ + return GetPropertyRecord(propertyId)->IsNumeric(); +} + const Js::PropertyRecord * ThreadContext::FindPropertyRecord(const char16 * propertyName, int propertyNameLength) { @@ -1130,8 +1116,11 @@ ThreadContext::AddPropertyRecordInternal(const Js::PropertyRecord * propertyReco if (m_pendingJITProperties) { Assert(m_reclaimedJITProperties); - m_pendingJITProperties->Add(propertyRecord); - m_reclaimedJITProperties->Remove(propertyRecord->GetPropertyId()); + if (propertyRecord->IsNumeric()) + { + m_pendingJITProperties->Prepend(propertyRecord->GetPropertyId()); + m_reclaimedJITProperties->Remove(propertyRecord->GetPropertyId()); + } } #endif @@ -1288,7 +1277,7 @@ void ThreadContext::InvalidatePropertyRecord(const Js::PropertyRecord * property { InternalInvalidateProtoTypePropertyCaches(propertyRecord->GetPropertyId()); // use the internal version so we don't check for active property id #if ENABLE_NATIVE_CODEGEN - if (m_pendingJITProperties && !m_pendingJITProperties->Remove(propertyRecord)) + if (propertyRecord->IsNumeric() && m_pendingJITProperties && !m_pendingJITProperties->Remove(propertyRecord->GetPropertyId())) { // if it wasn't pending, that means it was already sent to the jit, so add to list that jit needs to reclaim m_reclaimedJITProperties->PrependNoThrow(&HeapAllocator::Instance, propertyRecord->GetPropertyId()); @@ -1994,10 +1983,6 @@ ThreadContext::EnsureJITThreadContext(bool allowPrereserveAlloc) contextData.bailOutRegisterSaveSpaceAddr = (intptr_t)bailOutRegisterSaveSpace; contextData.disableImplicitFlagsAddr = (intptr_t)GetAddressOfDisableImplicitFlags(); contextData.implicitCallFlagsAddr = (intptr_t)GetAddressOfImplicitCallFlags(); - contextData.debuggingFlagsAddr = (intptr_t)this->debugManager->GetDebuggingFlags(); - contextData.debugStepTypeAddr = (intptr_t)this->debugManager->stepController.GetAddressOfStepType(); - contextData.debugFrameAddressAddr = (intptr_t)this->debugManager->stepController.GetAddressOfFrameAddress(); - contextData.debugScriptIdWhenSetAddr = (intptr_t)this->debugManager->stepController.GetAddressOfScriptIdWhenSet(); contextData.scriptStackLimit = GetScriptStackLimit(); contextData.isThreadBound = IsThreadBound(); contextData.allowPrereserveAlloc = allowPrereserveAlloc; @@ -2006,7 +1991,15 @@ ThreadContext::EnsureJITThreadContext(bool allowPrereserveAlloc) #endif m_reclaimedJITProperties = HeapNew(PropertyList, &HeapAllocator::Instance); - m_pendingJITProperties = propertyMap->Clone(); + m_pendingJITProperties = HeapNew(PropertyList, &HeapAllocator::Instance); + + for (auto iter = propertyMap->GetIterator(); iter.IsValid(); iter.MoveNext()) + { + if (iter.CurrentKey()->IsNumeric()) + { + m_pendingJITProperties->Prepend(iter.CurrentKey()->GetPropertyId()); + } + } HRESULT hr = JITManager::GetJITManager()->InitializeThreadContext(&contextData, &m_remoteThreadContextInfo, &m_prereservedRegionAddr); JITManager::HandleServerCallResult(hr); diff --git a/lib/Runtime/Base/ThreadContext.h b/lib/Runtime/Base/ThreadContext.h index 43835804f2b..98fee62cea6 100644 --- a/lib/Runtime/Base/ThreadContext.h +++ b/lib/Runtime/Base/ThreadContext.h @@ -204,11 +204,13 @@ class IProjectionContextMemoryInfo abstract #endif #endif +#ifdef NTBUILD struct ThreadContextWatsonTelemetryBlock { FILETIME lastScriptStartTime; FILETIME lastScriptEndTime; }; +#endif class NativeLibraryEntryRecord { @@ -385,7 +387,9 @@ class ThreadContext sealed : void SetHeapEnum(IActiveScriptProfilerHeapEnum* newHeapEnum); void ClearHeapEnum(); - virtual Js::PropertyRecord const * GetPropertyRecord(Js::PropertyId propertyId) override; + Js::PropertyRecord const * GetPropertyRecord(Js::PropertyId propertyId); + + virtual bool IsNumericProperty(Js::PropertyId propertyId) override; #ifdef ENABLE_BASIC_TELEMETRY Js::LanguageStats* GetLanguageStats() @@ -482,7 +486,7 @@ class ThreadContext sealed : intptr_t m_prereservedRegionAddr; #if ENABLE_NATIVE_CODEGEN - PropertyMap * m_pendingJITProperties; + PropertyList * m_pendingJITProperties; PropertyList * m_reclaimedJITProperties; public: @@ -491,7 +495,7 @@ class ThreadContext sealed : return m_reclaimedJITProperties; } - PropertyMap * GetPendingJITProperties() const + PropertyList * GetPendingJITProperties() const { return m_pendingJITProperties; } @@ -781,8 +785,10 @@ class ThreadContext sealed : typedef JsUtil::BaseDictionary DynamicObjectEnumeratorCacheMap; DynamicObjectEnumeratorCacheMap dynamicObjectEnumeratorCacheMap; +#ifdef NTBUILD ThreadContextWatsonTelemetryBlock localTelemetryBlock; ThreadContextWatsonTelemetryBlock * telemetryBlock; +#endif NativeLibraryEntryRecord nativeLibraryEntry; @@ -983,15 +989,15 @@ class ThreadContext sealed : void ShutdownThreads() { #if ENABLE_NATIVE_CODEGEN - if (JITManager::GetJITManager()->IsOOPJITEnabled() && m_remoteThreadContextInfo) + if (jobProcessor) { - JITManager::GetJITManager()->CleanupThreadContext(m_remoteThreadContextInfo); - m_remoteThreadContextInfo = 0; + jobProcessor->Close(); } - if (jobProcessor) + if (JITManager::GetJITManager()->IsOOPJITEnabled() && m_remoteThreadContextInfo) { - jobProcessor->Close(); + JITManager::GetJITManager()->CleanupThreadContext(m_remoteThreadContextInfo); + m_remoteThreadContextInfo = 0; } #endif #if ENABLE_CONCURRENT_GC @@ -1002,8 +1008,6 @@ class ThreadContext sealed : #endif } - - DateTime::HiResTimer * GetHiResTimer() { return &hTimer; } ArenaAllocator* GetThreadAlloc() { return &threadAlloc; } static CriticalSection * GetCriticalSection() { return &s_csThreadContext; } @@ -1014,7 +1018,9 @@ class ThreadContext sealed : ThreadConfiguration const * GetConfig() const { return &configuration; } public: +#ifdef NTBUILD void SetTelemetryBlock(ThreadContextWatsonTelemetryBlock * telemetryBlock) { this->telemetryBlock = telemetryBlock; } +#endif static ThreadContext* GetContextForCurrentThread(); @@ -1216,11 +1222,6 @@ class ThreadContext sealed : virtual intptr_t GetDisableImplicitFlagsAddr() const override; virtual intptr_t GetImplicitCallFlagsAddr() const override; - virtual intptr_t GetDebuggingFlagsAddr() const override; - virtual intptr_t GetDebugStepTypeAddr() const override; - virtual intptr_t GetDebugFrameAddressAddr() const override; - virtual intptr_t GetDebugScriptIdWhenSetAddr() const override; - ptrdiff_t GetChakraBaseAddressDifference() const; ptrdiff_t GetCRTBaseAddressDifference() const; diff --git a/lib/Runtime/Base/ThreadContextInfo.cpp b/lib/Runtime/Base/ThreadContextInfo.cpp index 165ed3487d9..faf0b2dcb25 100644 --- a/lib/Runtime/Base/ThreadContextInfo.cpp +++ b/lib/Runtime/Base/ThreadContextInfo.cpp @@ -42,6 +42,11 @@ ThreadContextInfo::GetAbsFloatCstAddr() const return SHIFT_ADDR(this, &Js::JavascriptNumber::AbsFloatCst); } +intptr_t ThreadContextInfo::GetSgnBitCst() const +{ + return SHIFT_ADDR(this, &Js::JavascriptNumber::SgnBitCst); +} + intptr_t ThreadContextInfo::GetMaskNegFloatAddr() const { @@ -144,6 +149,12 @@ ThreadContextInfo::GetDoubleNaNAddr() const return SHIFT_ADDR(this, &Js::JavascriptNumber::k_Nan); } +intptr_t +ThreadContextInfo::GetFloatNaNAddr() const +{ + return SHIFT_ADDR(this, &Js::JavascriptNumber::k_Nan32); +} + intptr_t ThreadContextInfo::GetFloatNegTwoToFractionAddr() const { diff --git a/lib/Runtime/Base/ThreadContextInfo.h b/lib/Runtime/Base/ThreadContextInfo.h index aa1bdd476a0..d4553e3ecdd 100644 --- a/lib/Runtime/Base/ThreadContextInfo.h +++ b/lib/Runtime/Base/ThreadContextInfo.h @@ -17,6 +17,7 @@ class ThreadContextInfo intptr_t GetAbsDoubleCstAddr() const; intptr_t GetAbsFloatCstAddr() const; + intptr_t GetSgnBitCst() const; intptr_t GetMaskNegFloatAddr() const; intptr_t GetMaskNegDoubleAddr() const; intptr_t GetDoubleOnePointZeroAddr() const; @@ -29,6 +30,7 @@ class ThreadContextInfo intptr_t GetFloatTwoToFractionAddr() const; intptr_t GetDoubleNegTwoToFractionAddr() const; intptr_t GetDoubleNaNAddr() const; + intptr_t GetFloatNaNAddr() const; intptr_t GetFloatNegTwoToFractionAddr() const; intptr_t GetDoubleZeroAddr() const; intptr_t GetFloatZeroAddr() const; @@ -90,12 +92,7 @@ class ThreadContextInfo virtual PreReservedVirtualAllocWrapper * GetPreReservedVirtualAllocator() = 0; #endif - virtual intptr_t GetDebuggingFlagsAddr() const = 0; - virtual intptr_t GetDebugStepTypeAddr() const = 0; - virtual intptr_t GetDebugFrameAddressAddr() const = 0; - virtual intptr_t GetDebugScriptIdWhenSetAddr() const = 0; - - virtual Js::PropertyRecord const * GetPropertyRecord(Js::PropertyId propertyId) = 0; + virtual bool IsNumericProperty(Js::PropertyId propertyId) = 0; bool CanBeFalsy(Js::TypeId typeId) { return typeId == this->wellKnownHostTypeHTMLAllCollectionTypeId; } diff --git a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp index 8b720e0eb2b..6b375637f96 100644 --- a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp +++ b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp @@ -5,7 +5,7 @@ #include "RuntimeByteCodePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #if DBG_DUMP #include "Language/AsmJsModule.h" #include "ByteCode/AsmJsByteCodeDumper.h" @@ -196,6 +196,67 @@ namespace Js Output::Flush(); } + void AsmJsByteCodeDumper::DumpBasic(FunctionBody* body) + { + ByteCodeReader reader; + reader.Create(body); + body->DumpFullFunctionName(); + Output::Print(_u("\n")); + while (true) + { + int byteOffset = reader.GetCurrentOffset(); + LayoutSize layoutSize; + OpCodeAsmJs op = (OpCodeAsmJs)reader.ReadOp(layoutSize); + if (op == OpCodeAsmJs::EndOfBlock) + { + Assert(reader.GetCurrentOffset() == body->GetByteCode()->GetLength()); + break; + } + Output::Print(_u(" %04x %2s"), byteOffset, layoutSize == LargeLayout ? _u("L-") : layoutSize == MediumLayout ? _u("M-") : _u("")); + DumpOp(op, layoutSize, reader, body); + if (Js::Configuration::Global.flags.Verbose) + { + int layoutStart = byteOffset + 2; // Account fo the prefix op + int endByteOffset = reader.GetCurrentOffset(); + Output::SkipToColumn(70); + if (layoutSize == LargeLayout) + { + Output::Print(_u("%02X "), + op > Js::OpCodeAsmJs::MaxByteSizedOpcodes ? + Js::OpCodeAsmJs::ExtendedLargeLayoutPrefix : Js::OpCodeAsmJs::LargeLayoutPrefix); + } + else if (layoutSize == MediumLayout) + { + Output::Print(_u("%02X "), + op > Js::OpCodeAsmJs::MaxByteSizedOpcodes ? + Js::OpCodeAsmJs::ExtendedMediumLayoutPrefix : Js::OpCodeAsmJs::MediumLayoutPrefix); + } + else + { + Assert(layoutSize == SmallLayout); + if (op > Js::OpCodeAsmJs::MaxByteSizedOpcodes) + { + Output::Print(_u("%02X "), Js::OpCodeAsmJs::ExtendedOpcodePrefix); + } + else + { + Output::Print(_u(" ")); + layoutStart--; // don't have a prefix + } + } + + Output::Print(_u("%02x"), (byte)op); + for (int i = layoutStart; i < endByteOffset; i++) + { + Output::Print(_u(" %02x"), reader.GetRawByte(i)); + } + } + Output::Print(_u("\n")); + } + Output::Print(_u("\n")); + Output::Flush(); + } + void AsmJsByteCodeDumper::DumpConstants(AsmJsFunc* func, FunctionBody* body) { const auto& intRegisters = func->GetRegisterSpace(); @@ -351,7 +412,7 @@ namespace Js void AsmJsByteCodeDumper::DumpUint8x16Reg(RegSlot reg) { Output::Print(_u("U16_%d "), (int)reg); - } + } // Bool32x4 void AsmJsByteCodeDumper::DumpBool32x4Reg(RegSlot reg) { @@ -489,13 +550,17 @@ namespace Js switch (op) { case OpCodeAsmJs::LdArr: - Output::Print(_u("%c%d = %s[I%d]"), valueTag, data->Value, heapTag, data->SlotIndex); break; + Output::Print(_u(" %c%d = %s[I%d]"), valueTag, data->Value, heapTag, data->SlotIndex); break; + case OpCodeAsmJs::LdArrWasm: + Output::Print(_u(" %c%d = %s[I%d]"), valueTag, data->Value, heapTag, data->SlotIndex); break; case OpCodeAsmJs::LdArrConst: - Output::Print(_u("%c%d = %s[%d]"), valueTag, data->Value, heapTag, data->SlotIndex); break; + Output::Print(_u(" %c%d = %s[%d]"), valueTag, data->Value, heapTag, data->SlotIndex); break; case OpCodeAsmJs::StArr: - Output::Print(_u("%s[I%d] = %c%d"), heapTag, data->SlotIndex, valueTag, data->Value); break; + Output::Print(_u(" %s[I%d] = %c%d"), heapTag, data->SlotIndex, valueTag, data->Value); break; + case OpCodeAsmJs::StArrWasm: + Output::Print(_u(" %s[I%d] = %c%d"), heapTag, data->SlotIndex, valueTag, data->Value); break; case OpCodeAsmJs::StArrConst: - Output::Print(_u("%s[%d] = %c%d"), heapTag, data->SlotIndex, valueTag, data->Value); break; + Output::Print(_u(" %s[%d] = %c%d"), heapTag, data->SlotIndex, valueTag, data->Value); break; default: Assert(false); __assume(false); @@ -699,160 +764,168 @@ namespace Js DumpReg(data->R17); DumpReg(data->R18); } - template - void AsmJsByteCodeDumper::DumpAsmReg2IntConst1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpReg(data->R1); - DumpI4(data->C2); - } - template - void AsmJsByteCodeDumper::DumpInt1Double1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpDoubleReg(data->D1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpFloatReg(data->F1); - } - - template - void AsmJsByteCodeDumper::DumpDouble1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpDoubleReg(data->D0); - DumpIntReg(data->I1); - } - template - void AsmJsByteCodeDumper::DumpDouble1Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpDoubleReg(data->D0); - DumpFloatReg(data->F1); - } - template - void AsmJsByteCodeDumper::DumpDouble1Reg1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpDoubleReg(data->D0); - DumpReg(data->R1); - } - - template - void AsmJsByteCodeDumper::DumpFloat1Reg1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpReg(data->R1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Reg1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpReg(data->R1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Double1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpDoubleReg(data->D1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpFloatReg(data->F1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Double2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpDoubleReg(data->D1); - DumpDoubleReg(data->D2); - } - - template - void AsmJsByteCodeDumper::DumpInt1Float2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpFloatReg(data->F1); - DumpFloatReg(data->F2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpInt2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Const1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpI4(data->C1); - } - - template - void AsmJsByteCodeDumper::DumpInt3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpDouble2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpDoubleReg(data->D0); - DumpDoubleReg(data->D1); - } - - template - void AsmJsByteCodeDumper::DumpFloat2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpFloatReg(data->F1); - } - template - void AsmJsByteCodeDumper::DumpFloat3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpFloatReg(data->F1); - DumpFloatReg(data->F2); - } - template - void AsmJsByteCodeDumper::DumpFloat1Double1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpDoubleReg(data->D1); - } +#define LAYOUT_TYPE_WMS_REG2(layout, t0, t1) \ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + } +#define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) \ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + } +#define LAYOUT_TYPE_WMS_REG4(layout, t0, t1, t2, t3)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + }; +#define LAYOUT_TYPE_WMS_REG5(layout, t0, t1, t2, t3, t4)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + }; +#define LAYOUT_TYPE_WMS_REG6(layout, t0, t1, t2, t3, t4, t5)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + }; +#define LAYOUT_TYPE_WMS_REG7(layout, t0, t1, t2, t3, t4, t5, t6)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + }; +#define LAYOUT_TYPE_WMS_REG9(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + }; +#define LAYOUT_TYPE_WMS_REG10(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + }; +#define LAYOUT_TYPE_WMS_REG11(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + }; +#define LAYOUT_TYPE_WMS_REG17(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16));\ + }; +#define LAYOUT_TYPE_WMS_REG18(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16));\ + Dump##t17##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17));\ + }; +#define LAYOUT_TYPE_WMS_REG19(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18)\ + template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ + {\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16));\ + Dump##t17##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17));\ + Dump##t18##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t18(), 18));\ + }; - template - void AsmJsByteCodeDumper::DumpFloat1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpIntReg(data->I1); - } +#include "LayoutTypesAsmJs.h" - template - void AsmJsByteCodeDumper::DumpDouble3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpDoubleReg(data->D0); - DumpDoubleReg(data->D1); - DumpDoubleReg(data->D2); - } template void AsmJsByteCodeDumper::DumpBrInt1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) @@ -869,1465 +942,12 @@ namespace Js DumpIntReg(data->I2); } - // Float32x4 - template - void AsmJsByteCodeDumper::DumpFloat32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpFloat32x4Reg(data->F4_2); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_1Float32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpFloat32x4Reg(data->F4_1); - DumpFloat32x4Reg(data->F4_2); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Bool32x4_1Float32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpBool32x4Reg(data->B4_1); - DumpFloat32x4Reg(data->F4_2); - DumpFloat32x4Reg(data->F4_3); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpFloat32x4Reg(data->F4_2); - DumpFloat32x4Reg(data->F4_3); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Float4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloatReg(data->F1); - DumpFloatReg(data->F2); - DumpFloatReg(data->F3); - DumpFloatReg(data->F4); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_2Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_3Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpFloat32x4Reg(data->F4_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloatReg(data->F1); - } - template - void AsmJsByteCodeDumper::DumpFloat32x4_2Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) + void AsmJsByteCodeDumper::DumpBrInt1Const1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpFloatReg(data->F2); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpUint8x16Reg(data->U16_1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpFloat32x4Reg(data->F4_1); - } - - // Int32x4 - template - void AsmJsByteCodeDumper::DumpInt32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - DumpInt32x4Reg(data->I4_2); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_1Int32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpInt32x4Reg(data->I4_1); - DumpInt32x4Reg(data->I4_2); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Bool32x4_1Int32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpBool32x4Reg(data->B4_1); - DumpInt32x4Reg(data->I4_2); - DumpInt32x4Reg(data->I4_3); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_2Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt1Int32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpInt32x4Reg(data->I4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpFloat32x4_2Int1Float1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat32x4Reg(data->F4_1); - DumpIntReg(data->I2); - DumpFloatReg(data->F3); - } - - template - void AsmJsByteCodeDumper::DumpFloat1Float32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloatReg(data->F0); - DumpFloat32x4Reg(data->F4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_3Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - DumpInt32x4Reg(data->I4_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt32x4Reg(data->I4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpFloat32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpInt32x4_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpUint8x16Reg(data->U16_1); - } - - - - - // Bool32x4 - template - void AsmJsByteCodeDumper::DumpBool32x4_1Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool8x16Reg(data->B4_1); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpBool32x4Reg(data->B4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool32x4Reg(data->B4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpBool32x4Reg(data->B4_1); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpBool32x4Reg(data->B4_1); - DumpBool32x4Reg(data->B4_2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Bool32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpBool32x4Reg(data->B4_1); - } - - // Bool16x8 - template - void AsmJsByteCodeDumper::DumpBool16x8_1Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool16x8Reg(data->B8_1); - } - - template - void AsmJsByteCodeDumper::DumpBool16x8_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpBool16x8Reg(data->B8_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool16x8Reg(data->B8_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpBool16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpBool16x8Reg(data->B8_1); - } - - template - void AsmJsByteCodeDumper::DumpBool16x8_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpBool16x8Reg(data->B8_1); - DumpBool16x8Reg(data->B8_2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Bool16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpBool16x8Reg(data->B8_1); - } - - // Bool8x16 - template - void AsmJsByteCodeDumper::DumpBool8x16_1Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool8x16Reg(data->B16_1); - } - - template - void AsmJsByteCodeDumper::DumpBool8x16_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpBool8x16Reg(data->B16_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt1Bool8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpBool8x16Reg(data->B16_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpBool8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpBool8x16Reg(data->B16_1); - } - - template - void AsmJsByteCodeDumper::DumpBool8x16_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpBool8x16Reg(data->B16_1); - DumpBool8x16Reg(data->B16_2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Bool8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpBool8x16Reg(data->B16_1); - } - - // Int8x16 - template - void AsmJsByteCodeDumper::DumpInt8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - DumpInt8x16Reg(data->I16_2); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_3Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - DumpInt8x16Reg(data->I16_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - DumpIntReg(data->I17); - DumpIntReg(data->I18); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_2Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - DumpIntReg(data->I17); - } - - template - void AsmJsByteCodeDumper::DumpBool8x16_1Int8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpInt8x16Reg(data->I16_1); - DumpInt8x16Reg(data->I16_2); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Bool8x16_1Int8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpBool8x16Reg(data->B16_1); - DumpInt8x16Reg(data->I16_2); - DumpInt8x16Reg(data->I16_3); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt1Int8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpInt8x16Reg(data->I16_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt8x16Reg(data->I16_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpReg1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt8x16_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt8x16Reg(data->I16_0); - DumpUint8x16Reg(data->U16_1); - } - -// Disabled for now -#if 0 - // Float64x2 - template - void AsmJsByteCodeDumper::DumpInt32x4_1Float64x2_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt32x4Reg(data->I4_0); - DumpFloat64x2Reg(data->D2_1); - } - template - void AsmJsByteCodeDumper::DumpFloat32x4_1Float64x2_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat32x4Reg(data->F4_0); - DumpFloat64x2Reg(data->D2_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - DumpFloat64x2Reg(data->D2_2); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - DumpFloat64x2Reg(data->D2_2); - DumpFloat64x2Reg(data->D2_3); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_1Double2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpDoubleReg(data->D1); - DumpDoubleReg(data->D2); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_1Double1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpDoubleReg(data->D1); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_2Double1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - DumpDoubleReg(data->D2); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_3Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat64x2Reg(data->D2_1); - DumpFloat64x2Reg(data->D2_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpFloat64x2_1Int32x4_1Float64x2_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpFloat64x2Reg(data->D2_0); - DumpInt32x4Reg(data->I4_1); - DumpFloat64x2Reg(data->D2_2); - DumpFloat64x2Reg(data->D2_3); - } - - template - void AsmJsByteCodeDumper::DumpReg1Float64x2_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpFloat64x2Reg(data->D2_1); - } -#endif - // Int16x8 - template - void AsmJsByteCodeDumper::DumpInt16x8_1Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Int16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpInt16x8Reg(data->I8_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_2Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_3Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - DumpInt16x8Reg(data->I8_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - DumpInt16x8Reg(data->I8_2); - } - - template - void AsmJsByteCodeDumper::DumpBool16x8_1Int16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpInt16x8Reg(data->I8_1); - DumpInt16x8Reg(data->I8_2); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Bool16x8_1Int16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpBool16x8Reg(data->B8_1); - DumpInt16x8Reg(data->I8_2); - DumpInt16x8Reg(data->I8_3); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt16x8Reg(data->I8_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt16x8_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->I8_0); - DumpUint8x16Reg(data->U16_1); - } - - // Uint32x4 - template - void AsmJsByteCodeDumper::DumpUint32x4_1Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Uint32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpUint32x4Reg(data->U4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_2Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_3Int4(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - DumpUint32x4Reg(data->U4_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - DumpUint32x4Reg(data->U4_2); - } - - template - void AsmJsByteCodeDumper::DumpBool32x4_1Uint32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpUint32x4Reg(data->U4_1); - DumpUint32x4Reg(data->U4_2); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Bool32x4_1Uint32x4_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpBool32x4Reg(data->B4_1); - DumpUint32x4Reg(data->U4_2); - DumpUint32x4Reg(data->U4_3); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint32x4Reg(data->U4_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint32x4Reg(data->U4_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpUint32x4_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpInt16x8Reg(data->U4_0); - DumpUint8x16Reg(data->U16_1); - } - - // Uint16x8 - template - void AsmJsByteCodeDumper::DumpUint16x8_1Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpUint16x8Reg(data->U8_1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Uint16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpUint16x8Reg(data->U8_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_2Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_3Int8(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - DumpUint16x8Reg(data->U8_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - DumpUint16x8Reg(data->U8_2); - } - - template - void AsmJsByteCodeDumper::DumpBool16x8_1Uint16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpUint16x8Reg(data->U8_1); - DumpUint16x8Reg(data->U8_2); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Bool16x8_1Uint16x8_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpBool16x8Reg(data->B8_1); - DumpUint16x8Reg(data->U8_2); - DumpUint16x8Reg(data->U8_3); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint16x8Reg(data->U8_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint16x8_1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint16x8Reg(data->U8_0); - DumpUint8x16Reg(data->U16_1); - } - - // Uint8x16 - template - void AsmJsByteCodeDumper::DumpUint8x16_1Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpIntReg(data->I1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - } - - template - void AsmJsByteCodeDumper::DumpReg1Uint8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpReg(data->R0); - DumpUint8x16Reg(data->U16_1); - } - - template - void AsmJsByteCodeDumper::DumpInt1Uint8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpIntReg(data->I0); - DumpUint8x16Reg(data->U16_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_2Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - DumpIntReg(data->I17); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_3Int16(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - DumpUint8x16Reg(data->U16_2); - DumpIntReg(data->I3); - DumpIntReg(data->I4); - DumpIntReg(data->I5); - DumpIntReg(data->I6); - DumpIntReg(data->I7); - DumpIntReg(data->I8); - DumpIntReg(data->I9); - DumpIntReg(data->I10); - DumpIntReg(data->I11); - DumpIntReg(data->I12); - DumpIntReg(data->I13); - DumpIntReg(data->I14); - DumpIntReg(data->I15); - DumpIntReg(data->I16); - DumpIntReg(data->I17); - DumpIntReg(data->I18); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpIntReg(data->I1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_2Int2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - DumpIntReg(data->I2); - DumpIntReg(data->I3); - - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_3(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - DumpUint8x16Reg(data->U16_2); - } - - template - void AsmJsByteCodeDumper::DumpBool8x16_1Uint8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); - DumpUint8x16Reg(data->U16_1); - DumpUint8x16Reg(data->U16_2); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Bool8x16_1Uint8x16_2(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpBool8x16Reg(data->B16_1); - DumpUint8x16Reg(data->U16_2); - DumpUint8x16Reg(data->U16_3); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_2Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint8x16Reg(data->U16_1); - DumpIntReg(data->I2); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Float32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpFloat32x4Reg(data->F4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Int32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpInt32x4Reg(data->I4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Int16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpInt16x8Reg(data->I8_1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Int8x16_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpInt8x16Reg(data->I16_1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Uint32x4_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint32x4Reg(data->U4_1); - } - - template - void AsmJsByteCodeDumper::DumpUint8x16_1Uint16x8_1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpUint8x16Reg(data->U16_0); - DumpUint16x8Reg(data->U8_1); - } - - // bool32x4 - template - void AsmJsByteCodeDumper::DumpBool32x4_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool32x4Reg(data->B4_0); - DumpIntReg(data->I1); - } - - // bool16x8 - template - void AsmJsByteCodeDumper::DumpBool16x8_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool16x8Reg(data->B8_0); - DumpIntReg(data->I1); - } - - // bool8x16 - template - void AsmJsByteCodeDumper::DumpBool8x16_1Int1(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader) - { - DumpBool8x16Reg(data->B16_0); + DumpOffset(data->RelativeJumpOffset, reader); DumpIntReg(data->I1); + DumpI4(data->C1); } template diff --git a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.h b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.h index ba818bf47f5..9a06022b0ef 100644 --- a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.h +++ b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { #if DBG_DUMP @@ -13,6 +13,7 @@ namespace Js { { public: static void Dump(AsmJsFunc* func, FunctionBody* body); + static void DumpBasic(FunctionBody* body); static void DumpConstants(AsmJsFunc* func, FunctionBody* body); static void DumpOp(OpCodeAsmJs op, LayoutSize layoutSize, ByteCodeReader& reader, FunctionBody* dumpFunction); @@ -34,6 +35,11 @@ namespace Js { static void DumpFloat64x2Reg(RegSlot reg); + static void DumpRegReg(RegSlot reg) { DumpReg(reg); } + static void DumpIntConstReg(int val) { DumpI4(val); } + static void DumpFloatConstReg(float val) { DumpR4(val); } + static void DumpDoubleConstReg(double val) { DumpR8(val); } + #define LAYOUT_TYPE(layout) \ static void Dump##layout(OpCodeAsmJs op, const unaligned OpLayout##layout* data, FunctionBody * dumpFunction, ByteCodeReader& reader); #define LAYOUT_TYPE_WMS(layout) \ diff --git a/lib/Runtime/ByteCode/AsmJsByteCodeWriter.cpp b/lib/Runtime/ByteCode/AsmJsByteCodeWriter.cpp index 76d056ba3e2..d33667d97b2 100644 --- a/lib/Runtime/ByteCode/AsmJsByteCodeWriter.cpp +++ b/lib/Runtime/ByteCode/AsmJsByteCodeWriter.cpp @@ -5,8 +5,7 @@ #include "RuntimeByteCodePch.h" -#ifndef TEMP_DISABLE_ASMJS -#include "ByteCode/AsmJsByteCodeWriter.h" +#ifdef ASMJS_PLAT namespace Js { @@ -144,6 +143,7 @@ namespace Js } return false; } + template bool AsmJsByteCodeWriter::TryWriteAsmReg9(OpCodeAsmJs op, RegSlot R0, RegSlot R1, RegSlot R2, RegSlot R3, RegSlot R4, RegSlot R5, RegSlot R6, RegSlot R7, RegSlot R8) { @@ -228,21 +228,34 @@ namespace Js } template - bool AsmJsByteCodeWriter::TryWriteAsmReg2IntConst1(OpCodeAsmJs op, RegSlot R0, RegSlot R1, int C2) + bool AsmJsByteCodeWriter::TryWriteInt1Const1(OpCodeAsmJs op, RegSlot R0, int C1) { - OpLayoutT_AsmReg2IntConst1 layout; - if (SizePolicy::Assign(layout.R0, R0) && SizePolicy::Assign(layout.R1, R1) && SizePolicy::Assign(layout.C2, C2)) + OpLayoutT_Int1Const1 layout; + if (SizePolicy::Assign(layout.I0, R0) && SizePolicy::Assign(layout.C1, C1)) { m_byteCodeData.EncodeT(op, &layout, sizeof(layout), this); return true; } return false; } + template - bool AsmJsByteCodeWriter::TryWriteInt1Const1(OpCodeAsmJs op, RegSlot R0, int C1) + bool AsmJsByteCodeWriter::TryWriteFloat1Const1(OpCodeAsmJs op, RegSlot R0, float C1) { - OpLayoutT_Int1Const1 layout; - if (SizePolicy::Assign(layout.I0, R0) && SizePolicy::Assign(layout.C1, C1)) + OpLayoutT_Float1Const1 layout; + if (SizePolicy::Assign(layout.F0, R0) && SizePolicy::Assign(layout.C1, C1)) + { + m_byteCodeData.EncodeT(op, &layout, sizeof(layout), this); + return true; + } + return false; + } + + template + bool AsmJsByteCodeWriter::TryWriteDouble1Const1(OpCodeAsmJs op, RegSlot R0, double C1) + { + OpLayoutT_Double1Const1 layout; + if (SizePolicy::Assign(layout.D0, R0) && SizePolicy::Assign(layout.C1, C1)) { m_byteCodeData.EncodeT(op, &layout, sizeof(layout), this); return true; @@ -280,6 +293,21 @@ namespace Js return false; } + template + bool AsmJsByteCodeWriter::TryWriteAsmBrReg1Const1(OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, int C1) + { + OpLayoutT_BrInt1Const1 layout; + if (SizePolicy::Assign(layout.I1, R1) && SizePolicy::Assign(layout.C1, C1)) + { + size_t const offsetOfRelativeJumpOffsetFromEnd = sizeof(OpLayoutT_BrInt1Const1) - offsetof(OpLayoutT_BrInt1Const1, RelativeJumpOffset); + layout.RelativeJumpOffset = offsetOfRelativeJumpOffsetFromEnd; + m_byteCodeData.EncodeT(op, &layout, sizeof(layout), this); + AddJumpOffset(op, labelID, offsetOfRelativeJumpOffsetFromEnd); + return true; + } + return false; + } + template bool AsmJsByteCodeWriter::TryWriteAsmCall(OpCodeAsmJs op, RegSlot returnValueRegister, RegSlot functionRegister, ArgSlot givenArgCount, AsmJsRetType retType) { @@ -347,6 +375,16 @@ namespace Js MULTISIZE_LAYOUT_WRITE(Int1Const1, op, R0, C1); } + void AsmJsByteCodeWriter::AsmFloat1Const1(OpCodeAsmJs op, RegSlot R0, float C1) + { + MULTISIZE_LAYOUT_WRITE(Float1Const1, op, R0, C1); + } + + void AsmJsByteCodeWriter::AsmDouble1Const1(OpCodeAsmJs op, RegSlot R0, double C1) + { + MULTISIZE_LAYOUT_WRITE(Double1Const1, op, R0, C1); + } + void AsmJsByteCodeWriter::AsmReg1(OpCodeAsmJs op, RegSlot R0) { MULTISIZE_LAYOUT_WRITE(AsmReg1, op, R0); @@ -386,7 +424,6 @@ namespace Js { MULTISIZE_LAYOUT_WRITE(AsmReg9, op, R0, R1, R2, R3, R4, R5, R6, R7, R8); } - void AsmJsByteCodeWriter::AsmReg10(OpCodeAsmJs op, RegSlot R0, RegSlot R1, RegSlot R2, RegSlot R3, RegSlot R4, RegSlot R5, RegSlot R6, RegSlot R7, RegSlot R8, RegSlot R9) { MULTISIZE_LAYOUT_WRITE(AsmReg10, op, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9); @@ -414,10 +451,6 @@ namespace Js { MULTISIZE_LAYOUT_WRITE(AsmReg19, op, R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18); } - void AsmJsByteCodeWriter::AsmReg2IntConst1(OpCodeAsmJs op, RegSlot R0, RegSlot R1, int C2) - { - MULTISIZE_LAYOUT_WRITE(AsmReg2IntConst1, op, R0, R1, C2); - } void AsmJsByteCodeWriter::AsmBr(ByteCodeLabel labelID, OpCodeAsmJs op) { @@ -448,6 +481,14 @@ namespace Js MULTISIZE_LAYOUT_WRITE(AsmBrReg2, op, labelID, R1, R2); } + void AsmJsByteCodeWriter::AsmBrReg1Const1(OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, int C1) + { + CheckOpen(); + CheckLabel(labelID); + + MULTISIZE_LAYOUT_WRITE(AsmBrReg1Const1, op, labelID, R1, C1); + } + void AsmJsByteCodeWriter::AsmStartCall(OpCodeAsmJs op, ArgSlot ArgCount, bool isPatching) { CheckOpen(); diff --git a/lib/Runtime/ByteCode/AsmJsByteCodeWriter.h b/lib/Runtime/ByteCode/AsmJsByteCodeWriter.h index b391b4646a4..9ff67f27efb 100644 --- a/lib/Runtime/ByteCode/AsmJsByteCodeWriter.h +++ b/lib/Runtime/ByteCode/AsmJsByteCodeWriter.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { struct AsmJsByteCodeWriter : public ByteCodeWriter @@ -18,6 +18,8 @@ namespace Js void EmptyAsm ( OpCodeAsmJs op ); void Conv ( OpCodeAsmJs op, RegSlot R0, RegSlot R1 ); void AsmInt1Const1 ( OpCodeAsmJs op, RegSlot R0, int C1 ); + void AsmFloat1Const1 ( OpCodeAsmJs op, RegSlot R0, float C1 ); + void AsmDouble1Const1( OpCodeAsmJs op, RegSlot R0, double C1 ); void AsmReg1 ( OpCodeAsmJs op, RegSlot R0 ); void AsmReg2 ( OpCodeAsmJs op, RegSlot R0, RegSlot R1 ); void AsmReg3 ( OpCodeAsmJs op, RegSlot R0, RegSlot R1, RegSlot R2 ); @@ -34,10 +36,10 @@ namespace Js RegSlot R9, RegSlot R10, RegSlot R11, RegSlot R12, RegSlot R13, RegSlot R14, RegSlot R15, RegSlot R16, RegSlot R17); void AsmReg19 (OpCodeAsmJs op, RegSlot R0, RegSlot R1, RegSlot R2, RegSlot R3, RegSlot R4, RegSlot R5, RegSlot R6, RegSlot R7, RegSlot R8, RegSlot R9, RegSlot R10, RegSlot R11, RegSlot R12, RegSlot R13, RegSlot R14, RegSlot R15, RegSlot R16, RegSlot R17, RegSlot R18); - void AsmReg2IntConst1( OpCodeAsmJs op, RegSlot R0, RegSlot R1, int C2); void AsmBr ( ByteCodeLabel labelID, OpCodeAsmJs op = OpCodeAsmJs::AsmBr ); void AsmBrReg1 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1 ); void AsmBrReg2 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, RegSlot R2 ); + void AsmBrReg1Const1 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, int C1 ); void AsmStartCall ( OpCodeAsmJs op, ArgSlot ArgCount, bool isPatching = false); void AsmCall ( OpCodeAsmJs op, RegSlot returnValueRegister, RegSlot functionRegister, ArgSlot givenArgCount, AsmJsRetType retType ); void AsmSlot ( OpCodeAsmJs op, RegSlot value, RegSlot instance, int32 slotId ); @@ -68,10 +70,12 @@ namespace Js template bool TryWriteAsmReg19 (OpCodeAsmJs op, RegSlot R0, RegSlot R1, RegSlot R2, RegSlot R3, RegSlot R4, RegSlot R5, RegSlot R6, RegSlot R7, RegSlot R8, RegSlot R9, RegSlot R10, RegSlot R11, RegSlot R12, RegSlot R13, RegSlot R14, RegSlot R15, RegSlot R16, RegSlot R17, RegSlot R18); - template bool TryWriteAsmReg2IntConst1( OpCodeAsmJs op, RegSlot R0, RegSlot R1, int C2 ); template bool TryWriteInt1Const1 ( OpCodeAsmJs op, RegSlot R0, int C1 ); + template bool TryWriteFloat1Const1 ( OpCodeAsmJs op, RegSlot R0, float C1 ); + template bool TryWriteDouble1Const1 ( OpCodeAsmJs op, RegSlot R0, double C1 ); template bool TryWriteAsmBrReg1 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1 ); template bool TryWriteAsmBrReg2 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, RegSlot R2 ); + template bool TryWriteAsmBrReg1Const1 ( OpCodeAsmJs op, ByteCodeLabel labelID, RegSlot R1, int C1 ); template bool TryWriteAsmCall ( OpCodeAsmJs op, RegSlot returnValueRegister, RegSlot functionRegister, ArgSlot givenArgCount, AsmJsRetType retType ); template bool TryWriteAsmSlot ( OpCodeAsmJs op, RegSlot value, RegSlot instance, int32 slotId ); template bool TryWriteAsmTypedArr ( OpCodeAsmJs op, RegSlot value, uint32 slotIndex, ArrayBufferView::ViewType viewType ); diff --git a/lib/Runtime/ByteCode/ByteCodeDumper.cpp b/lib/Runtime/ByteCode/ByteCodeDumper.cpp index 25ca5cf2f17..d2315e6487a 100644 --- a/lib/Runtime/ByteCode/ByteCodeDumper.cpp +++ b/lib/Runtime/ByteCode/ByteCodeDumper.cpp @@ -306,6 +306,10 @@ namespace Js } } + void ByteCodeDumper::DumpR4(float value) + { + Output::Print(_u(" float:%g "), value); + } void ByteCodeDumper::DumpR8(double value) { Output::Print(_u(" double:%g "), value); @@ -941,7 +945,7 @@ namespace Js Output::Print(_u(" R%d = %s #%d"), data->Value, pPropertyName->GetBuffer(), data->inlineCacheIndex); DumpProfileId(data->inlineCacheIndex); break; - + case OpCode::StLocalFld: case OpCode::InitLocalFld: case OpCode::InitLocalLetFld: diff --git a/lib/Runtime/ByteCode/ByteCodeDumper.h b/lib/Runtime/ByteCode/ByteCodeDumper.h index 2ad3a5741d3..6f0d67b0e1c 100644 --- a/lib/Runtime/ByteCode/ByteCodeDumper.h +++ b/lib/Runtime/ByteCode/ByteCodeDumper.h @@ -22,6 +22,7 @@ namespace Js static void DumpU2(uint16 value); static void DumpOffset(int byteOffset, ByteCodeReader const& reader); static void DumpAddr(void* addr); + static void DumpR4(float value); static void DumpR8(double value); static void DumpReg(RegSlot registerID); static void DumpReg(RegSlot_TwoByte registerID); diff --git a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp index a8ac6376147..4c4407880fe 100644 --- a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp +++ b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp @@ -3096,7 +3096,7 @@ void ByteCodeGenerator::EmitOneFunction(ParseNode *pnode) byteCodeFunction->AllocateLiteralRegexArray(); m_callSiteId = 0; - m_writer.Begin(this, byteCodeFunction, alloc, this->DoJitLoopBodies(funcInfo), funcInfo->hasLoop); + m_writer.Begin(byteCodeFunction, alloc, this->DoJitLoopBodies(funcInfo), funcInfo->hasLoop, this->IsInDebugMode()); this->PushFuncInfo(_u("EmitOneFunction"), funcInfo); this->inPrologue = true; @@ -3601,7 +3601,7 @@ void ByteCodeGenerator::EmitScopeList(ParseNode *pnode, ParseNode *breakOnBodySc switch (pnode->nop) { case knopFncDecl: -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (pnode->sxFnc.GetAsmjsMode()) { Js::ExclusiveContext context(this, GetScriptContext()); diff --git a/lib/Runtime/ByteCode/ByteCodeReader.h b/lib/Runtime/ByteCode/ByteCodeReader.h index 0d5296e5c98..5680c69d230 100644 --- a/lib/Runtime/ByteCode/ByteCodeReader.h +++ b/lib/Runtime/ByteCode/ByteCodeReader.h @@ -61,7 +61,7 @@ namespace Js const unaligned OpLayout##layout* layout(const byte*& ip); #include "LayoutTypes.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #define LAYOUT_TYPE(layout) \ const unaligned OpLayout##layout* layout(); \ const unaligned OpLayout##layout* layout(const byte*& ip); diff --git a/lib/Runtime/ByteCode/ByteCodeSerializer.cpp b/lib/Runtime/ByteCode/ByteCodeSerializer.cpp index 74c1ff91e21..d2435bfe5c2 100644 --- a/lib/Runtime/ByteCode/ByteCodeSerializer.cpp +++ b/lib/Runtime/ByteCode/ByteCodeSerializer.cpp @@ -775,7 +775,7 @@ class ByteCodeBufferBuilder uint offset; }; -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT HRESULT RewriteAsmJsByteCodesInto(BufferBuilderList & builder, LPCWSTR clue, FunctionBody * function, ByteBlock * byteBlock) { SListCounted auxRecords(alloc); @@ -826,254 +826,31 @@ class ByteCodeBufferBuilder switch (layoutType) { -#define DEFAULT_LAYOUT(op) \ - case OpLayoutTypeAsmJs::##op: { \ +#define LAYOUT_TYPE(layout) \ + case OpLayoutTypeAsmJs::##layout: { \ Assert(layoutSize == SmallLayout); \ - reader.##op(); \ + reader.##layout(); \ saveBlock(); \ break; } -#define DEFAULT_LAYOUT_WITH_ONEBYTE(op) \ - case OpLayoutTypeAsmJs::##op: { \ +#define LAYOUT_TYPE_WMS(layout) \ + case OpLayoutTypeAsmJs::##layout: { \ switch (layoutSize) \ { \ case SmallLayout: \ - reader.##op##_Small(); \ + reader.##layout##_Small(); \ break; \ case MediumLayout: \ - reader.##op##_Medium(); \ + reader.##layout##_Medium(); \ break; \ case LargeLayout: \ - reader.##op##_Large(); \ + reader.##layout##_Large(); \ break; \ default: \ Assume(UNREACHED); \ } \ saveBlock(); \ break; } - - DEFAULT_LAYOUT(Empty); - DEFAULT_LAYOUT(StartCall); - DEFAULT_LAYOUT_WITH_ONEBYTE(ElementSlot); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmTypedArr); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmCall); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg1); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg2); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg3); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg4); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg5); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg6); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg7); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmReg2IntConst1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Double1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Double1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Double1Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Double1Reg1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float1Reg1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Reg1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Double1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Double2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Float2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Const1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Double2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float1Double1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Double3); - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmUnsigned1); - DEFAULT_LAYOUT(AsmBr); - DEFAULT_LAYOUT_WITH_ONEBYTE(BrInt1); - DEFAULT_LAYOUT_WITH_ONEBYTE(BrInt2); - //Float32x4 - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_1Float32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Bool32x4_1Float32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Float4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_2Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_3Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_2Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Int16x8_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Int8x16_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Uint8x16_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Uint32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Uint16x8_1); - //DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Float64x2_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_1Int32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Float32x4_1); - //Int32x4 - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_1Int32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Bool32x4_1Int32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_2Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_3Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_2Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_2Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Int8x16_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Int16x8_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Uint8x16_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Uint16x8_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Uint32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Int32x4_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float32x4_2Int1Float1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float1Float32x4_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Int32x4_1); - //DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Float64x2_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int32x4_1Float32x4_1); - // Float64x2 -#if 0 - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_1Double2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_1Double1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_2Double1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_2Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_3Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_1Float32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_1Int32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Float64x2_1Int32x4_1Float64x2_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Float64x2_1); -#endif // 0 - - // Int16x8 - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Int16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Int16x8_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_2Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_3Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_2Int2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_3) - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_1Int16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Bool16x8_1Int16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_2Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Float32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Int32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Int8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Uint32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Uint16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int16x8_1Uint8x16_1) - // In8x16 - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_3) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_2Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_3Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_2Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Int8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_1Int8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Bool8x16_1Int8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Float32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Int32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Int16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Uint32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Uint16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_1Uint8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Int8x16_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int8x16_2Int2) - // Uint32x4 - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Int4) - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Uint32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Uint32x4_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_2Int4) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_3Int4) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_2Int2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_3) - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_1Uint32x4_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Bool32x4_1Uint32x4_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_2Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Float32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Int32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Int16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Int8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Uint16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint32x4_1Uint8x16_1) - // Uint16x8 - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Uint16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Uint16x8_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_2Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_3Int8) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_2Int2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_3) - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_1Uint16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Bool16x8_1Uint16x8_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_2Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Float32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Int32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Int16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Int8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Uint32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint16x8_1Uint8x16_1) - // Uint8x16 - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Uint8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Uint8x16_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_2Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_3Int16) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_2Int2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_3) - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_1Uint8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Bool8x16_1Uint8x16_2) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_2Int1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Float32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Int32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Int16x8_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Int8x16_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Uint32x4_1) - DEFAULT_LAYOUT_WITH_ONEBYTE(Uint8x16_1Uint16x8_1) - // Bool32x4 - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_1Int4); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool32x4_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool32x4_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_2Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool32x4_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Bool32x4_1); - // Bool16x8 - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_1Int8); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool16x8_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool16x8_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_2Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool16x8_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Bool16x8_1); - // Bool8x16 - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_1Int16); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool8x16_1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Int1Bool8x16_1Int1); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_2Int2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_2); - DEFAULT_LAYOUT_WITH_ONEBYTE(Bool8x16_3); - DEFAULT_LAYOUT_WITH_ONEBYTE(Reg1Bool8x16_1); - - DEFAULT_LAYOUT_WITH_ONEBYTE(AsmSimdTypedArr); - - -#undef DEFAULT_LAYOUT -#undef DEFAULT_LAYOUT_WITH_ONEBYTE +#include "LayoutTypesAsmJs.h" default: AssertMsg(false, "Unknown OpLayout"); cantGenerate = true; @@ -1684,7 +1461,7 @@ class ByteCodeBufferBuilder } } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT uint32 AddAsmJsConstantTable(BufferBuilderList & builder, FunctionBody * function) { uint32 size = 0; @@ -2021,7 +1798,7 @@ class ByteCodeBufferBuilder return size; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT uint32 AddAsmJsFunctionInfo(BufferBuilderList & builder, FunctionBody * function) { uint32 size = 0; @@ -2217,7 +1994,7 @@ class ByteCodeBufferBuilder | (function->m_ChildCallsEval ? ffChildCallsEval : 0) | (function->m_hasReferenceableBuiltInArguments ? ffHasReferenceableBuiltInArguments : 0) | (isAnonymous ? ffIsAnonymous : 0) -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT | (function->m_isAsmjsMode ? ffIsAsmJsMode : 0) | (function->m_isAsmJsFunction ? ffIsAsmJsFunction : 0) #endif @@ -2299,7 +2076,7 @@ class ByteCodeBufferBuilder PrependByte(builder, _u("Loop Header Array Exists"), 0); } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (function->GetAsmJsFunctionInfo()) { PrependByte(builder, _u("Asm.js Info Exists"), 1); @@ -2316,7 +2093,7 @@ class ByteCodeBufferBuilder PrependByte(builder, _u("Asm.js Info Exists"), 0); } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (function->GetIsAsmJsFunction()) { AddAsmJsConstantTable(builder, function); @@ -2999,7 +2776,7 @@ class ByteCodeBufferReader return current; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT const byte * ReadAsmJsConstantsTable(const byte * current, FunctionBody * function) { #ifdef BYTE_CODE_MAGIC_CONSTANTS @@ -3443,7 +3220,7 @@ class ByteCodeBufferReader return current; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT const byte * ReadAsmJsFunctionInfo(const byte * current, FunctionBody * function) { #ifdef BYTE_CODE_MAGIC_CONSTANTS @@ -3880,7 +3657,7 @@ class ByteCodeBufferReader (*functionBody)->m_CallsEval = (bitflags & ffhasSetCallsEval) ? true : false; (*functionBody)->m_ChildCallsEval = (bitflags & ffChildCallsEval) ? true : false; (*functionBody)->m_hasReferenceableBuiltInArguments = (bitflags & ffHasReferenceableBuiltInArguments) ? true : false; -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT (*functionBody)->m_isAsmJsFunction = (bitflags & ffIsAsmJsFunction) ? true : false; (*functionBody)->m_isAsmjsMode = (bitflags & ffIsAsmJsMode) ? true : false; #endif @@ -3908,7 +3685,7 @@ class ByteCodeBufferReader byte asmJsInfoExists; current = ReadByte(current, &asmJsInfoExists); -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if (asmJsInfoExists == 1) { current = ReadAsmJsFunctionInfo(current, *functionBody); @@ -3924,7 +3701,7 @@ class ByteCodeBufferReader } // Read constants table -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT if ((*functionBody)->GetIsAsmJsFunction()) { current = ReadAsmJsConstantsTable(current, *functionBody); diff --git a/lib/Runtime/ByteCode/ByteCodeWriter.cpp b/lib/Runtime/ByteCode/ByteCodeWriter.cpp index 1addbaa8844..8b4b579c4e1 100644 --- a/lib/Runtime/ByteCode/ByteCodeWriter.cpp +++ b/lib/Runtime/ByteCode/ByteCodeWriter.cpp @@ -66,7 +66,7 @@ namespace Js /// ///---------------------------------------------------------------------------- - void ByteCodeWriter::Begin(ByteCodeGenerator* byteCodeGenerator, FunctionBody* functionWrite, ArenaAllocator* alloc, bool doJitLoopBodies, bool hasLoop) + void ByteCodeWriter::Begin(FunctionBody* functionWrite, ArenaAllocator* alloc, bool doJitLoopBodies, bool hasLoop, bool inDebugMode) { Assert(!isInUse); AssertMsg(m_functionWrite == nullptr, "Cannot nest Begin() calls"); @@ -79,7 +79,7 @@ namespace Js m_doJitLoopBodies = doJitLoopBodies; m_doInterruptProbe = functionWrite->GetScriptContext()->GetThreadContext()->DoInterruptProbe(functionWrite); m_hasLoop = hasLoop; - m_isInDebugMode = byteCodeGenerator->IsInDebugMode(); + m_isInDebugMode = inDebugMode; } template diff --git a/lib/Runtime/ByteCode/ByteCodeWriter.h b/lib/Runtime/ByteCode/ByteCodeWriter.h index c106c7fc08e..f62d7b7b091 100644 --- a/lib/Runtime/ByteCode/ByteCodeWriter.h +++ b/lib/Runtime/ByteCode/ByteCodeWriter.h @@ -223,7 +223,7 @@ namespace Js void Create(); void InitData(ArenaAllocator* alloc, int32 initCodeBufferSize); - void Begin(ByteCodeGenerator* byteCodeGenerator, FunctionBody* functionWrite, ArenaAllocator* alloc, bool doJitLoopBodies, bool hasLoop); + void Begin(FunctionBody* functionWrite, ArenaAllocator* alloc, bool doJitLoopBodies, bool hasLoop, bool inDebugMode); #ifdef LOG_BYTECODE_AST_RATIO void End(int32 currentAstSize, int32 maxAstSize); #else diff --git a/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj b/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj index c0fb24add6c..39e26e82bfa 100644 --- a/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj +++ b/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj @@ -21,9 +21,11 @@ + $(MSBuildThisFileDirectory); $(MSBuildThisFileDirectory)..; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Backend; $(MSBuildThisFileDirectory)..\..\JITClient; $(ChakraJITIDLIntDir); diff --git a/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj.filters b/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj.filters new file mode 100644 index 00000000000..9c10efaf43c --- /dev/null +++ b/lib/Runtime/ByteCode/Chakra.Runtime.ByteCode.vcxproj.filters @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/Runtime/ByteCode/LayoutTypesAsmJs.h b/lib/Runtime/ByteCode/LayoutTypesAsmJs.h index d8f9aa68503..02a99c6d19f 100644 --- a/lib/Runtime/ByteCode/LayoutTypesAsmJs.h +++ b/lib/Runtime/ByteCode/LayoutTypesAsmJs.h @@ -8,7 +8,6 @@ // "LAYOUT_TYPE", etc., to be executed for each entry. // -#ifndef TEMP_DISABLE_ASMJS #ifndef LAYOUT_TYPE #define LAYOUT_TYPE(layout) #endif @@ -20,6 +19,56 @@ LAYOUT_TYPE(layout##_Large) #endif +#ifndef LAYOUT_TYPE_WMS_REG2 +#define LAYOUT_TYPE_WMS_REG2(layout, t0, t1) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG3 +#define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG4 +#define LAYOUT_TYPE_WMS_REG4(layout, t0, t1, t2, t3) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG5 +#define LAYOUT_TYPE_WMS_REG5(layout, t0, t1, t2, t3, t4) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG6 +#define LAYOUT_TYPE_WMS_REG6(layout, t0, t1, t2, t3, t4, t5) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG7 +#define LAYOUT_TYPE_WMS_REG7(layout, t0, t1, t2, t3, t4, t5, t6) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG9 +#define LAYOUT_TYPE_WMS_REG9(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG10 +#define LAYOUT_TYPE_WMS_REG10(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG11 +#define LAYOUT_TYPE_WMS_REG11(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG17 +#define LAYOUT_TYPE_WMS_REG17(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG18 +#define LAYOUT_TYPE_WMS_REG18(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17) LAYOUT_TYPE_WMS(layout) +#endif + +#ifndef LAYOUT_TYPE_WMS_REG19 +#define LAYOUT_TYPE_WMS_REG19(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18) LAYOUT_TYPE_WMS(layout) +#endif + +#ifdef ASMJS_PLAT + // FE for frontend only layout #ifdef EXCLUDE_FRONTEND_LAYOUT #ifndef LAYOUT_TYPE_WMS_FE @@ -40,247 +89,285 @@ #define LAYOUT_TYPE_WMS_DUP LAYOUT_TYPE_WMS #endif +#define LAYOUT_PREFIX_Reg() R +#define LAYOUT_PREFIX_Int() I +#define LAYOUT_PREFIX_Float() F +#define LAYOUT_PREFIX_Double() D +#define LAYOUT_PREFIX_IntConst() C +#define LAYOUT_PREFIX_FloatConst() C +#define LAYOUT_PREFIX_DoubleConst() C +#define LAYOUT_PREFIX_Float32x4() F4_ +#define LAYOUT_PREFIX_Bool32x4() B4_ +#define LAYOUT_PREFIX_Int32x4() I4_ +#define LAYOUT_PREFIX_Float64x2() F2_ +#define LAYOUT_PREFIX_Int16x8() I8_ +#define LAYOUT_PREFIX_Bool16x8() B8_ +#define LAYOUT_PREFIX_Int8x16() I16_ +#define LAYOUT_PREFIX_Bool8x16() B16_ +#define LAYOUT_PREFIX_Uint32x4() U4_ +#define LAYOUT_PREFIX_Uint16x8() U8_ +#define LAYOUT_PREFIX_Uint8x16() U16_ + // These layout are already defined in LayoutTypes.h // We redeclare them here to keep the same layout and use them // in other contexts. -LAYOUT_TYPE_WMS_DUP ( ElementSlot ) -LAYOUT_TYPE_DUP ( StartCall ) -LAYOUT_TYPE_DUP ( Empty ) - -LAYOUT_TYPE_WMS ( AsmTypedArr ) -LAYOUT_TYPE_WMS ( AsmCall ) -LAYOUT_TYPE ( AsmBr ) -LAYOUT_TYPE_WMS ( AsmReg1 ) // Generic layout with 1 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg2 ) // Generic layout with 2 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg3 ) // Generic layout with 3 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg4 ) // Generic layout with 4 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg5 ) // Generic layout with 5 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg6 ) // Generic layout with 6 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg7 ) // Generic layout with 7 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg9 ) // Generic layout with 9 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg10 ) // Generic layout with 10 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg11 ) // Generic layout with 11 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg17 ) // Generic layout with 17 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg18 ) // Generic layout with 18 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg19 ) // Generic layout with 19 RegSlot -LAYOUT_TYPE_WMS_FE ( AsmReg2IntConst1 ) // Generic layout with 2 RegSlots and 1 Int Constant -LAYOUT_TYPE_WMS ( Int1Double1 ) // 1 int register and 1 double register -LAYOUT_TYPE_WMS ( Int1Float1 ) // 1 int register and 1 float register -LAYOUT_TYPE_WMS ( Double1Int1 ) // 1 double register and 1 int register -LAYOUT_TYPE_WMS ( Double1Float1 ) // 1 double register and 1 float register -LAYOUT_TYPE_WMS ( Double1Reg1 ) // 1 double register and 1 var register -LAYOUT_TYPE_WMS ( Float1Reg1 ) // 1 double register and 1 var register -LAYOUT_TYPE_WMS ( Int1Reg1 ) // 1 int register and 1 var register -LAYOUT_TYPE_WMS ( Reg1Double1 ) // 1 var register and 1 double register -LAYOUT_TYPE_WMS ( Reg1Float1 ) // 1 var register and 1 Float register -LAYOUT_TYPE_WMS ( Reg1Int1 ) // 1 var register and 1 int register -LAYOUT_TYPE_WMS ( Int1Const1 ) // 1 int register and 1 const int value -LAYOUT_TYPE_WMS ( Int1Double2 ) // 1 int register and 2 double register ( double comparisons ) -LAYOUT_TYPE_WMS ( Int1Float2 ) // 1 int register and 2 float register ( float comparisons ) -LAYOUT_TYPE_WMS ( Int2 ) // 2 int register -LAYOUT_TYPE_WMS ( Int3 ) // 3 int register -LAYOUT_TYPE_WMS ( Double2 ) // 2 double register -LAYOUT_TYPE_WMS ( Float2 ) // 2 float register -LAYOUT_TYPE_WMS ( Float3 ) // 3 float register -LAYOUT_TYPE_WMS ( Float1Double1 ) // 2 double register -LAYOUT_TYPE_WMS ( Float1Int1 ) // 2 double register -LAYOUT_TYPE_WMS ( Double3 ) // 3 double register -LAYOUT_TYPE_WMS ( BrInt1 ) // Conditional branching with 1 int -LAYOUT_TYPE_WMS ( BrInt2 ) // Conditional branching with 2 int -LAYOUT_TYPE_WMS ( AsmUnsigned1 ) // Conditional branching with 2 int +LAYOUT_TYPE_WMS_DUP ( ElementSlot ) +LAYOUT_TYPE_DUP ( StartCall ) +LAYOUT_TYPE_DUP ( Empty ) -// Float32x4 -LAYOUT_TYPE_WMS ( Float32x4_2 ) -LAYOUT_TYPE_WMS ( Float32x4_3 ) -LAYOUT_TYPE_WMS ( Float32x4_4 ) -LAYOUT_TYPE_WMS ( Bool32x4_1Float32x4_2 ) -LAYOUT_TYPE_WMS ( Float32x4_1Bool32x4_1Float32x4_2 ) -LAYOUT_TYPE_WMS ( Float32x4_1Float4 ) -LAYOUT_TYPE_WMS ( Float32x4_2Int4 ) -LAYOUT_TYPE_WMS ( Float32x4_3Int4 ) -LAYOUT_TYPE_WMS ( Float32x4_1Float1 ) -LAYOUT_TYPE_WMS ( Float32x4_2Float1 ) -//LAYOUT_TYPE_WMS ( Float32x4_1Float64x2_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Float32x4_1Uint8x16_1 ) -LAYOUT_TYPE_WMS ( Reg1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Float1Float32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Float32x4_2Int1Float1 ) -// Int32x4 -LAYOUT_TYPE_WMS ( Int32x4_2 ) -LAYOUT_TYPE_WMS ( Int32x4_3 ) -LAYOUT_TYPE_WMS ( Bool32x4_1Int32x4_2 ) -LAYOUT_TYPE_WMS ( Int32x4_1Bool32x4_1Int32x4_2 ) -LAYOUT_TYPE_WMS ( Int32x4_1Int4 ) -LAYOUT_TYPE_WMS ( Int32x4_2Int4 ) -LAYOUT_TYPE_WMS ( Int32x4_3Int4 ) -LAYOUT_TYPE_WMS ( Int32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Int32x4_2Int1 ) -LAYOUT_TYPE_WMS ( Reg1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Float32x4_1 ) -//LAYOUT_TYPE_WMS ( Int32x4_1Float64x2_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Int32x4_1Uint8x16_1 ) -LAYOUT_TYPE_WMS ( Int1Int32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Int32x4_2Int2 ) +LAYOUT_TYPE_WMS ( AsmTypedArr ) +LAYOUT_TYPE_WMS ( AsmCall ) +LAYOUT_TYPE ( AsmBr ) +LAYOUT_TYPE_WMS ( AsmReg1 ) // Generic layout with 1 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg2 ) // Generic layout with 2 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg3 ) // Generic layout with 3 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg4 ) // Generic layout with 4 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg5 ) // Generic layout with 5 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg6 ) // Generic layout with 6 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg7 ) // Generic layout with 7 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg9 ) // Generic layout with 9 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg10 ) // Generic layout with 10 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg11 ) // Generic layout with 11 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg17 ) // Generic layout with 17 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg18 ) // Generic layout with 18 RegSlot +LAYOUT_TYPE_WMS_FE ( AsmReg19 ) // Generic layout with 19 RegSlot +LAYOUT_TYPE_WMS_REG2 ( Int1Double1 , Int, Double) // 1 int register and 1 double register +LAYOUT_TYPE_WMS_REG2 ( Int1Float1 , Int, Float) // 1 int register and 1 float register +LAYOUT_TYPE_WMS_REG2 ( Double1Const1 , Double, DoubleConst) // 1 double register and 1 const double value +LAYOUT_TYPE_WMS_REG2 ( Double1Int1 , Double, Int) // 1 double register and 1 int register +LAYOUT_TYPE_WMS_REG2 ( Double1Float1 , Double, Float) // 1 double register and 1 float register +LAYOUT_TYPE_WMS_REG2 ( Double1Reg1 , Double, Reg) // 1 double register and 1 var register +LAYOUT_TYPE_WMS_REG2 ( Float1Reg1 , Float, Reg) // 1 double register and 1 var register +LAYOUT_TYPE_WMS_REG2 ( Int1Reg1 , Int, Reg) // 1 int register and 1 var register +LAYOUT_TYPE_WMS_REG2 ( Reg1Double1 , Reg, Double) // 1 var register and 1 double register +LAYOUT_TYPE_WMS_REG2 ( Reg1Float1 , Reg, Float) // 1 var register and 1 Float register +LAYOUT_TYPE_WMS_REG2 ( Reg1Int1 , Reg, Int) // 1 var register and 1 int register +LAYOUT_TYPE_WMS_REG2 ( Int1Const1 , Int, IntConst) // 1 int register and 1 const int value +LAYOUT_TYPE_WMS_REG3 ( Int1Double2 , Int, Double, Double) // 1 int register and 2 double register ( double comparisons ) +LAYOUT_TYPE_WMS_REG3 ( Int1Float2 , Int, Float, Float) // 1 int register and 2 float register ( float comparisons ) +LAYOUT_TYPE_WMS_REG2 ( Int2 , Int, Int) // 2 int register +LAYOUT_TYPE_WMS_REG3 ( Int3 , Int, Int, Int) // 3 int register +LAYOUT_TYPE_WMS_REG2 ( Double2 , Double, Double) // 2 double register +LAYOUT_TYPE_WMS_REG2 ( Float2 , Float, Float) // 2 float register +LAYOUT_TYPE_WMS_REG3 ( Float3 , Float, Float, Float) // 3 float register +LAYOUT_TYPE_WMS_REG2 ( Float1Const1 , Float, FloatConst) // 1 float register and 1 const float value +LAYOUT_TYPE_WMS_REG2 ( Float1Double1 , Float, Double) // 1 float register and 1 double register +LAYOUT_TYPE_WMS_REG2 ( Float1Int1 , Float, Int) // 2 double register +LAYOUT_TYPE_WMS_REG3 ( Double3 , Double, Double, Double) // 3 double register +LAYOUT_TYPE_WMS ( BrInt1 ) // Conditional branching with 1 int +LAYOUT_TYPE_WMS ( BrInt2 ) // Conditional branching with 2 int +LAYOUT_TYPE_WMS ( BrInt1Const1 ) // Conditional branching with 1 int and 1 const +LAYOUT_TYPE_WMS ( AsmUnsigned1 ) // 1 unsigned int register +// Float32x4 +LAYOUT_TYPE_WMS_REG2 ( Float32x4_2 , Float32x4, Float32x4) +LAYOUT_TYPE_WMS_REG3 ( Float32x4_3 , Float32x4, Float32x4, Float32x4) +LAYOUT_TYPE_WMS_REG4 ( Float32x4_4 , Float32x4, Float32x4, Float32x4, Float32x4) +LAYOUT_TYPE_WMS_REG3 ( Bool32x4_1Float32x4_2 , Bool32x4, Float32x4, Float32x4) +LAYOUT_TYPE_WMS_REG4 ( Float32x4_1Bool32x4_1Float32x4_2 , Float32x4, Bool32x4, Float32x4, Float32x4) +LAYOUT_TYPE_WMS_REG5 ( Float32x4_1Float4 , Float32x4, Float, Float, Float, Float) +LAYOUT_TYPE_WMS_REG6 ( Float32x4_2Int4 , Float32x4, Float32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG7 ( Float32x4_3Int4 , Float32x4, Float32x4, Float32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Float1 , Float32x4, Float) +LAYOUT_TYPE_WMS_REG3 ( Float32x4_2Float1 , Float32x4, Float32x4, Float) +//LAYOUT_TYPE_WMS_REG2( Float32x4_1Float64x2_1 , Float32x4, Float64x2) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Int32x4_1 , Float32x4, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Uint32x4_1 , Float32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Int16x8_1 , Float32x4, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Uint16x8_1 , Float32x4, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Int8x16_1 , Float32x4, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Float32x4_1Uint8x16_1 , Float32x4, Uint8x16) +LAYOUT_TYPE_WMS_REG2 ( Reg1Float32x4_1 , Reg, Float32x4) +LAYOUT_TYPE_WMS_REG3 ( Float1Float32x4_1Int1 , Float, Float32x4, Int) +LAYOUT_TYPE_WMS_REG4 ( Float32x4_2Int1Float1 , Float32x4, Float32x4, Int, Float) +// Int32x4_2 +LAYOUT_TYPE_WMS_REG2 ( Int32x4_2 , Int32x4, Int32x4) +LAYOUT_TYPE_WMS_REG3 ( Int32x4_3 , Int32x4, Int32x4, Int32x4) +LAYOUT_TYPE_WMS_REG3 ( Bool32x4_1Int32x4_2 , Bool32x4, Int32x4, Int32x4) +LAYOUT_TYPE_WMS_REG4 ( Int32x4_1Bool32x4_1Int32x4_2 , Int32x4, Bool32x4, Int32x4, Int32x4) +LAYOUT_TYPE_WMS_REG5 ( Int32x4_1Int4 , Int32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG6 ( Int32x4_2Int4 , Int32x4, Int32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG7 ( Int32x4_3Int4 , Int32x4, Int32x4, Int32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Int1 , Int32x4, Int) +LAYOUT_TYPE_WMS_REG3 ( Int32x4_2Int1 , Int32x4, Int32x4, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Int32x4_1 , Reg, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Float32x4_1 , Int32x4, Float32x4) +//LAYOUT_TYPE_WMS_REG2( Int32x4_1Float64x2_1 , Int32x4, Float64x2) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Uint32x4_1 , Int32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Int16x8_1 , Int32x4, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Uint16x8_1 , Int32x4, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Int8x16_1 , Int32x4, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Int32x4_1Uint8x16_1 , Int32x4, Uint8x16) +LAYOUT_TYPE_WMS_REG3 ( Int1Int32x4_1Int1 , Int, Int32x4, Int) +LAYOUT_TYPE_WMS_REG4 ( Int32x4_2Int2 , Int32x4, Int32x4, Int, Int) // Float64x2 // Disabled for now -#if 0 -LAYOUT_TYPE_WMS ( Float64x2_2 ) -LAYOUT_TYPE_WMS ( Float64x2_3 ) -LAYOUT_TYPE_WMS ( Float64x2_4 ) -LAYOUT_TYPE_WMS ( Float64x2_1Double2 ) -LAYOUT_TYPE_WMS ( Float64x2_1Double1 ) -LAYOUT_TYPE_WMS ( Float64x2_2Double1 ) -LAYOUT_TYPE_WMS ( Float64x2_2Int2 ) -LAYOUT_TYPE_WMS ( Float64x2_3Int2 ) -LAYOUT_TYPE_WMS ( Float64x2_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Float64x2_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Float64x2_1Int32x4_1Float64x2_2 ) -LAYOUT_TYPE_WMS ( Reg1Float64x2_1 ) - +#if 0 +LAYOUT_TYPE_WMS_REG2 ( Float64x2_2 , Float64x2, Float64x2) +LAYOUT_TYPE_WMS_REG3 ( Float64x2_3 , Float64x2, Float64x2, Float64x2) +LAYOUT_TYPE_WMS_REG4 ( Float64x2_4 , Float64x2, Float64x2, Float64x2, Float64x2) +LAYOUT_TYPE_WMS_REG3 ( Float64x2_1Double2 , Float64x2, Double, Double) +LAYOUT_TYPE_WMS_REG2 ( Float64x2_1Double1 , Float64x2, Double) +LAYOUT_TYPE_WMS_REG3 ( Float64x2_2Double1 , Float64x2, Float64x2, Double) +LAYOUT_TYPE_WMS_REG4 ( Float64x2_2Int2 , Float64x2, Float64x2, Int, Int) +LAYOUT_TYPE_WMS_REG5 ( Float64x2_3Int2 , Float64x2, Float64x2, Float64x2, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Float64x2_1Float32x4_1 , Float64x2, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Float64x2_1Int32x4_1 , Float64x2, Int32x4) +LAYOUT_TYPE_WMS_REG4 ( Float64x2_1Int32x4_1Float64x2_2 , Float64x2, Int32x4, Float64x2, Float64x2) +LAYOUT_TYPE_WMS_REG2 ( Reg1Float64x2_1 , Reg, Float64x2) #endif //0 + // Int16x8 -LAYOUT_TYPE_WMS ( Int16x8_1Int8 ) -LAYOUT_TYPE_WMS ( Reg1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Int16x8_2 ) -LAYOUT_TYPE_WMS ( Int1Int16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Int16x8_2Int8 ) -LAYOUT_TYPE_WMS ( Int16x8_3Int8 ) -LAYOUT_TYPE_WMS ( Int16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Int16x8_2Int2 ) -LAYOUT_TYPE_WMS ( Int16x8_3 ) -LAYOUT_TYPE_WMS ( Bool16x8_1Int16x8_2 ) -LAYOUT_TYPE_WMS ( Int16x8_1Bool16x8_1Int16x8_2 ) -LAYOUT_TYPE_WMS ( Int16x8_2Int1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Int16x8_1Uint8x16_1 ) +LAYOUT_TYPE_WMS_REG9 ( Int16x8_1Int8 , Int16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Int16x8_1 , Reg, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_2 , Int16x8, Int16x8) +LAYOUT_TYPE_WMS_REG3 ( Int1Int16x8_1Int1 , Int, Int16x8, Int) +LAYOUT_TYPE_WMS_REG10 ( Int16x8_2Int8 , Int16x8, Int16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG11 ( Int16x8_3Int8 , Int16x8, Int16x8, Int16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Int1 , Int16x8, Int) +LAYOUT_TYPE_WMS_REG4 ( Int16x8_2Int2 , Int16x8, Int16x8, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Int16x8_3 , Int16x8, Int16x8, Int16x8) +LAYOUT_TYPE_WMS_REG3 ( Bool16x8_1Int16x8_2 , Bool16x8, Int16x8, Int16x8) +LAYOUT_TYPE_WMS_REG4 ( Int16x8_1Bool16x8_1Int16x8_2 , Int16x8, Bool16x8, Int16x8, Int16x8) +LAYOUT_TYPE_WMS_REG3 ( Int16x8_2Int1 , Int16x8, Int16x8, Int) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Float32x4_1 , Int16x8, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Int32x4_1 , Int16x8, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Int8x16_1 , Int16x8, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Uint32x4_1 , Int16x8, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Uint16x8_1 , Int16x8, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Int16x8_1Uint8x16_1 , Int16x8, Uint8x16) // Int8x16 -LAYOUT_TYPE_WMS ( Int8x16_2 ) -LAYOUT_TYPE_WMS ( Int8x16_3 ) -LAYOUT_TYPE_WMS ( Int8x16_1Int16 ) -LAYOUT_TYPE_WMS ( Int8x16_2Int16 ) -LAYOUT_TYPE_WMS ( Int8x16_3Int16 ) -LAYOUT_TYPE_WMS ( Int8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Int8x16_2Int1 ) -LAYOUT_TYPE_WMS ( Reg1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Bool8x16_1Int8x16_2 ) -LAYOUT_TYPE_WMS ( Int8x16_1Bool8x16_1Int8x16_2 ) -LAYOUT_TYPE_WMS ( Int8x16_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Int8x16_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Int8x16_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Int8x16_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Int8x16_1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Int8x16_1Uint8x16_1 ) -LAYOUT_TYPE_WMS ( Int1Int8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Int8x16_2Int2 ) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_2 , Int8x16, Int8x16) +LAYOUT_TYPE_WMS_REG3 ( Int8x16_3 , Int8x16, Int8x16, Int8x16) +LAYOUT_TYPE_WMS_REG17 ( Int8x16_1Int16 , Int8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG18 ( Int8x16_2Int16 , Int8x16, Int8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG19 ( Int8x16_3Int16 , Int8x16, Int8x16, Int8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Int1 , Int8x16, Int) +LAYOUT_TYPE_WMS_REG3 ( Int8x16_2Int1 , Int8x16, Int8x16, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Int8x16_1 , Reg, Int8x16) +LAYOUT_TYPE_WMS_REG3 ( Bool8x16_1Int8x16_2 , Bool8x16, Int8x16, Int8x16) +LAYOUT_TYPE_WMS_REG4 ( Int8x16_1Bool8x16_1Int8x16_2 , Int8x16, Bool8x16, Int8x16, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Float32x4_1 , Int8x16, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Int32x4_1 , Int8x16, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Int16x8_1 , Int8x16, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Uint32x4_1 , Int8x16, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Uint16x8_1 , Int8x16, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Int8x16_1Uint8x16_1 , Int8x16, Uint8x16) +LAYOUT_TYPE_WMS_REG3 ( Int1Int8x16_1Int1 , Int, Int8x16, Int) +LAYOUT_TYPE_WMS_REG4 ( Int8x16_2Int2 , Int8x16, Int8x16, Int, Int) // Uint32x4 -LAYOUT_TYPE_WMS ( Uint32x4_1Int4 ) -LAYOUT_TYPE_WMS ( Reg1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_2 ) -LAYOUT_TYPE_WMS ( Int1Uint32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Uint32x4_2Int4 ) -LAYOUT_TYPE_WMS ( Uint32x4_3Int4 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Uint32x4_2Int2 ) -LAYOUT_TYPE_WMS ( Uint32x4_3 ) -LAYOUT_TYPE_WMS ( Bool32x4_1Uint32x4_2 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Bool32x4_1Uint32x4_2) -LAYOUT_TYPE_WMS ( Uint32x4_2Int1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Uint32x4_1Uint8x16_1 ) +LAYOUT_TYPE_WMS_REG5 ( Uint32x4_1Int4 , Uint32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Uint32x4_1 , Reg, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_2 , Uint32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG3 ( Int1Uint32x4_1Int1 , Int, Uint32x4, Int) +LAYOUT_TYPE_WMS_REG6 ( Uint32x4_2Int4 , Uint32x4, Uint32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG7 ( Uint32x4_3Int4 , Uint32x4, Uint32x4, Uint32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Int1 , Uint32x4, Int) +LAYOUT_TYPE_WMS_REG4 ( Uint32x4_2Int2 , Uint32x4, Uint32x4, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Uint32x4_3 , Uint32x4, Uint32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG3 ( Bool32x4_1Uint32x4_2 , Bool32x4, Uint32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG4 ( Uint32x4_1Bool32x4_1Uint32x4_2 , Uint32x4, Bool32x4, Uint32x4, Uint32x4) +LAYOUT_TYPE_WMS_REG3 ( Uint32x4_2Int1 , Uint32x4, Uint32x4, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Float32x4_1 , Uint32x4, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Int32x4_1 , Uint32x4, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Int16x8_1 , Uint32x4, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Int8x16_1 , Uint32x4, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Uint16x8_1 , Uint32x4, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Uint32x4_1Uint8x16_1 , Uint32x4, Uint8x16) // Uint16x8 -LAYOUT_TYPE_WMS ( Uint16x8_1Int8 ) -LAYOUT_TYPE_WMS ( Reg1Uint16x8_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_2 ) -LAYOUT_TYPE_WMS ( Int1Uint16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Uint16x8_2Int8 ) -LAYOUT_TYPE_WMS ( Uint16x8_3Int8 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Uint16x8_2Int2 ) -LAYOUT_TYPE_WMS ( Uint16x8_3 ) -LAYOUT_TYPE_WMS ( Bool16x8_1Uint16x8_2 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Bool16x8_1Uint16x8_2) -LAYOUT_TYPE_WMS ( Uint16x8_2Int1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Uint16x8_1Uint8x16_1 ) +LAYOUT_TYPE_WMS_REG9 ( Uint16x8_1Int8 , Uint16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Uint16x8_1 , Reg, Uint16x8) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_2 , Uint16x8, Uint16x8) +LAYOUT_TYPE_WMS_REG3 ( Int1Uint16x8_1Int1 , Int, Uint16x8, Int) +LAYOUT_TYPE_WMS_REG10 ( Uint16x8_2Int8 , Uint16x8, Uint16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG11 ( Uint16x8_3Int8 , Uint16x8, Uint16x8, Uint16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Int1 , Uint16x8, Int) +LAYOUT_TYPE_WMS_REG4 ( Uint16x8_2Int2 , Uint16x8, Uint16x8, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Uint16x8_3 , Uint16x8, Uint16x8, Uint16x8) +LAYOUT_TYPE_WMS_REG3 ( Bool16x8_1Uint16x8_2 , Bool16x8, Uint16x8, Uint16x8) +LAYOUT_TYPE_WMS_REG4 ( Uint16x8_1Bool16x8_1Uint16x8_2 , Uint16x8, Bool16x8, Uint16x8, Uint16x8) +LAYOUT_TYPE_WMS_REG3 ( Uint16x8_2Int1 , Uint16x8, Uint16x8, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Float32x4_1 , Uint16x8, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Int32x4_1 , Uint16x8, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Int16x8_1 , Uint16x8, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Int8x16_1 , Uint16x8, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Uint32x4_1 , Uint16x8, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint16x8_1Uint8x16_1 , Uint16x8, Uint8x16) // Uint8x16 -LAYOUT_TYPE_WMS ( Uint8x16_1Int16 ) -LAYOUT_TYPE_WMS ( Reg1Uint8x16_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_2 ) -LAYOUT_TYPE_WMS ( Int1Uint8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Uint8x16_2Int16 ) -LAYOUT_TYPE_WMS ( Uint8x16_3Int16 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Uint8x16_2Int2 ) -LAYOUT_TYPE_WMS ( Uint8x16_3 ) -LAYOUT_TYPE_WMS ( Bool8x16_1Uint8x16_2 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Bool8x16_1Uint8x16_2) -LAYOUT_TYPE_WMS ( Uint8x16_2Int1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Float32x4_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Int32x4_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Int16x8_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Int8x16_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Uint32x4_1 ) -LAYOUT_TYPE_WMS ( Uint8x16_1Uint16x8_1 ) - -//Bool32x4 -LAYOUT_TYPE_WMS ( Bool32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Bool32x4_1Int4 ) -LAYOUT_TYPE_WMS ( Int1Bool32x4_1Int1 ) -LAYOUT_TYPE_WMS ( Bool32x4_2Int2 ) -LAYOUT_TYPE_WMS ( Int1Bool32x4_1 ) -LAYOUT_TYPE_WMS ( Bool32x4_2 ) -LAYOUT_TYPE_WMS ( Bool32x4_3 ) -LAYOUT_TYPE_WMS ( Reg1Bool32x4_1 ) -//Bool16x8 -LAYOUT_TYPE_WMS ( Bool16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Bool16x8_1Int8 ) -LAYOUT_TYPE_WMS ( Int1Bool16x8_1Int1 ) -LAYOUT_TYPE_WMS ( Bool16x8_2Int2 ) -LAYOUT_TYPE_WMS ( Int1Bool16x8_1 ) -LAYOUT_TYPE_WMS ( Bool16x8_2 ) -LAYOUT_TYPE_WMS ( Bool16x8_3 ) -LAYOUT_TYPE_WMS ( Reg1Bool16x8_1 ) +LAYOUT_TYPE_WMS_REG17 ( Uint8x16_1Int16 , Uint8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Reg1Uint8x16_1 , Reg, Uint8x16) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_2 , Uint8x16, Uint8x16) +LAYOUT_TYPE_WMS_REG3 ( Int1Uint8x16_1Int1 , Int, Uint8x16, Int) +LAYOUT_TYPE_WMS_REG18 ( Uint8x16_2Int16 , Uint8x16, Uint8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG19 ( Uint8x16_3Int16 , Uint8x16, Uint8x16, Uint8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Int1 , Uint8x16, Int) +LAYOUT_TYPE_WMS_REG4 ( Uint8x16_2Int2 , Uint8x16, Uint8x16, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Uint8x16_3 , Uint8x16, Uint8x16, Uint8x16) +LAYOUT_TYPE_WMS_REG3 ( Bool8x16_1Uint8x16_2 , Bool8x16, Uint8x16, Uint8x16) +LAYOUT_TYPE_WMS_REG4 ( Uint8x16_1Bool8x16_1Uint8x16_2 , Uint8x16, Bool8x16, Uint8x16, Uint8x16) +LAYOUT_TYPE_WMS_REG3 ( Uint8x16_2Int1 , Uint8x16, Uint8x16, Int) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Float32x4_1 , Uint8x16, Float32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Int32x4_1 , Uint8x16, Int32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Int16x8_1 , Uint8x16, Int16x8) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Int8x16_1 , Uint8x16, Int8x16) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Uint32x4_1 , Uint8x16, Uint32x4) +LAYOUT_TYPE_WMS_REG2 ( Uint8x16_1Uint16x8_1 , Uint8x16, Uint16x8) + +// Bool32x4 +LAYOUT_TYPE_WMS_REG2 ( Bool32x4_1Int1 , Bool32x4, Int) +LAYOUT_TYPE_WMS_REG5 ( Bool32x4_1Int4 , Bool32x4, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Int1Bool32x4_1Int1 , Int, Bool32x4, Int) +LAYOUT_TYPE_WMS_REG4 ( Bool32x4_2Int2 , Bool32x4, Bool32x4, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int1Bool32x4_1 , Int, Bool32x4) +LAYOUT_TYPE_WMS_REG2 ( Bool32x4_2 , Bool32x4, Bool32x4) +LAYOUT_TYPE_WMS_REG3 ( Bool32x4_3 , Bool32x4, Bool32x4, Bool32x4) +LAYOUT_TYPE_WMS_REG2 ( Reg1Bool32x4_1 , Reg, Bool32x4) + +// Bool16x8 +LAYOUT_TYPE_WMS_REG2 ( Bool16x8_1Int1 , Bool16x8, Int) +LAYOUT_TYPE_WMS_REG9 ( Bool16x8_1Int8 , Bool16x8, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG3 ( Int1Bool16x8_1Int1 , Int, Bool16x8, Int) +LAYOUT_TYPE_WMS_REG4 ( Bool16x8_2Int2 , Bool16x8, Bool16x8, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int1Bool16x8_1 , Int, Bool16x8) +LAYOUT_TYPE_WMS_REG2 ( Bool16x8_2 , Bool16x8, Bool16x8) +LAYOUT_TYPE_WMS_REG3 ( Bool16x8_3 , Bool16x8, Bool16x8, Bool16x8) +LAYOUT_TYPE_WMS_REG2 ( Reg1Bool16x8_1 , Reg, Bool16x8) + //Bool8x16 -LAYOUT_TYPE_WMS ( Bool8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Bool8x16_1Int16 ) -LAYOUT_TYPE_WMS ( Int1Bool8x16_1 ) -LAYOUT_TYPE_WMS ( Int1Bool8x16_1Int1 ) -LAYOUT_TYPE_WMS ( Bool8x16_2Int2 ) -LAYOUT_TYPE_WMS ( Bool8x16_2 ) -LAYOUT_TYPE_WMS ( Bool8x16_3 ) -LAYOUT_TYPE_WMS ( Reg1Bool8x16_1 ) +LAYOUT_TYPE_WMS_REG2 ( Bool8x16_1Int1 , Bool8x16, Int) +LAYOUT_TYPE_WMS_REG17 ( Bool8x16_1Int16 , Bool8x16, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Int1Bool8x16_1 , Int, Bool8x16) +LAYOUT_TYPE_WMS_REG3 ( Int1Bool8x16_1Int1 , Int, Bool8x16, Int) +LAYOUT_TYPE_WMS_REG4 ( Bool8x16_2Int2 , Bool8x16, Bool8x16, Int, Int) +LAYOUT_TYPE_WMS_REG2 ( Bool8x16_2 , Bool8x16, Bool8x16) +LAYOUT_TYPE_WMS_REG3 ( Bool8x16_3 , Bool8x16, Bool8x16, Bool8x16) +LAYOUT_TYPE_WMS_REG2 ( Reg1Bool8x16_1 , Reg, Bool8x16) -LAYOUT_TYPE_WMS ( AsmSimdTypedArr ) + +LAYOUT_TYPE_WMS ( AsmSimdTypedArr ) +#endif #undef LAYOUT_TYPE_DUP #undef LAYOUT_TYPE_WMS_DUP #undef LAYOUT_TYPE #undef LAYOUT_TYPE_WMS +#undef LAYOUT_TYPE_WMS_REG2 +#undef LAYOUT_TYPE_WMS_REG3 +#undef LAYOUT_TYPE_WMS_REG4 +#undef LAYOUT_TYPE_WMS_REG5 +#undef LAYOUT_TYPE_WMS_REG6 +#undef LAYOUT_TYPE_WMS_REG7 +#undef LAYOUT_TYPE_WMS_REG9 +#undef LAYOUT_TYPE_WMS_REG10 +#undef LAYOUT_TYPE_WMS_REG11 +#undef LAYOUT_TYPE_WMS_REG17 +#undef LAYOUT_TYPE_WMS_REG18 +#undef LAYOUT_TYPE_WMS_REG19 #undef EXCLUDE_DUP_LAYOUT #undef LAYOUT_TYPE_WMS_FE #undef EXCLUDE_FRONTEND_LAYOUT -#endif + +#undef LAYOUT_PREFIX_Int +#undef LAYOUT_PREFIX_IntConst diff --git a/lib/Runtime/ByteCode/OpCodeUtilAsmJs.cpp b/lib/Runtime/ByteCode/OpCodeUtilAsmJs.cpp index cf6559cbfb8..8e905ace5fb 100644 --- a/lib/Runtime/ByteCode/OpCodeUtilAsmJs.cpp +++ b/lib/Runtime/ByteCode/OpCodeUtilAsmJs.cpp @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "RuntimeByteCodePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { #if DBG_DUMP || ENABLE_DEBUG_CONFIG_OPTIONS diff --git a/lib/Runtime/ByteCode/OpCodeUtilAsmJs.h b/lib/Runtime/ByteCode/OpCodeUtilAsmJs.h index f4e3b4dd2eb..bb785142783 100644 --- a/lib/Runtime/ByteCode/OpCodeUtilAsmJs.h +++ b/lib/Runtime/ByteCode/OpCodeUtilAsmJs.h @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { class OpCodeUtilAsmJs diff --git a/lib/Runtime/ByteCode/OpCodes.h b/lib/Runtime/ByteCode/OpCodes.h old mode 100644 new mode 100755 index 6c2a958c672..3929d10ce55 --- a/lib/Runtime/ByteCode/OpCodes.h +++ b/lib/Runtime/ByteCode/OpCodes.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- // Default all macro to nothing @@ -44,7 +44,6 @@ MACRO_EXTEND_WMS(opcode, layout, OpHasProfiled | attr) \ MACRO_EXTEND_WMS(Profiled##opcode, layout, OpByteCodeOnly | OpProfiled | attr) \ - #define MACRO_PROFILED(opcode, layout, attr) \ MACRO(opcode, layout, OpHasProfiled|attr) \ MACRO(Profiled##opcode, Profiled##layout, OpByteCodeOnly|OpProfiled|attr) \ @@ -223,6 +222,8 @@ MACRO_BACKEND_ONLY( Xor_I4, Empty, OpTempNumberSources| MACRO_BACKEND_ONLY( Shl_I4, Empty, OpTempNumberSources|OpCanCSE) // int32 Shift '<<' (signed, truncate) MACRO_BACKEND_ONLY( Shr_I4, Empty, OpTempNumberSources|OpCanCSE) // int32 Shift '>>' (signed, truncate) MACRO_BACKEND_ONLY( ShrU_I4, Empty, OpTempNumberSources|OpCanCSE) // int32 Shift '>>>'(unsigned, truncate) +MACRO_BACKEND_ONLY( Rol_I4, Empty, OpTempNumberSources|OpCanCSE) // int32 rol (signed) +MACRO_BACKEND_ONLY( Ror_I4, Empty, OpTempNumberSources|OpCanCSE) // int32 ror (signed) MACRO_BACKEND_ONLY( Add_Ptr, Empty, OpTempNumberSources|OpCanCSE) // ptr Arithmetic '+' @@ -251,7 +252,6 @@ MACRO_BACKEND_ONLY( CmUnLe_I4, Reg3, OpTempNumberSources| MACRO_BACKEND_ONLY( CmUnGt_I4, Reg3, OpTempNumberSources|OpCanCSE) // Unsigned I4 Compare if '>' MACRO_BACKEND_ONLY( CmUnGe_I4, Reg3, OpTempNumberSources|OpCanCSE) // Unsigned I4 Compare if '>=' - // Conversions MACRO_WMS( Conv_Num, Reg2, OpSideEffect|OpTempNumberProducing|OpTempNumberTransfer|OpTempObjectSources|OpOpndHasImplicitCall|OpProducesNumber) // Convert to Number. [[ToNumber()]] // Operation ToString(str) @@ -268,7 +268,7 @@ MACRO_BACKEND_ONLY( ToVar, Reg2, OpTempNumberProducin MACRO_BACKEND_ONLY( FromVar, Reg2, OpTempNumberSources|OpTempObjectSources|OpCanCSE) MACRO_BACKEND_ONLY( Conv_Prim, Reg2, OpTempNumberProducing|OpTempNumberSources|OpCanCSE|OpPostOpDbgBailOut) // Convert between primitives (int32/float64) MACRO_BACKEND_ONLY( Conv_Bool, Reg2, OpTempNumberSources|OpCanCSE) // Convert from i4 to bool - +MACRO_BACKEND_ONLY( Reinterpret_Prim, Reg2, OpTempNumberProducing|OpTempNumberSources|OpCanCSE) // Reinterpret bits between primitives (int32/float32) // Register MACRO_EXTEND_WMS( UnwrapWithObj, Reg2, OpSideEffect) // Copy Var register with unwrapped object @@ -567,7 +567,6 @@ MACRO_EXTEND( RuntimeTypeError, W1, OpSideEff MACRO_BACKEND_ONLY( InlineRuntimeReferenceError, W1, OpSideEffect|OpPostOpDbgBailOut) // Throws ReferenceError at runtime. MACRO_EXTEND( RuntimeReferenceError, W1, OpSideEffect|OpPostOpDbgBailOut) // Throws ReferenceError at runtime. - // Dynamic profile opcodes MACRO_WMS( LoopBodyStart, Unsigned1, OpByteCodeOnly) // Marks the start of a loop body MACRO_WMS( ProfiledLoopStart, Unsigned1, OpSideEffect) // Marks the start of a profiled loop @@ -591,7 +590,6 @@ MACRO_WMS( ProfiledReturnTypeCallIFlags, ProfiledCallIFlags, MACRO_WMS( ProfiledReturnTypeCallIExtended, ProfiledCallIExtended, OpByteCodeOnly|OpSideEffect|OpUseAllFields|OpCallInstr) MACRO_WMS( ProfiledReturnTypeCallIExtendedFlags, ProfiledCallIExtendedFlags, OpByteCodeOnly|OpSideEffect|OpUseAllFields|OpCallInstr) - MACRO_EXTEND_WMS( EmitTmpRegCount, Unsigned1, OpByteCodeOnly) MACRO_WMS( Unused, Reg1, None) @@ -605,7 +603,6 @@ MACRO_WMS( SetConcatStrMultiItem2, Reg3B1, None) // Altho MACRO_BACKEND_ONLY( LdStr, Empty, OpTempNumberProducing|OpCanCSE) // Load string literal MACRO_BACKEND_ONLY( CloneStr, Empty, OpTempNumberSources | OpTempNumberProducing) // Load string literal - // Operation ToString(str) if str != null or str != undefined MACRO_BACKEND_ONLY( Coerce_Str, Empty, OpOpndHasImplicitCall|OpTempNumberSources|OpTempObjectSources|OpPostOpDbgBailOut) @@ -678,6 +675,7 @@ MACRO_BACKEND_ONLY( InlineMathTan, Empty, OpInlinableBuiltIn|O // TODO: put these upfront so that all built-ins are sorted. MACRO_BACKEND_ONLY( InlineMathAbs, Empty, OpInlinableBuiltIn|OpTempNumberSources|OpCanCSE|OpProducesNumber) MACRO_BACKEND_ONLY( InlineMathClz32, Empty, OpInlinableBuiltIn|OpTempNumberSources|OpCanCSE|OpProducesNumber) +MACRO_BACKEND_ONLY( Ctz, Empty, OpTempNumberSources|OpCanCSE|OpProducesNumber) MACRO_BACKEND_ONLY( InlineMathCeil, Empty, OpInlinableBuiltIn|OpTempNumberSources|OpCanCSE|OpBailOutRec|OpProducesNumber) MACRO_BACKEND_ONLY( InlineMathFloor, Empty, OpInlinableBuiltIn|OpTempNumberSources|OpCanCSE|OpBailOutRec|OpProducesNumber) MACRO_BACKEND_ONLY( InlineMathMax, Empty, OpInlinableBuiltIn|OpTempNumberSources|OpCanCSE|OpProducesNumber) @@ -746,6 +744,12 @@ MACRO_BACKEND_ONLY( SlotArrayCheck, Empty, OpCanCSE) MACRO_BACKEND_ONLY( FrameDisplayCheck, Empty, OpCanCSE) MACRO_EXTEND( BeginBodyScope, Empty, OpSideEffect) +MACRO_BACKEND_ONLY( PopCnt32, Empty, OpTempNumberSources|OpCanCSE|OpProducesNumber) +MACRO_BACKEND_ONLY( Copysign_A, Empty, OpTempNumberSources|OpCanCSE|OpProducesNumber) +MACRO_BACKEND_ONLY( Trunc_A, Empty, OpTempNumberSources|OpCanCSE|OpProducesNumber) +MACRO_BACKEND_ONLY( Nearest_A, Empty, OpTempNumberSources|OpCanCSE|OpProducesNumber) +MACRO_BACKEND_ONLY( Unreachable_Void, Empty, OpSideEffect|OpNoFallThrough) + // All SIMD ops are backend only for non-asmjs. #define MACRO_SIMD(opcode, asmjsLayout, opCodeAttrAsmJs, OpCodeAttr, ...) MACRO_BACKEND_ONLY(opcode, Empty, OpCodeAttr) #define MACRO_SIMD_WMS(opcode, asmjsLayout, opCodeAttrAsmJs, OpCodeAttr, ...) MACRO_BACKEND_ONLY(opcode, Empty, OpCodeAttr) diff --git a/lib/Runtime/ByteCode/OpCodesAsmJs.h b/lib/Runtime/ByteCode/OpCodesAsmJs.h old mode 100644 new mode 100755 index 32526449984..d402df386b1 --- a/lib/Runtime/ByteCode/OpCodesAsmJs.h +++ b/lib/Runtime/ByteCode/OpCodesAsmJs.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- // Default all macro to nothing @@ -19,185 +19,212 @@ #define MACRO_EXTEND_WMS(opcode, layout, attr) #endif -// ( OpCodeAsmJs , LayoutAsmJs , OpCodeAttrAsmJs ) -// ( | , | , | ) -// ( | , | , | ) -// ( V , V , V ) +// ( OpCodeAsmJs , LayoutAsmJs , OpCodeAttrAsmJs ) +// ( | , | , | ) +// ( | , | , | ) +// ( V , V , V ) -MACRO ( EndOfBlock , Empty , None ) // End-of-buffer +MACRO ( EndOfBlock , Empty , None ) // End-of-buffer // Prefix, order must be maintained to be the same as in OpCodes.h -MACRO ( ExtendedOpcodePrefix , Empty , None ) -MACRO ( MediumLayoutPrefix , Empty , None ) -MACRO ( ExtendedMediumLayoutPrefix, Empty , None ) -MACRO ( LargeLayoutPrefix , Empty , None ) -MACRO ( ExtendedLargeLayoutPrefix , Empty , None ) +MACRO ( ExtendedOpcodePrefix , Empty , None ) +MACRO ( MediumLayoutPrefix , Empty , None ) +MACRO ( ExtendedMediumLayoutPrefix , Empty , None ) +MACRO ( LargeLayoutPrefix , Empty , None ) +MACRO ( ExtendedLargeLayoutPrefix , Empty , None ) -MACRO ( Nop , Empty , None ) // No operation (Default value = 0) -MACRO_EXTEND( InvalidOpCode , Empty , None ) // No operation (Default value = 0) -MACRO ( Label , Empty , None ) // No operation (Default value = 0) -MACRO ( Ret , Empty , None ) +MACRO ( Nop , Empty , None ) // No operation (Default value = 0) +MACRO_EXTEND ( InvalidOpCode , Empty , None ) // No operation (Default value = 0) +MACRO ( Label , Empty , None ) // No operation (Default value = 0) +MACRO ( Ret , Empty , None ) // External Function calls -MACRO ( StartCall , StartCall , None ) // Initialize memory for a call -MACRO_WMS ( Call , AsmCall , None ) // Execute call and place return value in register -MACRO_WMS ( ArgOut_Db , Reg1Double1 , None ) // convert double to var and place it for function call -MACRO_WMS ( ArgOut_Int , Reg1Int1 , None ) // convert int to var and place it for function call -MACRO_WMS ( Conv_VTD , Double1Reg1 , None ) // convert var to double -MACRO_WMS ( Conv_VTI , Int1Reg1 , None ) // convert var to int -MACRO_WMS ( Conv_VTF , Float1Reg1 , None ) // convert var to float +MACRO ( StartCall , StartCall , None ) // Initialize memory for a call +MACRO_WMS ( Call , AsmCall , None ) // Execute call and place return value in register +MACRO_WMS ( ArgOut_Db , Reg1Double1 , None ) // convert double to var and place it for function call +MACRO_WMS ( ArgOut_Int , Reg1Int1 , None ) // convert int to var and place it for function call +MACRO_WMS ( Conv_VTD , Double1Reg1 , None ) // convert var to double +MACRO_WMS ( Conv_VTI , Int1Reg1 , None ) // convert var to int +MACRO_WMS ( Conv_VTF , Float1Reg1 , None ) // convert var to float // Internal calls -MACRO ( I_StartCall , StartCall , None ) // Initialize memory for a call -MACRO_WMS ( I_Call , AsmCall , None ) // Execute call and place return value in register -MACRO_WMS ( I_ArgOut_Db , Reg1Double1 , None ) // convert double to var and place it for function call -MACRO_WMS ( I_ArgOut_Int , Reg1Int1 , None ) // convert int to var and place it for function call -MACRO_WMS ( I_ArgOut_Flt , Reg1Float1 , None ) // convert float to var and place it for function call -MACRO_WMS ( I_Conv_VTD , Double2 , None ) // convert var to double -MACRO_WMS ( I_Conv_VTI , Int2 , None ) // convert var to int -MACRO_WMS ( I_Conv_VTF , Float2 , None ) // convert var to float +MACRO ( I_StartCall , StartCall , None ) // Initialize memory for a call +MACRO_WMS ( I_Call , AsmCall , None ) // Execute call and place return value in register +MACRO_WMS ( I_ArgOut_Db , Reg1Double1 , None ) // convert double to var and place it for function call +MACRO_WMS ( I_ArgOut_Int , Reg1Int1 , None ) // convert int to var and place it for function call +MACRO_WMS ( I_ArgOut_Flt , Reg1Float1 , None ) // convert float to var and place it for function call +MACRO_WMS ( I_Conv_VTD , Double2 , None ) // convert var to double +MACRO_WMS ( I_Conv_VTI , Int2 , None ) // convert var to int +MACRO_WMS ( I_Conv_VTF , Float2 , None ) // convert var to float // loop -MACRO_WMS ( AsmJsLoopBodyStart , AsmUnsigned1 , None ) // Marks the start of a loop body +MACRO_WMS ( AsmJsLoopBodyStart , AsmUnsigned1 , None ) // Marks the start of a loop body // Branching -MACRO ( AsmBr , AsmBr , OpNoFallThrough ) // Unconditional branch -MACRO_WMS ( BrTrue_Int , BrInt1 , None ) // Jumps to offset if int value is not 0 -MACRO_WMS ( BrEq_Int , BrInt2 , None ) // Jumps to offset if both int are equals +MACRO ( AsmBr , AsmBr , OpNoFallThrough ) // Unconditional branch +MACRO_WMS ( BrTrue_Int , BrInt1 , None ) // Jumps to offset if int value is not 0 +MACRO_WMS ( BrFalse_Int , BrInt1 , None ) // Jumps to offset if int value is 0 +MACRO_WMS ( BrEq_Int , BrInt2 , None ) // Jumps to offset if both int are equals // Switching -MACRO_WMS ( BeginSwitch_Int , Int2 , None ) // Start of an integer switch statement, same function as Ld_Int -MACRO ( EndSwitch_Int , AsmBr , OpNoFallThrough ) // End of an integer switch statement, jumps to default case or past end of switch -MACRO_WMS ( Case_Int , BrInt2 , None ) // Integer branch, same function as BrInt2 +MACRO_WMS ( BeginSwitch_Int , Int2 , None ) // Start of an integer switch statement, same function as Ld_Int +MACRO ( EndSwitch_Int , AsmBr , OpNoFallThrough ) // End of an integer switch statement, jumps to default case or past end of switch +MACRO_WMS ( Case_Int , BrInt2 , None ) // Integer branch, same function as BrInt2 +MACRO_WMS ( Case_IntConst , BrInt1Const1 , None ) // Integer branch with inline const, same function as BrInt2 // Type conversion -MACRO_WMS ( Conv_DTI , Int1Double1 , None ) // convert double to int -MACRO_WMS ( Conv_FTI , Int1Float1 , None ) // convert float to int -MACRO_WMS ( Conv_ITD , Double1Int1 , None ) // convert int to double -MACRO_WMS ( Conv_FTD , Double1Float1, None ) // convert float to double -MACRO_WMS ( Conv_UTD , Double1Int1 , None ) // convert unsigned int to double -MACRO_WMS ( Return_Db , Double2 , None ) // convert double to var -MACRO_WMS ( Return_Flt , Float2 , None ) // convert float to var -MACRO_WMS ( Return_Int , Int2 , None ) // convert int to var +MACRO_WMS ( Reinterpret_ITF , Float1Int1 , None ) // reinterpret bits of int to float +MACRO_WMS ( Reinterpret_FTI , Int1Float1 , None ) // reinterpret bits of float to int +MACRO_WMS ( Conv_DTI , Int1Double1 , None ) // convert double to int +MACRO_WMS ( Conv_FTI , Int1Float1 , None ) // convert float to int +MACRO_WMS ( Conv_DTU , Int1Double1 , None ) // convert double to unsigned int +MACRO_WMS ( Conv_FTU , Int1Float1 , None ) // convert float to unsigned int +MACRO_WMS ( Conv_ITD , Double1Int1 , None ) // convert int to double +MACRO_WMS ( Conv_FTD , Double1Float1 , None ) // convert float to double +MACRO_WMS ( Conv_UTD , Double1Int1 , None ) // convert unsigned int to double +MACRO_WMS ( Conv_UTF , Float1Int1 , None ) // convert unsigned int to float +MACRO_WMS ( Return_Db , Double2 , None ) // convert double to var +MACRO_WMS ( Return_Flt , Float2 , None ) // convert float to var +MACRO_WMS ( Return_Int , Int2 , None ) // convert int to var // Module memory manipulation -MACRO_WMS ( LdUndef , AsmReg1 , None ) // Load 'undefined' usually in return register -MACRO_WMS ( LdSlotArr , ElementSlot , None ) // Loads an array of Var from an array of Var -MACRO_WMS ( LdSlot , ElementSlot , None ) // Loads a Var from an array of Var -MACRO_WMS ( LdSlot_Db , ElementSlot , None ) // Loads a double from the Module -MACRO_WMS ( LdSlot_Int , ElementSlot , None ) // Loads an Int from the Module -MACRO_WMS ( LdSlot_Flt , ElementSlot , None ) // Loads a Float from the Module -MACRO_WMS ( StSlot_Db , ElementSlot , None ) // Sets a double in the Module -MACRO_WMS ( StSlot_Int , ElementSlot , None ) // Sets an Int in the Module -MACRO_WMS ( StSlot_Flt , ElementSlot , None ) // Sets an Int in the Module -MACRO_WMS ( LdArr_Func , ElementSlot , None ) // opcode to load func from function tables +MACRO_WMS ( LdUndef , AsmReg1 , None ) // Load 'undefined' usually in return register +MACRO_WMS ( LdSlotArr , ElementSlot , None ) // Loads an array of Var from an array of Var +MACRO_WMS ( LdSlot , ElementSlot , None ) // Loads a Var from an array of Var +MACRO_WMS ( LdSlot_Db , ElementSlot , None ) // Loads a double from the Module +MACRO_WMS ( LdSlot_Int , ElementSlot , None ) // Loads an Int from the Module +MACRO_WMS ( LdSlot_Flt , ElementSlot , None ) // Loads a Float from the Module +MACRO_WMS ( StSlot_Db , ElementSlot , None ) // Sets a double in the Module +MACRO_WMS ( StSlot_Int , ElementSlot , None ) // Sets an Int in the Module +MACRO_WMS ( StSlot_Flt , ElementSlot , None ) // Sets an Int in the Module +MACRO_WMS ( LdArr_Func , ElementSlot , None ) // opcode to load func from function tables // Array Buffer manipulations -MACRO_WMS ( LdArr , AsmTypedArr , None ) -MACRO_WMS ( LdArrConst , AsmTypedArr , None ) -MACRO_WMS ( StArr , AsmTypedArr , None ) -MACRO_WMS ( StArrConst , AsmTypedArr , None ) +MACRO_WMS ( LdArrWasm , AsmTypedArr , None ) +MACRO_WMS ( StArrWasm , AsmTypedArr , None ) +MACRO_WMS ( LdArr , AsmTypedArr , None ) +MACRO_WMS ( LdArrConst , AsmTypedArr , None ) +MACRO_WMS ( StArr , AsmTypedArr , None ) +MACRO_WMS ( StArrConst , AsmTypedArr , None ) // Int math -MACRO_WMS ( Ld_IntConst , Int1Const1 , None ) // Sets an int register from a const int -MACRO_WMS ( Ld_Int , Int2 , None ) // Sets an int from another int register -MACRO_WMS ( Neg_Int , Int2 , None ) // int unary '-' -MACRO_WMS ( Not_Int , Int2 , None ) // int unary '~' -MACRO_WMS ( LogNot_Int , Int2 , None ) // int unary '!' -MACRO_WMS ( Conv_ITB , Int2 , None ) // int unary '!!' transform an int into a bool (0|1) -MACRO_WMS ( Add_Int , Int3 , None ) // int32 Arithmetic '+' -MACRO_WMS ( Sub_Int , Int3 , None ) // int32 Arithmetic '-' (subtract) -MACRO_WMS ( Mul_Int , Int3 , None ) // int32 Arithmetic '*' -MACRO_WMS ( Div_Int , Int3 , None ) // int32 Arithmetic '/' -MACRO_WMS ( Rem_Int , Int3 , None ) // int32 Arithmetic '%' -MACRO_WMS ( And_Int , Int3 , None ) // int32 Bitwise '&' -MACRO_WMS ( Or_Int , Int3 , None ) // int32 Bitwise '|' -MACRO_WMS ( Xor_Int , Int3 , None ) // int32 Bitwise '^' -MACRO_WMS ( Shl_Int , Int3 , None ) // int32 Shift '<<' (signed, truncate) -MACRO_WMS ( Shr_Int , Int3 , None ) // int32 Shift '>>' (signed, truncate) -MACRO_WMS ( ShrU_Int , Int3 , None ) // int32 Shift '>>>'(unsigned, truncate) +MACRO_WMS ( Ld_IntConst , Int1Const1 , None ) // Sets an int register from a const int +MACRO_WMS ( Ld_Int , Int2 , None ) // Sets an int from another int register +MACRO_WMS ( Neg_Int , Int2 , None ) // int unary '-' +MACRO_WMS ( Not_Int , Int2 , None ) // int unary '~' +MACRO_WMS ( LogNot_Int , Int2 , None ) // int unary '!' +MACRO_WMS ( Conv_ITB , Int2 , None ) // int unary '!!' transform an int into a bool (0|1) +MACRO_WMS ( Add_Int , Int3 , None ) // int32 Arithmetic '+' +MACRO_WMS ( Sub_Int , Int3 , None ) // int32 Arithmetic '-' (subtract) +MACRO_WMS ( Mul_Int , Int3 , None ) // int32 Arithmetic '*' +MACRO_WMS ( Div_Int , Int3 , None ) // int32 Arithmetic '/' +MACRO_WMS ( Rem_Int , Int3 , None ) // int32 Arithmetic '%' +MACRO_WMS ( And_Int , Int3 , None ) // int32 Bitwise '&' +MACRO_WMS ( Or_Int , Int3 , None ) // int32 Bitwise '|' +MACRO_WMS ( Xor_Int , Int3 , None ) // int32 Bitwise '^' +MACRO_WMS ( Shl_Int , Int3 , None ) // int32 Shift '<<' (signed, truncate) +MACRO_WMS ( Shr_Int , Int3 , None ) // int32 Shift '>>' (signed, truncate) +MACRO_WMS ( Shr_UInt , Int3 , None ) // int32 Shift '>>>'(unsigned, truncate) +MACRO_WMS ( Rol_Int , Int3 , None ) // int32 Rotate left +MACRO_WMS ( Ror_Int , Int3 , None ) // int32 Rotate right // Unsigned int math -MACRO_WMS ( Mul_UInt , Int3 , None ) // uint32 Arithmetic '*' -MACRO_WMS ( Div_UInt , Int3 , None ) // uint32 Arithmetic '/' -MACRO_WMS ( Rem_UInt , Int3 , None ) // uint32 Arithmetic '%' +MACRO_WMS ( Mul_UInt , Int3 , None ) // uint32 Arithmetic '*' +MACRO_WMS ( Div_UInt , Int3 , None ) // uint32 Arithmetic '/' +MACRO_WMS ( Rem_UInt , Int3 , None ) // uint32 Arithmetic '%' // Double math -MACRO_WMS ( Ld_Db , Double2 , None ) // Sets a double from another double register -MACRO_WMS ( Neg_Db , Double2 , None ) // Double Unary '-' -MACRO_WMS ( Add_Db , Double3 , None ) // Double Arithmetic '+' -MACRO_WMS ( Sub_Db , Double3 , None ) // Double Arithmetic '-' (subtract) -MACRO_WMS ( Mul_Db , Double3 , None ) // Double Arithmetic '*' -MACRO_WMS ( Div_Db , Double3 , None ) // Double Arithmetic '/' -MACRO_WMS ( Rem_Db , Double3 , None ) // Double Arithmetic '%' +MACRO_WMS ( Ld_DbConst , Double1Const1 , None ) // Sets a double register from a const double +MACRO_WMS ( Ld_Db , Double2 , None ) // Sets a double from another double register +MACRO_WMS ( Neg_Db , Double2 , None ) // Double Unary '-' +MACRO_WMS ( Add_Db , Double3 , None ) // Double Arithmetic '+' +MACRO_WMS ( Sub_Db , Double3 , None ) // Double Arithmetic '-' (subtract) +MACRO_WMS ( Mul_Db , Double3 , None ) // Double Arithmetic '*' +MACRO_WMS ( Div_Db , Double3 , None ) // Double Arithmetic '/' +MACRO_WMS ( Rem_Db , Double3 , None ) // Double Arithmetic '%' // float math -MACRO_WMS ( Ld_Flt , Float2 , None ) // Sets a float from another float register -MACRO_WMS ( Neg_Flt , Float2 , None ) // Float Unary '-' -MACRO_WMS ( Add_Flt , Float3 , None ) // Float Arithmetic '+' -MACRO_WMS ( Sub_Flt , Float3 , None ) // Float Arithmetic '-' (subtract) -MACRO_WMS ( Mul_Flt , Float3 , None ) // Float Arithmetic '*' -MACRO_WMS ( Div_Flt , Float3 , None ) // Float Arithmetic '/' +MACRO_WMS ( Ld_FltConst , Float1Const1 , None ) // Sets a float register from a const float +MACRO_WMS ( Ld_Flt , Float2 , None ) // Sets a float from another float register +MACRO_WMS ( Neg_Flt , Float2 , None ) // Float Unary '-' +MACRO_WMS ( Add_Flt , Float3 , None ) // Float Arithmetic '+' +MACRO_WMS ( Sub_Flt , Float3 , None ) // Float Arithmetic '-' (subtract) +MACRO_WMS ( Mul_Flt , Float3 , None ) // Float Arithmetic '*' +MACRO_WMS ( Div_Flt , Float3 , None ) // Float Arithmetic '/' // Int comparisons -MACRO_WMS ( CmLt_Int , Int3 , None ) // int32 Comparison < -MACRO_WMS ( CmLe_Int , Int3 , None ) // int32 Comparison <= -MACRO_WMS ( CmGt_Int , Int3 , None ) // int32 Comparison > -MACRO_WMS ( CmGe_Int , Int3 , None ) // int32 Comparison >= -MACRO_WMS ( CmEq_Int , Int3 , None ) // int32 Comparison == -MACRO_WMS ( CmNe_Int , Int3 , None ) // int32 Comparison != +MACRO_WMS ( CmLt_Int , Int3 , None ) // int32 Comparison < +MACRO_WMS ( CmLe_Int , Int3 , None ) // int32 Comparison <= +MACRO_WMS ( CmGt_Int , Int3 , None ) // int32 Comparison > +MACRO_WMS ( CmGe_Int , Int3 , None ) // int32 Comparison >= +MACRO_WMS ( CmEq_Int , Int3 , None ) // int32 Comparison == +MACRO_WMS ( CmNe_Int , Int3 , None ) // int32 Comparison != +MACRO_WMS ( Eqz_Int , Int2 , None ) // int32 Comparison with 0 // Unsigned int comparisons -MACRO_WMS ( CmLt_UnInt , Int3 , None ) // uint32 Comparison < -MACRO_WMS ( CmLe_UnInt , Int3 , None ) // uint32 Comparison <= -MACRO_WMS ( CmGt_UnInt , Int3 , None ) // uint32 Comparison > -MACRO_WMS ( CmGe_UnInt , Int3 , None ) // uint32 Comparison >= +MACRO_WMS ( CmLt_UInt , Int3 , None ) // uint32 Comparison < +MACRO_WMS ( CmLe_UInt , Int3 , None ) // uint32 Comparison <= +MACRO_WMS ( CmGt_UInt , Int3 , None ) // uint32 Comparison > +MACRO_WMS ( CmGe_UInt , Int3 , None ) // uint32 Comparison >= // Double comparisons -MACRO_WMS ( CmLt_Db , Int1Double2 , None ) // double Comparison < -MACRO_WMS ( CmLe_Db , Int1Double2 , None ) // double Comparison <= -MACRO_WMS ( CmGt_Db , Int1Double2 , None ) // double Comparison > -MACRO_WMS ( CmGe_Db , Int1Double2 , None ) // double Comparison >= -MACRO_WMS ( CmEq_Db , Int1Double2 , None ) // double Comparison == -MACRO_WMS ( CmNe_Db , Int1Double2 , None ) // double Comparison != +MACRO_WMS ( CmLt_Db , Int1Double2 , None ) // double Comparison < +MACRO_WMS ( CmLe_Db , Int1Double2 , None ) // double Comparison <= +MACRO_WMS ( CmGt_Db , Int1Double2 , None ) // double Comparison > +MACRO_WMS ( CmGe_Db , Int1Double2 , None ) // double Comparison >= +MACRO_WMS ( CmEq_Db , Int1Double2 , None ) // double Comparison == +MACRO_WMS ( CmNe_Db , Int1Double2 , None ) // double Comparison != // Float comparisons -MACRO_WMS ( CmLt_Flt , Int1Float2 , None ) // float Comparison < -MACRO_WMS ( CmLe_Flt , Int1Float2 , None ) // float Comparison <= -MACRO_WMS ( CmGt_Flt , Int1Float2 , None ) // float Comparison > -MACRO_WMS ( CmGe_Flt , Int1Float2 , None ) // float Comparison >= -MACRO_WMS ( CmEq_Flt , Int1Float2 , None ) // float Comparison == -MACRO_WMS ( CmNe_Flt , Int1Float2 , None ) // float Comparison != +MACRO_WMS ( CmLt_Flt , Int1Float2 , None ) // float Comparison < +MACRO_WMS ( CmLe_Flt , Int1Float2 , None ) // float Comparison <= +MACRO_WMS ( CmGt_Flt , Int1Float2 , None ) // float Comparison > +MACRO_WMS ( CmGe_Flt , Int1Float2 , None ) // float Comparison >= +MACRO_WMS ( CmEq_Flt , Int1Float2 , None ) // float Comparison == +MACRO_WMS ( CmNe_Flt , Int1Float2 , None ) // float Comparison != // Math builtin functions for ints -MACRO_WMS ( Abs_Int , Int2 , None ) -MACRO_WMS ( Min_Int , Int3 , None ) -MACRO_WMS ( Max_Int , Int3 , None ) -MACRO_WMS ( Imul_Int , Int3 , None ) -MACRO_WMS ( Clz32_Int , Int2 , None ) +MACRO_WMS ( Abs_Int , Int2 , None ) +MACRO_WMS ( Min_Int , Int3 , None ) +MACRO_WMS ( Max_Int , Int3 , None ) +MACRO_WMS ( Imul_Int , Int3 , None ) +MACRO_WMS ( Clz32_Int , Int2 , None ) +MACRO_WMS ( Ctz_Int , Int2 , None ) // Math builtin functions for doubles & floats -MACRO_WMS ( Sin_Db , Double2 , None ) -MACRO_WMS ( Cos_Db , Double2 , None ) -MACRO_WMS ( Tan_Db , Double2 , None ) -MACRO_WMS ( Asin_Db , Double2 , None ) -MACRO_WMS ( Acos_Db , Double2 , None ) -MACRO_WMS ( Atan_Db , Double2 , None ) -MACRO_WMS ( Abs_Db , Double2 , None ) -MACRO_WMS ( Ceil_Db , Double2 , None ) -MACRO_WMS ( Ceil_Flt , Float2 , None ) -MACRO_WMS ( Floor_Db , Double2 , None ) -MACRO_WMS ( Floor_Flt , Float2 , None ) -MACRO_WMS ( Exp_Db , Double2 , None ) -MACRO_WMS ( Log_Db , Double2 , None ) -MACRO_WMS ( Pow_Db , Double3 , None ) -MACRO_WMS ( Sqrt_Db , Double2 , None ) -MACRO_WMS ( Sqrt_Flt , Float2 , None ) -MACRO_WMS ( Abs_Flt , Float2 , None ) -MACRO_WMS ( Atan2_Db , Double3 , None ) -MACRO_WMS ( Min_Db , Double3 , None ) -MACRO_WMS ( Max_Db , Double3 , None ) +MACRO_WMS ( Sin_Db , Double2 , None ) +MACRO_WMS ( Cos_Db , Double2 , None ) +MACRO_WMS ( Tan_Db , Double2 , None ) +MACRO_WMS ( Asin_Db , Double2 , None ) +MACRO_WMS ( Acos_Db , Double2 , None ) +MACRO_WMS ( Atan_Db , Double2 , None ) +MACRO_WMS ( Abs_Db , Double2 , None ) +MACRO_WMS ( Ceil_Db , Double2 , None ) +MACRO_WMS ( Ceil_Flt , Float2 , None ) +MACRO_WMS ( Floor_Db , Double2 , None ) +MACRO_WMS ( Floor_Flt , Float2 , None ) +MACRO_WMS ( Exp_Db , Double2 , None ) +MACRO_WMS ( Log_Db , Double2 , None ) +MACRO_WMS ( Pow_Db , Double3 , None ) +MACRO_WMS ( Sqrt_Db , Double2 , None ) +MACRO_WMS ( Sqrt_Flt , Float2 , None ) +MACRO_WMS ( Abs_Flt , Float2 , None ) +MACRO_WMS ( Atan2_Db , Double3 , None ) +MACRO_WMS ( Min_Db , Double3 , None ) +MACRO_WMS ( Min_Flt , Float3 , None ) +MACRO_WMS ( Max_Db , Double3 , None ) +MACRO_WMS ( Max_Flt , Float3 , None ) // Fround -MACRO_WMS ( Fround_Flt , Float2 , None ) -MACRO_WMS ( Fround_Db , Float1Double1 , None ) -MACRO_WMS ( Fround_Int , Float1Int1 , None ) +MACRO_WMS ( Fround_Flt , Float2 , None ) +MACRO_WMS ( Fround_Db , Float1Double1 , None ) +MACRO_WMS ( Fround_Int , Float1Int1 , None ) + +MACRO_EXTEND_WMS( Copysign_Db , Double3 , None ) +MACRO_EXTEND_WMS( Copysign_Flt , Float3 , None ) +MACRO_EXTEND_WMS( Trunc_Db , Double2 , None ) +MACRO_EXTEND_WMS( Trunc_Flt , Float2 , None ) +MACRO_EXTEND_WMS( Nearest_Db , Double2 , None ) +MACRO_EXTEND_WMS( Nearest_Flt , Float2 , None ) +MACRO_EXTEND_WMS( PopCnt_Int , Int2 , None ) +MACRO_EXTEND_WMS( CurrentMemory_Int , AsmReg1 , None ) +MACRO_EXTEND ( Unreachable_Void , Empty , OpNoFallThrough ) #define MACRO_SIMD(opcode, asmjsLayout, opCodeAttrAsmJs, OpCodeAttr, ...) MACRO(opcode, asmjsLayout, opCodeAttrAsmJs) #define MACRO_SIMD_WMS(opcode, asmjsLayout, opCodeAttrAsmJs, OpCodeAttr, ...) MACRO_WMS(opcode, asmjsLayout, opCodeAttrAsmJs) diff --git a/lib/Runtime/ByteCode/OpCodesSimd.h b/lib/Runtime/ByteCode/OpCodesSimd.h index 86e4cd6f2e4..4be561d4faa 100644 --- a/lib/Runtime/ByteCode/OpCodesSimd.h +++ b/lib/Runtime/ByteCode/OpCodesSimd.h @@ -190,19 +190,21 @@ MACRO_SIMD_WMS (Simd128_LdArr_I16 , AsmSimdTypedArr MACRO_SIMD_WMS (Simd128_LdArrConst_I16 , AsmSimdTypedArr , None , None , 0) MACRO_SIMD_WMS (Simd128_StArr_I16 , AsmSimdTypedArr , None , None , 0) MACRO_SIMD_WMS (Simd128_StArrConst_I16 , AsmSimdTypedArr , None , None , 0) -MACRO_SIMD_WMS ( Simd128_And_B16 , Bool8x16_3 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Or_B16 , Bool8x16_3 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Xor_B16 , Bool8x16_3 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Not_B16 , Bool8x16_2 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Neg_U4 , Uint32x4_2 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Neg_U8 , Uint16x8_2 , None , None , 0) -MACRO_SIMD_WMS ( Simd128_Neg_U16 , Uint8x16_2 , None , None , 0) -MACRO_SIMD_BACKEND_ONLY ( Simd128_LdC , Empty , None , OpCanCSE ) // Load Simd128 const stack slot -MACRO_SIMD ( Simd128_End , Empty , None , None ) // Just a marker to indicate SIMD opcodes region - +MACRO_SIMD_WMS (Simd128_And_B16 , Bool8x16_3 , None , None , 0) +MACRO_SIMD_WMS (Simd128_Or_B16 , Bool8x16_3 , None , None , 0) +MACRO_SIMD_WMS (Simd128_Xor_B16 , Bool8x16_3 , None , None , 0) +MACRO_SIMD (Simd128_End , Empty , None , None) // Just a marker to indicate SIMD opcodes region // Extended opcodes. Running out of 1-byte opcode space. Add new opcodes here. -MACRO_SIMD_EXTEND ( Simd128_Start_Extend , Empty , None , None , 0) // Just a marker to indicate SIMD opcodes region +MACRO_SIMD_EXTEND( Simd128_Start_Extend , Empty, None, None, 0) // Just a marker to indicate SIMD opcodes region +MACRO_SIMD_EXTEND_WMS( Simd128_Not_B16 , Bool8x16_2 , None , None , 0) +MACRO_SIMD_EXTEND_WMS( Simd128_Neg_U4 , Uint32x4_2 , None , None , 0) +MACRO_SIMD_EXTEND_WMS( Simd128_Neg_U8 , Uint16x8_2 , None , None , 0) + +MACRO_SIMD_EXTEND_WMS( Simd128_Neg_U16 , Uint8x16_2 , None , None , 0) +MACRO_SIMD_BACKEND_ONLY(Simd128_LdC , Empty , None , OpCanCSE ) // Load Simd128 const stack slot + + #if 0 MACRO_SIMD_ASMJS_ONLY_EXTEND_WMS(Simd128_Ld_D2, Float64x2_2, None, None) MACRO_SIMD_ASMJS_ONLY_EXTEND_WMS(Simd128_LdSlot_D2, ElementSlot, None, None) diff --git a/lib/Runtime/ByteCode/OpLayoutsAsmJs.h b/lib/Runtime/ByteCode/OpLayoutsAsmJs.h index 2c09340140c..fce8a090621 100644 --- a/lib/Runtime/ByteCode/OpLayoutsAsmJs.h +++ b/lib/Runtime/ByteCode/OpLayoutsAsmJs.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { ///---------------------------------------------------------------------------- @@ -155,6 +155,7 @@ namespace Js typename SizePolicy::RegSlotType R5; typename SizePolicy::RegSlotType R6; }; + template struct OpLayoutT_AsmReg9 { @@ -263,158 +264,206 @@ namespace Js typename SizePolicy::RegSlotType R17; typename SizePolicy::RegSlotType R18; }; - template - struct OpLayoutT_AsmReg2IntConst1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType R1; - int C2; - }; - - template - struct OpLayoutT_Int1Double1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType D1; - }; - template - struct OpLayoutT_Int1Float1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType F1; - }; - template - struct OpLayoutT_Double1Int1 - { - typename SizePolicy::RegSlotType D0; - typename SizePolicy::RegSlotType I1; - }; - template - struct OpLayoutT_Double1Float1 - { - typename SizePolicy::RegSlotType D0; - typename SizePolicy::RegSlotType F1; - }; - template - struct OpLayoutT_Double1Reg1 - { - typename SizePolicy::RegSlotType D0; - typename SizePolicy::RegSlotType R1; - }; - template - struct OpLayoutT_Float1Reg1 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType R1; - }; - template - struct OpLayoutT_Int1Reg1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType R1; - }; - template - struct OpLayoutT_Reg1Double1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType D1; - }; - - template - struct OpLayoutT_Reg1Float1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType F1; - }; - - template - struct OpLayoutT_Reg1Int1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Int1Double2 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType D1; - typename SizePolicy::RegSlotType D2; - }; - - template - struct OpLayoutT_Int1Float2 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType F1; - typename SizePolicy::RegSlotType F2; - }; - - template - struct OpLayoutT_Int2 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Int1Const1 - { - typename SizePolicy::RegSlotType I0; - int C1; - }; - template - struct OpLayoutT_Int3 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Double2 - { - typename SizePolicy::RegSlotType D0; - typename SizePolicy::RegSlotType D1; - }; - - template - struct OpLayoutT_Float2 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType F1; - }; - - template - struct OpLayoutT_Float3 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType F1; - typename SizePolicy::RegSlotType F2; - }; - template - struct OpLayoutT_Float1Double1 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType D1; - }; - - template - struct OpLayoutT_Float1Int1 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Double3 - - { - typename SizePolicy::RegSlotType D0; - typename SizePolicy::RegSlotType D1; - typename SizePolicy::RegSlotType D2; +#define RegLayoutType typename SizePolicy::RegSlotType +#define IntLayoutType typename SizePolicy::RegSlotType +#define FloatLayoutType typename SizePolicy::RegSlotType +#define DoubleLayoutType typename SizePolicy::RegSlotType +#define IntConstLayoutType int +#define FloatConstLayoutType float +#define DoubleConstLayoutType double +#define Float32x4LayoutType typename SizePolicy::RegSlotType +#define Bool32x4LayoutType typename SizePolicy::RegSlotType +#define Int32x4LayoutType typename SizePolicy::RegSlotType +#define Float64x2LayoutType typename SizePolicy::RegSlotType +#define Int16x8LayoutType typename SizePolicy::RegSlotType +#define Bool16x8LayoutType typename SizePolicy::RegSlotType +#define Int8x16LayoutType typename SizePolicy::RegSlotType +#define Bool8x16LayoutType typename SizePolicy::RegSlotType +#define Uint32x4LayoutType typename SizePolicy::RegSlotType +#define Uint16x8LayoutType typename SizePolicy::RegSlotType +#define Uint8x16LayoutType typename SizePolicy::RegSlotType +#define LAYOUT_FIELDS_HELPER(x, y) x ## y +#define LAYOUT_FIELDS_DEF(x, y) LAYOUT_FIELDS_HELPER(x, y) +#define LAYOUT_TYPE_WMS_REG2(layout, t0, t1) \ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + }; +#define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) \ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + }; + +#define LAYOUT_TYPE_WMS_REG4(layout, t0, t1, t2, t3)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + }; +#define LAYOUT_TYPE_WMS_REG5(layout, t0, t1, t2, t3, t4)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + }; +#define LAYOUT_TYPE_WMS_REG6(layout, t0, t1, t2, t3, t4, t5)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + }; +#define LAYOUT_TYPE_WMS_REG7(layout, t0, t1, t2, t3, t4, t5, t6)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + }; +#define LAYOUT_TYPE_WMS_REG9(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + }; +#define LAYOUT_TYPE_WMS_REG10(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\ + }; +#define LAYOUT_TYPE_WMS_REG11(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\ + t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\ + }; +#define LAYOUT_TYPE_WMS_REG17(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\ + t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\ + t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\ + t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\ + t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\ + t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\ + t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\ + t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\ + }; +#define LAYOUT_TYPE_WMS_REG18(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\ + t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\ + t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\ + t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\ + t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\ + t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\ + t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\ + t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\ + t17##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17);\ + }; +#define LAYOUT_TYPE_WMS_REG19(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18)\ + template struct OpLayoutT_##layout\ + {\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ + t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\ + t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\ + t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\ + t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\ + t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\ + t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\ + t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\ + t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\ + t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\ + t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\ + t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\ + t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\ + t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\ + t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\ + t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\ + t17##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17);\ + t18##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t18(), 18);\ }; +#include "LayoutTypesAsmJs.h" +#undef RegLayoutType +#undef IntLayoutType +#undef FloatLayoutType +#undef DoubleLayoutType +#undef IntConstLayoutType +#undef FloatConstLayoutType +#undef DoubleConstLayoutType +#undef Float32x4LayoutType +#undef Bool32x4LayoutType +#undef Int32x4LayoutType +#undef Float64x2LayoutType +#undef Int16x8LayoutType +#undef Bool16x8LayoutType +#undef Int8x16LayoutType +#undef Bool8x16LayoutType +#undef Uint32x4LayoutType +#undef Uint16x8LayoutType +#undef Uint8x16LayoutType template struct OpLayoutT_AsmUnsigned1 @@ -442,1514 +491,24 @@ namespace Js typename SizePolicy::RegSlotType I2; }; - - /* Float32x4 layouts */ - //-------------------- - template - struct OpLayoutT_Float32x4_2 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Float32x4_3 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType F4_2; - }; - - template - struct OpLayoutT_Bool32x4_1Float32x4_2 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType F4_2; - }; - - template - struct OpLayoutT_Float32x4_4 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType F4_2; - typename SizePolicy::RegSlotType F4_3; - }; - - // 4 floats -> float32x4. - template - struct OpLayoutT_Float32x4_1Float4 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F1; - typename SizePolicy::RegSlotType F2; - typename SizePolicy::RegSlotType F3; - typename SizePolicy::RegSlotType F4; - }; - - template - struct OpLayoutT_Float32x4_2Int4 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - }; - - template - struct OpLayoutT_Float32x4_3Int4 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType F4_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - }; - - template - struct OpLayoutT_Float32x4_1Float1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F1; - }; - - template - struct OpLayoutT_Float32x4_2Float1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType F2; - }; - - template - struct OpLayoutT_Float32x4_1Float64x2_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType D2_1; - }; - - template - struct OpLayoutT_Float32x4_1Int32x4_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Float32x4_1Uint32x4_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Float32x4_1Int16x8_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Float32x4_1Uint16x8_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Float32x4_1Int8x16_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Float32x4_1Uint8x16_1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType U16_1; - }; - - template - struct OpLayoutT_Float32x4_1Bool32x4_1Float32x4_2 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType F4_2; - typename SizePolicy::RegSlotType F4_3; - }; - - template - struct OpLayoutT_Reg1Float32x4_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType F4_1; - }; - - /* Int32x4 layouts */ - //-------------------- - template - struct OpLayoutT_Int32x4_2 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Int32x4_3 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I4_2; - }; - - template - struct OpLayoutT_Bool32x4_1Int32x4_2 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I4_2; - }; - - template - struct OpLayoutT_Int32x4_1Bool32x4_1Int32x4_2 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType I4_2; - typename SizePolicy::RegSlotType I4_3; - }; - - template - struct OpLayoutT_Int32x4_1Int1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Int32x4_1Int4 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - }; - template - struct OpLayoutT_Int32x4_2Int4 + struct OpLayoutT_BrInt1Const1 { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - }; - - template - struct OpLayoutT_Int32x4_3Int4 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I4_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - }; - - template - struct OpLayoutT_Int32x4_2Int1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Int32x4_2Int2 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int1Int32x4_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Float32x4_2Int1Float1 - { - typename SizePolicy::RegSlotType F4_0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType F3; - }; - - template - struct OpLayoutT_Float1Float32x4_1Int1 - { - typename SizePolicy::RegSlotType F0; - typename SizePolicy::RegSlotType F4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Reg1Int32x4_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Int32x4_1Float64x2_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType D2_1; - }; - - template - struct OpLayoutT_Int32x4_1Float32x4_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Int32x4_1Uint32x4_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Int32x4_1Int16x8_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Int32x4_1Uint16x8_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Int32x4_1Int8x16_1 - { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType I16_1; + int32 RelativeJumpOffset; + typename SizePolicy::RegSlotType I1; + int32 C1; }; template - struct OpLayoutT_Int32x4_1Uint8x16_1 + struct OpLayoutT_AsmSimdTypedArr { - typename SizePolicy::RegSlotType I4_0; - typename SizePolicy::RegSlotType U16_1; + // force encode 4 bytes because it can be a value + uint32 SlotIndex; + typename SizePolicy::RegSlotType Value; + int8 ViewType; + int8 DataWidth; // # of bytes to load/store }; - /* Bool32x4 layouts */ - //-------------------- - template - struct OpLayoutT_Bool32x4_1Int4 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - }; - - template - struct OpLayoutT_Int1Bool32x4_1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B4_1; - }; - - template - struct OpLayoutT_Bool32x4_2Int2 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int1Bool32x4_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Bool32x4_2 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType B4_1; - }; - - template - struct OpLayoutT_Bool32x4_3 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType B4_2; - }; - - template - struct OpLayoutT_Reg1Bool32x4_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType B4_1; - }; - - /* Bool16x8 layouts */ - //-------------------- - template - struct OpLayoutT_Bool16x8_1Int8 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - }; - - template - struct OpLayoutT_Int1Bool16x8_1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B8_1; - }; - - template - struct OpLayoutT_Bool16x8_2 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType B8_1; - }; - - template - struct OpLayoutT_Bool16x8_2Int2 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType B8_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int1Bool16x8_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B8_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Bool16x8_3 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType B8_1; - typename SizePolicy::RegSlotType B8_2; - }; - - template - struct OpLayoutT_Reg1Bool16x8_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType B8_1; - }; - - /* Bool8x16 layouts */ - //-------------------- - template - struct OpLayoutT_Bool8x16_1Int16 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - }; - - template - struct OpLayoutT_Int1Bool8x16_1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B16_1; - }; - - template - struct OpLayoutT_Bool8x16_2 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType B16_1; - }; - - template - struct OpLayoutT_Bool8x16_2Int2 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType B16_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int1Bool8x16_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType B16_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Bool8x16_3 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType B16_1; - typename SizePolicy::RegSlotType B16_2; - }; - - template - struct OpLayoutT_Reg1Bool8x16_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType B16_1; - }; - - /* Int8x16 layouts */ - //-------------------- - template - struct OpLayoutT_Int8x16_2 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Int8x16_3 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I16_2; - }; - - template - struct OpLayoutT_Bool8x16_1Int8x16_2 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I16_2; - }; - - template - struct OpLayoutT_Int8x16_1Bool8x16_1Int8x16_2 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType B16_1; - typename SizePolicy::RegSlotType I16_2; - typename SizePolicy::RegSlotType I16_3; - }; - - template - struct OpLayoutT_Int8x16_4 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I16_2; - typename SizePolicy::RegSlotType I16_3; - }; - - template - struct OpLayoutT_Int8x16_1Int1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Int8x16_1Int16 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - }; - - template - struct OpLayoutT_Int8x16_2Int16 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - typename SizePolicy::RegSlotType I17; - }; - - template - struct OpLayoutT_Int8x16_3Int16 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I16_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - typename SizePolicy::RegSlotType I17; - typename SizePolicy::RegSlotType I18; - }; - - template - struct OpLayoutT_Int8x16_3Int4 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I16_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - }; - - template - struct OpLayoutT_Int8x16_2Int1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Int8x16_2Int2 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int1Int8x16_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I16_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Reg1Int8x16_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Int8x16_1Float32x4_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Int8x16_1Int32x4_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Int8x16_1Int16x8_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Int8x16_1Uint32x4_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Int8x16_1Uint16x8_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Int8x16_1Uint8x16_1 - { - typename SizePolicy::RegSlotType I16_0; - typename SizePolicy::RegSlotType U16_1; - }; - - template - struct OpLayoutT_Int1Int8x16_1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I16_1; - }; - - // Disabled for now - /* Float64x2 layouts */ - //-------------------- - template - struct OpLayoutT_Float64x2_2 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - }; - - template - struct OpLayoutT_Float64x2_3 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - typename SizePolicy::RegSlotType D2_2; - }; - - template - struct OpLayoutT_Float64x2_4 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - typename SizePolicy::RegSlotType D2_2; - typename SizePolicy::RegSlotType D2_3; - }; - - - template - struct OpLayoutT_Float64x2_1Double2 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D1; - typename SizePolicy::RegSlotType D2; - }; - - template - struct OpLayoutT_Float64x2_1Double1 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D1; - }; - - template - struct OpLayoutT_Float64x2_2Double1 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - typename SizePolicy::RegSlotType D2; - }; - - template - struct OpLayoutT_Float64x2_2Int2 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Float64x2_3Int2 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType D2_1; - typename SizePolicy::RegSlotType D2_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - }; - - template - struct OpLayoutT_Float64x2_1Float32x4_1 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Float64x2_1Int32x4_1 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Float64x2_1Int32x4_1Float64x2_2 - { - typename SizePolicy::RegSlotType D2_0; - typename SizePolicy::RegSlotType I4_1; - typename SizePolicy::RegSlotType D2_2; - typename SizePolicy::RegSlotType D2_3; - }; - - template - struct OpLayoutT_Reg1Float64x2_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType D2_1; - }; - - /* Int16x8 layouts */ - template - struct OpLayoutT_Int16x8_1Int8 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - }; - - template - struct OpLayoutT_Reg1Int16x8_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Int16x8_2 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Int1Int16x8_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Int16x8_2Int8 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - }; - - template - struct OpLayoutT_Int16x8_3Int8 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I8_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - }; - - template - struct OpLayoutT_Int16x8_1Int1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Int16x8_2Int2 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Int16x8_3 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I8_2; - }; - - template - struct OpLayoutT_Bool16x8_1Int16x8_2 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I8_2; - }; - - template - struct OpLayoutT_Int16x8_1Bool16x8_1Int16x8_2 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType B8_1; - typename SizePolicy::RegSlotType I8_2; - typename SizePolicy::RegSlotType I8_3; - }; - - template - struct OpLayoutT_Int16x8_2Int1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I8_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Int16x8_1Float32x4_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Int16x8_1Int32x4_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I4_1; - - }; - - template - struct OpLayoutT_Int16x8_1Int8x16_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Int16x8_1Uint32x4_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Int16x8_1Uint16x8_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Int16x8_1Uint8x16_1 - { - typename SizePolicy::RegSlotType I8_0; - typename SizePolicy::RegSlotType U16_1; - }; - - /* Uint32x4 layouts */ - template - struct OpLayoutT_Uint32x4_1Int4 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - }; - - template - struct OpLayoutT_Reg1Uint32x4_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Uint32x4_2 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Int1Uint32x4_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Uint32x4_2Int4 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - }; - - template - struct OpLayoutT_Uint32x4_3Int4 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType U4_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - }; - - template - struct OpLayoutT_Uint32x4_1Int1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Uint32x4_2Int2 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Uint32x4_3 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType U4_2; - }; - - template - struct OpLayoutT_Bool32x4_1Uint32x4_2 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType U4_2; - }; - - template - struct OpLayoutT_Uint32x4_1Bool32x4_1Uint32x4_2 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType B4_1; - typename SizePolicy::RegSlotType U4_2; - typename SizePolicy::RegSlotType U4_3; - }; - - template - struct OpLayoutT_Uint32x4_2Int1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U4_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Uint32x4_1Float32x4_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Uint32x4_1Int32x4_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Uint32x4_1Int16x8_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Uint32x4_1Int8x16_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Uint32x4_1Uint16x8_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Uint32x4_1Uint8x16_1 - { - typename SizePolicy::RegSlotType U4_0; - typename SizePolicy::RegSlotType U16_1; - }; - - /* Uint16x8 layouts */ - template - struct OpLayoutT_Uint16x8_1Int8 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - }; - - template - struct OpLayoutT_Reg1Uint16x8_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Uint16x8_2 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - }; - - template - struct OpLayoutT_Int1Uint16x8_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType I2; - }; - template - struct OpLayoutT_Uint16x8_2Int8 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - }; - - template - struct OpLayoutT_Uint16x8_3Int8 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType U8_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - }; - - template - struct OpLayoutT_Uint16x8_1Int1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Uint16x8_2Int2 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Uint16x8_3 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType U8_2; - }; - - template - struct OpLayoutT_Bool16x8_1Uint16x8_2 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType U8_2; - }; - - template - struct OpLayoutT_Uint16x8_1Bool16x8_1Uint16x8_2 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType B8_1; - typename SizePolicy::RegSlotType U8_2; - typename SizePolicy::RegSlotType U8_3; - }; - - template - struct OpLayoutT_Uint16x8_2Int1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U8_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Uint16x8_1Float32x4_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Uint16x8_1Int32x4_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Uint16x8_1Int16x8_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType I8_1; - }; - - template - struct OpLayoutT_Uint16x8_1Int8x16_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Uint16x8_1Uint32x4_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Uint16x8_1Uint8x16_1 - { - typename SizePolicy::RegSlotType U8_0; - typename SizePolicy::RegSlotType U16_1; - }; - - /* Uint8x16 layouts */ - template - struct OpLayoutT_Uint8x16_1Int16 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType I1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - }; - - template - struct OpLayoutT_Reg1Uint8x16_1 - { - typename SizePolicy::RegSlotType R0; - typename SizePolicy::RegSlotType U16_1; - }; - - template - struct OpLayoutT_Uint8x16_2 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - }; - - template - struct OpLayoutT_Int1Uint8x16_1Int1 - { - typename SizePolicy::RegSlotType I0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType I2; - }; - - template - struct OpLayoutT_Uint8x16_2Int16 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - typename SizePolicy::RegSlotType I17; - }; - - template - struct OpLayoutT_Uint8x16_3Int16 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType U16_2; - typename SizePolicy::RegSlotType I3; - typename SizePolicy::RegSlotType I4; - typename SizePolicy::RegSlotType I5; - typename SizePolicy::RegSlotType I6; - typename SizePolicy::RegSlotType I7; - typename SizePolicy::RegSlotType I8; - typename SizePolicy::RegSlotType I9; - typename SizePolicy::RegSlotType I10; - typename SizePolicy::RegSlotType I11; - typename SizePolicy::RegSlotType I12; - typename SizePolicy::RegSlotType I13; - typename SizePolicy::RegSlotType I14; - typename SizePolicy::RegSlotType I15; - typename SizePolicy::RegSlotType I16; - typename SizePolicy::RegSlotType I17; - typename SizePolicy::RegSlotType I18; - }; - - template - struct OpLayoutT_Uint8x16_1Int1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_Uint8x16_2Int2 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType I2; - typename SizePolicy::RegSlotType I3; - }; - - template - struct OpLayoutT_Uint8x16_3 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType U16_2; - }; - - template - struct OpLayoutT_Bool8x16_1Uint8x16_2 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType U16_2; - }; - - template - struct OpLayoutT_Uint8x16_1Bool8x16_1Uint8x16_2 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType B16_1; - typename SizePolicy::RegSlotType U16_2; - typename SizePolicy::RegSlotType U16_3; - }; - - template - struct OpLayoutT_Uint8x16_2Int1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U16_1; - typename SizePolicy::RegSlotType I2; - - }; - - template - struct OpLayoutT_Uint8x16_1Float32x4_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType F4_1; - }; - - template - struct OpLayoutT_Uint8x16_1Int32x4_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType I4_1; - }; - - template - struct OpLayoutT_Uint8x16_1Int16x8_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType I8_1; - }; - - - template - struct OpLayoutT_Uint8x16_1Int8x16_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType I16_1; - }; - - template - struct OpLayoutT_Uint8x16_1Uint32x4_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U4_1; - }; - - template - struct OpLayoutT_Uint8x16_1Uint16x8_1 - { - typename SizePolicy::RegSlotType U16_0; - typename SizePolicy::RegSlotType U8_1; - }; - - /* bool32x4 layout */ - template - struct OpLayoutT_Bool32x4_1Int1 - { - typename SizePolicy::RegSlotType B4_0; - typename SizePolicy::RegSlotType I1; - }; - - /* bool16x8 layout */ - template - struct OpLayoutT_Bool16x8_1Int1 - { - typename SizePolicy::RegSlotType B8_0; - typename SizePolicy::RegSlotType I1; - }; - - /* bool8x16 layout */ - template - struct OpLayoutT_Bool8x16_1Int1 - { - typename SizePolicy::RegSlotType B16_0; - typename SizePolicy::RegSlotType I1; - }; - - template - struct OpLayoutT_AsmSimdTypedArr - { - // force encode 4 bytes because it can be a value - uint32 SlotIndex; - typename SizePolicy::RegSlotType Value; - int8 ViewType; - int8 DataWidth; // # of bytes to load/store - }; - - // Generate the multi size layout type defs #define LAYOUT_TYPE_WMS(layout) \ typedef OpLayoutT_##layout OpLayout##layout##_Large; \ diff --git a/lib/Runtime/ByteCode/RuntimeByteCodePch.h b/lib/Runtime/ByteCode/RuntimeByteCodePch.h index 5217d7a69b4..3e1cf127b39 100644 --- a/lib/Runtime/ByteCode/RuntimeByteCodePch.h +++ b/lib/Runtime/ByteCode/RuntimeByteCodePch.h @@ -15,6 +15,7 @@ #include "ByteCode/ByteCodeDumper.h" #include "ByteCode/ByteCodeWriter.h" +#include "ByteCode/AsmJsByteCodeWriter.h" #include "ByteCode/ByteCodeGenerator.h" #include "ByteCode/OpCodeUtilAsmJs.h" @@ -22,3 +23,6 @@ #include "ByteCode/ByteCodeApi.h" #include "ByteCode/BackendOpCodeAttr.h" +#ifdef ENABLE_WASM +#include "WasmReader.h" +#endif diff --git a/lib/Runtime/CMakeLists.txt b/lib/Runtime/CMakeLists.txt index 0755f78bb19..f0a250f1df3 100644 --- a/lib/Runtime/CMakeLists.txt +++ b/lib/Runtime/CMakeLists.txt @@ -6,6 +6,7 @@ include_directories( ../Common ../Backend ../Parser + ../WasmReader ByteCode PlatformAgnostic Math diff --git a/lib/Runtime/Debug/Chakra.Runtime.Debug.vcxproj b/lib/Runtime/Debug/Chakra.Runtime.Debug.vcxproj index ae846b2c744..ddc3b2aea7b 100644 --- a/lib/Runtime/Debug/Chakra.Runtime.Debug.vcxproj +++ b/lib/Runtime/Debug/Chakra.Runtime.Debug.vcxproj @@ -30,6 +30,7 @@ $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Language; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\JITClient; $(ChakraJITIDLIntDir); diff --git a/lib/Runtime/Debug/TTEventLog.cpp b/lib/Runtime/Debug/TTEventLog.cpp index 13f5e402f78..e6c0d7a88b2 100644 --- a/lib/Runtime/Debug/TTEventLog.cpp +++ b/lib/Runtime/Debug/TTEventLog.cpp @@ -536,8 +536,7 @@ namespace TTD if(this->m_propertyRecordPinSet != nullptr) { - this->m_propertyRecordPinSet->GetAllocator()->RootRelease(this->m_propertyRecordPinSet); - this->m_propertyRecordPinSet = nullptr; + this->m_propertyRecordPinSet.Unroot(this->m_propertyRecordPinSet->GetAllocator()); } } @@ -710,15 +709,15 @@ namespace TTD m_modeStack(), m_currentMode(TTDMode::Pending), m_ttdContext(nullptr), m_snapExtractor(), m_elapsedExecutionTimeSinceSnapshot(0.0), - m_lastInflateSnapshotTime(-1), m_lastInflateMap(nullptr), m_propertyRecordPinSet(nullptr), m_propertyRecordList(&this->m_miscSlabAllocator), + m_lastInflateSnapshotTime(-1), m_lastInflateMap(nullptr), m_propertyRecordList(&this->m_miscSlabAllocator), m_loadedTopLevelScripts(&this->m_miscSlabAllocator), m_newFunctionTopLevelScripts(&this->m_miscSlabAllocator), m_evalTopLevelScripts(&this->m_miscSlabAllocator) { this->InitializeEventListVTable(); this->m_modeStack.Push(TTDMode::Pending); - this->m_propertyRecordPinSet = RecyclerNew(threadContext->GetRecycler(), PropertyRecordPinSet, threadContext->GetRecycler()); - this->m_threadContext->GetRecycler()->RootAddRef(this->m_propertyRecordPinSet); + Recycler * recycler = threadContext->GetRecycler(); + this->m_propertyRecordPinSet.Root(RecyclerNew(recycler, PropertyRecordPinSet, recycler), recycler); } EventLog::~EventLog() diff --git a/lib/Runtime/Debug/TTEventLog.h b/lib/Runtime/Debug/TTEventLog.h index ed3a5065ca9..eef00a47d74 100644 --- a/lib/Runtime/Debug/TTEventLog.h +++ b/lib/Runtime/Debug/TTEventLog.h @@ -220,7 +220,7 @@ namespace TTD InflateMap* m_lastInflateMap; //Pin set of all property records created during this logging session - PropertyRecordPinSet* m_propertyRecordPinSet; + RecyclerRootPtr m_propertyRecordPinSet; UnorderedArrayList m_propertyRecordList; //A list of all *root* scripts that have been loaded during this session diff --git a/lib/Runtime/Debug/TTInflateMap.cpp b/lib/Runtime/Debug/TTInflateMap.cpp index 55d39f0289d..cb194f04efe 100644 --- a/lib/Runtime/Debug/TTInflateMap.cpp +++ b/lib/Runtime/Debug/TTInflateMap.cpp @@ -13,7 +13,6 @@ namespace TTD m_tagToGlobalObjectMap(), m_objectMap(), m_functionBodyMap(), m_environmentMap(), m_slotArrayMap(), m_promiseDataMap(&HeapAllocator::Instance), m_debuggerScopeHomeBodyMap(), m_debuggerScopeChainIndexMap(), - m_inflatePinSet(nullptr), m_environmentPinSet(nullptr), m_slotArrayPinSet(nullptr), m_oldInflatePinSet(nullptr), m_oldObjectMap(), m_oldFunctionBodyMap(), m_propertyReset(&HeapAllocator::Instance) { ; @@ -23,26 +22,22 @@ namespace TTD { if(this->m_inflatePinSet != nullptr) { - this->m_inflatePinSet->GetAllocator()->RootRelease(this->m_inflatePinSet); - this->m_inflatePinSet = nullptr; + this->m_inflatePinSet.Unroot(this->m_inflatePinSet->GetAllocator()); } if(this->m_environmentPinSet != nullptr) { - this->m_environmentPinSet->GetAllocator()->RootRelease(this->m_environmentPinSet); - this->m_environmentPinSet = nullptr; + this->m_environmentPinSet.Unroot(this->m_environmentPinSet->GetAllocator()); } if(this->m_slotArrayPinSet != nullptr) { - this->m_slotArrayPinSet->GetAllocator()->RootRelease(this->m_slotArrayPinSet); - this->m_slotArrayPinSet = nullptr; + this->m_slotArrayPinSet.Unroot(this->m_slotArrayPinSet->GetAllocator()); } if(this->m_oldInflatePinSet != nullptr) { - this->m_oldInflatePinSet->GetAllocator()->RootRelease(this->m_oldInflatePinSet); - this->m_oldInflatePinSet = nullptr; + this->m_oldInflatePinSet.Unroot(this->m_oldInflatePinSet->GetAllocator()); } } @@ -59,14 +54,10 @@ namespace TTD this->m_slotArrayMap.Initialize(slotCount); this->m_promiseDataMap.Clear(); - this->m_inflatePinSet = RecyclerNew(threadContext->GetRecycler(), ObjectPinSet, threadContext->GetRecycler(), objectCount); - threadContext->GetRecycler()->RootAddRef(this->m_inflatePinSet); - - this->m_environmentPinSet = RecyclerNew(threadContext->GetRecycler(), EnvironmentPinSet, threadContext->GetRecycler(), objectCount); - threadContext->GetRecycler()->RootAddRef(this->m_environmentPinSet); - - this->m_slotArrayPinSet = RecyclerNew(threadContext->GetRecycler(), SlotArrayPinSet, threadContext->GetRecycler(), objectCount); - threadContext->GetRecycler()->RootAddRef(this->m_slotArrayPinSet); + Recycler * recycler = threadContext->GetRecycler(); + this->m_inflatePinSet.Root(RecyclerNew(recycler, ObjectPinSet, recycler, objectCount), recycler); + this->m_environmentPinSet.Root(RecyclerNew(recycler, EnvironmentPinSet, recycler, objectCount), recycler); + this->m_slotArrayPinSet.Root(RecyclerNew(recycler, SlotArrayPinSet, recycler, objectCount), recycler); } void InflateMap::PrepForReInflate(uint32 ctxCount, uint32 handlerCount, uint32 typeCount, uint32 objectCount, uint32 bodyCount, uint32 dbgScopeCount, uint32 envCount, uint32 slotCount) @@ -91,8 +82,7 @@ namespace TTD //allocate the old pin set and fill it AssertMsg(this->m_oldInflatePinSet == nullptr, "Old pin set is not null."); Recycler* pinRecycler = this->m_inflatePinSet->GetAllocator(); - this->m_oldInflatePinSet = RecyclerNew(pinRecycler, ObjectPinSet, pinRecycler, this->m_inflatePinSet->Count()); - pinRecycler->RootAddRef(this->m_oldInflatePinSet); + this->m_oldInflatePinSet.Root(RecyclerNew(pinRecycler, ObjectPinSet, pinRecycler, this->m_inflatePinSet->Count()), pinRecycler); for(auto iter = this->m_inflatePinSet->GetIterator(); iter.IsValid(); iter.MoveNext()) { @@ -125,8 +115,7 @@ namespace TTD if(this->m_oldInflatePinSet != nullptr) { - this->m_oldInflatePinSet->GetAllocator()->RootRelease(this->m_oldInflatePinSet); - this->m_oldInflatePinSet = nullptr; + this->m_oldInflatePinSet.Unroot(this->m_oldInflatePinSet->GetAllocator()); } } diff --git a/lib/Runtime/Debug/TTInflateMap.h b/lib/Runtime/Debug/TTInflateMap.h index 41e9c000b4d..77754cfee20 100644 --- a/lib/Runtime/Debug/TTInflateMap.h +++ b/lib/Runtime/Debug/TTInflateMap.h @@ -32,12 +32,12 @@ namespace TTD JsUtil::BaseDictionary m_promiseDataMap; //A set we use to pin all the inflated objects live during/after the inflate process (to avoid accidental collection) - ObjectPinSet* m_inflatePinSet; - EnvironmentPinSet* m_environmentPinSet; - SlotArrayPinSet* m_slotArrayPinSet; + RecyclerRootPtr m_inflatePinSet; + RecyclerRootPtr m_environmentPinSet; + RecyclerRootPtr m_slotArrayPinSet; //A set we use to keep some old objects alive during inflate in case we want to re-use them - ObjectPinSet* m_oldInflatePinSet; + RecyclerRootPtr m_oldInflatePinSet; //Temp data structures for holding info during the inflate process TTDIdentifierDictionary m_oldObjectMap; diff --git a/lib/Runtime/Debug/TTRuntimeInfoTracker.h b/lib/Runtime/Debug/TTRuntimeInfoTracker.h index b2c228c9b62..aa8df29c556 100644 --- a/lib/Runtime/Debug/TTRuntimeInfoTracker.h +++ b/lib/Runtime/Debug/TTRuntimeInfoTracker.h @@ -30,8 +30,8 @@ namespace TTD Js::ScriptContext* m_ctx; //Keep track of roots (and local roots as needed) - ObjectPinSet* m_ttdRootSet; - ObjectPinSet* m_ttdLocalRootSet; + RecyclerRootPtr m_ttdRootSet; + RecyclerRootPtr m_ttdLocalRootSet; JsUtil::BaseDictionary m_ttdRootTagIdMap; //List of pending async modifications to array buffers @@ -43,14 +43,14 @@ namespace TTD JsUtil::List m_ttdTopLevelEval; //need to add back pin set for functionBody to make sure they don't get collected on us - TTD::FunctionBodyPinSet* m_ttdPinnedRootFunctionSet; + RecyclerRootPtr m_ttdPinnedRootFunctionSet; JsUtil::BaseDictionary m_ttdFunctionBodyParentMap; public: // //TODO: this results in a memory leak for programs with weak collections -- we should fix this // - ObjectPinSet* TTDWeakReferencePinSet; + RecyclerRootPtr TTDWeakReferencePinSet; ScriptContextTTD(Js::ScriptContext* ctx); ~ScriptContextTTD(); diff --git a/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp b/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp index 0393949e843..d10e4408a96 100644 --- a/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp +++ b/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp @@ -10,38 +10,28 @@ namespace TTD { ScriptContextTTD::ScriptContextTTD(Js::ScriptContext* ctx) : m_ctx(ctx), - m_ttdRootSet(nullptr), m_ttdLocalRootSet(nullptr), m_ttdRootTagIdMap(&HeapAllocator::Instance), m_ttdPendingAsyncModList(&HeapAllocator::Instance), + m_ttdRootTagIdMap(&HeapAllocator::Instance), m_ttdPendingAsyncModList(&HeapAllocator::Instance), m_ttdTopLevelScriptLoad(&HeapAllocator::Instance), m_ttdTopLevelNewFunction(&HeapAllocator::Instance), m_ttdTopLevelEval(&HeapAllocator::Instance), - m_ttdPinnedRootFunctionSet(nullptr), m_ttdFunctionBodyParentMap(&HeapAllocator::Instance), - TTDWeakReferencePinSet(nullptr) + m_ttdFunctionBodyParentMap(&HeapAllocator::Instance) { Recycler* ctxRecycler = this->m_ctx->GetRecycler(); - this->m_ttdRootSet = RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler); - ctxRecycler->RootAddRef(this->m_ttdRootSet); - - this->m_ttdLocalRootSet = RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler); - ctxRecycler->RootAddRef(this->m_ttdLocalRootSet); - - this->m_ttdPinnedRootFunctionSet = RecyclerNew(ctxRecycler, TTD::FunctionBodyPinSet, ctxRecycler); - ctxRecycler->RootAddRef(this->m_ttdPinnedRootFunctionSet); - - this->TTDWeakReferencePinSet = RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler); - ctxRecycler->RootAddRef(this->TTDWeakReferencePinSet); + this->m_ttdRootSet.Root(RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler), ctxRecycler); + this->m_ttdLocalRootSet.Root(RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler), ctxRecycler); + this->m_ttdPinnedRootFunctionSet.Root(RecyclerNew(ctxRecycler, TTD::FunctionBodyPinSet, ctxRecycler), ctxRecycler); + this->TTDWeakReferencePinSet.Root(RecyclerNew(ctxRecycler, TTD::ObjectPinSet, ctxRecycler), ctxRecycler); } ScriptContextTTD::~ScriptContextTTD() { if(this->m_ttdRootSet != nullptr) { - this->m_ttdRootSet->GetAllocator()->RootRelease(this->m_ttdRootSet); - this->m_ttdRootSet = nullptr; + this->m_ttdRootSet.Unroot(this->m_ttdRootSet->GetAllocator()); } if(this->m_ttdLocalRootSet != nullptr) { - this->m_ttdLocalRootSet->GetAllocator()->RootRelease(this->m_ttdLocalRootSet); - this->m_ttdLocalRootSet = nullptr; + this->m_ttdLocalRootSet.Unroot(this->m_ttdLocalRootSet->GetAllocator()); } this->m_ttdRootTagIdMap.Clear(); @@ -54,16 +44,14 @@ namespace TTD if(this->m_ttdPinnedRootFunctionSet != nullptr) { - this->m_ttdPinnedRootFunctionSet->GetAllocator()->RootRelease(this->m_ttdPinnedRootFunctionSet); - this->m_ttdPinnedRootFunctionSet = nullptr; + this->m_ttdPinnedRootFunctionSet.Unroot(this->m_ttdPinnedRootFunctionSet->GetAllocator()); } this->m_ttdFunctionBodyParentMap.Clear(); if(this->TTDWeakReferencePinSet != nullptr) { - this->TTDWeakReferencePinSet->GetAllocator()->RootRelease(this->TTDWeakReferencePinSet); - this->TTDWeakReferencePinSet = nullptr; + this->TTDWeakReferencePinSet.Unroot(this->TTDWeakReferencePinSet->GetAllocator()); } } diff --git a/lib/Runtime/Language/AsmJs.cpp b/lib/Runtime/Language/AsmJs.cpp index 9ad417bb686..b11a0825560 100644 --- a/lib/Runtime/Language/AsmJs.cpp +++ b/lib/Runtime/Language/AsmJs.cpp @@ -21,7 +21,7 @@ //------------------------------------------------------------------------------------------------------- #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "ByteCode/Symbol.h" #include "ByteCode/FuncInfo.h" #include "ByteCode/ByteCodeWriter.h" diff --git a/lib/Runtime/Language/AsmJs.h b/lib/Runtime/Language/AsmJs.h index c337e41a543..227234ce7ba 100644 --- a/lib/Runtime/Language/AsmJs.h +++ b/lib/Runtime/Language/AsmJs.h @@ -22,7 +22,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { struct ExclusiveContext diff --git a/lib/Runtime/Language/AsmJsByteCodeGenerator.cpp b/lib/Runtime/Language/AsmJsByteCodeGenerator.cpp index a0635b3eae4..afe3eb9cb89 100644 --- a/lib/Runtime/Language/AsmJsByteCodeGenerator.cpp +++ b/lib/Runtime/Language/AsmJsByteCodeGenerator.cpp @@ -5,7 +5,7 @@ #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "ByteCode/Symbol.h" #include "ByteCode/FuncInfo.h" #ifdef DBG_DUMP @@ -72,10 +72,10 @@ namespace Js const OpCodeAsmJs BinaryComparatorOpCodes[BCO_MAX][BCOT_MAX] = { // int unsigned int double - /*BCO_LT*/{ OpCodeAsmJs::CmLt_Int, OpCodeAsmJs::CmLt_UnInt, OpCodeAsmJs::CmLt_Flt, OpCodeAsmJs::CmLt_Db }, - /*BCO_LE*/{ OpCodeAsmJs::CmLe_Int, OpCodeAsmJs::CmLe_UnInt, OpCodeAsmJs::CmLe_Flt, OpCodeAsmJs::CmLe_Db }, - /*BCO_GT*/{ OpCodeAsmJs::CmGt_Int, OpCodeAsmJs::CmGt_UnInt, OpCodeAsmJs::CmGt_Flt, OpCodeAsmJs::CmGt_Db }, - /*BCO_GE*/{ OpCodeAsmJs::CmGe_Int, OpCodeAsmJs::CmGe_UnInt, OpCodeAsmJs::CmGe_Flt, OpCodeAsmJs::CmGe_Db }, + /*BCO_LT*/{ OpCodeAsmJs::CmLt_Int, OpCodeAsmJs::CmLt_UInt, OpCodeAsmJs::CmLt_Flt, OpCodeAsmJs::CmLt_Db }, + /*BCO_LE*/{ OpCodeAsmJs::CmLe_Int, OpCodeAsmJs::CmLe_UInt, OpCodeAsmJs::CmLe_Flt, OpCodeAsmJs::CmLe_Db }, + /*BCO_GT*/{ OpCodeAsmJs::CmGt_Int, OpCodeAsmJs::CmGt_UInt, OpCodeAsmJs::CmGt_Flt, OpCodeAsmJs::CmGt_Db }, + /*BCO_GE*/{ OpCodeAsmJs::CmGe_Int, OpCodeAsmJs::CmGe_UInt, OpCodeAsmJs::CmGe_Flt, OpCodeAsmJs::CmGe_Db }, /*BCO_EQ*/{ OpCodeAsmJs::CmEq_Int, OpCodeAsmJs::CmEq_Int, OpCodeAsmJs::CmEq_Flt, OpCodeAsmJs::CmEq_Db }, /*BCO_NE*/{ OpCodeAsmJs::CmNe_Int, OpCodeAsmJs::CmNe_Int, OpCodeAsmJs::CmNe_Flt, OpCodeAsmJs::CmNe_Db }, }; @@ -186,14 +186,14 @@ namespace Js { // this value is the number of Var slots needed to allocate all the const int nbConst = - ((mFunction->GetRegisterSpace().GetConstCount() + 1) * DOUBLE_SLOTS_SPACE) // space required for all double constants + 1 return register reserved - + (int)((mFunction->GetRegisterSpace().GetConstCount() + 1)* FLOAT_SLOTS_SPACE + 0.5 /*ceil*/) // space required for all float constants + 1 return register reserved - + (int)((mFunction->GetRegisterSpace().GetConstCount() + 1) * INT_SLOTS_SPACE + 0.5/*ceil*/) // space required for all int constants + 1 return register reserved + ((mFunction->GetRegisterSpace().GetConstCount() + 1) * WAsmJs::DOUBLE_SLOTS_SPACE) // space required for all double constants + 1 return register reserved + + (int)((mFunction->GetRegisterSpace().GetConstCount() + 1) * WAsmJs::FLOAT_SLOTS_SPACE + 0.5 /*ceil*/) // space required for all float constants + 1 return register reserved + + (int)((mFunction->GetRegisterSpace().GetConstCount() + 1) * WAsmJs::INT_SLOTS_SPACE + 0.5/*ceil*/) // space required for all int constants + 1 return register reserved + AsmJsFunctionMemory::RequiredVarConstants; if (IsSimdjsEnabled()) { - nbConst += (int)((mFunction->GetRegisterSpace().GetConstCount() + 1) * SIMD_SLOTS_SPACE); // Return register is already reserved in the register space. + nbConst += (int)((mFunction->GetRegisterSpace().GetConstCount() + 1) * WAsmJs::SIMD_SLOTS_SPACE); // Return register is already reserved in the register space. } byteCodeFunction->CheckAndSetConstantCount(nbConst); @@ -249,7 +249,7 @@ namespace Js functionBody->AllocateLiteralRegexArray(); - mWriter.Begin(byteCodeGen, functionBody, alloc, true /* byteCodeGen->DoJitLoopBodies( funcInfo )*/, mInfo->hasLoop); + mWriter.Begin(functionBody, alloc, true /* byteCodeGen->DoJitLoopBodies( funcInfo )*/, mInfo->hasLoop, false /* inDebugMode*/); // for now, emit all constant loads at top of function (should instead put in // closest dominator of uses) @@ -555,7 +555,7 @@ namespace Js case knopRsh: return EmitBinaryInt( pnode, OpCodeAsmJs::Shr_Int ); case knopRs2: - return EmitBinaryInt( pnode, OpCodeAsmJs::ShrU_Int ); + return EmitBinaryInt( pnode, OpCodeAsmJs::Shr_UInt ); case knopMod: return EmitBinaryMultiType( pnode, BMO_REM ); case knopDiv: @@ -772,7 +772,7 @@ namespace Js CheckNodeLocation( rhsEmit, int ); StartStatement(pnode); EmitExpressionInfo emitInfo( AsmJsType::Signed ); - if( op == OpCodeAsmJs::ShrU_Int ) + if( op == OpCodeAsmJs::Shr_UInt ) { emitInfo.type = AsmJsType::Unsigned; } @@ -3353,7 +3353,7 @@ namespace Js } } autoCleanup(functionBody, byteCodeGen); - byteCodeGen->Writer()->Begin(byteCodeGen, functionBody, byteCodeGen->GetAllocator(), false, false); + byteCodeGen->Writer()->Begin(functionBody, byteCodeGen->GetAllocator(), false, false, false); byteCodeGen->Writer()->StartStatement(functionNode, 0); byteCodeGen->Writer()->Empty(OpCode::Nop); byteCodeGen->Writer()->EndStatement(functionNode); @@ -3379,15 +3379,15 @@ namespace Js // int tab = 0; void AsmJSByteCodeGenerator::LoadModuleInt( RegSlot dst, RegSlot index ) { - mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Int, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + (int32)(mCompiler->GetIntOffset() / INT_SLOTS_SPACE + 0.5)); + mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Int, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + (int32)(mCompiler->GetIntOffset() / WAsmJs::INT_SLOTS_SPACE + 0.5)); } void AsmJSByteCodeGenerator::LoadModuleFloat(RegSlot dst, RegSlot index) { - mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Flt, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + (int32)(mCompiler->GetFloatOffset() / FLOAT_SLOTS_SPACE + 0.5)); + mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Flt, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + (int32)(mCompiler->GetFloatOffset() / WAsmJs::FLOAT_SLOTS_SPACE + 0.5)); } void AsmJSByteCodeGenerator::LoadModuleDouble( RegSlot dst, RegSlot index ) { - mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Db, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + mCompiler->GetDoubleOffset() / DOUBLE_SLOTS_SPACE); + mWriter.AsmSlot(OpCodeAsmJs::LdSlot_Db, dst, AsmJsFunctionMemory::ModuleEnvRegister, index + mCompiler->GetDoubleOffset() / WAsmJs::DOUBLE_SLOTS_SPACE); } void AsmJSByteCodeGenerator::LoadModuleFFI( RegSlot dst, RegSlot index ) @@ -3408,17 +3408,17 @@ namespace Js void AsmJSByteCodeGenerator::SetModuleInt( Js::RegSlot dst, RegSlot src ) { - mWriter.AsmSlot(OpCodeAsmJs::StSlot_Int, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + (int32)(mCompiler->GetIntOffset() / INT_SLOTS_SPACE + 0.5)); + mWriter.AsmSlot(OpCodeAsmJs::StSlot_Int, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + (int32)(mCompiler->GetIntOffset() / WAsmJs::INT_SLOTS_SPACE + 0.5)); } void AsmJSByteCodeGenerator::SetModuleFloat(Js::RegSlot dst, RegSlot src) { - mWriter.AsmSlot(OpCodeAsmJs::StSlot_Flt, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + (int32)(mCompiler->GetFloatOffset() / FLOAT_SLOTS_SPACE + 0.5)); + mWriter.AsmSlot(OpCodeAsmJs::StSlot_Flt, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + (int32)(mCompiler->GetFloatOffset() / WAsmJs::FLOAT_SLOTS_SPACE + 0.5)); } void AsmJSByteCodeGenerator::SetModuleDouble( Js::RegSlot dst, RegSlot src ) { - mWriter.AsmSlot(OpCodeAsmJs::StSlot_Db, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + mCompiler->GetDoubleOffset() / DOUBLE_SLOTS_SPACE); + mWriter.AsmSlot(OpCodeAsmJs::StSlot_Db, src, AsmJsFunctionMemory::ModuleEnvRegister, dst + mCompiler->GetDoubleOffset() / WAsmJs::DOUBLE_SLOTS_SPACE); } void AsmJSByteCodeGenerator::LoadModuleSimd(RegSlot dst, RegSlot index, AsmJsVarType type) diff --git a/lib/Runtime/Language/AsmJsByteCodeGenerator.h b/lib/Runtime/Language/AsmJsByteCodeGenerator.h index 4a33ce0505e..1e2b5e6d54d 100644 --- a/lib/Runtime/Language/AsmJsByteCodeGenerator.h +++ b/lib/Runtime/Language/AsmJsByteCodeGenerator.h @@ -4,29 +4,22 @@ //------------------------------------------------------------------------------------------------------- #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { enum EBinaryMathOpCodes: int; enum EBinaryComparatorOpCodes: int; // Information about the expression that has been emitted - struct EmitExpressionInfo + struct EmitExpressionInfo : WAsmJs::EmitInfoBase { EmitExpressionInfo( RegSlot location_, const AsmJsType& type_ ) : - location( location_ ), type( type_ ) - { - } - EmitExpressionInfo( const AsmJsType& type_ ) : - location( Constants::NoRegister ), type( type_ ) - { - } - EmitExpressionInfo(): - location( Constants::NoRegister ), type( AsmJsType::Void ) + WAsmJs::EmitInfoBase( location_ ), type( type_ ) { } + EmitExpressionInfo( const AsmJsType& type_ ) : type( type_ ) {} + EmitExpressionInfo(): type( AsmJsType::Void ) {} - RegSlot location; AsmJsType type; }; diff --git a/lib/Runtime/Language/AsmJsCodeGenerator.cpp b/lib/Runtime/Language/AsmJsCodeGenerator.cpp index 3ef6129ed4e..28500fcba15 100644 --- a/lib/Runtime/Language/AsmJsCodeGenerator.cpp +++ b/lib/Runtime/Language/AsmJsCodeGenerator.cpp @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "CodeGenAllocators.h" namespace Js diff --git a/lib/Runtime/Language/AsmJsCodeGenerator.h b/lib/Runtime/Language/AsmJsCodeGenerator.h index 9e78474b1dc..6118292a9f9 100644 --- a/lib/Runtime/Language/AsmJsCodeGenerator.h +++ b/lib/Runtime/Language/AsmJsCodeGenerator.h @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { class ScriptContext; diff --git a/lib/Runtime/Language/AsmJsEncoder.cpp b/lib/Runtime/Language/AsmJsEncoder.cpp index b3b8993d291..20f2c9216ea 100644 --- a/lib/Runtime/Language/AsmJsEncoder.cpp +++ b/lib/Runtime/Language/AsmJsEncoder.cpp @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "CodeGenAllocators.h" #ifdef DBG_DUMP diff --git a/lib/Runtime/Language/AsmJsEncoder.h b/lib/Runtime/Language/AsmJsEncoder.h index a99f79954bb..f2c425b8ce6 100644 --- a/lib/Runtime/Language/AsmJsEncoder.h +++ b/lib/Runtime/Language/AsmJsEncoder.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { class AsmJsEncoder @@ -70,6 +70,7 @@ namespace Js template void OP_LdUndef( const unaligned T* playout ); template void OP_Br( const unaligned T* playout ); template void OP_BrEq( const unaligned T* playout ); + template void OP_BrEqConst( const unaligned T* playout ); template void OP_BrTrue( const unaligned T* playout ); template void OP_Empty( const unaligned T* playout ); template void Op_LdSlot_Db( const unaligned T* playout ); diff --git a/lib/Runtime/Language/AsmJsEncoder.inl b/lib/Runtime/Language/AsmJsEncoder.inl index 88a62677795..be4924824b4 100644 --- a/lib/Runtime/Language/AsmJsEncoder.inl +++ b/lib/Runtime/Language/AsmJsEncoder.inl @@ -232,6 +232,23 @@ namespace Js } } + template + void AsmJsEncoder::OP_BrEqConst(const unaligned T* playout) + { + if (playout->RelativeJumpOffset) + { + const int labelOffset = mReader.GetCurrentOffset() + playout->RelativeJumpOffset; + Assert(playout->RelativeJumpOffset > 0 || mRelocLabelMap->ContainsKey(labelOffset)); + bool isBackEdge = false; + if (playout->RelativeJumpOffset < 0) + isBackEdge = true; + BYTE* relocAddr = nullptr; + AsmJsJitTemplate::BrEq::ApplyTemplate(this, mPc, CalculateOffset(playout->I1), playout->C1, &relocAddr, isBackEdge, true); + Assert(relocAddr); + AddReloc(labelOffset, relocAddr); + } + } + template void Js::AsmJsEncoder::Op_LdConst_Int( const unaligned T* playout ) { diff --git a/lib/Runtime/Language/AsmJsEncoderHandler.inl b/lib/Runtime/Language/AsmJsEncoderHandler.inl index 0ab00b2fee4..aea0890b43f 100644 --- a/lib/Runtime/Language/AsmJsEncoderHandler.inl +++ b/lib/Runtime/Language/AsmJsEncoderHandler.inl @@ -73,6 +73,7 @@ EXDEF3 ( CUSTOM , InvalidOpCode , OP_Empty , Empty DEF3_WMS( INT2 , BeginSwitch_Int , Ld_Int , Int2 ) DEF3 ( CUSTOM , EndSwitch_Int , OP_Br , AsmBr ) DEF3_WMS( CUSTOM , Case_Int , OP_BrEq , BrInt2 ) + DEF3_WMS( CUSTOM , Case_IntConst , OP_BrEqConst , BrInt1Const1 ) DEF3_WMS( CUSTOM , Conv_DTI , Op_Db_To_Int , Int1Double1 ) DEF3_WMS( CUSTOM , Conv_ITD , Op_Int_To_Db , Double1Int1 ) @@ -118,7 +119,7 @@ EXDEF3 ( CUSTOM , InvalidOpCode , OP_Empty , Empty DEF3_WMS( INT3 , Xor_Int , Xor_Int , Int3 ) DEF3_WMS( INT3 , Shl_Int , Shl_Int , Int3 ) DEF3_WMS( INT3 , Shr_Int , Shr_Int , Int3 ) - DEF3_WMS( INT3 , ShrU_Int , ShrU_Int , Int3 ) + DEF3_WMS( INT3 , Shr_UInt , Shr_UInt , Int3 ) DEF3_WMS( INT3 , Mul_UInt , Mul_UInt , Int3 ) DEF3_WMS( INT3 , Div_UInt , Div_UInt , Int3 ) @@ -147,10 +148,10 @@ EXDEF3 ( CUSTOM , InvalidOpCode , OP_Empty , Empty DEF3_WMS( INT3 , CmEq_Int , Eq_Int , Int3 ) DEF3_WMS( INT3 , CmNe_Int , Ne_Int , Int3 ) - DEF3_WMS( INT3 , CmLt_UnInt , Lt_UInt , Int3 ) - DEF3_WMS( INT3 , CmLe_UnInt , Le_UInt , Int3 ) - DEF3_WMS( INT3 , CmGt_UnInt , Gt_UInt , Int3 ) - DEF3_WMS( INT3 , CmGe_UnInt , Ge_UInt , Int3 ) + DEF3_WMS( INT3 , CmLt_UInt , Lt_UInt , Int3 ) + DEF3_WMS( INT3 , CmLe_UInt , Le_UInt , Int3 ) + DEF3_WMS( INT3 , CmGt_UInt , Gt_UInt , Int3 ) + DEF3_WMS( INT3 , CmGe_UInt , Ge_UInt , Int3 ) DEF3_WMS( INT1DOUBLE2, CmLt_Db , CmpLt_Db , Int1Double2 ) DEF3_WMS( INT1DOUBLE2, CmLe_Db , CmpLe_Db , Int1Double2 ) diff --git a/lib/Runtime/Language/AsmJsJitTemplate.h b/lib/Runtime/Language/AsmJsJitTemplate.h index 2a1c48e5c94..ccbd03193e6 100644 --- a/lib/Runtime/Language/AsmJsJitTemplate.h +++ b/lib/Runtime/Language/AsmJsJitTemplate.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { @@ -51,7 +51,7 @@ namespace Js CreateTemplate( FunctionExit ); CreateTemplate( Br, BYTE** relocAddr, bool isBackEdge); CreateTemplate( BrTrue, int offset, BYTE** relocAddr, bool isBackEdge); - CreateTemplate( BrEq, int leftOffset, int rightOffset, BYTE** relocAddr, bool isBackEdge); + CreateTemplate( BrEq, int leftOffset, int rightOffset, BYTE** relocAddr, bool isBackEdge, bool isSrc2Const = false); CreateTemplate( Label ); CreateTemplate( LdUndef, int targetOffset ); CreateTemplate( LdSlot, int targetOffset, int arrOffset, int slotIndex ); @@ -76,7 +76,7 @@ namespace Js CreateTemplate( Xor_Int, int targetOffset, int leftOffset, int rightOffset ); CreateTemplate( Shl_Int , int targetOffset, int leftOffset, int rightOffset ); CreateTemplate( Shr_Int , int targetOffset, int leftOffset, int rightOffset ); - CreateTemplate( ShrU_Int, int targetOffset, int leftOffset, int rightOffset ); + CreateTemplate( Shr_UInt, int targetOffset, int leftOffset, int rightOffset ); CreateTemplate( Add_Int, int targetOffset, int leftOffset, int rightOffset ); CreateTemplate( Sub_Int, int targetOffset, int leftOffset, int rightOffset ); CreateTemplate( Mul_Int, int targetOffset, int leftOffset, int rightOffset ); diff --git a/lib/Runtime/Language/AsmJsLink.cpp b/lib/Runtime/Language/AsmJsLink.cpp index fbcacb0e843..d3947f8443e 100644 --- a/lib/Runtime/Language/AsmJsLink.cpp +++ b/lib/Runtime/Language/AsmJsLink.cpp @@ -6,7 +6,7 @@ #include "RuntimeLanguagePch.h" #include "Library/BoundFunction.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js{ bool ASMLink::CheckArrayBuffer(ScriptContext* scriptContext, Var bufferView, const AsmJsModuleInfo * info) { diff --git a/lib/Runtime/Language/AsmJsLink.h b/lib/Runtime/Language/AsmJsLink.h index b68cf084d1c..58e6fff2685 100644 --- a/lib/Runtime/Language/AsmJsLink.h +++ b/lib/Runtime/Language/AsmJsLink.h @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js{ class ASMLink{ diff --git a/lib/Runtime/Language/AsmJsModule.cpp b/lib/Runtime/Language/AsmJsModule.cpp index 30f8800f93a..3283247cccc 100644 --- a/lib/Runtime/Language/AsmJsModule.cpp +++ b/lib/Runtime/Language/AsmJsModule.cpp @@ -5,7 +5,7 @@ #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "ByteCode/Symbol.h" #include "ByteCode/FuncInfo.h" #include "ByteCode/ByteCodeApi.h" @@ -87,14 +87,14 @@ namespace Js asmInfo->SetIsHeapBufferConst(!mUsesChangeHeap); asmInfo->SetUsesHeapBuffer(mUsesHeapBuffer); int varCount = 0; - varCount += (int)((intRegisterSpace.GetTotalVarCount() * INT_SLOTS_SPACE) + 0.5); - varCount += (int)(floatRegisterSpace.GetTotalVarCount() * FLOAT_SLOTS_SPACE + 0.5); - varCount += doubleRegisterSpace.GetTotalVarCount() * DOUBLE_SLOTS_SPACE; + varCount += (int)((intRegisterSpace.GetTotalVarCount() * WAsmJs::INT_SLOTS_SPACE) + 0.5); + varCount += (int)(floatRegisterSpace.GetTotalVarCount() * WAsmJs::FLOAT_SLOTS_SPACE + 0.5); + varCount += doubleRegisterSpace.GetTotalVarCount() * WAsmJs::DOUBLE_SLOTS_SPACE; if (IsSimdjsEnabled()) { const auto& simdRegisterSpace = func->GetRegisterSpace(); - varCount += (int)((simdRegisterSpace.GetTotalVarCount() + 1) * SIMD_SLOTS_SPACE); /* + 1 to make room for possible alignment of SIMD values*/ + varCount += (int)((simdRegisterSpace.GetTotalVarCount() + 1) * WAsmJs::SIMD_SLOTS_SPACE); /* + 1 to make room for possible alignment of SIMD values*/ // Aligned SIMD values. Assert(asmInfo->GetSimdByteOffset() % sizeof(AsmJsSIMDValue) == 0); } @@ -2404,21 +2404,21 @@ namespace Js mModuleMemory.mArrayBufferOffset = AsmJsModuleMemory::MemoryTableBeginOffset; mModuleMemory.mStdLibOffset = mModuleMemory.mArrayBufferOffset + 1; mModuleMemory.mDoubleOffset = mModuleMemory.mStdLibOffset + 1; - mModuleMemory.mFuncOffset = mModuleMemory.mDoubleOffset + (mDoubleVarSpace.GetTotalVarCount() * DOUBLE_SLOTS_SPACE); + mModuleMemory.mFuncOffset = mModuleMemory.mDoubleOffset + (mDoubleVarSpace.GetTotalVarCount() * WAsmJs::DOUBLE_SLOTS_SPACE); mModuleMemory.mFFIOffset = mModuleMemory.mFuncOffset + mFunctionArray.Count(); mModuleMemory.mFuncPtrOffset = mModuleMemory.mFFIOffset + mImportFunctions.GetTotalVarCount(); mModuleMemory.mFloatOffset = mModuleMemory.mFuncPtrOffset + GetFuncPtrTableCount(); - mModuleMemory.mIntOffset = mModuleMemory.mFloatOffset + (int32)(mFloatVarSpace.GetTotalVarCount() * FLOAT_SLOTS_SPACE + 0.5); - mModuleMemory.mMemorySize = mModuleMemory.mIntOffset + (int32)(mIntVarSpace.GetTotalVarCount() * INT_SLOTS_SPACE + 0.5); + mModuleMemory.mIntOffset = mModuleMemory.mFloatOffset + (int32)(mFloatVarSpace.GetTotalVarCount() * WAsmJs::FLOAT_SLOTS_SPACE + 0.5); + mModuleMemory.mMemorySize = mModuleMemory.mIntOffset + (int32)(mIntVarSpace.GetTotalVarCount() * WAsmJs::INT_SLOTS_SPACE + 0.5); if (IsSimdjsEnabled()) { // mSimdOffset is in SIMDValues, hence aligned // mMemorySize is in Vars - mModuleMemory.mSimdOffset = (int) ::ceil(mModuleMemory.mMemorySize / SIMD_SLOTS_SPACE); + mModuleMemory.mSimdOffset = (int) ::ceil(mModuleMemory.mMemorySize / WAsmJs::SIMD_SLOTS_SPACE); if (mSimdVarSpace.GetTotalVarCount()) { - mModuleMemory.mMemorySize = (int)((mModuleMemory.mSimdOffset + mSimdVarSpace.GetTotalVarCount()) * SIMD_SLOTS_SPACE); + mModuleMemory.mMemorySize = (int)((mModuleMemory.mSimdOffset + mSimdVarSpace.GetTotalVarCount()) * WAsmJs::SIMD_SLOTS_SPACE); } } diff --git a/lib/Runtime/Language/AsmJsModule.h b/lib/Runtime/Language/AsmJsModule.h index 9729b7e7d58..1104b25361c 100644 --- a/lib/Runtime/Language/AsmJsModule.h +++ b/lib/Runtime/Language/AsmJsModule.h @@ -5,7 +5,7 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #define ASMMATH_BUILTIN_SIZE (32) #define ASMARRAY_BUILTIN_SIZE (16) #define ASMSIMD_BUILTIN_SIZE (512) @@ -137,12 +137,12 @@ namespace Js { typedef JsUtil::List ModuleFunctionTableArray; typedef JsUtil::List ModuleExportArray; typedef JsUtil::Queue ModuleArrayViewList; - typedef AsmJsRegisterSpaceGeneric ModuleIntVars; - typedef AsmJsRegisterSpaceGeneric ModuleDoubleVars; - typedef AsmJsRegisterSpaceGeneric ModuleFloatVars; - typedef AsmJsRegisterSpaceGeneric ModuleImportFunctions; + typedef WAsmJs::RegisterSpace ModuleIntVars; + typedef WAsmJs::RegisterSpace ModuleDoubleVars; + typedef WAsmJs::RegisterSpace ModuleFloatVars; + typedef WAsmJs::RegisterSpace ModuleImportFunctions; - typedef AsmJsRegisterSpaceGeneric ModuleSIMDVars; + typedef WAsmJs::RegisterSpace ModuleSIMDVars; typedef JsUtil::BaseDictionary SIMDNameMap; inline bool LookupStdLibSIMDNameInMap (PropertyName name, AsmJsSIMDFunction **simdFunc, SIMDNameMap* map) const; diff --git a/lib/Runtime/Language/AsmJsTypes.cpp b/lib/Runtime/Language/AsmJsTypes.cpp index 98c3c5ab041..cd801dcd903 100644 --- a/lib/Runtime/Language/AsmJsTypes.cpp +++ b/lib/Runtime/Language/AsmJsTypes.cpp @@ -23,60 +23,13 @@ #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #include "ByteCode/ByteCodeWriter.h" #include "ByteCode/AsmJsByteCodeWriter.h" #include "Language/AsmJsByteCodeGenerator.h" namespace Js { -#if DBG_DUMP - template<> void PrintTmpRegisterAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("+D%d\n"), loc); - } - template<> void PrintTmpRegisterDeAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("-D%d\n"), loc); - } - template<> void PrintTmpRegisterAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("+F%d\n"), loc); - } - template<> void PrintTmpRegisterDeAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("-F%d\n"), loc); - } - template<> void PrintTmpRegisterAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("+I%d\n"), loc); - } - template<> void PrintTmpRegisterDeAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("-I%d\n"), loc); - } - - template<> void PrintTmpRegisterAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("+SIMD%d\n"), loc); - } - - template<> void PrintTmpRegisterDeAllocation(RegSlot loc) - { - if (PHASE_ON1(AsmjsTmpRegisterAllocationPhase)) - Output::Print(_u("-SIMD%d\n"), loc); - } - template void PrintTmpRegisterAllocation(RegSlot loc) {} - template void PrintTmpRegisterDeAllocation(RegSlot loc) {} -#endif - const char16 * AsmJsType::toChars() const { switch (which_) @@ -867,7 +820,12 @@ namespace Js , mMaxArgOutDepth(0) , mDefined( false ) { - +#if DBG_DUMP + mIntRegisterSpace.mType = WAsmJs::RegisterSpace::INT32; + mFloatRegisterSpace.mType = WAsmJs::RegisterSpace::FLOAT32; + mDoubleRegisterSpace.mType = WAsmJs::RegisterSpace::FLOAT64; + mSimdRegisterSpace.mType = WAsmJs::RegisterSpace::SIMD; +#endif } /// AsmJsFunc diff --git a/lib/Runtime/Language/AsmJsTypes.h b/lib/Runtime/Language/AsmJsTypes.h index 18ae557330f..9201284a6d9 100644 --- a/lib/Runtime/Language/AsmJsTypes.h +++ b/lib/Runtime/Language/AsmJsTypes.h @@ -22,8 +22,14 @@ //------------------------------------------------------------------------------------------------------- #pragma once +#include "Language/WAsmjsUtils.h" + +#ifdef ASMJS_PLAT +namespace Wasm +{ + struct WasmReaderInfo; +}; -#ifndef TEMP_DISABLE_ASMJS namespace Js { typedef uint32 uint32_t; @@ -472,179 +478,6 @@ namespace Js inline Js::PropertyName GetField() const { return mField; } }; -#if DBG_DUMP - // Function used to debug Temporary register allocation in the bytecode generator - template void PrintTmpRegisterAllocation( RegSlot loc ); - template void PrintTmpRegisterDeAllocation( RegSlot loc ); -#endif - - /// Register space for const, parameters, variables and tmp values - /// -------------------------------------------------------- - /// | 0 (Reserved) | Consts | Parameters | Variables | Tmp - /// -------------------------------------------------------- - /// Cannot allocate in any different order - template - class AsmJsRegisterSpaceGeneric - { - // Total number of register allocated - RegSlot mRegisterCount; - - // location of the first temporary register and last variable + 1 - RegSlot mFirstTmpReg; - - // Location of the next register to be allocated - RegSlot mNextLocation; - - // number of const, includes the reserved slots - RegSlot mNbConst; - - public: - // Constructor - AsmJsRegisterSpaceGeneric() : - mRegisterCount( Reserved_Slots_Count ) - , mFirstTmpReg( Reserved_Slots_Count ) - , mNextLocation( Reserved_Slots_Count ) - , mNbConst( Reserved_Slots_Count ) - { - CompileAssert( Reserved_Slots_Count >= 0 ); - } - // Get the number of const allocated - inline RegSlot GetConstCount() const { return mNbConst; } - // Get the location of the first temporary register - inline RegSlot GetFirstTmpRegister() const{ return mFirstTmpReg; } - // Get the total number of temporary register allocated - inline RegSlot GetTmpCount() const { return mRegisterCount-mFirstTmpReg; } - // Get number of local variables - inline RegSlot GetVarCount() const { return mFirstTmpReg - mNbConst; } - // Get the total number of variable allocated ( including temporaries ) - inline RegSlot GetTotalVarCount() const { return mRegisterCount - mNbConst; } - inline RegSlot GetRegisterCount()const { return mRegisterCount; } - - // Acquire a location for a register. Use only for arguments and Variables - inline RegSlot AcquireRegister() - { - // Makes sure no temporary register have been allocated yet - Assert( mFirstTmpReg == mRegisterCount && mNextLocation == mFirstTmpReg ); - ++mFirstTmpReg; - ++mRegisterCount; - return mNextLocation++; - } - - // Acquire a location for a constant - inline RegSlot AcquireConstRegister() - { - ++mNbConst; - return AcquireRegister(); - } - - // Acquire a location for a temporary register - RegSlot AcquireTmpRegister() - { - // Make sure this function is called correctly - Assert( this->mNextLocation <= this->mRegisterCount && this->mNextLocation >= this->mFirstTmpReg ); - - // Allocate a new temp pseudo-register, increasing the locals count if necessary. - if( this->mNextLocation == this->mRegisterCount ) - { - ++this->mRegisterCount; - } -#if DBG_DUMP - PrintTmpRegisterAllocation( mNextLocation ); -#endif - return mNextLocation++; - } - - // Release a location for a temporary register, must be the last location acquired - void ReleaseTmpRegister( RegSlot tmpReg ) - { - // make sure the location released is valid - Assert( tmpReg != Constants::NoRegister ); - - // Put this reg back on top of the temp stack (if it's a temp). - if( this->IsTmpReg( tmpReg ) ) - { - Assert( tmpReg == this->mNextLocation - 1 ); -#if DBG_DUMP - PrintTmpRegisterDeAllocation( mNextLocation-1 ); -#endif - this->mNextLocation--; - } - } - - // Checks if the register is a temporary register - bool IsTmpReg( RegSlot tmpReg ) - { - Assert( this->mFirstTmpReg != Js::Constants::NoRegister ); - return !IsConstReg( tmpReg ) && tmpReg >= mFirstTmpReg; - } - - // Checks if the register is a const register - bool IsConstReg( RegSlot reg ) - { - // a register is const if it is between the first register and the end of consts - return reg < mNbConst && reg != 0; - } - - // Checks if the register is a variable register - bool IsVarReg( RegSlot reg ) - { - // a register is a var if it is between the last const and the end - // equivalent to reg>=mNbConst && reglocation != Js::Constants::NoRegister ) - { - this->ReleaseTmpRegister( pnode->location ); - } - } - - // Checks if the location points to a temporary register - bool IsTmpLocation( const EmitExpressionInfo* pnode ) - { - if( pnode && pnode->location != Js::Constants::NoRegister ) - { - return IsTmpReg( pnode->location ); - } - return false; - } - - // Checks if the location points to a constant register - bool IsConstLocation( const EmitExpressionInfo* pnode ) - { - if( pnode && pnode->location != Js::Constants::NoRegister ) - { - return IsConstReg( pnode->location ); - } - return false; - } - - // Checks if the location points to a variable register - bool IsVarLocation( const EmitExpressionInfo* pnode ) - { - if( pnode && pnode->location != Js::Constants::NoRegister ) - { - return IsVarReg( pnode->location ); - } - return false; - } - - // Checks if the location is valid ( within bounds of already allocated registers ) - bool IsValidLocation( const EmitExpressionInfo* pnode ) - { - if( pnode && pnode->location != Js::Constants::NoRegister ) - { - return pnode->location < mRegisterCount; - } - return false; - } - }; - template struct AsmJsComparer : public DefaultComparer {}; @@ -683,7 +516,7 @@ namespace Js // Register space use by the function, include a map to quickly find the location assigned to constants template - class AsmJsRegisterSpace : public AsmJsRegisterSpaceGeneric < T, 1 > // reserves 1 location for return + class AsmJsRegisterSpace : public WAsmJs::RegisterSpace { typedef JsUtil::BaseDictionary ConstMap; // Map for constant and their location @@ -691,6 +524,8 @@ namespace Js public: // Constructor AsmJsRegisterSpace( ArenaAllocator* allocator ) : + // reserves 1 location for return + WAsmJs::RegisterSpace(1), mConstMap( allocator ) { } @@ -1016,6 +851,7 @@ namespace Js int mSimdConstCount, mSimdVarCount, mSimdTmpCount, mSimdByteOffset; FunctionBody* asmJsModuleFunctionBody; + Wasm::WasmReaderInfo* mWasmReaderInfo; public: AsmJsFunctionInfo() : mArgCount(0), mIntConstCount(0), @@ -1042,7 +878,8 @@ namespace Js mUsesHeapBuffer(false), mIsHeapBufferConst(false), mArgType(nullptr), - mArgSizes(nullptr) {} + mArgSizes(nullptr), + mWasmReaderInfo(nullptr) {} // the key is the bytecode address typedef JsUtil::BaseDictionary ByteCodeToTJMap; ByteCodeToTJMap* mbyteCodeTJMap; @@ -1132,6 +969,9 @@ namespace Js mArgType = val; } + Wasm::WasmReaderInfo* GetWasmReaderInfo() const {return mWasmReaderInfo;} + void SetWasmReaderInfo(Wasm::WasmReaderInfo* reader) {mWasmReaderInfo = reader;} + bool IsWasmDeferredParse() const { return mWasmReaderInfo != nullptr; } }; // The asm.js spec recognizes this set of builtin SIMD functions. diff --git a/lib/Runtime/Language/AsmJsUtils.cpp b/lib/Runtime/Language/AsmJsUtils.cpp index 319ce8741c9..9e4b76bef5a 100644 --- a/lib/Runtime/Language/AsmJsUtils.cpp +++ b/lib/Runtime/Language/AsmJsUtils.cpp @@ -22,7 +22,7 @@ #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { @@ -487,6 +487,7 @@ namespace Js char* dst; Var returnValue = 0; + // TODO (michhol): wasm, heap should not ever be detached AsmJsModuleInfo::EnsureHeapAttached(func); argSize = ::Math::Align(argSize, 8); diff --git a/lib/Runtime/Language/AsmJsUtils.h b/lib/Runtime/Language/AsmJsUtils.h index e39b3931386..d7ecafac047 100644 --- a/lib/Runtime/Language/AsmJsUtils.h +++ b/lib/Runtime/Language/AsmJsUtils.h @@ -22,16 +22,11 @@ #pragma once -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT // Removed code from original location, if the expression is true, check if extra code needed #define MaybeTodo( expr ) AssertMsg( !(expr), "Unhandled scenario in asm.js" ) namespace Js { - static const int DOUBLE_SLOTS_SPACE = (sizeof(double) / sizeof(Var)); // 2 in x86 and 1 in x64 - static const double FLOAT_SLOTS_SPACE = (sizeof(float) / (double)sizeof(Var)); // 1 in x86 and 0.5 in x64 - static const double INT_SLOTS_SPACE = ( sizeof( int ) / (double)sizeof( Var ) ); // 1 in x86 and 0.5 in x64 - static const double SIMD_SLOTS_SPACE = (sizeof(SIMDValue) / sizeof(Var)); // 4 in x86 and 2 in x64 - Var AsmJsChangeHeapBuffer(RecyclableObject * function, CallInfo callInfo, ...); #if _M_X64 diff --git a/lib/Runtime/Language/CMakeLists.txt b/lib/Runtime/Language/CMakeLists.txt index df3581c4b5d..9d7e3c42def 100644 --- a/lib/Runtime/Language/CMakeLists.txt +++ b/lib/Runtime/Language/CMakeLists.txt @@ -11,6 +11,7 @@ set(CRL_SOURCE_FILES ${CRL_SOURCE_FILES} AsmJsModule.cpp AsmJsTypes.cpp AsmJsUtils.cpp + WAsmjsUtils.cpp CacheOperators.cpp CodeGenRecyclableData.cpp DynamicProfileInfo.cpp diff --git a/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj b/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj index 7b67602129d..895ad9781a3 100644 --- a/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj +++ b/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj @@ -29,6 +29,7 @@ $(MSBuildThisFileDirectory)..; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Backend; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\Runtime\Math; @@ -174,6 +175,7 @@ + @@ -251,6 +253,7 @@ + diff --git a/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj.filters b/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj.filters index 7e2fe7d1e54..df49cd2f6b3 100644 --- a/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj.filters +++ b/lib/Runtime/Language/Chakra.Runtime.Language.vcxproj.filters @@ -73,6 +73,7 @@ + @@ -146,6 +147,7 @@ + diff --git a/lib/Runtime/Language/DynamicProfileInfo.cpp b/lib/Runtime/Language/DynamicProfileInfo.cpp index 1a15bffe2f0..c7c6c224262 100644 --- a/lib/Runtime/Language/DynamicProfileInfo.cpp +++ b/lib/Runtime/Language/DynamicProfileInfo.cpp @@ -1558,9 +1558,10 @@ namespace Js _u(" disableNoProfileBailouts: %s") _u(" disableSwitchOpt : %s") _u(" disableEquivalentObjTypeSpec : %s\n") - _u(" disableObjTypeSpec_jitLoopBody : %s\n"), - _u(" disablePowIntTypeSpec : %s\n"), - _u(" disableStackArgOpt : %s\n"), + _u(" disableObjTypeSpec_jitLoopBody : %s\n") + _u(" disablePowIntTypeSpec : %s\n") + _u(" disableStackArgOpt : %s\n") + _u(" disableTagCheck : %s\n"), IsTrueOrFalse(this->bits.disableAggressiveIntTypeSpec), IsTrueOrFalse(this->bits.disableAggressiveIntTypeSpec_jitLoopBody), IsTrueOrFalse(this->bits.disableAggressiveMulIntTypeSpec), @@ -1595,7 +1596,8 @@ namespace Js IsTrueOrFalse(this->bits.disableEquivalentObjTypeSpec), IsTrueOrFalse(this->bits.disableObjTypeSpec_jitLoopBody), IsTrueOrFalse(this->bits.disablePowIntIntTypeSpec), - IsTrueOrFalse(this->bits.disableStackArgOpt)); + IsTrueOrFalse(this->bits.disableStackArgOpt), + IsTrueOrFalse(this->bits.disableTagCheck)); } } diff --git a/lib/Runtime/Language/DynamicProfileInfo.h b/lib/Runtime/Language/DynamicProfileInfo.h index 6e7014a649a..a5e58628bf2 100644 --- a/lib/Runtime/Language/DynamicProfileInfo.h +++ b/lib/Runtime/Language/DynamicProfileInfo.h @@ -511,6 +511,7 @@ namespace Js bool disablePowIntIntTypeSpec : 1; bool disableLoopImplicitCallInfo : 1; bool disableStackArgOpt : 1; + bool disableTagCheck : 1; } bits; uint32 m_recursiveInlineInfo; // Bit is set for each callsites where the function is called recursively @@ -802,6 +803,8 @@ namespace Js void DisableObjTypeSpecInJitLoopBody() { this->bits.disableObjTypeSpec_jitLoopBody = true; } bool IsPowIntIntTypeSpecDisabled() const { return bits.disablePowIntIntTypeSpec; } void DisablePowIntIntTypeSpec() { this->bits.disablePowIntIntTypeSpec = true; } + bool IsTagCheckDisabled() const { return bits.disableTagCheck; } + void DisableTagCheck() { this->bits.disableTagCheck = true; } static bool IsCallSiteNoInfo(Js::LocalFunctionId functionId) { return functionId == CallSiteNoInfo; } int IncRejitCount() { return this->rejitCount++; } diff --git a/lib/Runtime/Language/FunctionCodeGenJitTimeData.cpp b/lib/Runtime/Language/FunctionCodeGenJitTimeData.cpp index 6897674b2ec..960dd124e90 100644 --- a/lib/Runtime/Language/FunctionCodeGenJitTimeData.cpp +++ b/lib/Runtime/Language/FunctionCodeGenJitTimeData.cpp @@ -16,6 +16,7 @@ namespace Js #endif next(0), ldFldInlinees(nullptr), + globalThisObject(GetFunctionBody() && GetFunctionBody()->GetByteCode() ? GetFunctionBody()->GetScriptContext()->GetLibrary()->GetGlobalObject()->ToThis() : 0), profiledIterations(GetFunctionBody() && GetFunctionBody()->GetByteCode() ? GetFunctionBody()->GetProfiledIterations() : 0) { } @@ -35,6 +36,11 @@ namespace Js return this->functionInfo->GetFunctionBody(); } + Var FunctionCodeGenJitTimeData::GetGlobalThisObject() const + { + return this->globalThisObject; + } + bool FunctionCodeGenJitTimeData::IsPolymorphicCallSite(const ProfileId profiledCallSiteId) const { Assert(GetFunctionBody()); diff --git a/lib/Runtime/Language/FunctionCodeGenJitTimeData.h b/lib/Runtime/Language/FunctionCodeGenJitTimeData.h index a22e84d2ca3..c8dd797de2f 100644 --- a/lib/Runtime/Language/FunctionCodeGenJitTimeData.h +++ b/lib/Runtime/Language/FunctionCodeGenJitTimeData.h @@ -37,6 +37,9 @@ namespace Js PolymorphicInlineCacheInfoIDL* selfInfo; PolymorphicInlineCacheIDL* polymorphicInlineCaches; + // current value of global this object, may be changed in case of script engine invalidation + Var globalThisObject; + // Number of functions that are to be inlined (this is not the length of the 'inlinees' array above, includes getter setter inlinee count) uint inlineeCount; // Number of counts of getter setter to be inlined. This is not an exact count as inline caches are shared and we have no way of knowing @@ -70,6 +73,7 @@ namespace Js FunctionInfo *GetFunctionInfo() const; FunctionBody *GetFunctionBody() const; + Var GetGlobalThisObject() const; FunctionBodyDataIDL *GetJITBody() const; FunctionCodeGenJitTimeData *GetNext() const { return next; } diff --git a/lib/Runtime/Language/FunctionCodeGenRuntimeData.cpp b/lib/Runtime/Language/FunctionCodeGenRuntimeData.cpp index 5c5c64efaf9..fe4a2770365 100644 --- a/lib/Runtime/Language/FunctionCodeGenRuntimeData.cpp +++ b/lib/Runtime/Language/FunctionCodeGenRuntimeData.cpp @@ -27,14 +27,16 @@ namespace Js return &clonedInlineCaches; } - FunctionCodeGenRuntimeData * FunctionCodeGenRuntimeData::GetNextForTarget(FunctionBody *targetFuncBody) const + const FunctionCodeGenRuntimeData * FunctionCodeGenRuntimeData::GetForTarget(FunctionBody *targetFuncBody) const { - FunctionCodeGenRuntimeData * next = this->next; - if (next->GetFunctionBody() != targetFuncBody) + const FunctionCodeGenRuntimeData * target = this; + while (target && target->GetFunctionBody() != targetFuncBody) { - next = next->next; + target = target->next; } - return next; + // we should always find the info + Assert(target); + return target; } const FunctionCodeGenRuntimeData *FunctionCodeGenRuntimeData::GetInlinee(const ProfileId profiledCallSiteId) const diff --git a/lib/Runtime/Language/FunctionCodeGenRuntimeData.h b/lib/Runtime/Language/FunctionCodeGenRuntimeData.h index 694b030a023..149c21aecb3 100644 --- a/lib/Runtime/Language/FunctionCodeGenRuntimeData.h +++ b/lib/Runtime/Language/FunctionCodeGenRuntimeData.h @@ -36,7 +36,7 @@ namespace Js public: FunctionBody *GetFunctionBody() const; FunctionCodeGenRuntimeData *GetNext() const { return next; }; - FunctionCodeGenRuntimeData *GetNextForTarget(FunctionBody *targetFuncBody) const; + const FunctionCodeGenRuntimeData *GetForTarget(FunctionBody *targetFuncBody) const; const InlineCachePointerArray *ClonedInlineCaches() const; InlineCachePointerArray *ClonedInlineCaches(); diff --git a/lib/Runtime/Language/InterpreterHandler.inl b/lib/Runtime/Language/InterpreterHandler.inl index 6a7417986d5..5970c264185 100644 --- a/lib/Runtime/Language/InterpreterHandler.inl +++ b/lib/Runtime/Language/InterpreterHandler.inl @@ -34,7 +34,7 @@ #define EXDEF4_WMS(process, op, func, y, t) #endif -#if defined(INTERPRETER_ASMJS) && !defined(TEMP_DISABLE_ASMJS) +#if defined(INTERPRETER_ASMJS) #include "InterpreterHandlerAsmJs.inl" #else diff --git a/lib/Runtime/Language/InterpreterHandlerAsmJs.inl b/lib/Runtime/Language/InterpreterHandlerAsmJs.inl old mode 100644 new mode 100755 index ddc3ec54357..294a5f5a871 --- a/lib/Runtime/Language/InterpreterHandlerAsmJs.inl +++ b/lib/Runtime/Language/InterpreterHandlerAsmJs.inl @@ -3,8 +3,7 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- - -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT // See Lib\Runtime\Language\InterpreterProcessOpCodeAsmJs.h for Handler Process // ( HandlerProcess , OpCodeAsmJs , HandlerFunction , LayoutAsmJs , Type ) // ( | , | , | , | , | ) @@ -46,17 +45,27 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF4_WMS( TEMPLATE_ASMJS , StSlot_Int , OP_StSlotPrimitive , ElementSlot, int ) DEF4_WMS( TEMPLATE_ASMJS , StSlot_Flt , OP_StSlotPrimitive , ElementSlot, float ) DEF3_WMS( CUSTOM_ASMJS , LdArr , OP_LdArrGeneric , AsmTypedArr ) + DEF3_WMS( CUSTOM_ASMJS , LdArrWasm , OP_LdArrWasm , AsmTypedArr ) + DEF3_WMS( CUSTOM_ASMJS , StArrWasm , OP_StArrWasm , AsmTypedArr ) DEF3_WMS( CUSTOM_ASMJS , LdArrConst , OP_LdArrConstIndex , AsmTypedArr ) DEF3_WMS( CUSTOM_ASMJS , StArr , OP_StArrGeneric , AsmTypedArr ) DEF3_WMS( CUSTOM_ASMJS , StArrConst , OP_StArrConstIndex , AsmTypedArr ) DEF2_WMS( C1toI1 , Ld_IntConst , None ) + DEF2_WMS( C1toF1 , Ld_FltConst , None ) + DEF2_WMS( C1toD1 , Ld_DbConst , None ) DEF2_WMS( BR_ASM_MemStack , BrTrue_Int , None ) // Jumps to location if int reg is true + DEF2_WMS( BR_ASM_MemStackF , BrFalse_Int , None ) // Jumps to location if int reg is false DEF2_WMS( BR_ASM_Mem , BrEq_Int , AsmJsMath::CmpEq ) // Jumps to location if both int reg are equal + DEF2_WMS( I1toF1Mem , Reinterpret_ITF, NumberUtilities::ReinterpretBits ) // reinterpret bits of int to float + DEF2_WMS( F1toI1Scr , Reinterpret_FTI, NumberUtilities::ToSpecial ) // reinterpret bits of float to int DEF2_WMS( D1toI1Scr , Conv_DTI , JavascriptConversion::ToInt32 ) // convert double to int + DEF2_WMS( D1toI1Scr , Conv_DTU , JavascriptConversion::ToUInt32 ) // convert double to unsigned int DEF2_WMS( F1toI1Scr , Conv_FTI , JavascriptConversion::ToInt32 ) // convert float to int + DEF2_WMS( F1toI1Scr , Conv_FTU , JavascriptConversion::ToUInt32 ) // convert float to unsigned int DEF2_WMS( I1toD1Mem , Conv_ITD , (double) ) // convert int to double DEF2_WMS( U1toD1Mem , Conv_UTD , (double) ) // convert unsigned int to double + DEF2_WMS( U1toF1Mem , Conv_UTF , (float) ) // convert unsigned int to float DEF2_WMS( F1toD1Mem , Conv_FTD , (double) ) // convert unsigned float to double DEF2_WMS( I1toI1Mem , Ld_Int , (int) ) DEF2_WMS( D1toD1Mem , Ld_Db , (double) ) @@ -68,6 +77,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( I1toI1Mem , BeginSwitch_Int, (int) ) DEF2 ( BR_ASM , EndSwitch_Int, OP_Br ) DEF2_WMS( BR_ASM_Mem , Case_Int , AsmJsMath::CmpEq ) + DEF2_WMS( BR_ASM_Const , Case_IntConst, AsmJsMath::CmpEq ) DEF2_WMS( I1toI1Mem , Neg_Int , AsmJsMath::Neg ) // int unary '-' DEF2_WMS( I1toI1Mem , Not_Int , AsmJsMath::Not ) // int unary '~' @@ -83,11 +93,13 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( I2toI1Mem , Xor_Int , AsmJsMath::Xor ) DEF2_WMS( I2toI1Mem , Shl_Int , AsmJsMath::Shl ) DEF2_WMS( I2toI1Mem , Shr_Int , AsmJsMath::Shr ) - DEF2_WMS( I2toI1Mem , ShrU_Int , AsmJsMath::ShrU ) + DEF2_WMS( I2toI1Mem , Shr_UInt , AsmJsMath::ShrU ) + DEF2_WMS( I2toI1Mem , Rol_Int , Wasm::WasmMath::Rol ) + DEF2_WMS( I2toI1Mem , Ror_Int , Wasm::WasmMath::Ror ) - DEF2_WMS( I2toI1MemDConv , Mul_UInt , AsmJsMath::Mul ) - DEF2_WMS( I2toI1MemDConv , Div_UInt , AsmJsMath::Div ) - DEF2_WMS( I2toI1MemDConv , Rem_UInt , AsmJsMath::Rem ) + DEF2_WMS( I2toI1Mem , Mul_UInt , AsmJsMath::Mul ) + DEF2_WMS( I2toI1Mem , Div_UInt , AsmJsMath::Div ) + DEF2_WMS( I2toI1Mem , Rem_UInt , AsmJsMath::Rem ) DEF2_WMS( D1toD1Mem , Neg_Db , AsmJsMath::Neg ) // double unary '-' DEF2_WMS( D2toD1Mem , Add_Db , AsmJsMath::Add ) @@ -108,16 +120,17 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( I2toI1Mem , CmGe_Int , AsmJsMath::CmpGe ) DEF2_WMS( I2toI1Mem , CmEq_Int , AsmJsMath::CmpEq ) DEF2_WMS( I2toI1Mem , CmNe_Int , AsmJsMath::CmpNe ) - DEF2_WMS( I2toI1Mem , CmLt_UnInt , AsmJsMath::CmpLt ) - DEF2_WMS( I2toI1Mem , CmLe_UnInt , AsmJsMath::CmpLe ) - DEF2_WMS( I2toI1Mem , CmGt_UnInt , AsmJsMath::CmpGt ) - DEF2_WMS( I2toI1Mem , CmGe_UnInt , AsmJsMath::CmpGe ) + DEF2_WMS( I2toI1Mem , CmLt_UInt , AsmJsMath::CmpLt ) + DEF2_WMS( I2toI1Mem , CmLe_UInt , AsmJsMath::CmpLe ) + DEF2_WMS( I2toI1Mem , CmGt_UInt , AsmJsMath::CmpGt ) + DEF2_WMS( I2toI1Mem , CmGe_UInt , AsmJsMath::CmpGe ) DEF2_WMS( I1toI1Mem , Abs_Int , ::abs ) DEF2_WMS( I2toI1Mem , Min_Int , min ) DEF2_WMS( I2toI1Mem , Max_Int , max ) DEF2_WMS( I2toI1Mem , Imul_Int , AsmJsMath::Mul ) DEF2_WMS( I1toI1Mem , Clz32_Int , AsmJsMath::Clz32 ) - + DEF2_WMS( I1toI1Mem , Ctz_Int , Wasm::WasmMath::Ctz ) + DEF2_WMS( I1toI1Mem , Eqz_Int , Wasm::WasmMath::Eqz ) DEF2_WMS( D2toI1Mem , CmLt_Db , AsmJsMath::CmpLt ) DEF2_WMS( D2toI1Mem , CmLe_Db , AsmJsMath::CmpLe ) @@ -152,12 +165,23 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( F1toF1Mem , Abs_Flt , ::fabsf ) DEF2_WMS( D2toD1Mem , Atan2_Db , Math::Atan2 ) DEF2_WMS( D2toD1Mem , Min_Db , AsmJsMath::Min ) + DEF2_WMS( F2toF1Mem , Min_Flt , AsmJsMath::Min ) DEF2_WMS( D2toD1Mem , Max_Db , AsmJsMath::Max ) - + DEF2_WMS( F2toF1Mem , Max_Flt , AsmJsMath::Max ) DEF2_WMS( F1toF1Mem , Fround_Flt , (float) ) DEF2_WMS( D1toF1Mem , Fround_Db , (float) ) DEF2_WMS( I1toF1Mem , Fround_Int , (float) ) +EXDEF2_WMS( F2toF1Mem , Copysign_Flt , Wasm::WasmMath::Copysign ) +EXDEF2_WMS( D2toD1Mem , Copysign_Db , Wasm::WasmMath::Copysign ) + +EXDEF2_WMS( F1toF1Mem , Trunc_Flt , Wasm::WasmMath::Trunc ) +EXDEF2_WMS( F1toF1Mem , Nearest_Flt , Wasm::WasmMath::Nearest ) +EXDEF2_WMS( D1toD1Mem , Trunc_Db , Wasm::WasmMath::Trunc ) +EXDEF2_WMS( D1toD1Mem , Nearest_Db , Wasm::WasmMath::Nearest ) +EXDEF2_WMS( I1toI1Mem , PopCnt_Int , ::Math::PopCnt32 ) +EXDEF2_WMS( VtoI1Mem , CurrentMemory_Int, OP_GetMemorySize ) +EXDEF2 ( EMPTYASMJS , Unreachable_Void , OP_Unreachable ) DEF2_WMS( IP_TARG_ASM , AsmJsLoopBodyStart, OP_ProfiledLoopBodyStart ) @@ -204,10 +228,10 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( SIMD_F4_1toF4_1 , Simd128_Sqrt_F4 ,SIMDFloat32x4Operation::OpSqrt ) DEF2_WMS( SIMD_I4_1toI4_1 , Simd128_Not_I4 , Js::SIMDInt32x4Operation::OpNot ) - EXDEF2_WMS( SIMD_B4_1toB4_1, Simd128_Not_B4 , Js::SIMDInt32x4Operation::OpNot ) - EXDEF2_WMS( SIMD_B8_1toB8_1, Simd128_Not_B8 , Js::SIMDInt32x4Operation::OpNot ) - DEF2_WMS( SIMD_B16_1toB16_1, Simd128_Not_B16 , Js::SIMDInt32x4Operation::OpNot ) - +EXDEF2_WMS( SIMD_B4_1toB4_1 , Simd128_Not_B4 , Js::SIMDInt32x4Operation::OpNot ) +EXDEF2_WMS( SIMD_B8_1toB8_1 , Simd128_Not_B8 , Js::SIMDInt32x4Operation::OpNot ) +EXDEF2_WMS( SIMD_B16_1toB16_1, Simd128_Not_B16 , Js::SIMDInt32x4Operation::OpNot ) + EXDEF2_WMS( SIMD_B4_1toI1, Simd128_AllTrue_B4 , Js::SIMDBool32x4Operation::OpAllTrue ) EXDEF2_WMS( SIMD_B8_1toI1, Simd128_AllTrue_B8 , Js::SIMDBool32x4Operation::OpAllTrue ) EXDEF2_WMS( SIMD_B16_1toI1, Simd128_AllTrue_B16 , Js::SIMDBool32x4Operation::OpAllTrue ) @@ -237,7 +261,6 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS( SIMD_F4_2toB4_1 , Simd128_Lt_F4 , Js::SIMDFloat32x4Operation::OpLessThan ) DEF2_WMS( SIMD_I4_2toB4_1 , Simd128_Lt_I4 , Js::SIMDInt32x4Operation::OpLessThan ) - DEF2_WMS( SIMD_F4_2toB4_1 , Simd128_LtEq_F4 , Js::SIMDFloat32x4Operation::OpLessThanOrEqual) @@ -260,7 +283,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_B4_2toB4_1 , Simd128_Or_B4 , Js::SIMDInt32x4Operation::OpOr ) EXDEF2_WMS( SIMD_B8_2toB8_1 , Simd128_Or_B8 , Js::SIMDInt32x4Operation::OpOr ) DEF2_WMS( SIMD_B16_2toB16_1 , Simd128_Or_B16 , Js::SIMDInt32x4Operation::OpOr ) - + DEF2_WMS( SIMD_I4_2toI4_1 , Simd128_Xor_I4 , Js::SIMDInt32x4Operation::OpXor ) EXDEF2_WMS( SIMD_B4_2toB4_1, Simd128_Xor_B4 , Js::SIMDInt32x4Operation::OpXor ) EXDEF2_WMS( SIMD_B8_2toB8_1, Simd128_Xor_B8 , Js::SIMDInt32x4Operation::OpXor ) @@ -278,7 +301,6 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty // args out, copy value to outParams DEF2_WMS ( SIMD_F4_1toR1Mem , Simd128_I_ArgOut_F4 , OP_I_SetOutAsmSimd ) DEF2_WMS ( SIMD_I4_1toR1Mem , Simd128_I_ArgOut_I4 , OP_I_SetOutAsmSimd ) - DEF2_WMS ( SIMD_F4_1toF4_1 , Simd128_I_Conv_VTF4 , (AsmJsSIMDValue) ) DEF2_WMS ( SIMD_I4_1toI4_1 , Simd128_I_Conv_VTI4 , (AsmJsSIMDValue) ) @@ -289,7 +311,6 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS ( SIMD_I4_1I4toI4_1 , Simd128_Swizzle_I4 , SIMDUtils::SIMD128InnerShuffle ) DEF2_WMS ( SIMD_I4_2I4toI4_1 , Simd128_Shuffle_I4 , SIMDUtils::SIMD128InnerShuffle ) - DEF2_WMS ( SIMD_I8_1toI8_1 , Simd128_Ld_I8 , (AsmJsSIMDValue) ) DEF2_WMS ( SIMD_U4_1toU4_1 , Simd128_Ld_U4 , (AsmJsSIMDValue) ) DEF2_WMS ( SIMD_U8_1toU8_1 , Simd128_Ld_U8 , (AsmJsSIMDValue) ) @@ -297,7 +318,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_I8 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue) DEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_I16 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue) - + // Extended opcodes EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_U4 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue) EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_LdSlot_U8 , OP_LdSlotPrimitive , ElementSlot, AsmJsSIMDValue) @@ -315,7 +336,6 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_B8 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue) EXDEF4_WMS ( TEMPLATE_ASMJS , Simd128_StSlot_B16 , OP_StSlotPrimitive , ElementSlot, AsmJsSIMDValue) - EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB4 , OP_SimdBool32x4 , Bool32x4_1Int4) EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB8 , OP_SimdBool16x8 , Bool16x8_1Int8) EXDEF3_WMS ( CUSTOM_ASMJS , Simd128_IntsToB16 , OP_SimdBool8x16 , Bool8x16_1Int16) @@ -339,11 +359,10 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty DEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Or_I16 , Js::SIMDInt32x4Operation::OpOr ) DEF2_WMS ( SIMD_I16_2toI16_1 , Simd128_Xor_I16 , Js::SIMDInt32x4Operation::OpXor ) - EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_Return_I16 , (AsmJsSIMDValue) ) EXDEF2_WMS ( SIMD_I16_1toR1Mem , Simd128_I_ArgOut_I16 , OP_I_SetOutAsmSimd ) EXDEF2_WMS ( SIMD_I16_1toI16_1 , Simd128_I_Conv_VTI16 , (AsmJsSIMDValue) ) - + //Lane Access DEF2_WMS ( SIMD_I16_1I1toI1 , Simd128_ExtractLane_I16 , SIMDUtils::SIMD128InnerExtractLaneI16 ) DEF2_WMS ( SIMD_I16_1I2toI16_1 , Simd128_ReplaceLane_I16 , SIMDUtils::SIMD128InnerReplaceLaneI16 ) @@ -384,8 +403,6 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS ( SIMD_U8_1toF4_1 , Simd128_FromUint16x8Bits_F4 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS ( SIMD_U16_1toF4_1 , Simd128_FromUint8x16Bits_F4 , Js::SIMDUtils::FromSimdBits ) - - EXDEF2_WMS ( SIMD_I8_1toI4_1 , Simd128_FromInt16x8Bits_I4 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS ( SIMD_I16_1toI4_1 , Simd128_FromInt8x16Bits_I4 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS ( SIMD_U4_1toI4_1 , Simd128_FromUint32x4Bits_I4 , Js::SIMDUtils::FromSimdBits ) @@ -421,7 +438,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS ( SIMD_B4_1toB4_1 , Simd128_Return_B4 , (AsmJsSIMDValue) ) EXDEF2_WMS ( SIMD_B8_1toB8_1 , Simd128_Return_B8 , (AsmJsSIMDValue) ) EXDEF2_WMS ( SIMD_B16_1toB16_1 , Simd128_Return_B16 , (AsmJsSIMDValue) ) - + EXDEF2_WMS ( SIMD_I8_1I8toI8_1 , Simd128_Swizzle_I8 , SIMDUtils::SIMD128InnerShuffle ) EXDEF2_WMS ( SIMD_I8_2I8toI8_1 , Simd128_Shuffle_I8 , SIMDUtils::SIMD128InnerShuffle ) DEF2_WMS ( SIMD_I16_1I16toI16_1 , Simd128_Swizzle_I16 , SIMDUtils::SIMD128InnerShuffle ) @@ -437,7 +454,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_I1toU4_1 , Simd128_Splat_U4 ,Js::SIMDUint32x4Operation::OpSplat ) EXDEF2_WMS( SIMD_I1toU8_1 , Simd128_Splat_U8 ,Js::SIMDInt16x8Operation::OpSplat ) EXDEF2_WMS( SIMD_I1toU16_1 , Simd128_Splat_U16 ,Js::SIMDInt8x16Operation::OpSplat ) - + EXDEF2_WMS( SIMD_I8_2toI8_1 , Simd128_And_I8 , Js::SIMDInt16x8Operation::OpAnd ) EXDEF2_WMS( SIMD_U4_2toU4_1 , Simd128_And_U4 , Js::SIMDInt32x4Operation::OpAnd ) EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_And_U8 , Js::SIMDInt32x4Operation::OpAnd ) @@ -497,7 +514,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_AddSaturate_U8 , Js::SIMDUint16x8Operation::OpAddSaturate ) EXDEF2_WMS( SIMD_U8_2toU8_1 , Simd128_SubSaturate_U8 , Js::SIMDUint16x8Operation::OpSubSaturate ) - + EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_AddSaturate_U16 , Js::SIMDUint8x16Operation::OpAddSaturate ) EXDEF2_WMS( SIMD_U16_2toU16_1 , Simd128_SubSaturate_U16 , Js::SIMDUint8x16Operation::OpSubSaturate ) @@ -519,7 +536,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_U4_1toI8_1 , Simd128_FromUint32x4Bits_I8 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS( SIMD_U8_1toI8_1 , Simd128_FromUint16x8Bits_I8 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS( SIMD_U16_1toI8_1 , Simd128_FromUint8x16Bits_I8 , Js::SIMDUtils::FromSimdBits ) - + EXDEF2_WMS( SIMD_F4_1toI16_1 , Simd128_FromFloat32x4Bits_I16 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS( SIMD_I4_1toI16_1 , Simd128_FromInt32x4Bits_I16 , Js::SIMDUtils::FromSimdBits ) EXDEF2_WMS( SIMD_I8_1toI16_1 , Simd128_FromInt16x8Bits_I16 , Js::SIMDUtils::FromSimdBits ) @@ -560,7 +577,7 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_LtEq_U4 , Js::SIMDUint32x4Operation::OpLessThanOrEqual ) EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_LtEq_U8 , Js::SIMDUint16x8Operation::OpLessThanOrEqual ) EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_LtEq_U16 , Js::SIMDUint8x16Operation::OpLessThanOrEqual ) - + EXDEF2_WMS( SIMD_I8_2toB8_1 , Simd128_Eq_I8 , Js::SIMDInt16x8Operation::OpEqual ) EXDEF2_WMS( SIMD_U4_2toB4_1 , Simd128_Eq_U4 , Js::SIMDInt32x4Operation::OpEqual ) EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Eq_U8 , Js::SIMDInt16x8Operation::OpEqual ) @@ -585,9 +602,9 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF2_WMS( SIMD_U8_2toB8_1 , Simd128_Gt_U8 , Js::SIMDUint16x8Operation::OpGreaterThan ) EXDEF2_WMS( SIMD_U16_2toB16_1 , Simd128_Gt_U16 , Js::SIMDUint8x16Operation::OpGreaterThan ) - DEF2_WMS( SIMD_U4_1toU4_1 , Simd128_Neg_U4 , SIMDInt32x4Operation::OpNeg ) - DEF2_WMS( SIMD_U8_1toU8_1 , Simd128_Neg_U8 , SIMDInt16x8Operation::OpNeg ) - DEF2_WMS( SIMD_U16_1toU16_1 , Simd128_Neg_U16 , SIMDInt8x16Operation::OpNeg ) +EXDEF2_WMS( SIMD_U4_1toU4_1 , Simd128_Neg_U4 , SIMDInt32x4Operation::OpNeg ) +EXDEF2_WMS( SIMD_U8_1toU8_1 , Simd128_Neg_U8 , SIMDInt16x8Operation::OpNeg ) +EXDEF2_WMS( SIMD_U16_1toU16_1 , Simd128_Neg_U16 , SIMDInt8x16Operation::OpNeg ) #if 0 DEF2_WMS(SIMD_D2toD2_1, Simd128_DoublesToD2, SIMDFloat64x2Operation::OpFloat64x2) @@ -630,6 +647,4 @@ EXDEF2 (NOPASMJS , InvalidOpCode, Empty EXDEF3_WMS(CUSTOM_ASMJS, Simd128_StArrConst_D2, OP_SimdStArrConstIndex, AsmSimdTypedArr) #endif // 0 - - #endif diff --git a/lib/Runtime/Language/InterpreterLoop.inl b/lib/Runtime/Language/InterpreterLoop.inl index 514c6a3c37d..24b1fa3dc17 100644 --- a/lib/Runtime/Language/InterpreterLoop.inl +++ b/lib/Runtime/Language/InterpreterLoop.inl @@ -8,7 +8,7 @@ // It allows for configurable copies of the loop that do extra work without // impacting the mainline performance. (for example the debug loop can simply // check a bit without concern for impacting the nondebug mode.) -#if defined(INTERPRETER_ASMJS) && !defined(TEMP_DISABLE_ASMJS) +#if defined(INTERPRETER_ASMJS) #define INTERPRETER_OPCODE OpCodeAsmJs #define TRACING_FUNC &InterpreterStackFrame::TraceAsmJsOpCode #else diff --git a/lib/Runtime/Language/InterpreterProcessOpCodeAsmJs.h b/lib/Runtime/Language/InterpreterProcessOpCodeAsmJs.h old mode 100644 new mode 100755 index 0cf2c9dcc32..1001df6cea0 --- a/lib/Runtime/Language/InterpreterProcessOpCodeAsmJs.h +++ b/lib/Runtime/Language/InterpreterProcessOpCodeAsmJs.h @@ -3,7 +3,7 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #define PROCESS_FALLTHROUGH_ASM(name, func) \ case OpCodeAsmJs::name: #define PROCESS_FALLTHROUGH_ASM_COMMON(name, func, suffix) \ @@ -66,7 +66,16 @@ #define PROCESS_CUSTOM_ASMJS(name, func, layout) PROCESS_CUSTOM_ASMJS_COMMON(name, func, layout,) +#define PROCESS_VtoI1Mem_COMMON(name, func, suffix) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, AsmReg1, suffix); \ + SetRegRawInt(playout->R0, \ + func()); \ + break; \ + } +#define PROCESS_VtoI1Mem(name, func) PROCESS_VtoI1Mem_COMMON(name, func,) #define PROCESS_I2toI1Mem_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ @@ -113,6 +122,14 @@ #define PROCESS_D2toD1Mem(name, func) PROCESS_D2toD1Mem_COMMON(name, func,) #define PROCESS_F2toF1Mem(name, func) PROCESS_F2toF1Mem_COMMON(name, func,) +#define PROCESS_EMPTYASMJS(name, func) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, Empty, ); \ + func(); \ + break; \ + } + #define PROCESS_I1toI1Mem_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ { \ @@ -226,12 +243,25 @@ if (switchProfileMode) \ #define PROCESS_U1toD1Mem_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ - { \ + { \ PROCESS_READ_LAYOUT_ASMJS(name, Double1Int1, suffix); \ SetRegRawDouble(playout->D0, \ func((unsigned int)GetRegRawInt(playout->I1)) ); \ break; \ - } + } +#define PROCESS_U1toD1Mem(name, func) PROCESS_U1toD1Mem_COMMON(name, func,) + +#define PROCESS_U1toF1Mem_COMMON(name, func, suffix) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, Float1Int1, suffix); \ + SetRegRawFloat(playout->F0, \ + func((unsigned int)GetRegRawInt(playout->I1)) ); \ + break; \ + } + +#define PROCESS_U1toF1Mem(name, func) PROCESS_U1toF1Mem_COMMON(name, func,) + #define PROCESS_F1toD1Mem_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ { \ @@ -241,7 +271,6 @@ if (switchProfileMode) \ break; \ } -#define PROCESS_U1toD1Mem(name, func) PROCESS_U1toD1Mem_COMMON(name, func,) #define PROCESS_F1toD1Mem(name, func) PROCESS_F1toD1Mem_COMMON(name, func,) @@ -300,27 +329,35 @@ if (switchProfileMode) \ #define PROCESS_D1toR1Mem(name, func) PROCESS_D1toR1Mem_COMMON(name, func,) #define PROCESS_F1toR1Mem(name, func) PROCESS_F1toR1Mem_COMMON(name, func,) - -#define PROCESS_C1toI1Mem_COMMON(name, func, suffix) \ +#define PROCESS_C1toI1_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ { \ PROCESS_READ_LAYOUT_ASMJS(name, Int1Const1, suffix); \ - SetRegRawInt( playout->I0, \ - func( playout->C1 )); \ + SetRegRawInt( playout->I0, playout->C1 ); \ break; \ } -#define PROCESS_C1toI1Mem(name, func) PROCESS_C1toI1Mem_COMMON(name, func,) +#define PROCESS_C1toI1(name, func) PROCESS_C1toI1_COMMON(name, func,) -#define PROCESS_C1toI1_COMMON(name, func, suffix) \ +#define PROCESS_C1toF1_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ { \ - PROCESS_READ_LAYOUT_ASMJS(name, Int1Const1, suffix); \ - SetRegRawInt( playout->I0, playout->C1 ); \ + PROCESS_READ_LAYOUT_ASMJS(name, Float1Const1, suffix); \ + SetRegRawFloat( playout->F0, playout->C1 ); \ break; \ } -#define PROCESS_C1toI1(name, func) PROCESS_C1toI1_COMMON(name, func,) +#define PROCESS_C1toF1(name, func) PROCESS_C1toF1_COMMON(name, func,) + +#define PROCESS_C1toD1_COMMON(name, func, suffix) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, Double1Const1, suffix); \ + SetRegRawDouble( playout->D0, playout->C1 ); \ + break; \ + } + +#define PROCESS_C1toD1(name, func) PROCESS_C1toD1_COMMON(name, func,) #define PROCESS_I1toR1Mem_COMMON(name, func, suffix) \ case OpCodeAsmJs::name: \ @@ -389,6 +426,18 @@ if (switchProfileMode) \ } #define PROCESS_BR_ASM_Mem(name, func) PROCESS_BR_ASM_Mem_COMMON(name, func,) +#define PROCESS_BR_ASM_Const_COMMON(name, func,suffix) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, BrInt1Const1, suffix); \ + if (func(GetRegRawInt(playout->I1), playout->C1)) \ + { \ + ip = m_reader.SetCurrentRelativeOffset(ip, playout->RelativeJumpOffset); \ + } \ + break; \ + } +#define PROCESS_BR_ASM_Const(name, func) PROCESS_BR_ASM_Const_COMMON(name, func,) + #define PROCESS_BR_ASM_MemStack_COMMON(name, func,suffix) \ case OpCodeAsmJs::name: \ { \ @@ -401,6 +450,18 @@ if (switchProfileMode) \ } #define PROCESS_BR_ASM_MemStack(name, func) PROCESS_BR_ASM_MemStack_COMMON(name, func,) +#define PROCESS_BR_ASM_MemStackF_COMMON(name, func,suffix) \ + case OpCodeAsmJs::name: \ + { \ + PROCESS_READ_LAYOUT_ASMJS(name, BrInt1, suffix); \ + if (!GetRegRawInt(playout->I1)) \ + { \ + ip = m_reader.SetCurrentRelativeOffset(ip, playout->RelativeJumpOffset); \ + } \ + break; \ + } +#define PROCESS_BR_ASM_MemStackF(name, func) PROCESS_BR_ASM_MemStackF_COMMON(name, func,) + #define PROCESS_TEMPLATE_ASMJS_COMMON(name, func, layout, suffix, type) \ case OpCodeAsmJs::name: \ { \ diff --git a/lib/Runtime/Language/InterpreterStackFrame.cpp b/lib/Runtime/Language/InterpreterStackFrame.cpp old mode 100644 new mode 100755 index 615ad3965c8..c040ddfb4eb --- a/lib/Runtime/Language/InterpreterStackFrame.cpp +++ b/lib/Runtime/Language/InterpreterStackFrame.cpp @@ -937,7 +937,7 @@ namespace Js , (uint32)~7 //TYPE_FLOAT64 }; -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT typedef void(InterpreterStackFrame::*ArrFunc)(uint32, RegSlot); const ArrFunc InterpreterStackFrame::StArrFunc[8] = @@ -1252,10 +1252,13 @@ namespace Js // it to be valid on entry to the loop, where "valid" means either a var or null. newInstance->SetNonVarReg(0, NULL); #endif - - // Initialize the low end of the local slots from the constant table. - // Skip the slot for the return value register. - this->executeFunction->InitConstantSlots(&newInstance->m_localSlots[FunctionBody::FirstRegSlot]); + // Wasm doesn't use const table + if (!executeFunction->IsWasmFunction()) + { + // Initialize the low end of the local slots from the constant table. + // Skip the slot for the return value register. + this->executeFunction->InitConstantSlots(&newInstance->m_localSlots[FunctionBody::FirstRegSlot]); + } // Set local FD/SS pointers to null until after we've successfully probed the stack in the process loop. // That way we avoid trying to box these structures before they've been initialized in the byte code. if (this->executeFunction->DoStackFrameDisplay()) @@ -1476,7 +1479,7 @@ namespace Js } #ifdef _M_IX86 -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT int InterpreterStackFrame::GetAsmJsArgSize(AsmJsCallStackLayout* stack) { JavascriptFunction * func = stack->functionObject; @@ -2007,7 +2010,7 @@ namespace Js return aReturn; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #if _M_IX86 int InterpreterStackFrame::AsmJsInterpreter(AsmJsCallStackLayout* stack) { @@ -2383,7 +2386,7 @@ namespace Js void InterpreterStackFrame::TraceAsmJsOpCode(InterpreterStackFrame* that, Js::OpCodeAsmJs op) { -#if DBG_DUMP && !defined(TEMP_DISABLE_ASMJS) +#if DBG_DUMP && defined(ASMJS_PLAT) if (PHASE_TRACE(Js::AsmjsInterpreterPhase, that->m_functionBody)) { Output::Print(_u("%d.%d:Executing %s at offset 0x%X\n"), that->m_functionBody->GetSourceContextId(), that->m_functionBody->GetLocalFunctionId(), Js::OpCodeUtilAsmJs::GetOpCodeName(op), that->DEBUG_currentByteOffset); @@ -2690,7 +2693,10 @@ namespace Js } // Do MTJRC/MAIC:0 check #if ENABLE_DEBUG_CONFIG_OPTIONS - if ((PHASE_ON1(Js::AsmJsJITTemplatePhase) && CONFIG_FLAG(MaxTemplatizedJitRunCount) == 0) || (!PHASE_ON1(Js::AsmJsJITTemplatePhase) && CONFIG_FLAG(MaxAsmJsInterpreterRunCount) == 0)) + if ( + (PHASE_ON1(Js::AsmJsJITTemplatePhase) && CONFIG_FLAG(MaxTemplatizedJitRunCount) == 0) || + (!PHASE_ON1(Js::AsmJsJITTemplatePhase) && (CONFIG_FLAG(MaxAsmJsInterpreterRunCount) == 0 || CONFIG_FLAG(ForceNative))) + ) { if (PHASE_TRACE1(AsmjsEntryPointInfoPhase)) { @@ -2853,7 +2859,7 @@ namespace Js Output::Print(_u("\n")); } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT // Function memory allocation should be done the same way as // T AsmJsCommunEntryPoint(Js::ScriptFunction* func, ...) (AsmJSJitTemplate.cpp) // update any changes there @@ -2883,7 +2889,6 @@ namespace Js { FunctionBody *const functionBody = GetFunctionBody(); ScriptFunction* func = GetJavascriptFunction(); - //schedule for codegen here only if TJ is collected if (!functionBody->GetIsAsmJsFullJitScheduled() && !PHASE_OFF(BackEndPhase, functionBody) && !PHASE_OFF(FullJitPhase, functionBody) && !this->scriptContext->GetConfig()->IsNoNative()) @@ -2997,6 +3002,23 @@ namespace Js uint homingAreaSize = 0; #endif +#if ENABLE_DEBUG_CONFIG_OPTIONS + const bool tracingFunc = PHASE_TRACE(AsmjsFunctionEntryPhase, functionBody); + if (tracingFunc) + { +#if DBG_DUMP + if (AsmJsCallDepth) + { + Output::Print(_u("%*c"), AsmJsCallDepth, ' '); + } + Output::Print(_u("Executing function %s("), functionBody->GetDisplayName()); + ++AsmJsCallDepth; +#else + Output::Print(_u("%s()\n"), functionBody->GetDisplayName()); + Output::Flush(); +#endif + } +#endif uintptr_t argAddress = (uintptr_t)m_inParams; for (ArgSlot i = 0; i < argCount; i++) { @@ -3033,18 +3055,36 @@ namespace Js if (info->GetArgType(i).isInt()) { *intArg = *(int*)argAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%d, "), *intArg); + } +#endif ++intArg; homingAreaSize += MachPtr; } else if (info->GetArgType(i).isFloat()) { *floatArg = *(float*)floatSpillAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%.2f, "), *floatArg); + } +#endif ++floatArg; homingAreaSize += MachPtr; } else if (info->GetArgType(i).isDouble()) { *doubleArg = *(double*)floatSpillAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%.2f, "), *doubleArg); + } +#endif ++doubleArg; homingAreaSize += MachPtr; } @@ -3072,12 +3112,24 @@ namespace Js if (info->GetArgType(i).isInt()) { *intArg = *(int*)argAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%d, "), *intArg); + } +#endif ++intArg; argAddress += MachPtr; } else if (info->GetArgType(i).isFloat()) { *floatArg = *(float*)argAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%.2f, "), *floatArg); + } +#endif ++floatArg; argAddress += MachPtr; } @@ -3085,6 +3137,12 @@ namespace Js { Assert(info->GetArgType(i).isDouble()); *doubleArg = *(double*)argAddress; +#if DBG_DUMP + if (tracingFunc) + { + Output::Print(_u("%.2f, "), *doubleArg); + } +#endif ++doubleArg; argAddress += sizeof(double); } @@ -3100,23 +3158,11 @@ namespace Js } } -#if DBG_DUMP - const bool tracingFunc = PHASE_TRACE( AsmjsFunctionEntryPhase, functionBody ); - if( tracingFunc ) - { - if( AsmJsCallDepth ) - { - Output::Print( _u("%*c"), AsmJsCallDepth,' '); - } - Output::Print( _u("Executing function %s"), functionBody->GetDisplayName()); - ++AsmJsCallDepth; - } -#endif - #if DBG_DUMP if (tracingFunc) { Output::Print(_u("){\n")); + Output::Flush(); } #endif if( info->GetReturnType() == AsmJsRetType::Void ) @@ -3149,7 +3195,7 @@ namespace Js #include "InterpreterLoop.inl" #undef INTERPRETERLOOPNAME -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #define INTERPRETERLOOPNAME ProcessAsmJs #define INTERPRETER_ASMJS #include "InterpreterProcessOpCodeAsmJs.h" @@ -3218,10 +3264,10 @@ namespace Js this->ehBailoutData = nullptr; } } -#ifndef TEMP_DISABLE_ASMJS - FunctionBody *const functionBody = GetFunctionBody(); - if( functionBody->GetIsAsmjsMode() ) +#ifdef ASMJS_PLAT + if( GetFunctionBody()->GetIsAsmjsMode() ) { + FunctionBody *const functionBody = GetFunctionBody(); AsmJsFunctionInfo* asmInfo = functionBody->GetAsmJsFunctionInfo(); if (asmInfo) { @@ -3244,16 +3290,19 @@ namespace Js case AsmJsRetType::Void: break; case AsmJsRetType::Signed: - Output::Print( _u(" = %d"), JavascriptMath::ToInt32( returnVar, scriptContext ) ); + Output::Print( _u(" = %d"), m_localIntSlots[0] ); break; case AsmJsRetType::Float: + Output::Print(_u(" = %.4f"), m_localFloatSlots[0]); + break; case AsmJsRetType::Double: - Output::Print( _u(" = %.4f"), JavascriptConversion::ToNumber( returnVar, scriptContext ) ); + Output::Print( _u(" = %.4f"), m_localDoubleSlots[0]); break; default: break; } Output::Print( _u(";\n") ); + Output::Flush(); } #endif return returnVar; @@ -3272,6 +3321,7 @@ namespace Js #endif #if ENABLE_PROFILE_INFO + FunctionBody *const functionBody = GetFunctionBody(); const ExecutionMode interpreterExecutionMode = functionBody->GetInterpreterExecutionMode(!!(GetFlags() & InterpreterStackFrameFlags_FromBailOut)); if(interpreterExecutionMode == ExecutionMode::ProfilingInterpreter) @@ -3582,7 +3632,7 @@ namespace Js } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT #if _M_X64 void InterpreterStackFrame::OP_CallAsmInternal(RecyclableObject * function) { @@ -6455,7 +6505,7 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) // mark the stackFrame as 'in try block' this->m_flags |= InterpreterStackFrameFlags_WithinTryBlock; - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, true); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); if (this->IsInDebugMode()) { @@ -6591,7 +6641,7 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) this->ProcessTryCatchBailout(ehBailoutData->child, --tryNestingDepth); } - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, true); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); if (this->IsInDebugMode()) { @@ -7647,6 +7697,21 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) m_localSimdSlots[localRegisterID] = bValue; } + int InterpreterStackFrame::OP_GetMemorySize() + { +#ifdef ASMJS_PLAT + JavascriptArrayBuffer* arr = *(JavascriptArrayBuffer**)GetNonVarReg(AsmJsFunctionMemory::ArrayBufferRegister); + return arr ? arr->GetByteLength() >> 16 : 0; +#else + return 0; +#endif + } + + void InterpreterStackFrame::OP_Unreachable() + { + JavascriptError::ThrowUnreachable(scriptContext); + } + template void InterpreterStackFrame::OP_SimdLdArrGeneric(const unaligned T* playout) { @@ -8134,7 +8199,7 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) return this->localClosure; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT template void InterpreterStackFrame::OP_StArr(uint32 index, RegSlot value) { @@ -8170,7 +8235,7 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) m_localSlots[playout->Value] = arr[index]; } -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT template void InterpreterStackFrame::OP_LdArr(uint32 index, RegSlot value) { @@ -8209,6 +8274,13 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) (this->*LdArrFunc[playout->ViewType])(index, playout->Value); } template + void InterpreterStackFrame::OP_LdArrWasm(const unaligned T* playout) + { + Assert(playout->ViewType < 8); + const uint32 index = (uint32)GetRegRawInt(playout->SlotIndex); + (this->*LdArrFunc[playout->ViewType])(index, playout->Value); + } + template void InterpreterStackFrame::OP_LdArrConstIndex(const unaligned T* playout) { const uint32 index = playout->SlotIndex; @@ -8223,6 +8295,13 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) (this->*StArrFunc[playout->ViewType])(index, playout->Value); } template + void InterpreterStackFrame::OP_StArrWasm(const unaligned T* playout) + { + Assert(playout->ViewType < 8); + const uint32 index = (uint32)GetRegRawInt(playout->SlotIndex); + (this->*StArrFunc[playout->ViewType])(index, playout->Value); + } + template void InterpreterStackFrame::OP_StArrConstIndex(const unaligned T* playout) { const uint32 index = playout->SlotIndex; diff --git a/lib/Runtime/Language/InterpreterStackFrame.h b/lib/Runtime/Language/InterpreterStackFrame.h old mode 100644 new mode 100755 index 12394e78991..be061cc6e5b --- a/lib/Runtime/Language/InterpreterStackFrame.h +++ b/lib/Runtime/Language/InterpreterStackFrame.h @@ -180,6 +180,9 @@ namespace Js void SetClosureInitDone(bool done) { closureInitDone = done; } void ValidateRegValue(Var value, bool allowStackVar = false, bool allowStackVarOnDisabledStackNestedFunc = true) const; + int OP_GetMemorySize(); + void OP_Unreachable(); + void ValidateSetRegValue(Var value, bool allowStackVar = false, bool allowStackVarOnDisabledStackNestedFunc = true) const; template Var GetReg(RegSlotType localRegisterID) const; template void SetReg(RegSlotType localRegisterID, Var bValue); @@ -585,8 +588,10 @@ namespace Js template inline void OP_StSlotPrimitive(const unaligned T* playout); template inline void OP_LdSlotPrimitive( const unaligned T* playout ); template inline void OP_LdArrGeneric ( const unaligned T* playout ); + template inline void OP_LdArrWasm ( const unaligned T* playout ); template inline void OP_LdArrConstIndex( const unaligned T* playout ); template inline void OP_StArrGeneric ( const unaligned T* playout ); + template inline void OP_StArrWasm ( const unaligned T* playout ); template inline void OP_StArrConstIndex( const unaligned T* playout ); inline Var OP_LdSlot(Var instance, int32 slotIndex); inline Var OP_LdObjSlot(Var instance, int32 slotIndex); diff --git a/lib/Runtime/Language/JavascriptExceptionOperators.cpp b/lib/Runtime/Language/JavascriptExceptionOperators.cpp index d570d7d5433..7573c8b82a9 100644 --- a/lib/Runtime/Language/JavascriptExceptionOperators.cpp +++ b/lib/Runtime/Language/JavascriptExceptionOperators.cpp @@ -13,38 +13,34 @@ extern "C" PVOID __guard_check_icall_fptr; namespace Js { - void JavascriptExceptionOperators::AutoCatchHandlerExists::FetchNonUserCodeStatus(ScriptContext * scriptContext, bool isUserExceptionHandling) + void JavascriptExceptionOperators::AutoCatchHandlerExists::FetchNonUserCodeStatus(ScriptContext * scriptContext) { Assert(scriptContext); + bool fFound = false; // If the outer try catch was already in the user code, no need to go any further. if (!m_previousCatchHandlerToUserCodeStatus) { - if (!isUserExceptionHandling) + Js::JavascriptFunction* caller; + if (JavascriptStackWalker::GetCaller(&caller, scriptContext)) { - m_threadContext->SetIsUserCode(false); - return; - } - else - { - Js::JavascriptFunction* caller; - if (JavascriptStackWalker::GetCaller(&caller, scriptContext)) + Js::FunctionBody *funcBody = NULL; + if (caller != NULL && (funcBody = caller->GetFunctionBody()) != NULL) { - Js::FunctionBody *funcBody = NULL; - if (caller != NULL && (funcBody = caller->GetFunctionBody()) != NULL) - { - m_threadContext->SetIsUserCode(funcBody->IsNonUserCode() == false); - return; - } + m_threadContext->SetIsUserCode(funcBody->IsNonUserCode() == false); + fFound = true; } } } - // If not successfully able to find the caller, set this catch handler belongs to the user code. - m_threadContext->SetIsUserCode(true); + if (!fFound) + { + // If not successfully able to find the caller, set this catch handler belongs to the user code. + m_threadContext->SetIsUserCode(true); + } } - JavascriptExceptionOperators::AutoCatchHandlerExists::AutoCatchHandlerExists(ScriptContext* scriptContext, bool isUserExceptionHandling) + JavascriptExceptionOperators::AutoCatchHandlerExists::AutoCatchHandlerExists(ScriptContext* scriptContext) { Assert(scriptContext); m_threadContext = scriptContext->GetThreadContext(); @@ -52,7 +48,10 @@ namespace Js m_previousCatchHandlerExists = m_threadContext->HasCatchHandler(); m_threadContext->SetHasCatchHandler(TRUE); m_previousCatchHandlerToUserCodeStatus = m_threadContext->IsUserCode(); - FetchNonUserCodeStatus(scriptContext, isUserExceptionHandling); + if (scriptContext->IsScriptContextInDebugMode()) + { + FetchNonUserCodeStatus(scriptContext); + } } JavascriptExceptionOperators::AutoCatchHandlerExists::~AutoCatchHandlerExists() @@ -63,11 +62,7 @@ namespace Js bool JavascriptExceptionOperators::CrawlStackForWER(Js::ScriptContext& scriptContext) { - // If we have exception handling, but no user exception handling, we should make - // the additional backtrace information available, as that increases consistency - // between native and nonative approaches (native code has some automatic error- - // handling structures that get added) - return Js::Configuration::Global.flags.WERExceptionSupport && !(scriptContext.GetThreadContext()->HasCatchHandler() && scriptContext.GetThreadContext()->IsUserCode()); + return Js::Configuration::Global.flags.WERExceptionSupport && !scriptContext.GetThreadContext()->HasCatchHandler(); } uint64 JavascriptExceptionOperators::StackCrawlLimitOnThrow(Var thrownObject, ScriptContext& scriptContext) @@ -91,7 +86,7 @@ namespace Js try { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, true); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); continuation = amd64_CallWithFakeFrame(tryAddr, frame, spillSize, argsSize); } catch (const Js::JavascriptException& err) @@ -177,7 +172,7 @@ namespace Js try { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, true); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); #if defined(_M_ARM) continuation = arm_CallEhFrame(tryAddr, framePtr, localsPtr, argsSize); #elif defined(_M_ARM64) @@ -276,7 +271,7 @@ namespace Js try { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, true); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); // Adjust the frame pointer and call into the try. // If the try completes without raising an exception, it will pass back the continuation address. diff --git a/lib/Runtime/Language/JavascriptExceptionOperators.h b/lib/Runtime/Language/JavascriptExceptionOperators.h index ed52aa2d02a..b35c8c4e7f3 100644 --- a/lib/Runtime/Language/JavascriptExceptionOperators.h +++ b/lib/Runtime/Language/JavascriptExceptionOperators.h @@ -36,10 +36,10 @@ namespace Js bool m_previousCatchHandlerExists; bool m_previousCatchHandlerToUserCodeStatus; ThreadContext* m_threadContext; - void FetchNonUserCodeStatus(ScriptContext *scriptContext, bool isUserExeceptionHandling); + void FetchNonUserCodeStatus(ScriptContext *scriptContext); public: - AutoCatchHandlerExists(ScriptContext* scriptContext, bool isUserExceptionHandling); + AutoCatchHandlerExists(ScriptContext* scriptContext); ~AutoCatchHandlerExists(); }; diff --git a/lib/Runtime/Language/JavascriptMathOperators.h b/lib/Runtime/Language/JavascriptMathOperators.h index f2de685d915..f5c191c8a83 100644 --- a/lib/Runtime/Language/JavascriptMathOperators.h +++ b/lib/Runtime/Language/JavascriptMathOperators.h @@ -6,4 +6,5 @@ #include "JavascriptMath.h" #include "AsmJsMath.h" +#include "WasmMath.h" diff --git a/lib/Runtime/Language/JavascriptMathOperators.inl b/lib/Runtime/Language/JavascriptMathOperators.inl index c4e33a7fdb4..894e212e86e 100644 --- a/lib/Runtime/Language/JavascriptMathOperators.inl +++ b/lib/Runtime/Language/JavascriptMathOperators.inl @@ -6,3 +6,4 @@ #include "../Math/JavascriptMath.inl" #include "../Math/AsmJsMath.inl" +#include "../Math/WasmMath.inl" diff --git a/lib/Runtime/Language/JavascriptNativeOperators.h b/lib/Runtime/Language/JavascriptNativeOperators.h index 4f0c60161eb..2d68615013f 100644 --- a/lib/Runtime/Language/JavascriptNativeOperators.h +++ b/lib/Runtime/Language/JavascriptNativeOperators.h @@ -16,12 +16,15 @@ namespace Js { char* dataBlock = __super::Alloc(requestedBytes); #if DBG - NativeCodeData::DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); - chunk->dataType = "BranchDictionary::Bucket"; - if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + if (JITManager::GetJITManager()->IsJITServer()) { - Output::Print(_u("NativeCodeData BranchDictionary::Bucket: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), - chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + NativeCodeData::DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); + chunk->dataType = "BranchDictionary::Bucket"; + if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + { + Output::Print(_u("NativeCodeData BranchDictionary::Bucket: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), + chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + } } #endif return dataBlock; @@ -31,12 +34,15 @@ namespace Js { char* dataBlock = __super::AllocZero(requestedBytes); #if DBG - NativeCodeData::DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); - chunk->dataType = "BranchDictionary::Entries"; - if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + if (JITManager::GetJITManager()->IsJITServer()) { - Output::Print(_u("NativeCodeData BranchDictionary::Entries: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), - chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + NativeCodeData::DataChunk* chunk = NativeCodeData::GetDataChunk(dataBlock); + chunk->dataType = "BranchDictionary::Entries"; + if (PHASE_TRACE1(Js::NativeCodeDataPhase)) + { + Output::Print(_u("NativeCodeData BranchDictionary::Entries: chunk: %p, data: %p, index: %d, len: %x, totalOffset: %x, type: %S\n"), + chunk, (void*)dataBlock, chunk->allocIndex, chunk->len, chunk->offset, chunk->dataType); + } } #endif return dataBlock; @@ -47,7 +53,6 @@ namespace Js class SimpleDictionaryEntryWithFixUp : public JsUtil::SimpleDictionaryEntry { public: - __declspec(noinline) void FixupWithRemoteKey(void* remoteKey) { this->key = (TKey)remoteKey; @@ -63,7 +68,6 @@ namespace Js : BranchBaseDictionary(allocator, dictionarySize) { } - __declspec(noinline) void Fixup(NativeCodeData::DataChunk* chunkList, void** remoteKeys) { for (int i = 0; i < this->Count(); i++) @@ -84,6 +88,7 @@ namespace Js } else { + Assert(!JITManager::GetJITManager()->IsJITServer()); remoteKeys = nullptr; } } @@ -92,11 +97,6 @@ namespace Js void* defaultTarget; void** remoteKeys; - bool IsOOPJit() - { - return remoteKeys != nullptr; - } - static BranchDictionaryWrapper* New(NativeCodeData::Allocator * allocator, uint dictionarySize, ArenaAllocator* remoteKeyAlloc) { return NativeCodeDataNew(allocator, BranchDictionaryWrapper, allocator, dictionarySize, remoteKeyAlloc); @@ -105,15 +105,16 @@ namespace Js void AddEntry(uint32 offset, T key, void* remoteVar) { int index = dictionary.AddNew(key, (void**)offset); - if (IsOOPJit()) + if (JITManager::GetJITManager()->IsJITServer()) { + Assert(remoteKeys); remoteKeys[index] = remoteVar; } } void Fixup(NativeCodeData::DataChunk* chunkList) { - if (IsOOPJit()) + if (JITManager::GetJITManager()->IsJITServer()) { dictionary.Fixup(chunkList, remoteKeys); } diff --git a/lib/Runtime/Language/JavascriptOperators.cpp b/lib/Runtime/Language/JavascriptOperators.cpp index 2769bbd4836..5ef3cf1bdaa 100644 --- a/lib/Runtime/Language/JavascriptOperators.cpp +++ b/lib/Runtime/Language/JavascriptOperators.cpp @@ -353,7 +353,7 @@ namespace Js Var value; try { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, false); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); // In edge mode, spec compat is more important than backward compat. Use spec/web behavior here if (isRoot @@ -442,7 +442,7 @@ namespace Js try { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, false); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); IndexType indexType = GetIndexType(index, scriptContext, &indexVal, &propertyRecord, false); // For JS Objects, don't create the propertyId if not already added @@ -1386,10 +1386,23 @@ namespace Js Var JavascriptOperators::OP_LdCustomSpreadIteratorList(Var aRight, ScriptContext* scriptContext) { +#if ENABLE_COPYONACCESS_ARRAY + // We know we're going to read from this array. Do the conversion before we try to perform checks on the head segment. + JavascriptLibrary::CheckAndConvertCopyOnAccessNativeIntArray(aRight); +#endif RecyclableObject* function = GetIteratorFunction(aRight, scriptContext); JavascriptMethod method = function->GetEntryPoint(); - if (((JavascriptArray::Is(aRight) && method == JavascriptArray::EntryInfo::Values.GetOriginalEntryPoint()) - || (TypedArrayBase::Is(aRight) && method == TypedArrayBase::EntryInfo::Values.GetOriginalEntryPoint())) + if (((JavascriptArray::Is(aRight) && + ( + method == JavascriptArray::EntryInfo::Values.GetOriginalEntryPoint() + // Verify that the head segment of the array covers all elements with no gaps. + // Accessing an element on the prototype could have side-effects that would invalidate the optimization. + && JavascriptArray::FromVar(aRight)->GetHead()->next == nullptr + && JavascriptArray::FromVar(aRight)->GetHead()->left == 0 + && JavascriptArray::FromVar(aRight)->GetHead()->length == JavascriptArray::FromVar(aRight)->GetLength() + && JavascriptArray::FromVar(aRight)->HasNoMissingValues() + )) || + (TypedArrayBase::Is(aRight) && method == TypedArrayBase::EntryInfo::Values.GetOriginalEntryPoint())) // We can't optimize away the iterator if the array iterator prototype is user defined. && !JavascriptLibrary::ArrayIteratorPrototypeHasUserDefinedNext(scriptContext)) { diff --git a/lib/Runtime/Language/JavascriptOperators.h b/lib/Runtime/Language/JavascriptOperators.h index d588958bdaf..fa5e09717ca 100644 --- a/lib/Runtime/Language/JavascriptOperators.h +++ b/lib/Runtime/Language/JavascriptOperators.h @@ -55,7 +55,7 @@ namespace Js #define BEGIN_TYPEOF_ERROR_HANDLER(scriptContext) \ try { \ - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, false); \ + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); \ class AutoCleanup \ { \ private: \ diff --git a/lib/Runtime/Language/RuntimeLanguagePch.h b/lib/Runtime/Language/RuntimeLanguagePch.h index 1acc1fcc74b..baeec7c4b16 100644 --- a/lib/Runtime/Language/RuntimeLanguagePch.h +++ b/lib/Runtime/Language/RuntimeLanguagePch.h @@ -5,6 +5,7 @@ #pragma once #include "Parser.h" +#include "WasmReader.h" #include "Runtime.h" diff --git a/lib/Runtime/Language/SimdUtils.cpp b/lib/Runtime/Language/SimdUtils.cpp index 486000280ea..a59515588b2 100644 --- a/lib/Runtime/Language/SimdUtils.cpp +++ b/lib/Runtime/Language/SimdUtils.cpp @@ -43,7 +43,7 @@ namespace Js uint32 uint32Value; Assert(index != NULL); - uint32Value = SIMDCheckUint32Number(scriptContext, index); + uint32Value = SIMDCheckUint32Number(scriptContext, index); return uint32Value; } @@ -60,13 +60,14 @@ namespace Js } // Is Number with uint32 value. + template uint32 SIMDUtils::SIMDCheckUint32Number(ScriptContext* scriptContext, const Var value) { int32 int32Value; if (JavascriptNumber::Is(value)) { - if (!JavascriptNumber::TryGetInt32Value(JavascriptNumber::GetValue(value), &int32Value)) + if (!JavascriptNumber::TryGetInt32Value(JavascriptNumber::GetValue(value), &int32Value)) { JavascriptError::ThrowRangeError(scriptContext, JSERR_ArgumentOutOfRange); } @@ -77,7 +78,10 @@ namespace Js } else { - return static_cast(JavascriptConversion::ToNumber(value, scriptContext)); + if (!JavascriptNumber::TryGetInt32Value(JavascriptConversion::ToNumber(value, scriptContext), &int32Value)) + { + JavascriptError::ThrowRangeError(scriptContext, JSERR_ArgumentOutOfRange); + } } return int32Value; } @@ -188,7 +192,7 @@ namespace Js JavascriptError::ThrowTypeError(scriptContext, JSERR_SimdInvalidArgType, _u("Simd typed array access")); } - *index = SIMDCheckUint32Number(scriptContext, arg2); + *index = SIMDCheckUint32Number(scriptContext, arg2); // bound check *tarray = TypedArrayBase::FromVar(arg1); diff --git a/lib/Runtime/Language/SimdUtils.h b/lib/Runtime/Language/SimdUtils.h index a75a714061f..edd0a652a34 100644 --- a/lib/Runtime/Language/SimdUtils.h +++ b/lib/Runtime/Language/SimdUtils.h @@ -288,6 +288,7 @@ namespace Js { /////////////////////////////////////////// static SIMDValue SIMDLdData(const SIMDValue *data, uint8 dataWidth); static void SIMDStData(SIMDValue *data, const SIMDValue simdValue, uint8 dataWidth); + template static uint32 SIMDCheckUint32Number(ScriptContext* scriptContext, const Var value); static bool SIMDIsSupportedTypedArray(Var value); static SIMDValue* SIMDCheckTypedArrayAccess(Var arg1, Var arg2, TypedArrayBase **tarray, int32 *index, uint32 dataWidth, ScriptContext *scriptContext); diff --git a/lib/Runtime/Language/WAsmjsUtils.cpp b/lib/Runtime/Language/WAsmjsUtils.cpp new file mode 100644 index 00000000000..2c45fbadb7c --- /dev/null +++ b/lib/Runtime/Language/WAsmjsUtils.cpp @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "RuntimeLanguagePch.h" + +#if defined(ASMJS_PLAT) || defined(ENABLE_WASM) + +namespace WAsmJs +{ +#if DBG_DUMP + void RegisterSpace::PrintTmpRegisterAllocation(RegSlot loc) + { + if (PHASE_ON1(Js::AsmjsTmpRegisterAllocationPhase)) + { + switch (mType) + { + case NONE : break; + case INT32 : Output::Print(_u("+I32 %d\n"), loc); break; + case INT64 : Output::Print(_u("+I64 %d\n"), loc);break; + case FLOAT32: Output::Print(_u("+F32 %d\n"), loc);break; + case FLOAT64: Output::Print(_u("+F64 %d\n"), loc);break; + case SIMD : Output::Print(_u("+SIMD %d\n"), loc);break; + default : break; + } + } + } + + void RegisterSpace::PrintTmpRegisterDeAllocation(RegSlot loc) + { + if (PHASE_ON1(Js::AsmjsTmpRegisterAllocationPhase)) + { + switch (mType) + { + case NONE : break; + case INT32 : Output::Print(_u("-I32 %d\n"), loc); break; + case INT64 : Output::Print(_u("-I64 %d\n"), loc);break; + case FLOAT32: Output::Print(_u("-F32 %d\n"), loc);break; + case FLOAT64: Output::Print(_u("-F64 %d\n"), loc);break; + case SIMD : Output::Print(_u("-SIMD %d\n"), loc);break; + default : break; + } + } + } +#endif +}; + +#endif diff --git a/lib/Runtime/Language/WAsmjsUtils.h b/lib/Runtime/Language/WAsmjsUtils.h new file mode 100644 index 00000000000..da2f910f0e9 --- /dev/null +++ b/lib/Runtime/Language/WAsmjsUtils.h @@ -0,0 +1,209 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +#if defined(ASMJS_PLAT) || defined(ENABLE_WASM) + +namespace WAsmJs +{ + static const int DOUBLE_SLOTS_SPACE = (sizeof(double) / sizeof(Js::Var)); // 2 in x86 and 1 in x64 + static const double FLOAT_SLOTS_SPACE = (sizeof(float) / (double)sizeof(Js::Var)); // 1 in x86 and 0.5 in x64 + static const double INT_SLOTS_SPACE = (sizeof(int) / (double)sizeof(Js::Var)); // 1 in x86 and 0.5 in x64 + static const double SIMD_SLOTS_SPACE = (sizeof(SIMDValue) / sizeof(Js::Var)); // 4 in x86 and 2 in x64 + + typedef Js::RegSlot RegSlot; + + struct EmitInfoBase + { + EmitInfoBase(RegSlot location_) : location(location_) {} + EmitInfoBase() : location(Js::Constants::NoRegister) {} + + RegSlot location; + }; + + /// Register space for const, parameters, variables and tmp values + /// -------------------------------------------------------- + /// | Reserved | Consts | Parameters | Variables | Tmp + /// -------------------------------------------------------- + /// Cannot allocate in any different order + class RegisterSpace + { + // Total number of register allocated + RegSlot mRegisterCount; + + // location of the first temporary register and last variable + 1 + RegSlot mFirstTmpReg; + + // Location of the next register to be allocated + RegSlot mNextLocation; + + // number of const, includes the reserved slots + RegSlot mNbConst; + + public: + // Constructor + RegisterSpace(RegSlot reservedSlotsCount = 0) : + mRegisterCount( reservedSlotsCount ) + , mFirstTmpReg( reservedSlotsCount ) + , mNextLocation( reservedSlotsCount ) + , mNbConst( reservedSlotsCount ) + { + } + // Get the number of const allocated + RegSlot GetConstCount() const { return mNbConst; } + // Get the location of the first temporary register + RegSlot GetFirstTmpRegister() const{ return mFirstTmpReg; } + // Get the total number of temporary register allocated + RegSlot GetTmpCount() const { return mRegisterCount-mFirstTmpReg; } + // Get number of local variables + RegSlot GetVarCount() const { return mFirstTmpReg - mNbConst; } + // Get the total number of variable allocated ( including temporaries ) + RegSlot GetTotalVarCount() const { return mRegisterCount - mNbConst; } + RegSlot GetRegisterCount() const { return mRegisterCount; } + + // Acquire a location for a register. Use only for arguments and Variables + RegSlot AcquireRegister() + { + // Makes sure no temporary register have been allocated yet + Assert( mFirstTmpReg == mRegisterCount && mNextLocation == mFirstTmpReg ); + ++mFirstTmpReg; + ++mRegisterCount; + return mNextLocation++; + } + + // Acquire a location for a constant + RegSlot AcquireConstRegister() + { + ++mNbConst; + return AcquireRegister(); + } + + // Acquire a location for a temporary register + RegSlot AcquireTmpRegister() + { + // Make sure this function is called correctly + Assert( this->mNextLocation <= this->mRegisterCount && this->mNextLocation >= this->mFirstTmpReg ); + + // Allocate a new temp pseudo-register, increasing the locals count if necessary. + if( this->mNextLocation == this->mRegisterCount ) + { + ++this->mRegisterCount; + } +#if DBG_DUMP + PrintTmpRegisterAllocation( mNextLocation ); +#endif + return mNextLocation++; + } + + // Release a location for a temporary register, must be the last location acquired + void ReleaseTmpRegister( RegSlot tmpReg ) + { + // make sure the location released is valid + Assert( tmpReg != Js::Constants::NoRegister ); + + // Put this reg back on top of the temp stack (if it's a temp). + if( this->IsTmpReg( tmpReg ) ) + { + Assert( tmpReg == this->mNextLocation - 1 ); +#if DBG_DUMP + PrintTmpRegisterDeAllocation( mNextLocation - 1 ); +#endif + this->mNextLocation--; + } + } + + // Checks if the register is a temporary register + bool IsTmpReg( RegSlot tmpReg ) + { + Assert( this->mFirstTmpReg != Js::Constants::NoRegister ); + return !IsConstReg( tmpReg ) && tmpReg >= mFirstTmpReg; + } + + // Checks if the register is a const register + bool IsConstReg( RegSlot reg ) + { + // a register is const if it is between the first register and the end of consts + return reg < mNbConst && reg != 0; + } + + // Checks if the register is a variable register + bool IsVarReg( RegSlot reg ) + { + // a register is a var if it is between the last const and the end + // equivalent to reg>=mNbConst && reglocation != Js::Constants::NoRegister ) + { + this->ReleaseTmpRegister( pnode->location ); + } + } + + // Checks if the location points to a temporary register + bool IsTmpLocation( const EmitInfoBase* pnode ) + { + if( pnode && pnode->location != Js::Constants::NoRegister ) + { + return IsTmpReg( pnode->location ); + } + return false; + } + + // Checks if the location points to a constant register + bool IsConstLocation( const EmitInfoBase* pnode ) + { + if( pnode && pnode->location != Js::Constants::NoRegister ) + { + return IsConstReg( pnode->location ); + } + return false; + } + + // Checks if the location points to a variable register + bool IsVarLocation( const EmitInfoBase* pnode ) + { + if( pnode && pnode->location != Js::Constants::NoRegister ) + { + return IsVarReg( pnode->location ); + } + return false; + } + + // Checks if the location is valid ( within bounds of already allocated registers ) + bool IsValidLocation( const EmitInfoBase* pnode ) + { + if( pnode && pnode->location != Js::Constants::NoRegister ) + { + return pnode->location < mRegisterCount; + } + return false; + } + +#if DBG_DUMP + // Used for debugging + enum Types + { + NONE, + INT32, + INT64, + FLOAT32, + FLOAT64, + SIMD + }; + Types mType; + void PrintTmpRegisterAllocation(RegSlot loc); + void PrintTmpRegisterDeAllocation(RegSlot loc); +#endif + }; +}; + +#endif diff --git a/lib/Runtime/Language/amd64/AsmJsJitTemplate.cpp b/lib/Runtime/Language/amd64/AsmJsJitTemplate.cpp index 86e3b72007c..b02d472518d 100644 --- a/lib/Runtime/Language/amd64/AsmJsJitTemplate.cpp +++ b/lib/Runtime/Language/amd64/AsmJsJitTemplate.cpp @@ -4,7 +4,7 @@ //------------------------------------------------------------------------------------------------------- #include "RuntimeLanguagePch.h" -#ifndef TEMP_DISABLE_ASMJS +#ifdef ASMJS_PLAT namespace Js { #if DBG_DUMP diff --git a/lib/Runtime/Language/amd64/amd64_Thunks.asm b/lib/Runtime/Language/amd64/amd64_Thunks.asm index ed7e4b54c8d..5a129b61108 100644 --- a/lib/Runtime/Language/amd64/amd64_Thunks.asm +++ b/lib/Runtime/Language/amd64/amd64_Thunks.asm @@ -447,6 +447,113 @@ endif ?AsmJsExternalEntryPoint@Js@@YAPEAXPEAVRecyclableObject@1@UCallInfo@1@ZZ ENDP +;;============================================================================================================ +;; WasmLibrary::WasmDeferredParseExternalThunk +;;============================================================================================================ + +;; JavascriptMethod WasmLibrary::WasmDeferredParseEntryPoint(AsmJsScriptFunction** funcPtr, int internalCall); +extrn ?WasmDeferredParseEntryPoint@WasmLibrary@Js@@SAP6APEAXPEAVRecyclableObject@2@UCallInfo@2@ZZPEAPEAVAsmJsScriptFunction@2@H@Z : PROC + +;; Var WasmLibrary::WasmDeferredParseExternalThunk(RecyclableObject* function, CallInfo callInfo, ...) +align 16 +?WasmDeferredParseExternalThunk@WasmLibrary@Js@@SAPEAXPEAVRecyclableObject@2@UCallInfo@2@ZZ PROC FRAME + ;; save volatile registers + mov qword ptr [rsp + 8h], rcx + mov qword ptr [rsp + 10h], rdx + mov qword ptr [rsp + 18h], r8 + mov qword ptr [rsp + 20h], r9 + + push rbp + .pushreg rbp + lea rbp, [rsp] + .setframe rbp, 0 + .endprolog + + sub rsp, 20h + lea rcx, [rsp + 30h] + mov rdx, 0 + call ?WasmDeferredParseEntryPoint@WasmLibrary@Js@@SAP6APEAXPEAVRecyclableObject@2@UCallInfo@2@ZZPEAPEAVAsmJsScriptFunction@2@H@Z + +ifdef _CONTROL_FLOW_GUARD + mov rcx, rax ; __guard_check_icall_fptr requires the call target in rcx. + call [__guard_check_icall_fptr] ; verify that the call target is valid + mov rax, rcx ;restore call target +endif + add rsp, 20h + + lea rsp, [rbp] + pop rbp + + ;; restore volatile registers + mov rcx, qword ptr [rsp + 8h] + mov rdx, qword ptr [rsp + 10h] + mov r8, qword ptr [rsp + 18h] + mov r9, qword ptr [rsp + 20h] + + rex_jmp_reg rax +?WasmDeferredParseExternalThunk@WasmLibrary@Js@@SAPEAXPEAVRecyclableObject@2@UCallInfo@2@ZZ ENDP + +;;============================================================================================================ + +;;============================================================================================================ +;; WasmLibrary::WasmDeferredParseInternalThunk +;;============================================================================================================ + +;; JavascriptMethod WasmLibrary::WasmDeferredParseEntryPoint(AsmJsScriptFunction** funcPtr, int internalCall); +extrn ?WasmDeferredParseEntryPoint@WasmLibrary@Js@@SAP6APEAXPEAVRecyclableObject@2@UCallInfo@2@ZZPEAPEAVAsmJsScriptFunction@2@H@Z : PROC + +;; Var WasmLibrary::WasmDeferredParseInternalThunk(RecyclableObject* function, CallInfo callInfo, ...) +align 16 +?WasmDeferredParseInternalThunk@WasmLibrary@Js@@SAPEAXPEAVRecyclableObject@2@UCallInfo@2@ZZ PROC FRAME + ;; save volatile registers + mov qword ptr [rsp + 8h], rcx + mov qword ptr [rsp + 10h], rdx + mov qword ptr [rsp + 18h], r8 + mov qword ptr [rsp + 20h], r9 + + push rbp + .pushreg rbp + lea rbp, [rsp] + .setframe rbp, 0 + .endprolog + + sub rsp, 60h + + ; spill potential floating point arguments to stack + movaps xmmword ptr [rsp + 30h], xmm1 + movaps xmmword ptr [rsp + 40h], xmm2 + movaps xmmword ptr [rsp + 50h], xmm3 + + lea rcx, [rsp + 70h] + mov rdx, 1 + call ?WasmDeferredParseEntryPoint@WasmLibrary@Js@@SAP6APEAXPEAVRecyclableObject@2@UCallInfo@2@ZZPEAPEAVAsmJsScriptFunction@2@H@Z + +ifdef _CONTROL_FLOW_GUARD + mov rcx, rax ; __guard_check_icall_fptr requires the call target in rcx. + call [__guard_check_icall_fptr] ; verify that the call target is valid + mov rax, rcx ;restore call target +endif + + ; restore potential floating point arguments from stack + movaps xmm1, xmmword ptr [rsp + 30h] + movaps xmm2, xmmword ptr [rsp + 40h] + movaps xmm3, xmmword ptr [rsp + 50h] + add rsp, 60h + + lea rsp, [rbp] + pop rbp + + ;; restore volatile registers + mov rcx, qword ptr [rsp + 8h] + mov rdx, qword ptr [rsp + 10h] + mov r8, qword ptr [rsp + 18h] + mov r9, qword ptr [rsp + 20h] + + rex_jmp_reg rax +?WasmDeferredParseInternalThunk@WasmLibrary@Js@@SAPEAXPEAVRecyclableObject@2@UCallInfo@2@ZZ ENDP + +;;============================================================================================================ + endif ;; _ENABLE_DYNAMIC_THUNKS ;;============================================================================================================ diff --git a/lib/Runtime/Language/i386/AsmJsJitTemplate.cpp b/lib/Runtime/Language/i386/AsmJsJitTemplate.cpp index a62ebfaddb6..ea16a67473c 100644 --- a/lib/Runtime/Language/i386/AsmJsJitTemplate.cpp +++ b/lib/Runtime/Language/i386/AsmJsJitTemplate.cpp @@ -1391,12 +1391,15 @@ namespace Js return size; } - int BrEq::ApplyTemplate(TemplateContext context, BYTE*& buffer, int leftOffset, int rightOffset, BYTE** relocAddr, bool isBackEdge) + int BrEq::ApplyTemplate(TemplateContext context, BYTE*& buffer, int leftOffset, int rightOffset, BYTE** relocAddr, bool isBackEdge, bool isSrc2Const /*= false*/) { X86TemplateData* templateData = GetTemplateData( context ); int size = 0; leftOffset -= templateData->GetBaseOffSet(); - rightOffset -= templateData->GetBaseOffSet(); + if (!isSrc2Const) + { + rightOffset -= templateData->GetBaseOffSet(); + } if (isBackEdge) { RegNum regInc = templateData->GetReg(0); @@ -1404,9 +1407,9 @@ namespace Js size += INC::EncodeInstruction(buffer, InstrParamsAddr(regInc, context->GetFunctionBody()->GetAsmJsTotalLoopCountOffset())); templateData->InvalidateReg(regInc); } - RegNum reg1, reg2; + RegNum reg1, reg2 = RegEAX; const int reg1Found = templateData->FindRegWithStackOffset( reg1, leftOffset ); - const int reg2Found = templateData->FindRegWithStackOffset( reg2, rightOffset ); + const int reg2Found = isSrc2Const || templateData->FindRegWithStackOffset( reg2, rightOffset ); switch( reg1Found & (reg2Found<<1) ) { case 0: @@ -1419,10 +1422,21 @@ namespace Js size += CMP::EncodeInstruction( buffer, InstrParamsRegAddr( reg1, RegEBP, rightOffset ) ); break; case 2: - size += CMP::EncodeInstruction( buffer, InstrParamsRegAddr( reg2, RegEBP, leftOffset ) ); + if (isSrc2Const) + { + size += CMP::EncodeInstruction(buffer, InstrParamsAddrImm(RegEBP, leftOffset, rightOffset)); + } + else + { + size += CMP::EncodeInstruction(buffer, InstrParamsRegAddr(reg2, RegEBP, leftOffset)); + } break; case 3: - if( reg1 == reg2 ) + if (isSrc2Const) + { + size += CMP::EncodeInstruction(buffer, InstrParamsRegImm(reg1, rightOffset)); + } + else if( reg1 == reg2 ) { templateData->InvalidateAllReg(); *relocAddr = buffer; @@ -1915,7 +1929,7 @@ namespace Js return size; } - int ShrU_Int::ApplyTemplate( TemplateContext context, BYTE*& buffer, int targetOffset, int leftOffset, int rightOffset ) + int Shr_UInt::ApplyTemplate( TemplateContext context, BYTE*& buffer, int targetOffset, int leftOffset, int rightOffset ) { X86TemplateData* templateData = GetTemplateData( context ); int size = 0; diff --git a/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj b/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj index 60cdc2042ec..5a5d6367105 100644 --- a/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj +++ b/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj @@ -29,6 +29,7 @@ $(MSBuildThisFileDirectory)..\..\Backend; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\JITClient; $(ChakraJITIDLIntDir); @@ -151,6 +152,7 @@ + @@ -281,6 +283,7 @@ + diff --git a/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj.filters b/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj.filters index 89c82a8fd0c..e593d10cb03 100644 --- a/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj.filters +++ b/lib/Runtime/Library/Chakra.Runtime.Library.vcxproj.filters @@ -110,6 +110,7 @@ + @@ -241,6 +242,7 @@ + diff --git a/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h b/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h index d61c965e122..7793d214d05 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h @@ -1415,7 +1415,7 @@ namespace Js { const char Library_Bytecode_intl[] = { /* 00000000 */ 0x43, 0x68, 0x42, 0x63, 0xDA, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFE, 0x9A, 0x02, 0x00, 0xFF, +/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFE, 0x9D, 0x02, 0x00, 0xFF, /* 00000020 */ 0x24, 0x1C, 0x01, 0x00, 0xFF, 0x24, 0x1C, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00, 0x6A, 0x26, 0x00, /* 00000030 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x52, 0x00, 0x00, 0xFE, 0x23, 0x01, 0xF0, 0x05, 0x00, 0x00, /* 00000040 */ 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, @@ -2733,11 +2733,11 @@ namespace Js /* 00005240 */ 0x00, 0x8D, 0x1A, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x8F, 0x1B, 0x01, /* 00005250 */ 0x00, 0x8F, 0x1B, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x1F, 0x1C, 0x01, /* 00005260 */ 0x00, 0x1F, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x44, 0x39, 0x6E, -/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9A, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, +/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9D, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, /* 00005280 */ 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0xFE, 0x75, 0x01, 0xFF, 0xAF, 0x1A, 0x01, 0x00, 0xFF, 0xAF, /* 00005290 */ 0x1A, 0x01, 0x00, 0x01, 0x04, 0x04, 0x05, 0x05, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000052A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x02, 0x07, 0x0C, +/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x02, 0x07, 0x0C, /* 000052C0 */ 0xA8, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFA, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, /* 000052D0 */ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x10, 0x0A, 0x4F, 0xFC, /* 000052E0 */ 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x01, 0x00, 0xFE, @@ -2745,17 +2745,17 @@ namespace Js /* 00005300 */ 0x01, 0x00, 0xFF, 0x89, 0x1A, 0x01, 0x00, 0x39, 0x13, 0x2F, 0x3E, 0x09, 0xFE, 0xAC, 0x01, 0xFE, /* 00005310 */ 0xA7, 0x01, 0x21, 0x10, 0x40, 0x3D, 0x3C, 0x3D, 0x3D, 0x12, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00005320 */ 0x3C, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00005330 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9C, 0x02, 0x02, 0xFE, 0x9D, 0x02, 0x02, 0xFE, 0x9E, 0x02, 0x02, -/* 00005340 */ 0xFE, 0x9F, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, 0xA2, -/* 00005350 */ 0x02, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0xA6, -/* 00005360 */ 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xAA, -/* 00005370 */ 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, 0x02, 0xFE, 0xAE, -/* 00005380 */ 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, 0x02, 0xFE, 0xB2, -/* 00005390 */ 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, 0x02, 0xFE, 0xB6, -/* 000053A0 */ 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, 0x02, 0xFE, 0xBA, -/* 000053B0 */ 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, 0x02, 0xFE, 0xBE, -/* 000053C0 */ 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC1, 0x02, 0x09, 0x02, -/* 000053D0 */ 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xFB, 0x08, 0x96, 0x3A, +/* 00005330 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x02, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, +/* 00005340 */ 0xFE, 0xA2, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, +/* 00005350 */ 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, +/* 00005360 */ 0x02, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, +/* 00005370 */ 0x02, 0x02, 0xFE, 0xAE, 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, +/* 00005380 */ 0x02, 0x02, 0xFE, 0xB2, 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, +/* 00005390 */ 0x02, 0x02, 0xFE, 0xB6, 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, +/* 000053A0 */ 0x02, 0x02, 0xFE, 0xBA, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, +/* 000053B0 */ 0x02, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, +/* 000053C0 */ 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC4, 0x02, 0x09, 0x02, +/* 000053D0 */ 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0xC6, 0x02, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xFB, 0x08, 0x96, 0x3A, /* 000053E0 */ 0x00, 0x00, 0x00, 0x30, 0xD4, 0x09, 0x00, 0x00, 0x00, 0x31, 0x96, 0x02, 0x00, 0x00, 0x00, 0x31, /* 000053F0 */ 0xD4, 0x0A, 0x00, 0x00, 0x00, 0x32, 0x96, 0x03, 0x00, 0x00, 0x00, 0x32, 0xD4, 0x0B, 0x00, 0x00, /* 00005400 */ 0x00, 0x33, 0x96, 0x04, 0x00, 0x00, 0x00, 0x33, 0xD4, 0x0C, 0x00, 0x00, 0x00, 0x34, 0x96, 0x05, @@ -2900,51 +2900,51 @@ namespace Js /* 00005CB0 */ 0x28, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7B, 0x3A, 0x3F, 0x38, /* 00005CC0 */ 0x7B, 0x29, 0x3F, 0x39, 0x7B, 0x2B, 0x3F, 0x3A, 0x7B, 0x29, 0x3F, 0x3B, 0x5C, 0x03, 0x3F, 0xEE, /* 00005CD0 */ 0x04, 0xFF, 0x3E, 0x20, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x12, 0xFE, 0x40, 0x01, 0x00, 0x28, 0x01, -/* 00005CE0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00005CF0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, -/* 00005D00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00005D10 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 00005D20 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00005D30 */ 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, -/* 00005D40 */ 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 00005D50 */ 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, -/* 00005D60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xB8, 0x00, -/* 00005D70 */ 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, -/* 00005D80 */ 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, -/* 00005D90 */ 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DA0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DB0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DC0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DD0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, -/* 00005DE0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x02, 0x00, 0x00, 0xAD, 0x02, 0x00, 0x00, 0xAE, 0x02, -/* 00005DF0 */ 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB9, 0x02, 0x00, 0x00, 0xBA, 0x02, -/* 00005E00 */ 0x00, 0x00, 0xBB, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 00005E50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xF9, 0x00, -/* 00005E60 */ 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, 0x00, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x03, -/* 00005E70 */ 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, -/* 00005E80 */ 0xFE, 0xD3, 0x01, 0xFE, 0x05, 0x02, 0x1B, 0xFE, 0x06, 0x02, 0x23, 0xFE, 0x07, 0x02, 0xF9, 0xFE, -/* 00005E90 */ 0x08, 0x02, 0x29, 0xFE, 0x09, 0x02, 0xFE, 0x0A, 0x02, 0xFE, 0x0B, 0x02, 0xFE, 0x0C, 0x02, 0xFE, -/* 00005EA0 */ 0x0D, 0x02, 0xFE, 0x11, 0x02, 0xFE, 0x12, 0x02, 0xFE, 0x13, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, -/* 00005EB0 */ 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1B, 0x02, 0xFE, 0x1C, 0x02, -/* 00005EC0 */ 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x84, 0x01, 0xFE, -/* 00005ED0 */ 0x7F, 0x01, 0xFE, 0xAB, 0x02, 0xFE, 0xAA, 0x02, 0xFE, 0xAD, 0x02, 0xFE, 0xAF, 0x02, 0xFE, 0xAE, -/* 00005EE0 */ 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xB4, 0x02, -/* 00005EF0 */ 0xFE, 0xB9, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xBC, 0x02, 0xFE, 0xBB, 0x02, 0xFE, 0xBD, 0x02, 0xFE, -/* 00005F00 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xDB, 0xFE, 0xC5, 0x02, 0xFE, -/* 00005F10 */ 0xC6, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xC8, 0x02, 0xFE, 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, -/* 00005F20 */ 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, -/* 00005F30 */ 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xCE, 0x02, 0xF7, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, -/* 00005F40 */ 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, -/* 00005F50 */ 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, -/* 00005F60 */ 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xDF, 0x02, -/* 00005F70 */ 0xFE, 0xE0, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xE1, 0x02, 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, -/* 00005F80 */ 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, -/* 00005F90 */ 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, -/* 00005FA0 */ 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, +/* 00005CE0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00005CF0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, +/* 00005D00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00005D10 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 00005D20 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00005D30 */ 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, +/* 00005D40 */ 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, +/* 00005D50 */ 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, +/* 00005D60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xB8, 0x00, +/* 00005D70 */ 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, +/* 00005D80 */ 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x02, +/* 00005D90 */ 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DA0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DB0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DC0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DD0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, +/* 00005DE0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x02, 0x00, 0x00, 0xB0, 0x02, 0x00, 0x00, 0xB1, 0x02, +/* 00005DF0 */ 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xBD, 0x02, +/* 00005E00 */ 0x00, 0x00, 0xBE, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 00005E50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xFC, 0x00, +/* 00005E60 */ 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, 0x03, 0x02, 0xFE, 0x04, 0x02, 0xFE, 0x06, +/* 00005E70 */ 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, +/* 00005E80 */ 0xFE, 0xD6, 0x01, 0xFE, 0x08, 0x02, 0x1B, 0xFE, 0x09, 0x02, 0x23, 0xFE, 0x0A, 0x02, 0xFC, 0xFE, +/* 00005E90 */ 0x0B, 0x02, 0x29, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, 0xFE, 0x0E, 0x02, 0xFE, 0x0F, 0x02, 0xFE, +/* 00005EA0 */ 0x10, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x18, +/* 00005EB0 */ 0x02, 0xFE, 0x19, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0x1F, 0x02, +/* 00005EC0 */ 0xFE, 0x20, 0x02, 0xFE, 0x21, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x87, 0x01, 0xFE, +/* 00005ED0 */ 0x82, 0x01, 0xFE, 0xAE, 0x02, 0xFE, 0xAD, 0x02, 0xFE, 0xB0, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, +/* 00005EE0 */ 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB8, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xB7, 0x02, +/* 00005EF0 */ 0xFE, 0xBC, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0xBE, 0x02, 0xFE, 0xC0, 0x02, 0xFE, +/* 00005F00 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xDB, 0xFE, 0xC8, 0x02, 0xFE, +/* 00005F10 */ 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0xFE, 0xCE, +/* 00005F20 */ 0x02, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, +/* 00005F30 */ 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD1, 0x02, 0xF7, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, +/* 00005F40 */ 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, +/* 00005F50 */ 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, +/* 00005F60 */ 0x02, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xE1, 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xE2, 0x02, +/* 00005F70 */ 0xFE, 0xE3, 0x02, 0xFE, 0xF8, 0x01, 0xFE, 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, +/* 00005F80 */ 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, +/* 00005F90 */ 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, +/* 00005FA0 */ 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x02, 0xFE, 0xF3, 0x02, 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, /* 00005FB0 */ 0x00, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x12, 0x00, 0x36, 0x00, 0x12, 0x00, 0x3A, 0x00, 0x12, 0x00, /* 00005FC0 */ 0x44, 0x00, 0x12, 0x00, 0x25, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, /* 00005FD0 */ 0x23, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, @@ -2972,17 +2972,17 @@ namespace Js /* 00006130 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x84, 0xAC, 0xFE, 0xAF, 0x6D, 0xFE, 0xAF, 0x6D, 0x01, 0x13, /* 00006140 */ 0x2F, 0x3B, 0x09, 0xD9, 0xD9, 0x01, 0x10, 0x01, 0x09, 0x11, 0x11, 0x11, 0x11, 0x06, 0x02, 0x38, /* 00006150 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, -/* 00006160 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, 0x5F, 0x03, -/* 00006170 */ 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, 0x03, 0x02, 0xFE, 0x63, 0x03, -/* 00006180 */ 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, 0x03, 0x02, 0xFE, 0x67, 0x03, -/* 00006190 */ 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, 0x03, 0x02, 0xFE, 0x6B, 0x03, -/* 000061A0 */ 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, 0x03, 0x02, 0xFE, 0x6F, 0x03, -/* 000061B0 */ 0x02, 0xFE, 0x70, 0x03, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 000061C0 */ 0xFE, 0x72, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x73, 0x03, 0x01, 0x02, 0x00, 0x00, -/* 000061D0 */ 0x00, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x58, -/* 000061E0 */ 0x03, 0x02, 0xFE, 0x21, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, -/* 000061F0 */ 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x08, 0x02, 0xFE, 0x51, 0x03, 0x02, -/* 00006200 */ 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0xA7, 0x02, 0xFE, +/* 00006160 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, 0x03, +/* 00006170 */ 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, 0x03, +/* 00006180 */ 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, 0x03, +/* 00006190 */ 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, 0x03, +/* 000061A0 */ 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x72, 0x03, +/* 000061B0 */ 0x02, 0xFE, 0x73, 0x03, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, +/* 000061C0 */ 0xFE, 0x75, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x76, 0x03, 0x01, 0x02, 0x00, 0x00, +/* 000061D0 */ 0x00, 0x02, 0xFE, 0x77, 0x03, 0x02, 0xFE, 0x78, 0x03, 0x02, 0xFE, 0x79, 0x03, 0x02, 0xFE, 0x5B, +/* 000061E0 */ 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, +/* 000061F0 */ 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x08, 0x02, 0xFE, 0x54, 0x03, 0x02, +/* 00006200 */ 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0xAA, 0x02, 0xFE, /* 00006210 */ 0x04, 0x05, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, 0x33, 0xA8, 0x34, 0xA8, 0x35, /* 00006220 */ 0xA8, 0x36, 0xA8, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, /* 00006230 */ 0x14, 0x17, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, @@ -3064,23 +3064,23 @@ namespace Js /* 000066F0 */ 0x0C, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0xEE, 0x04, 0xFF, 0x3D, 0x0F, 0x00, 0x91, 0x01, /* 00006700 */ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, /* 00006710 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x06, 0x9C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00006720 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00006730 */ 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00006740 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, -/* 00006750 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, -/* 00006760 */ 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00006770 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00006780 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00006790 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 000067A0 */ 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x03, 0x00, 0x00, 0x61, 0x03, 0x00, -/* 000067B0 */ 0x00, 0x63, 0x03, 0x00, 0x00, 0x65, 0x03, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x69, 0x03, 0x00, -/* 000067C0 */ 0x00, 0x6B, 0x03, 0x00, 0x00, 0x6D, 0x03, 0x00, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x5F, -/* 000067D0 */ 0x03, 0xFE, 0x61, 0x03, 0xFE, 0x63, 0x03, 0xFE, 0x65, 0x03, 0xFE, 0x67, 0x03, 0xFE, 0x69, 0x03, -/* 000067E0 */ 0xFE, 0x6B, 0x03, 0xFE, 0x6D, 0x03, 0xFE, 0x6F, 0x03, 0xFE, 0xFD, 0x01, 0xFE, 0x5F, 0x02, 0xFE, -/* 000067F0 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, -/* 00006800 */ 0x01, 0xFE, 0x77, 0x03, 0x02, 0x01, 0x07, 0x00, 0xFE, 0x78, 0x03, 0x01, 0xFE, 0x79, 0x03, 0x02, -/* 00006810 */ 0xFE, 0x7A, 0x03, 0x03, 0xFE, 0x7B, 0x03, 0x04, 0xFE, 0x7C, 0x03, 0x05, 0xFE, 0x7D, 0x03, 0x06, -/* 00006820 */ 0xFE, 0x7E, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE6, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x9D, 0xAC, +/* 00006720 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00006730 */ 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00006740 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, +/* 00006750 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, +/* 00006760 */ 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00006770 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00006780 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00006790 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 000067A0 */ 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x03, 0x00, 0x00, 0x64, 0x03, 0x00, +/* 000067B0 */ 0x00, 0x66, 0x03, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x6A, 0x03, 0x00, 0x00, 0x6C, 0x03, 0x00, +/* 000067C0 */ 0x00, 0x6E, 0x03, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x62, +/* 000067D0 */ 0x03, 0xFE, 0x64, 0x03, 0xFE, 0x66, 0x03, 0xFE, 0x68, 0x03, 0xFE, 0x6A, 0x03, 0xFE, 0x6C, 0x03, +/* 000067E0 */ 0xFE, 0x6E, 0x03, 0xFE, 0x70, 0x03, 0xFE, 0x72, 0x03, 0xFE, 0x00, 0x02, 0xFE, 0x62, 0x02, 0xFE, +/* 000067F0 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, +/* 00006800 */ 0x01, 0xFE, 0x7A, 0x03, 0x02, 0x01, 0x07, 0x00, 0xFE, 0x7B, 0x03, 0x01, 0xFE, 0x7C, 0x03, 0x02, +/* 00006810 */ 0xFE, 0x7D, 0x03, 0x03, 0xFE, 0x7E, 0x03, 0x04, 0xFE, 0x7F, 0x03, 0x05, 0xFE, 0x80, 0x03, 0x06, +/* 00006820 */ 0xFE, 0x81, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE9, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x9D, 0xAC, /* 00006830 */ 0x12, 0x12, 0x00, 0x00, 0x00, 0xB4, 0x00, 0xD0, 0x13, 0x37, 0x00, 0x16, 0x37, 0x54, 0x00, 0x1E, /* 00006840 */ 0x03, 0x54, 0x00, 0x28, 0x03, 0x54, 0x00, 0x26, 0x03, 0x48, 0x00, 0xA7, 0x05, 0x2C, 0x00, 0x29, /* 00006850 */ 0x04, 0x2C, 0x00, 0x56, 0x00, 0x1D, 0x00, 0x4A, 0x00, 0x61, 0x00, 0x9E, 0x00, 0x3E, 0x00, 0x4B, @@ -3089,16 +3089,16 @@ namespace Js /* 00006880 */ 0x00, 0x00, 0x8C, 0x8E, 0x00, 0x00, 0x46, 0x8C, 0x00, 0x00, 0x3B, 0x8A, 0x00, 0x00, 0x92, 0x85, /* 00006890 */ 0x00, 0x00, 0xE7, 0x7B, 0x00, 0x00, 0x67, 0x79, 0x00, 0x00, 0xEB, 0x76, 0x00, 0x00, 0x6F, 0x74, /* 000068A0 */ 0x00, 0x00, 0xB8, 0x71, 0x00, 0x00, 0x0E, 0x6F, 0x00, 0x00, 0xC8, 0x6D, 0x00, 0x00, 0xB2, 0x68, -/* 000068B0 */ 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x4D, 0x05, 0x1B, +/* 000068B0 */ 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x4D, 0x05, 0x1B, /* 000068C0 */ 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x42, 0x00, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x10, /* 000068D0 */ 0x01, 0x00, 0x01, 0x01, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0xFE, 0x0D, 0x08, 0xFE, 0x0D, 0x08, 0x03, /* 000068E0 */ 0x07, 0x15, 0x19, 0x09, 0x7A, 0x7A, 0x04, 0x08, 0x09, 0x08, 0x20, 0x20, 0x20, 0x20, 0x01, 0x16, /* 000068F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xBA, 0x03, -/* 00006910 */ 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0xBB, 0x03, 0x02, 0xFE, 0x47, 0x03, -/* 00006920 */ 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0xB0, 0x03, -/* 00006930 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, -/* 00006940 */ 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x03, 0x04, 0xFE, 0x8B, +/* 00006900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBD, 0x03, +/* 00006910 */ 0x02, 0xFE, 0xC7, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xBE, 0x03, 0x02, 0xFE, 0x4A, 0x03, +/* 00006920 */ 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xB3, 0x03, +/* 00006930 */ 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, +/* 00006940 */ 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x03, 0x04, 0xFE, 0x8B, /* 00006950 */ 0x02, 0x5B, 0x15, 0xB4, 0x15, 0x15, 0x2C, 0x19, 0x15, 0x15, 0x03, 0x00, 0x19, 0x02, 0x09, 0x2A, /* 00006960 */ 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x6D, 0x19, 0x1A, /* 00006970 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, @@ -3140,17 +3140,17 @@ namespace Js /* 00006BB0 */ 0x14, 0x93, 0x04, 0x00, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x5C, 0x01, 0x1A, 0x8F, 0x04, 0x00, 0x00, /* 00006BC0 */ 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x62, 0x1A, 0x1A, 0x1F, 0x5C, 0x02, 0x1A, 0xEE, /* 00006BD0 */ 0x03, 0x00, 0x19, 0x07, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x40, 0x00, 0x00, -/* 00006BE0 */ 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x5E, -/* 00006BF0 */ 0x02, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x46, -/* 00006C00 */ 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, -/* 00006C10 */ 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, -/* 00006C20 */ 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0xE2, 0x01, -/* 00006C30 */ 0xFE, 0xEA, 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0x60, 0x02, 0xFE, -/* 00006C40 */ 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x46, -/* 00006C50 */ 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x53, 0x02, -/* 00006C60 */ 0xFE, 0x48, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, -/* 00006C70 */ 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, -/* 00006C80 */ 0x02, 0xFE, 0x14, 0x01, 0xFE, 0x5C, 0x03, 0xFE, 0xBC, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFF, 0xB3, +/* 00006BE0 */ 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x61, +/* 00006BF0 */ 0x02, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x49, +/* 00006C00 */ 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, +/* 00006C10 */ 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, +/* 00006C20 */ 0x02, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0xE5, 0x01, +/* 00006C30 */ 0xFE, 0xED, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x61, 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0x63, 0x02, 0xFE, +/* 00006C40 */ 0x5C, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, +/* 00006C50 */ 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x56, 0x02, +/* 00006C60 */ 0xFE, 0x4B, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, +/* 00006C70 */ 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x52, +/* 00006C80 */ 0x02, 0xFE, 0x17, 0x01, 0xFE, 0x5F, 0x03, 0xFE, 0xBF, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFF, 0xB3, /* 00006C90 */ 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x92, 0x00, /* 00006CA0 */ 0x29, 0x00, 0x4C, 0x00, 0x25, 0x00, 0x6C, 0x00, 0x2A, 0x00, 0x92, 0x00, 0x13, 0x01, 0xDE, 0x03, /* 00006CB0 */ 0x28, 0x00, 0x3F, 0x00, 0x61, 0x00, 0x5B, 0x01, 0x3B, 0x00, 0x45, 0x00, 0x00, 0xC1, 0x6C, 0x00, @@ -3159,7 +3159,7 @@ namespace Js /* 00006CE0 */ 0x01, 0x00, 0x02, 0x02, 0xFF, 0x31, 0x17, 0x01, 0x00, 0xE9, 0xE9, 0x04, 0x05, 0x07, 0x05, 0x1A, /* 00006CF0 */ 0x1A, 0x05, 0x02, 0x01, 0x01, 0x05, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006D00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006D10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x5D, 0x03, +/* 00006D10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0x60, 0x03, /* 00006D20 */ 0x04, 0x90, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x98, 0x07, /* 00006D30 */ 0x07, 0x05, 0x00, 0x00, 0xA8, 0x08, 0x15, 0x0B, 0x00, 0x07, 0x08, 0x09, 0x00, 0x00, 0x14, 0x03, /* 00006D40 */ 0x00, 0x05, 0x02, 0x09, 0x68, 0x00, 0x8F, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, @@ -3176,7 +3176,7 @@ namespace Js /* 00006DF0 */ 0xFE, 0x6B, 0x02, 0xFE, 0x6B, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x03, 0x01, 0x09, /* 00006E00 */ 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006E10 */ 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006E20 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, +/* 00006E20 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, /* 00006E30 */ 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, /* 00006E40 */ 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, /* 00006E50 */ 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, @@ -3187,17 +3187,17 @@ namespace Js /* 00006EA0 */ 0x0F, 0x2D, 0x00, 0x08, 0x09, 0x00, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006EB0 */ 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, /* 00006EC0 */ 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 00006ED0 */ 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 00006EE0 */ 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0x43, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, +/* 00006ED0 */ 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 00006EE0 */ 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0x46, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, /* 00006EF0 */ 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x8B, 0x00, 0x26, 0x00, 0x4C, /* 00006F00 */ 0x00, 0x15, 0x00, 0x6C, 0x00, 0x2A, 0x00, 0x8B, 0x00, 0x09, 0x00, 0x38, 0x00, 0x00, 0x3F, 0x7E, -/* 00006F10 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, +/* 00006F10 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, /* 00006F20 */ 0x00, 0x40, 0x00, 0xFF, 0xE3, 0x06, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006F30 */ 0xE3, 0x06, 0x01, 0x00, 0xFE, 0xCA, 0x03, 0xFE, 0xCA, 0x03, 0x0A, 0x09, 0x0D, 0x0A, 0x61, 0x60, /* 00006F40 */ 0x04, 0x03, 0x0C, 0x06, 0x0B, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006F60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00006F70 */ 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +/* 00006F60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00006F70 */ 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, /* 00006F80 */ 0x00, 0x04, 0xFE, 0xEA, 0x01, 0x5B, 0x09, 0xB4, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0D, 0x09, 0x15, /* 00006F90 */ 0x03, 0x00, 0x0D, 0x03, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006FA0 */ 0x0E, 0x00, 0x00, 0x6D, 0x0D, 0x0E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0E, 0x5D, 0x01, 0x04, @@ -3229,18 +3229,18 @@ namespace Js /* 00007140 */ 0x10, 0x05, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x08, 0xEE, 0x01, 0x10, 0x10, 0x0B, 0x00, 0x5C, /* 00007150 */ 0x01, 0x10, 0x5C, 0x02, 0x0A, 0xF2, 0x03, 0x0E, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x5C, /* 00007160 */ 0x01, 0x0E, 0xEE, 0x02, 0x00, 0x0D, 0x09, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 00007170 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xF0, 0xFE, 0x24, 0x02, 0xFE, 0xFC, -/* 00007180 */ 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x0B, +/* 00007170 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xF0, 0xFE, 0x27, 0x02, 0xFE, 0xFF, +/* 00007180 */ 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x0B, /* 00007190 */ 0x00, 0x39, 0x00, 0x2A, 0x00, 0x81, 0x00, 0x26, 0x00, 0x48, 0x00, 0x15, 0x00, 0x68, 0x00, 0x2A, /* 000071A0 */ 0x00, 0x83, 0x00, 0x0C, 0x00, 0x36, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x51, 0x00, 0x6D, /* 000071B0 */ 0x00, 0x85, 0x00, 0x5E, 0x00, 0x52, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, -/* 000071C0 */ 0xC4, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, 0x00, 0xFF, 0x1B, 0x01, +/* 000071C0 */ 0xC7, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, 0x00, 0xFF, 0x1B, 0x01, /* 000071D0 */ 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, 0x1B, 0x01, 0x01, 0x00, 0xFE, 0x69, /* 000071E0 */ 0x05, 0xFE, 0x69, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x02, 0x09, 0x09, 0x0B, 0x08, /* 000071F0 */ 0x07, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007200 */ 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007210 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, -/* 00007220 */ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, +/* 00007220 */ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, /* 00007230 */ 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, /* 00007240 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, /* 00007250 */ 0x08, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, @@ -3269,9 +3269,9 @@ namespace Js /* 000073C0 */ 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, /* 000073D0 */ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, /* 000073E0 */ 0x03, 0x0C, 0xEE, 0x04, 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, -/* 000073F0 */ 0x82, 0x0F, 0x0F, 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 00007400 */ 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, -/* 00007410 */ 0xFE, 0x43, 0x02, 0xFE, 0x43, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, 0x07, 0x00, +/* 000073F0 */ 0x82, 0x0F, 0x0F, 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, +/* 00007400 */ 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, +/* 00007410 */ 0xFE, 0x46, 0x02, 0xFE, 0x46, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, 0x07, 0x00, /* 00007420 */ 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, /* 00007430 */ 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, /* 00007440 */ 0x5B, 0x00, 0x26, 0x00, 0x38, 0x00, 0x22, 0x00, 0x39, 0x00, 0x25, 0x00, 0xA1, 0x00, 0x26, 0x00, @@ -3282,9 +3282,9 @@ namespace Js /* 00007490 */ 0xFE, 0x21, 0xFE, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, 0x5A, 0x03, /* 000074A0 */ 0x02, 0x0B, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000074B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000074C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 000074D0 */ 0xFE, 0x73, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 000074E0 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x81, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, +/* 000074C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 000074D0 */ 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 000074E0 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x84, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, /* 000074F0 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x1B, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8F, /* 00007500 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE1, 0x10, 0x0B, 0x10, 0x00, /* 00007510 */ 0x0F, 0x2D, 0x00, 0x10, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, @@ -3313,7 +3313,7 @@ namespace Js /* 00007680 */ 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, 0xF2, 0x02, 0x13, 0x13, /* 00007690 */ 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0xF2, 0x03, 0x11, 0x11, /* 000076A0 */ 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x5C, 0x01, 0x11, 0xEE, 0x02, 0x00, 0x10, 0x08, 0x00, 0x09, -/* 000076B0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, +/* 000076B0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, /* 000076C0 */ 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, /* 000076D0 */ 0x71, 0x00, 0x45, 0x00, 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, /* 000076E0 */ 0x3B, 0x00, 0x56, 0x00, 0x77, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x1F, @@ -3322,9 +3322,9 @@ namespace Js /* 00007710 */ 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, 0x5A, 0x03, 0x02, 0x0B, 0x0B, 0x0B, /* 00007720 */ 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007730 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007740 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x72, 0x03, 0x02, -/* 00007750 */ 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -/* 00007760 */ 0x00, 0x00, 0x02, 0xFE, 0x7F, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0E, +/* 00007740 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, +/* 00007750 */ 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +/* 00007760 */ 0x00, 0x00, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0E, /* 00007770 */ 0x2C, 0x10, 0x0B, 0x15, 0x1B, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, /* 00007780 */ 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x2D, 0x00, 0x10, /* 00007790 */ 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x6D, @@ -3353,7 +3353,7 @@ namespace Js /* 00007900 */ 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, 0xF2, 0x02, 0x13, 0x13, 0x02, 0x00, 0x00, 0x00, /* 00007910 */ 0x0A, 0x00, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0xF2, 0x03, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, /* 00007920 */ 0x09, 0x00, 0x5C, 0x01, 0x11, 0xEE, 0x02, 0x00, 0x10, 0x08, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 00007930 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x18, +/* 00007930 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x18, /* 00007940 */ 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, 0x71, 0x00, 0x45, 0x00, /* 00007950 */ 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, 0x3B, 0x00, 0x56, 0x00, /* 00007960 */ 0x77, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, @@ -3362,9 +3362,9 @@ namespace Js /* 00007990 */ 0x02, 0x0A, 0x0C, 0x11, 0x0A, 0x5D, 0x5A, 0x03, 0x02, 0x0B, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, /* 000079A0 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000079B0 */ 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000079C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, -/* 000079D0 */ 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 000079E0 */ 0x80, 0x03, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0C, 0xB4, 0x0C, 0x0C, 0xAE, 0x0F, +/* 000079C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, +/* 000079D0 */ 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, +/* 000079E0 */ 0x83, 0x03, 0x02, 0xFE, 0x85, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0C, 0xB4, 0x0C, 0x0C, 0xAE, 0x0F, /* 000079F0 */ 0x2C, 0x11, 0x0C, 0x15, 0x1B, 0x00, 0x11, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, /* 00007A00 */ 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0xE1, 0x11, 0x0C, 0x11, 0x00, 0x0F, 0x2D, 0x00, 0x11, /* 00007A10 */ 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x6D, @@ -3393,24 +3393,24 @@ namespace Js /* 00007B80 */ 0x02, 0x00, 0x5C, 0x00, 0x15, 0x5C, 0x01, 0x0C, 0xF2, 0x02, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, /* 00007B90 */ 0x0A, 0x00, 0x5C, 0x01, 0x14, 0x5C, 0x02, 0x0E, 0xF2, 0x03, 0x12, 0x12, 0x01, 0x00, 0x00, 0x00, /* 00007BA0 */ 0x09, 0x00, 0x5C, 0x01, 0x12, 0xEE, 0x02, 0x00, 0x11, 0x08, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 00007BB0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0xF6, +/* 00007BB0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0xF6, /* 00007BC0 */ 0xF7, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, 0x6D, 0x00, 0x45, 0x00, /* 00007BD0 */ 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, 0x3B, 0x00, 0x56, 0x00, -/* 00007BE0 */ 0x75, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x25, 0x0B, 0x4F, 0xFD, 0x07, 0xFE, 0x7E, +/* 00007BE0 */ 0x75, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x25, 0x0B, 0x4F, 0xFD, 0x07, 0xFE, 0x81, /* 00007BF0 */ 0x03, 0xFE, 0x58, 0x04, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x3B, 0x00, 0xFE, 0x61, 0xDB, 0xFF, /* 00007C00 */ 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x61, 0xDB, 0xFE, 0x04, 0x1C, 0xFE, 0x04, 0x1C, 0x1C, /* 00007C10 */ 0x29, 0x41, 0x07, 0xFE, 0xAA, 0x01, 0xFE, 0x8A, 0x01, 0x03, 0x01, 0x0C, 0x22, 0x0E, 0x45, 0x2B, /* 00007C20 */ 0x2B, 0x2B, 0x2B, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007C30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007C40 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0x08, -/* 00007C50 */ 0x02, 0xFE, 0x80, 0x03, 0x02, 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, -/* 00007C60 */ 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xAF, 0x03, -/* 00007C70 */ 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0xB0, 0x03, -/* 00007C80 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x84, 0x03, -/* 00007C90 */ 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, -/* 00007CA0 */ 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0xB3, 0x03, -/* 00007CB0 */ 0x02, 0xFE, 0xB4, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x03, 0x02, 0xFE, 0x58, -/* 00007CC0 */ 0x03, 0x02, 0xFE, 0x76, 0x03, 0x09, 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x01, 0x00, +/* 00007C40 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0x08, +/* 00007C50 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, +/* 00007C60 */ 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, +/* 00007C70 */ 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0xB3, 0x03, +/* 00007C80 */ 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x87, 0x03, +/* 00007C90 */ 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, +/* 00007CA0 */ 0x02, 0xFE, 0xB4, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0xB6, 0x03, +/* 00007CB0 */ 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0xB8, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x03, 0x02, 0xFE, 0x5B, +/* 00007CC0 */ 0x03, 0x02, 0xFE, 0x79, 0x03, 0x09, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x01, 0x00, /* 00007CD0 */ 0x00, 0x00, 0x00, 0xFE, 0x05, 0x07, 0xA8, 0x3F, 0x2C, 0x42, 0x29, 0x0D, 0x03, 0x00, 0x42, 0x02, /* 00007CE0 */ 0x09, 0x1C, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x6D, /* 00007CF0 */ 0x42, 0x43, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x43, 0xF6, 0x01, 0xFF, 0x42, 0x00, 0x00, 0x8F, @@ -3524,17 +3524,17 @@ namespace Js /* 000083B0 */ 0x03, 0x43, 0x43, 0x21, 0x00, 0x77, 0x43, 0x42, 0x27, 0x62, 0x42, 0x29, 0x28, 0xA8, 0x43, 0x15, /* 000083C0 */ 0x03, 0x00, 0x42, 0x43, 0x09, 0x0C, 0x00, 0x62, 0x42, 0x29, 0x29, 0x43, 0x42, 0x42, 0x20, 0x77, /* 000083D0 */ 0x42, 0x29, 0x1D, 0x77, 0x06, 0x29, 0x2A, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x2C, 0x00, 0x00, 0x00, -/* 000083E0 */ 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x4D, 0x02, -/* 000083F0 */ 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x4B, 0x02, -/* 00008400 */ 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x00, 0xFE, -/* 00008410 */ 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x2E, 0x02, 0xFE, 0x29, -/* 00008420 */ 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, -/* 00008430 */ 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4F, 0x02, 0xFE, -/* 00008440 */ 0x39, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x51, 0x02, 0xFE, 0x58, -/* 00008450 */ 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, 0x02, -/* 00008460 */ 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xEE, 0x01, 0xFE, -/* 00008470 */ 0xE3, 0x01, 0xFE, 0xFA, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xF0, 0x01, 0xFE, 0xEF, 0x01, 0xFE, 0x5D, -/* 00008480 */ 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x56, 0x02, 0xFE, 0xEE, 0x01, 0xFE, 0x37, 0x02, +/* 000083E0 */ 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x50, 0x02, +/* 000083F0 */ 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4E, 0x02, +/* 00008400 */ 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0xFE, +/* 00008410 */ 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0x2C, +/* 00008420 */ 0x02, 0xFE, 0x32, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, +/* 00008430 */ 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x52, 0x02, 0xFE, +/* 00008440 */ 0x3C, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x54, 0x02, 0xFE, 0x5B, +/* 00008450 */ 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, 0x02, +/* 00008460 */ 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x5F, 0x02, 0xFE, 0xF1, 0x01, 0xFE, +/* 00008470 */ 0xE6, 0x01, 0xFE, 0xFD, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF2, 0x01, 0xFE, 0x60, +/* 00008480 */ 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x59, 0x02, 0xFE, 0xF1, 0x01, 0xFE, 0x3A, 0x02, /* 00008490 */ 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x42, /* 000084A0 */ 0x00, 0x3F, 0x00, 0xA0, 0x00, 0x22, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6A, 0x00, 0x26, 0x00, 0x48, /* 000084B0 */ 0x00, 0x37, 0x00, 0x72, 0x00, 0x2E, 0x00, 0x60, 0x00, 0x0A, 0x00, 0x33, 0x00, 0x22, 0x00, 0x54, @@ -3551,16 +3551,16 @@ namespace Js /* 00008560 */ 0x00, 0x04, 0x00, 0x38, 0x00, 0x07, 0x00, 0x5C, 0x00, 0x34, 0x00, 0xE3, 0x00, 0x28, 0x00, 0x48, /* 00008570 */ 0x00, 0x01, 0x00, 0x4C, 0x00, 0x1B, 0x00, 0x7C, 0x01, 0x1D, 0x00, 0x7B, 0x00, 0x25, 0x00, 0x68, /* 00008580 */ 0x00, 0x35, 0x00, 0x83, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x0C, 0x00, 0x6F, 0x00, 0x06, 0x00, 0x40, -/* 00008590 */ 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0x1E, 0x04, 0x0C, +/* 00008590 */ 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x80, 0x03, 0xFE, 0x1E, 0x04, 0x0C, /* 000085A0 */ 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x3A, 0x00, 0xFE, 0xEB, 0xCD, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, /* 000085B0 */ 0x03, 0xFE, 0xEB, 0xCD, 0xFE, 0x66, 0x0D, 0xFE, 0x66, 0x0D, 0x07, 0x12, 0x16, 0x06, 0xC8, 0xBB, /* 000085C0 */ 0x03, 0x02, 0x10, 0x07, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000085D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000085E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x04, -/* 000085F0 */ 0x02, 0xFE, 0x8E, 0x03, 0x03, 0x02, 0xFE, 0xA9, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 00008600 */ 0xAA, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0xAB, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, -/* 00008610 */ 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, -/* 00008620 */ 0x88, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0xFE, 0x6E, 0x03, 0xA8, 0x14, 0x62, 0x16, 0x13, 0x00, 0xA8, +/* 000085E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAB, 0x03, 0x04, +/* 000085F0 */ 0x02, 0xFE, 0x91, 0x03, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, +/* 00008600 */ 0xAD, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, +/* 00008610 */ 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, +/* 00008620 */ 0x8B, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0xFE, 0x6E, 0x03, 0xA8, 0x14, 0x62, 0x16, 0x13, 0x00, 0xA8, /* 00008630 */ 0x17, 0x15, 0x03, 0x00, 0x16, 0x17, 0x09, 0x2C, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, /* 00008640 */ 0x00, 0x00, 0x16, 0x00, 0x00, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, /* 00008650 */ 0x62, 0x17, 0x13, 0x00, 0x5C, 0x02, 0x17, 0x5D, 0x03, 0x02, 0x00, 0x00, 0xEE, 0x04, 0x16, 0x16, @@ -3615,9 +3615,9 @@ namespace Js /* 00008960 */ 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x4B, 0x16, 0x07, /* 00008970 */ 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, 0x62, 0x17, 0x13, 0x09, 0x5C, 0x02, 0x17, 0x5D, /* 00008980 */ 0x03, 0x11, 0x0F, 0x00, 0xEE, 0x04, 0x16, 0x16, 0x0F, 0x00, 0x47, 0x12, 0x16, 0x47, 0x00, 0x12, -/* 00008990 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x51, 0x02, 0xFE, 0x58, 0x02, 0xFE, -/* 000089A0 */ 0x52, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, -/* 000089B0 */ 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0x1C, 0xFE, 0xAD, +/* 00008990 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x54, 0x02, 0xFE, 0x5B, 0x02, 0xFE, +/* 000089A0 */ 0x55, 0x02, 0xFE, 0x05, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, +/* 000089B0 */ 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0x1C, 0xFE, 0xB0, /* 000089C0 */ 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x43, 0x00, 0x2C, 0x00, /* 000089D0 */ 0x8B, 0x00, 0x0E, 0x00, 0x94, 0x01, 0x0C, 0x00, 0x40, 0x00, 0x2C, 0x00, 0x6C, 0x00, 0x08, 0x00, /* 000089E0 */ 0x2F, 0x00, 0x38, 0x00, 0x93, 0x00, 0x3E, 0x00, 0x9A, 0x00, 0x0C, 0x00, 0x3D, 0x00, 0x2C, 0x00, @@ -3626,15 +3626,15 @@ namespace Js /* 00008A10 */ 0x3F, 0x00, 0x2C, 0x00, 0x8A, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x2C, 0x00, 0x8C, 0x00, 0x0E, 0x00, /* 00008A20 */ 0x42, 0x00, 0x2C, 0x00, 0x90, 0x00, 0x0E, 0x00, 0x42, 0x00, 0x2C, 0x00, 0x90, 0x00, 0x0E, 0x00, /* 00008A30 */ 0x48, 0x00, 0x2C, 0x00, 0x8F, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, -/* 00008A40 */ 0xFC, 0x07, 0xFE, 0x7C, 0x03, 0xFE, 0x0C, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, +/* 00008A40 */ 0xFC, 0x07, 0xFE, 0x7F, 0x03, 0xFE, 0x0C, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, /* 00008A50 */ 0xFE, 0xF7, 0xC8, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xF7, 0xC8, 0xFE, 0x81, 0x04, /* 00008A60 */ 0xFE, 0x81, 0x04, 0x09, 0x11, 0x16, 0x07, 0x43, 0x40, 0x03, 0x05, 0x06, 0x06, 0x01, 0x01, 0x01, /* 00008A70 */ 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008A80 */ 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008A90 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0xA3, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA4, -/* 00008AA0 */ 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x01, 0x00, 0x00, -/* 00008AB0 */ 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA5, 0x03, 0x01, -/* 00008AC0 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA6, 0x03, 0x02, 0xFE, 0xA7, 0x03, 0xFE, 0x44, 0x01, 0x8F, +/* 00008A90 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0xA6, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA7, +/* 00008AA0 */ 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x01, 0x00, 0x00, +/* 00008AB0 */ 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x01, +/* 00008AC0 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA9, 0x03, 0x02, 0xFE, 0xAA, 0x03, 0xFE, 0x44, 0x01, 0x8F, /* 00008AD0 */ 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x6D, 0x16, 0x17, 0x00, 0x07, /* 00008AE0 */ 0x03, 0x00, 0x5C, 0x00, 0x17, 0x5C, 0x01, 0x11, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, /* 00008AF0 */ 0x00, 0x18, 0x01, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x19, 0x02, 0x13, 0x03, 0x5C, @@ -3655,20 +3655,20 @@ namespace Js /* 00008BE0 */ 0x17, 0x05, 0x00, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x11, 0x98, 0x17, 0x14, 0x0A, 0x03, 0x00, 0x5C, /* 00008BF0 */ 0x03, 0x17, 0x98, 0x17, 0x14, 0x0C, 0x04, 0x00, 0xFB, 0x17, 0x0B, 0x17, 0x10, 0x5C, 0x04, 0x17, /* 00008C00 */ 0xEE, 0x05, 0x00, 0x16, 0x05, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, -/* 00008C10 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, +/* 00008C10 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, /* 00008C20 */ 0x00, 0x49, 0x00, 0x90, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x42, 0x00, 0x01, 0x01, 0x06, 0x00, 0x3C, /* 00008C30 */ 0x00, 0x08, 0x00, 0x6E, 0x00, 0x47, 0x00, 0x82, 0x00, 0x0E, 0x00, 0x33, 0x00, 0x44, 0x00, 0x8D, -/* 00008C40 */ 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, +/* 00008C40 */ 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7E, 0x03, /* 00008C50 */ 0xFE, 0xFC, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x38, 0x00, 0xFE, 0xBE, 0xC3, 0xFF, 0x00, /* 00008C60 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xBE, 0xC3, 0xFE, 0x2B, 0x05, 0xFE, 0x2B, 0x05, 0x09, 0x14, /* 00008C70 */ 0x19, 0x07, 0x50, 0x4B, 0x03, 0x05, 0x06, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, /* 00008C80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xFF, /* 00008C90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00008CA0 */ 0x98, 0x03, 0x02, 0xFE, 0x99, 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9A, 0x03, 0x02, 0xFE, 0x9B, 0x03, -/* 00008CB0 */ 0x02, 0xFE, 0x9C, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x8C, -/* 00008CC0 */ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 00008CD0 */ 0xFE, 0x9F, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0xA1, 0x03, 0x02, -/* 00008CE0 */ 0xFE, 0xA2, 0x03, 0xFE, 0x73, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, +/* 00008CA0 */ 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x9E, 0x03, +/* 00008CB0 */ 0x02, 0xFE, 0x9F, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8F, +/* 00008CC0 */ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 00008CD0 */ 0xFE, 0xA2, 0x03, 0x02, 0xFE, 0xA3, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, +/* 00008CE0 */ 0xFE, 0xA5, 0x03, 0xFE, 0x73, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, /* 00008CF0 */ 0x00, 0x00, 0x6D, 0x19, 0x1A, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, 0x01, 0x14, 0x8F, /* 00008D00 */ 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, /* 00008D10 */ 0x04, 0xFB, 0x1C, 0x02, 0x16, 0x03, 0x5C, 0x01, 0x1C, 0xEE, 0x02, 0x1B, 0x1B, 0x01, 0x00, 0x5C, @@ -3691,31 +3691,31 @@ namespace Js /* 00008E20 */ 0x04, 0x00, 0x2F, 0x1A, 0x0D, 0x1A, 0x2F, 0x1A, 0x1A, 0x0F, 0x14, 0x03, 0x00, 0x15, 0x11, 0x09, /* 00008E30 */ 0x06, 0x00, 0x47, 0x1B, 0x12, 0x09, 0x03, 0x00, 0x47, 0x1B, 0x13, 0x2F, 0x1A, 0x1A, 0x1B, 0x2F, /* 00008E40 */ 0x1A, 0x1A, 0x10, 0x5C, 0x04, 0x1A, 0xEE, 0x05, 0x00, 0x19, 0x05, 0x00, 0x09, 0x08, 0x00, 0x47, -/* 00008E50 */ 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, +/* 00008E50 */ 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, /* 00008E60 */ 0x96, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x0D, 0x01, 0x08, 0x00, 0x2B, 0x00, 0x42, /* 00008E70 */ 0x00, 0xF6, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x16, 0x00, 0x48, 0x00, 0x52, 0x00, 0x86, 0x00, 0x08, /* 00008E80 */ 0x00, 0x31, 0x00, 0x60, 0x00, 0xC6, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x6E, 0x05, 0x0A, -/* 00008E90 */ 0x00, 0xFC, 0x07, 0xFE, 0x7A, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x37, +/* 00008E90 */ 0x00, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x37, /* 00008EA0 */ 0x00, 0xFE, 0x4E, 0xC2, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x4E, 0xC2, 0xEF, 0xEF, /* 00008EB0 */ 0x03, 0x05, 0x07, 0x0E, 0x0B, 0x03, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008EC0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008ED0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, -/* 00008EE0 */ 0xB8, 0x02, 0x02, 0xFE, 0x60, 0x03, 0x34, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, +/* 00008ED0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, +/* 00008EE0 */ 0xBB, 0x02, 0x02, 0xFE, 0x63, 0x03, 0x34, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, /* 00008EF0 */ 0x06, 0x00, 0x47, 0x00, 0x03, 0x09, 0x21, 0x00, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 00008F00 */ 0x00, 0x07, 0x00, 0x00, 0x98, 0x07, 0x07, 0x05, 0x00, 0x00, 0x47, 0x00, 0x07, 0x0F, 0x03, 0x00, /* 00008F10 */ 0x07, 0x47, 0x00, 0x04, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x8A, /* 00008F20 */ 0xC2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x21, 0x00, -/* 00008F30 */ 0x45, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x79, 0x03, 0xFE, 0xB3, 0x03, +/* 00008F30 */ 0x45, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x7C, 0x03, 0xFE, 0xB3, 0x03, /* 00008F40 */ 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x35, 0x00, 0xFE, 0x96, 0xB6, 0x01, 0xFF, 0x00, 0x10, 0x01, /* 00008F50 */ 0x00, 0x02, 0x02, 0xFE, 0x96, 0xB6, 0xFE, 0xC7, 0x09, 0xFE, 0xC7, 0x09, 0x02, 0x06, 0x17, 0x1B, /* 00008F60 */ 0x05, 0xCC, 0xCA, 0x03, 0x0D, 0x02, 0x07, 0x05, 0x05, 0x05, 0x05, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008F70 */ 0xFF, 0x19, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008F80 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, -/* 00008F90 */ 0x04, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x8F, -/* 00008FA0 */ 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, -/* 00008FB0 */ 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, -/* 00008FC0 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x01, 0x00, 0x00, -/* 00008FD0 */ 0x00, 0x00, 0x02, 0xFE, 0x96, 0x03, 0xFE, 0x4D, 0x04, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCE, +/* 00008F80 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, +/* 00008F90 */ 0x04, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, +/* 00008FA0 */ 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, +/* 00008FB0 */ 0x03, 0x02, 0xFE, 0x96, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x97, 0x03, 0x02, 0xFE, 0x98, +/* 00008FC0 */ 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x01, 0x00, 0x00, +/* 00008FD0 */ 0x00, 0x00, 0x02, 0xFE, 0x99, 0x03, 0xFE, 0x4D, 0x04, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCE, /* 00008FE0 */ 0x1B, 0x00, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x1B, 0x93, 0x03, 0x00, 0x00, 0x00, 0x1B, /* 00008FF0 */ 0x00, 0x00, 0x62, 0x1B, 0x1B, 0x00, 0x0F, 0x03, 0x00, 0x1B, 0x09, 0xAD, 0x00, 0x93, 0x03, 0x00, /* 00009000 */ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x62, 0x1B, 0x1B, 0x00, 0x14, 0x17, 0x00, 0x1B, 0x02, 0x09, 0x00, @@ -3784,8 +3784,8 @@ namespace Js /* 000093F0 */ 0x03, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1C, 0x06, 0x00, 0x5C, 0x01, 0x1C, 0x93, 0x02, /* 00009400 */ 0x00, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x5C, 0x02, 0x1C, 0x5D, 0x03, 0x16, 0x0C, 0x00, 0xEE, 0x04, /* 00009410 */ 0x1B, 0x1B, 0x0C, 0x00, 0x47, 0x00, 0x1B, 0x09, 0x05, 0x00, 0xA8, 0x1B, 0x47, 0x00, 0x1B, 0x09, -/* 00009420 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, -/* 00009430 */ 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x97, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFE, 0xD8, +/* 00009420 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, +/* 00009430 */ 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x9A, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFE, 0xD8, /* 00009440 */ 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x26, 0x00, 0x13, 0x00, 0x2C, 0x00, 0x28, 0x00, /* 00009450 */ 0x5C, 0x00, 0x3A, 0x00, 0x64, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x37, 0x00, 0xAA, 0x00, 0x13, 0x00, /* 00009460 */ 0x29, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x3A, 0x00, 0x5F, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x37, 0x00, @@ -3805,16 +3805,16 @@ namespace Js /* 00009540 */ 0x02, 0x00, 0x5C, 0x01, 0x06, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x03, /* 00009550 */ 0x00, 0x5C, 0x02, 0x06, 0x5C, 0x03, 0x03, 0xEE, 0x04, 0xFF, 0x05, 0x00, 0x00, 0xA8, 0x00, 0x24, /* 00009560 */ 0x00, 0x00, 0x00, 0x00, 0xFE, 0x12, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x2D, 0x00, -/* 00009570 */ 0x3B, 0x00, 0x5C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x78, 0x03, 0xFE, +/* 00009570 */ 0x3B, 0x00, 0x5C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, /* 00009580 */ 0x82, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x34, 0x00, 0xFE, 0xDC, 0xAC, 0xFF, 0x00, 0x10, /* 00009590 */ 0x01, 0x00, 0x04, 0x04, 0xFE, 0xDC, 0xAC, 0xFE, 0x1F, 0x09, 0xFE, 0x1F, 0x09, 0x07, 0x15, 0x1A, /* 000095A0 */ 0x05, 0x93, 0x8D, 0x03, 0x08, 0x03, 0x01, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, /* 000095B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, /* 000095C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, -/* 000095D0 */ 0x02, 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x80, 0x03, 0x09, 0x02, 0xFE, 0x81, 0x03, 0x02, 0xFE, 0x82, -/* 000095E0 */ 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0xC0, -/* 000095F0 */ 0x02, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, -/* 00009600 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0xFE, 0x9B, 0x02, +/* 000095D0 */ 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x09, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, +/* 000095E0 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0xC3, +/* 000095F0 */ 0x02, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, +/* 00009600 */ 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0xFE, 0x9B, 0x02, /* 00009610 */ 0xA8, 0x1A, 0x14, 0x03, 0x00, 0x15, 0x1A, 0x09, 0x28, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x08, /* 00009620 */ 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x03, 0xCB, 0x1B, 0x5C, 0x01, /* 00009630 */ 0x1B, 0x5D, 0x02, 0x02, 0x00, 0x00, 0xEE, 0x03, 0x1A, 0x1A, 0x00, 0x00, 0x47, 0x15, 0x1A, 0x09, @@ -3857,19 +3857,19 @@ namespace Js /* 00009880 */ 0x05, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x1B, 0x08, 0x7B, 0x04, 0x1B, 0x09, /* 00009890 */ 0x7B, 0x04, 0x1B, 0x0A, 0x7B, 0x04, 0x1B, 0x0B, 0x5C, 0x03, 0x1B, 0xEE, 0x04, 0xFF, 0x1A, 0x07, /* 000098A0 */ 0x00, 0x47, 0x00, 0x15, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x06, 0x90, 0x00, 0x78, 0x00, -/* 000098B0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 000098C0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 000098D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 000098E0 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 000098F0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009900 */ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 00009910 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x18, 0x00, -/* 00009920 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00009930 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 00009940 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00009950 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, -/* 00009960 */ 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, -/* 00009970 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, +/* 000098B0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 000098C0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 000098D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 000098E0 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 000098F0 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009900 */ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 00009910 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, +/* 00009920 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00009930 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 00009940 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00009950 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, +/* 00009960 */ 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, +/* 00009970 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, /* 00009980 */ 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, 0x00, 0x28, 0x00, 0x51, 0x00, 0x26, 0x00, 0x4C, 0x00, /* 00009990 */ 0x03, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x46, 0x00, 0x38, 0x00, 0x96, 0x00, 0x03, 0x00, 0x3A, 0x00, /* 000099A0 */ 0x10, 0x00, 0x46, 0x00, 0x2A, 0x00, 0x79, 0x00, 0x03, 0x00, 0x3C, 0x00, 0x17, 0x00, 0x58, 0x00, @@ -3880,14 +3880,14 @@ namespace Js /* 000099F0 */ 0x00, 0x01, 0x01, 0xFE, 0x40, 0x7A, 0xFE, 0xA1, 0x31, 0xFE, 0xA1, 0x31, 0x01, 0x0D, 0x22, 0x28, /* 00009A00 */ 0x09, 0xA6, 0xA6, 0x01, 0x0C, 0x01, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0x25, 0xFF, 0xFF, /* 00009A10 */ 0xFF, 0xFF, 0xFF, 0x26, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009A20 */ 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x43, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x04, 0x01, -/* 00009A30 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x45, 0x03, 0x02, 0xFE, 0x46, 0x03, 0x02, 0xFE, 0xA7, 0x02, -/* 00009A40 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC2, 0x02, 0x03, 0x02, 0xFE, -/* 00009A50 */ 0xF3, 0x02, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, -/* 00009A60 */ 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, -/* 00009A70 */ 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, -/* 00009A80 */ 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, -/* 00009A90 */ 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0xFE, 0xC1, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, +/* 00009A20 */ 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x46, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x04, 0x01, +/* 00009A30 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, 0xAA, 0x02, +/* 00009A40 */ 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC5, 0x02, 0x03, 0x02, 0xFE, +/* 00009A50 */ 0xF6, 0x02, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, +/* 00009A60 */ 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, +/* 00009A70 */ 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, +/* 00009A80 */ 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, +/* 00009A90 */ 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0xFE, 0xC1, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, /* 00009AA0 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x17, 0x00, 0x2A, /* 00009AB0 */ 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, /* 00009AC0 */ 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x8A, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, @@ -3948,17 +3948,17 @@ namespace Js /* 00009E30 */ 0x2B, 0x06, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, 0x03, 0x2B, 0xEE, 0x04, 0xFF, /* 00009E40 */ 0x2A, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, /* 00009E50 */ 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, -/* 00009E60 */ 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00009E70 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 00009E80 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009E90 */ 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 00009EA0 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, -/* 00009EB0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00009EC0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, -/* 00009ED0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009EE0 */ 0x00, 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, -/* 00009EF0 */ 0x7C, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0xC6, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, -/* 00009F00 */ 0x53, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE5, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x59, 0x7A, 0x0F, +/* 00009E60 */ 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00009E70 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 00009E80 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009E90 */ 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 00009EA0 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, +/* 00009EB0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00009EC0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 00009ED0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009EE0 */ 0x00, 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, +/* 00009EF0 */ 0x7F, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0xC9, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, +/* 00009F00 */ 0x56, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE8, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x59, 0x7A, 0x0F, /* 00009F10 */ 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x87, 0x19, 0x54, 0x00, 0xDF, 0x02, 0x48, 0x00, 0xA2, 0x05, /* 00009F20 */ 0x2C, 0x00, 0x4C, 0x03, 0x2C, 0x00, 0x54, 0x00, 0x54, 0x00, 0x9D, 0x00, 0x37, 0x00, 0x23, 0x01, /* 00009F30 */ 0x61, 0x00, 0x9A, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x5C, 0x00, 0xA0, 0x00, 0x68, 0x00, 0xD8, 0x04, @@ -3970,7 +3970,7 @@ namespace Js /* 00009F90 */ 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, /* 00009FA0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, /* 00009FB0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00009FC0 */ 0x0F, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, +/* 00009FC0 */ 0x12, 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, /* 00009FD0 */ 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, /* 00009FE0 */ 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 00009FF0 */ 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, @@ -3981,16 +3981,16 @@ namespace Js /* 0000A040 */ 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, /* 0000A050 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, /* 0000A060 */ 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, -/* 0000A070 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, -/* 0000A080 */ 0xFE, 0x43, 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, +/* 0000A070 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, +/* 0000A080 */ 0xFE, 0x46, 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, /* 0000A090 */ 0x2A, 0x00, 0x87, 0x00, 0x26, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x6A, 0x00, 0x2A, 0x00, 0x87, 0x00, -/* 0000A0A0 */ 0x09, 0x00, 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, +/* 0000A0A0 */ 0x09, 0x00, 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, /* 0000A0B0 */ 0x53, 0x03, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x30, 0x00, 0xFE, 0xA2, 0xA3, 0x01, 0xFF, 0x00, /* 0000A0C0 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xA2, 0xA3, 0xFE, 0x1A, 0x04, 0xFE, 0x1A, 0x04, 0x02, 0x06, /* 0000A0D0 */ 0x07, 0x0B, 0x05, 0x40, 0x40, 0x04, 0x06, 0x07, 0x08, 0x03, 0x03, 0x03, 0x03, 0x08, 0xFF, 0xFF, /* 0000A0E0 */ 0xFF, 0xFF, 0xFF, 0x09, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, -/* 0000A100 */ 0xC3, 0x02, 0x03, 0x04, 0xFE, 0x48, 0x01, 0x5B, 0x07, 0xB4, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, +/* 0000A0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, +/* 0000A100 */ 0xC6, 0x02, 0x03, 0x04, 0xFE, 0x48, 0x01, 0x5B, 0x07, 0xB4, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, /* 0000A110 */ 0x03, 0x00, 0x0B, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 0000A120 */ 0x0C, 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5D, 0x01, 0x03, /* 0000A130 */ 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4011,7 +4011,7 @@ namespace Js /* 0000A220 */ 0x8F, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, /* 0000A230 */ 0x00, 0x06, 0x93, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x06, 0x00, 0x5C, 0x01, 0x0C, 0xCB, 0x0C, 0x5C, /* 0000A240 */ 0x02, 0x0C, 0xEE, 0x03, 0x00, 0x0B, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 0000A250 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x5C, 0x03, 0xFE, 0xE8, 0x01, +/* 0000A250 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x5F, 0x03, 0xFE, 0xEB, 0x01, /* 0000A260 */ 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x8E, /* 0000A270 */ 0x00, 0x29, 0x00, 0x4C, 0x00, 0x25, 0x00, 0x6A, 0x00, 0x2A, 0x00, 0x90, 0x00, 0x28, 0x00, 0x49, /* 0000A280 */ 0x00, 0x3F, 0x00, 0x4A, 0x01, 0x2D, 0x00, 0x3F, 0x00, 0x00, 0x8E, 0xA2, 0x00, 0x00, 0x3F, 0x6E, @@ -4020,19 +4020,19 @@ namespace Js /* 0000A2B0 */ 0x62, 0xA6, 0xFC, 0xFC, 0x05, 0x04, 0x06, 0x0D, 0x0D, 0x05, 0x01, 0x01, 0x02, 0x41, 0xFF, 0xFF, /* 0000A2C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, /* 0000A2D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, -/* 0000A2E0 */ 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0x0A, 0x03, 0x48, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +/* 0000A2E0 */ 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x0D, 0x03, 0x48, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0000A2F0 */ 0x00, 0x06, 0x00, 0x00, 0x2F, 0x07, 0x02, 0x04, 0x2D, 0x06, 0x06, 0x07, 0x15, 0x03, 0x00, 0x06, /* 0000A300 */ 0x03, 0x09, 0x28, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, /* 0000A310 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x2F, 0x08, 0x02, 0x04, /* 0000A320 */ 0x98, 0x07, 0x07, 0x08, 0x00, 0x00, 0x9D, 0x07, 0x06, 0x04, 0x00, 0x00, 0xA8, 0x00, 0x24, 0x00, /* 0000A330 */ 0x00, 0x00, 0x00, 0xFE, 0x93, 0xA6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x5B, 0x00, 0x2A, -/* 0000A340 */ 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x37, +/* 0000A340 */ 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x37, /* 0000A350 */ 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x2F, 0x00, 0xFE, 0xAA, 0x9C, 0xFF, 0x00, 0x10, 0x01, /* 0000A360 */ 0x00, 0x02, 0x02, 0xFE, 0xAA, 0x9C, 0xFE, 0xF1, 0x02, 0xFE, 0xF1, 0x02, 0x08, 0x07, 0x0B, 0x07, /* 0000A370 */ 0x3D, 0x39, 0x04, 0x06, 0x03, 0x09, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A380 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A390 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 0000A3A0 */ 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0x21, 0x01, +/* 0000A390 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 0000A3A0 */ 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0x21, 0x01, /* 0000A3B0 */ 0x5B, 0x08, 0xB4, 0x08, 0x08, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0C, 0x00, /* 0000A3C0 */ 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x07, 0xF2, 0x02, /* 0000A3D0 */ 0x0B, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x0B, 0x2C, 0x0B, 0x08, 0x15, 0x03, @@ -4051,17 +4051,17 @@ namespace Js /* 0000A4A0 */ 0x14, 0x03, 0x00, 0x07, 0x0E, 0x09, 0x06, 0x00, 0x47, 0x0E, 0x05, 0x09, 0x03, 0x00, 0x47, 0x0E, /* 0000A4B0 */ 0x07, 0x5C, 0x01, 0x0E, 0x5C, 0x02, 0x09, 0xF2, 0x03, 0x0C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x05, /* 0000A4C0 */ 0x00, 0x5C, 0x01, 0x0C, 0xEE, 0x02, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000A4D0 */ 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, -/* 0000A4E0 */ 0xF8, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x26, 0x00, 0x31, 0x00, 0x0B, +/* 0000A4D0 */ 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, +/* 0000A4E0 */ 0xFB, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x26, 0x00, 0x31, 0x00, 0x0B, /* 0000A4F0 */ 0x00, 0x39, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x26, 0x00, 0x48, 0x00, 0x15, 0x00, 0x66, 0x00, 0x2A, /* 0000A500 */ 0x00, 0xD8, 0x00, 0x5A, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, -/* 0000A510 */ 0xC3, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, 0xEB, 0x96, +/* 0000A510 */ 0xC6, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, 0xEB, 0x96, /* 0000A520 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xEB, 0x96, 0xFE, 0x64, 0x05, 0xFE, 0x64, 0x05, /* 0000A530 */ 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x02, 0x09, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, /* 0000A540 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, /* 0000A550 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, /* 0000A560 */ 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, -/* 0000A570 */ 0x04, 0x02, 0xFE, 0xC3, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, +/* 0000A570 */ 0x04, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, /* 0000A580 */ 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, /* 0000A590 */ 0x0F, 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, 0x08, 0x0F, 0x62, 0x0F, /* 0000A5A0 */ 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x03, 0x01, 0x00, @@ -4089,10 +4089,10 @@ namespace Js /* 0000A700 */ 0x00, 0x00, 0x10, 0x06, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x04, 0x00, 0x00, 0x00, /* 0000A710 */ 0x1E, 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, /* 0000A720 */ 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0xEE, 0x04, -/* 0000A730 */ 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, +/* 0000A730 */ 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, /* 0000A740 */ 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, -/* 0000A750 */ 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, -/* 0000A760 */ 0x43, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, +/* 0000A750 */ 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, +/* 0000A760 */ 0x46, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, /* 0000A770 */ 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 0000A780 */ 0x09, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, 0x59, 0x00, 0x26, 0x00, 0x3A, 0x00, /* 0000A790 */ 0x22, 0x00, 0x39, 0x00, 0x25, 0x00, 0x9F, 0x00, 0x26, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, 0x00, @@ -4103,7 +4103,7 @@ namespace Js /* 0000A7E0 */ 0xFE, 0x73, 0x02, 0x09, 0x09, 0x0E, 0x07, 0x40, 0x3C, 0x03, 0x02, 0x06, 0x06, 0x0B, 0x03, 0x03, /* 0000A7F0 */ 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A800 */ 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A810 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0x43, +/* 0000A810 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x46, /* 0000A820 */ 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x01, 0x5B, /* 0000A830 */ 0x09, 0xB4, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0E, 0x09, 0x15, 0x03, 0x00, 0x0E, 0x03, 0x09, 0x42, /* 0000A840 */ 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xE1, 0x0E, 0x09, @@ -4123,23 +4123,23 @@ namespace Js /* 0000A920 */ 0x03, 0x00, 0x5C, 0x00, 0x10, 0x2A, 0x11, 0x07, 0x14, 0x03, 0x00, 0x0C, 0x11, 0x09, 0x06, 0x00, /* 0000A930 */ 0x47, 0x11, 0x07, 0x09, 0x03, 0x00, 0x47, 0x11, 0x0C, 0x5C, 0x01, 0x11, 0x5C, 0x02, 0x0A, 0xF2, /* 0000A940 */ 0x03, 0x0F, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x5C, 0x01, 0x0F, 0xEE, 0x02, 0x00, 0x0E, -/* 0000A950 */ 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0x27, -/* 0000A960 */ 0x02, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x58, +/* 0000A950 */ 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x2A, +/* 0000A960 */ 0x02, 0xFE, 0xFB, 0x01, 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x58, /* 0000A970 */ 0x00, 0x2A, 0x00, 0x7B, 0x00, 0x25, 0x00, 0x3F, 0x00, 0x2F, 0x00, 0x58, 0x00, 0x26, 0x00, 0x8F, -/* 0000A980 */ 0x00, 0x5A, 0x00, 0x56, 0x00, 0x00, 0x3F, 0x7E, 0x21, 0x0B, 0x0F, 0xFD, 0x07, 0xFE, 0x53, 0x03, +/* 0000A980 */ 0x00, 0x5A, 0x00, 0x56, 0x00, 0x00, 0x3F, 0x7E, 0x21, 0x0B, 0x0F, 0xFD, 0x07, 0xFE, 0x56, 0x03, /* 0000A990 */ 0xFE, 0x94, 0x02, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x2C, 0x00, 0xFE, 0x9C, 0x7A, 0xFF, 0x00, /* 0000A9A0 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x9C, 0x7A, 0xFE, 0x34, 0x19, 0xFE, 0x34, 0x19, 0x18, 0x23, /* 0000A9B0 */ 0x37, 0x07, 0xFE, 0x83, 0x01, 0xFE, 0x5E, 0x01, 0x03, 0x04, 0x22, 0x10, 0x45, 0x1E, 0x1E, 0x1E, /* 0000A9C0 */ 0x1E, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A9D0 */ 0xFF, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, -/* 0000A9E0 */ 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0x0A, -/* 0000A9F0 */ 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, -/* 0000AA00 */ 0x16, 0x03, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, -/* 0000AA10 */ 0x49, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x56, 0x03, 0x02, -/* 0000AA20 */ 0xFE, 0x57, 0x03, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0x4B, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, -/* 0000AA30 */ 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, -/* 0000AA40 */ 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x14, 0x00, -/* 0000AA50 */ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, +/* 0000A9E0 */ 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC6, 0x02, 0x08, 0x02, 0xFE, 0x0D, +/* 0000A9F0 */ 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, +/* 0000AA00 */ 0x19, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, +/* 0000AA10 */ 0x4C, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x59, 0x03, 0x02, +/* 0000AA20 */ 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0x4E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, +/* 0000AA30 */ 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, +/* 0000AA40 */ 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x01, 0x14, 0x00, +/* 0000AA50 */ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x50, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, /* 0000AA60 */ 0xFE, 0x78, 0x06, 0x2C, 0x38, 0x23, 0x0D, 0x03, 0x00, 0x38, 0x02, 0x09, 0x1C, 0x00, 0x8F, 0x03, /* 0000AA70 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x6D, 0x38, 0x39, 0x00, 0x07, 0x01, /* 0000AA80 */ 0x00, 0x5C, 0x00, 0x39, 0xF6, 0x01, 0xFF, 0x38, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0A, @@ -4243,13 +4243,13 @@ namespace Js /* 0000B0A0 */ 0x23, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x39, 0x01, 0x00, 0x07, 0x03, 0x00, /* 0000B0B0 */ 0x5C, 0x00, 0x04, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3A, 0x0F, 0x00, 0x5C, /* 0000B0C0 */ 0x01, 0x3A, 0x62, 0x3A, 0x23, 0x1B, 0x5C, 0x02, 0x3A, 0xF6, 0x03, 0x39, 0x39, 0x21, 0x00, 0x77, -/* 0000B0D0 */ 0x39, 0x38, 0x1C, 0x77, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, -/* 0000B0E0 */ 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xD9, 0x01, 0xFE, -/* 0000B0F0 */ 0xDA, 0x01, 0xFE, 0x33, 0x02, 0xFE, 0x34, 0x02, 0xFE, 0xFB, 0x01, 0xF9, 0xFE, 0x59, 0x03, 0xFE, -/* 0000B100 */ 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x45, 0x02, 0xFE, 0xDF, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0xE1, -/* 0000B110 */ 0x01, 0xFE, 0xD6, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, -/* 0000B120 */ 0xFE, 0xDE, 0x01, 0xFE, 0xDC, 0x01, 0xFE, 0xF9, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0xDD, 0x01, 0xFE, -/* 0000B130 */ 0xDD, 0x01, 0xFE, 0x36, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 0000B0D0 */ 0x39, 0x38, 0x1C, 0x77, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, +/* 0000B0E0 */ 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xDC, 0x01, 0xFE, +/* 0000B0F0 */ 0xDD, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x37, 0x02, 0xFE, 0xFE, 0x01, 0xFC, 0xFE, 0x5C, 0x03, 0xFE, +/* 0000B100 */ 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x48, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xE4, +/* 0000B110 */ 0x01, 0xFE, 0xD9, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, 0xFE, 0xDA, 0x01, 0xFE, 0xDB, 0x01, +/* 0000B120 */ 0xFE, 0xE1, 0x01, 0xFE, 0xDF, 0x01, 0xFE, 0xFC, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0xE0, 0x01, 0xFE, +/* 0000B130 */ 0xE0, 0x01, 0xFE, 0x39, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 0000B140 */ 0x3C, 0x00, 0x1C, 0x00, 0x42, 0x00, 0x3F, 0x00, 0x9C, 0x00, 0x22, 0x00, 0x6E, 0x00, 0x04, 0x00, /* 0000B150 */ 0x64, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x26, 0x00, 0x51, 0x00, 0x22, 0x00, 0x4C, 0x00, 0x37, 0x00, /* 0000B160 */ 0x72, 0x00, 0x3B, 0x00, 0x73, 0x00, 0x03, 0x00, 0x2B, 0x00, 0x2E, 0x00, 0x60, 0x00, 0x3B, 0x00, @@ -4273,11 +4273,11 @@ namespace Js /* 0000B280 */ 0x01, 0xFE, 0xA2, 0x49, 0xFE, 0x43, 0x30, 0xFE, 0x43, 0x30, 0x0B, 0x17, 0x1B, 0x09, 0x99, 0x99, /* 0000B290 */ 0x01, 0x0C, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B2A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0xFF, -/* 0000B2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x1D, 0x03, 0x02, 0xFE, -/* 0000B2C0 */ 0x1E, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1F, 0x03, 0x02, 0xFE, 0x20, 0x03, -/* 0000B2D0 */ 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC2, -/* 0000B2E0 */ 0x02, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, -/* 0000B2F0 */ 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, 0xFE, +/* 0000B2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x20, 0x03, 0x02, 0xFE, +/* 0000B2C0 */ 0x21, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, 0x03, +/* 0000B2D0 */ 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC5, +/* 0000B2E0 */ 0x02, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, +/* 0000B2F0 */ 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x27, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x29, 0x03, 0xFE, /* 0000B300 */ 0x8A, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 0000B310 */ 0x00, 0x1D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x1D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 0000B320 */ 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, @@ -4335,17 +4335,17 @@ namespace Js /* 0000B660 */ 0x1F, 0x1E, 0x06, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, /* 0000B670 */ 0xFF, 0x1D, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000B680 */ 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, -/* 0000B690 */ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, -/* 0000B6A0 */ 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 0000B6B0 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 0000B6C0 */ 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 0000B6D0 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, -/* 0000B6E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, -/* 0000B6F0 */ 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, -/* 0000B700 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, -/* 0000B710 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, -/* 0000B720 */ 0xFE, 0x7C, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x27, 0x03, -/* 0000B730 */ 0x02, 0x02, 0x00, 0xFE, 0xE4, 0x01, 0x01, 0xFE, 0xE9, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, +/* 0000B690 */ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, +/* 0000B6A0 */ 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, +/* 0000B6B0 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 0000B6C0 */ 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 0000B6D0 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, +/* 0000B6E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, +/* 0000B6F0 */ 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0000B700 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, +/* 0000B710 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, +/* 0000B720 */ 0xFE, 0x7F, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x2A, 0x03, +/* 0000B730 */ 0x02, 0x02, 0x00, 0xFE, 0xE7, 0x01, 0x01, 0xFE, 0xEC, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, /* 0000B740 */ 0x00, 0x00, 0x42, 0x00, 0x09, 0x17, 0x54, 0x00, 0x48, 0x04, 0x48, 0x00, 0xC4, 0x05, 0x2C, 0x00, /* 0000B750 */ 0x41, 0x00, 0x2C, 0x00, 0x67, 0x03, 0x54, 0x00, 0x95, 0x00, 0x61, 0x00, 0x92, 0x00, 0x3E, 0x00, /* 0000B760 */ 0x47, 0x00, 0x5C, 0x00, 0x98, 0x00, 0x68, 0x00, 0xBD, 0x05, 0x7F, 0x00, 0x12, 0x03, 0x0F, 0x00, @@ -4356,8 +4356,8 @@ namespace Js /* 0000B7B0 */ 0xFE, 0xAC, 0x76, 0xFE, 0x50, 0x02, 0xFE, 0x50, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x03, /* 0000B7C0 */ 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B7D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B7E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, -/* 0000B7F0 */ 0x02, 0xFE, 0xBF, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, +/* 0000B7E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, +/* 0000B7F0 */ 0x02, 0xFE, 0xC2, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, /* 0000B800 */ 0x08, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, /* 0000B810 */ 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, /* 0000B820 */ 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, @@ -4368,17 +4368,17 @@ namespace Js /* 0000B870 */ 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, /* 0000B880 */ 0x5D, 0x01, 0x03, 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, /* 0000B890 */ 0x00, 0x00, 0x02, 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 0000B8A0 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0xD3, +/* 0000B8A0 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x45, 0x02, 0x00, 0xFE, 0xD3, /* 0000B8B0 */ 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x80, 0x00, 0x26, 0x00, /* 0000B8C0 */ 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, 0x2A, 0x00, 0x80, 0x00, 0x09, 0x00, 0x39, 0x00, 0x00, 0x3F, -/* 0000B8D0 */ 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x23, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, +/* 0000B8D0 */ 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x26, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, /* 0000B8E0 */ 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, 0x70, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xD8, /* 0000B8F0 */ 0x70, 0xFE, 0x03, 0x05, 0xFE, 0x03, 0x05, 0x05, 0x0D, 0x10, 0x04, 0x33, 0x32, 0x03, 0x03, 0x01, /* 0000B900 */ 0x09, 0x11, 0x11, 0x11, 0x11, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B910 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x42, 0x03, 0x02, -/* 0000B930 */ 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, -/* 0000B940 */ 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x3B, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, +/* 0000B920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x45, 0x03, 0x02, +/* 0000B930 */ 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, +/* 0000B940 */ 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x3E, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, /* 0000B950 */ 0xEB, 0x5B, 0x0D, 0xB4, 0x0D, 0x0D, 0x2C, 0x10, 0x0D, 0x15, 0x03, 0x00, 0x10, 0x02, 0x09, 0x2A, /* 0000B960 */ 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x6D, 0x10, 0x11, /* 0000B970 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x11, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, @@ -4394,20 +4394,20 @@ namespace Js /* 0000BA10 */ 0x07, 0x7B, 0x10, 0x00, 0x08, 0x62, 0x10, 0x0E, 0x09, 0x7B, 0x10, 0x00, 0x0A, 0x62, 0x10, 0x0E, /* 0000BA20 */ 0x0B, 0x7B, 0x10, 0x00, 0x0C, 0x62, 0x10, 0x0E, 0x0D, 0x7B, 0x10, 0x00, 0x0E, 0x62, 0x10, 0x0E, /* 0000BA30 */ 0x0F, 0x7B, 0x10, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x24, 0x00, 0x00, -/* 0000BA40 */ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x29, -/* 0000BA50 */ 0x03, 0x00, 0x00, 0xEB, 0x01, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0xEC, -/* 0000BA60 */ 0x01, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, -/* 0000BA70 */ 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x3B, 0x02, 0xFE, 0x29, 0x03, 0xFE, 0x3C, 0x02, -/* 0000BA80 */ 0xFE, 0xEB, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0x3B, 0x03, 0xFE, -/* 0000BA90 */ 0x3F, 0x02, 0xFE, 0xEC, 0x01, 0xFE, 0x3E, 0x02, 0xFE, 0x32, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, +/* 0000BA40 */ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x2C, +/* 0000BA50 */ 0x03, 0x00, 0x00, 0xEE, 0x01, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x00, 0xEF, +/* 0000BA60 */ 0x01, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, +/* 0000BA70 */ 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, 0xFE, 0x3E, 0x02, 0xFE, 0x2C, 0x03, 0xFE, 0x3F, 0x02, +/* 0000BA80 */ 0xFE, 0xEE, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0xF0, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x3E, 0x03, 0xFE, +/* 0000BA90 */ 0x42, 0x02, 0xFE, 0xEF, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x35, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, /* 0000BAA0 */ 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x86, 0x00, 0x26, 0x00, 0x4C, 0x00, /* 0000BAB0 */ 0x15, 0x00, 0x66, 0x00, 0x2A, 0x00, 0x88, 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x11, -/* 0000BAC0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x24, 0x03, 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 0000BAC0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x27, 0x03, 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 0000BAD0 */ 0x28, 0x00, 0xFE, 0x63, 0x6B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x63, 0x6B, 0xFE, /* 0000BAE0 */ 0x01, 0x03, 0xFE, 0x01, 0x03, 0x09, 0x06, 0x0B, 0x0B, 0x44, 0x41, 0x03, 0x07, 0x03, 0x09, 0x08, /* 0000BAF0 */ 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BB00 */ 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000BB10 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, +/* 0000BB10 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, /* 0000BB20 */ 0x04, 0xFE, 0x3F, 0x01, 0x5B, 0x08, 0xB4, 0x08, 0x08, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, /* 0000BB30 */ 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, /* 0000BB40 */ 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, @@ -4428,18 +4428,18 @@ namespace Js /* 0000BC30 */ 0x04, 0x5C, 0x03, 0x0E, 0x62, 0x0E, 0x09, 0x05, 0x5C, 0x04, 0x0E, 0x62, 0x0E, 0x09, 0x06, 0x5C, /* 0000BC40 */ 0x05, 0x0E, 0x62, 0x0E, 0x09, 0x07, 0x5C, 0x06, 0x0E, 0xF2, 0x07, 0x0C, 0x0C, 0x03, 0x00, 0x00, /* 0000BC50 */ 0x00, 0x06, 0x00, 0x5C, 0x01, 0x0C, 0xEE, 0x02, 0x00, 0x0B, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, -/* 0000BC60 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0xF3, -/* 0000BC70 */ 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x91, +/* 0000BC60 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xF6, +/* 0000BC70 */ 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x91, /* 0000BC80 */ 0x6B, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x2A, 0x00, 0x78, 0x00, 0x26, 0x00, /* 0000BC90 */ 0x48, 0x00, 0x15, 0x00, 0x62, 0x00, 0x2A, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x24, 0x00, 0x1E, 0x00, -/* 0000BCA0 */ 0x26, 0x00, 0x62, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xBF, +/* 0000BCA0 */ 0x26, 0x00, 0x62, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC2, /* 0000BCB0 */ 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, 0xFE, 0x3A, 0x65, 0xFF, /* 0000BCC0 */ 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x3A, 0x65, 0xFE, 0x84, 0x05, 0xFE, 0x84, 0x05, 0x0A, /* 0000BCD0 */ 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x03, 0x02, 0x09, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, 0xFF, /* 0000BCE0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, /* 0000BCF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, /* 0000BD00 */ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, -/* 0000BD10 */ 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, +/* 0000BD10 */ 0x02, 0xFE, 0xC2, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, /* 0000BD20 */ 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, /* 0000BD30 */ 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, 0x08, 0x0F, 0x62, 0x0F, 0x0A, /* 0000BD40 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x03, 0x01, 0x00, 0x47, @@ -4467,9 +4467,9 @@ namespace Js /* 0000BEA0 */ 0x00, 0x10, 0x06, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x1E, /* 0000BEB0 */ 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000BEC0 */ 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0xEE, 0x04, 0x10, -/* 0000BED0 */ 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, 0x01, +/* 0000BED0 */ 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, 0x01, /* 0000BEE0 */ 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, -/* 0000BEF0 */ 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x42, 0x02, 0xFE, 0x42, +/* 0000BEF0 */ 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x45, 0x02, 0xFE, 0x45, /* 0000BF00 */ 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, /* 0000BF10 */ 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, /* 0000BF20 */ 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, 0x55, 0x00, 0x26, 0x00, 0x38, 0x00, 0x22, @@ -4481,7 +4481,7 @@ namespace Js /* 0000BF80 */ 0xDD, 0x03, 0x0A, 0x08, 0x0E, 0x0B, 0x4F, 0x4B, 0x02, 0x03, 0x08, 0x05, 0x0B, 0x07, 0x07, 0x07, /* 0000BF90 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BFA0 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000BFB0 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x01, 0x00, +/* 0000BFB0 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x21, 0x03, 0x04, 0x01, 0x01, 0x00, /* 0000BFC0 */ 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x66, 0x01, 0x5B, 0x0A, 0xB4, 0x0A, 0x0A, 0xAE, /* 0000BFD0 */ 0x08, 0xA8, 0x0C, 0x98, 0x0E, 0x08, 0x03, 0x00, 0x00, 0x47, 0x09, 0x0E, 0xA8, 0x0E, 0x14, 0x0B, /* 0000BFE0 */ 0x00, 0x0A, 0x0E, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x0A, 0x02, 0x09, 0x28, 0x00, 0x8F, 0x02, @@ -4505,23 +4505,23 @@ namespace Js /* 0000C100 */ 0x11, 0x62, 0x11, 0x0C, 0x04, 0x5C, 0x04, 0x11, 0x62, 0x11, 0x0C, 0x05, 0x5C, 0x05, 0x11, 0x62, /* 0000C110 */ 0x11, 0x0C, 0x06, 0x5C, 0x06, 0x11, 0xF2, 0x07, 0x0F, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, /* 0000C120 */ 0x5C, 0x01, 0x0F, 0xEE, 0x02, 0x00, 0x0E, 0x06, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000C130 */ 0x00, 0x00, 0xFE, 0x22, 0x02, 0xFE, 0x20, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, -/* 0000C140 */ 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, +/* 0000C130 */ 0x00, 0x00, 0xFE, 0x25, 0x02, 0xFE, 0x23, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, +/* 0000C140 */ 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, /* 0000C150 */ 0x09, 0x00, 0x2E, 0x00, 0x12, 0x00, 0x44, 0x00, 0x28, 0x00, 0x77, 0x00, 0x08, 0x00, 0x2E, 0x00, /* 0000C160 */ 0x20, 0x00, 0xF1, 0x00, 0x1E, 0x00, 0x31, 0x00, 0x1E, 0x00, 0x2E, 0x00, 0x23, 0x00, 0x46, 0x00, /* 0000C170 */ 0x2F, 0x00, 0x52, 0x00, 0x62, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x25, 0x0B, 0x0F, 0xFD, 0x0F, -/* 0000C180 */ 0xFE, 0x27, 0x03, 0xFE, 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, +/* 0000C180 */ 0xFE, 0x2A, 0x03, 0xFE, 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, /* 0000C190 */ 0x49, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xFE, 0x49, 0xFE, 0xB6, 0x16, 0xFE, /* 0000C1A0 */ 0xB6, 0x16, 0x03, 0x15, 0x24, 0x35, 0x08, 0xFE, 0x0B, 0x01, 0xFA, 0x02, 0x02, 0x05, 0x12, 0x0F, /* 0000C1B0 */ 0x44, 0x14, 0x14, 0x14, 0x14, 0x01, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x34, 0xFF, 0xFF, -/* 0000C1C0 */ 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 0000C1D0 */ 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xBF, 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, -/* 0000C1E0 */ 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, -/* 0000C1F0 */ 0x29, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, -/* 0000C200 */ 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, -/* 0000C210 */ 0x31, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x09, 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, -/* 0000C220 */ 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, -/* 0000C230 */ 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x01, +/* 0000C1C0 */ 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 0000C1D0 */ 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC2, 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, +/* 0000C1E0 */ 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, +/* 0000C1F0 */ 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, +/* 0000C200 */ 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, +/* 0000C210 */ 0x34, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x09, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, +/* 0000C220 */ 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, +/* 0000C230 */ 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3B, 0x03, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x01, /* 0000C240 */ 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8C, 0x04, 0xA8, 0x2F, 0xA8, 0x30, /* 0000C250 */ 0xA8, 0x31, 0x2C, 0x36, 0x24, 0x0D, 0x03, 0x00, 0x36, 0x02, 0x09, 0x1C, 0x00, 0x8F, 0x02, 0x00, /* 0000C260 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x6D, 0x36, 0x37, 0x00, 0x07, 0x01, 0x00, @@ -4595,11 +4595,11 @@ namespace Js /* 0000C6A0 */ 0x77, 0x29, 0x24, 0x0D, 0x77, 0x2A, 0x24, 0x0E, 0x77, 0x2B, 0x24, 0x0F, 0x93, 0x02, 0x00, 0x00, /* 0000C6B0 */ 0x00, 0x36, 0x0C, 0x00, 0x77, 0x36, 0x24, 0x10, 0x93, 0x03, 0x00, 0x00, 0x00, 0x36, 0x0E, 0x00, /* 0000C6C0 */ 0x77, 0x36, 0x24, 0x11, 0x93, 0x04, 0x00, 0x00, 0x00, 0x36, 0x0A, 0x00, 0x77, 0x36, 0x24, 0x12, -/* 0000C6D0 */ 0x77, 0x06, 0x24, 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, -/* 0000C6E0 */ 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x38, 0x02, 0xFE, -/* 0000C6F0 */ 0x04, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0x3A, -/* 0000C700 */ 0x02, 0xFE, 0x3B, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, -/* 0000C710 */ 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0xEC, 0x01, 0xFE, 0x3B, 0x03, 0x00, +/* 0000C6D0 */ 0x77, 0x06, 0x24, 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, +/* 0000C6E0 */ 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xF7, 0x01, 0xFE, 0x3B, 0x02, 0xFE, +/* 0000C6F0 */ 0x07, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0x3D, +/* 0000C700 */ 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, +/* 0000C710 */ 0xFE, 0x43, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0xEF, 0x01, 0xFE, 0x3E, 0x03, 0x00, /* 0000C720 */ 0xFE, 0x4C, 0x4A, 0x35, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x42, 0x00, /* 0000C730 */ 0x3F, 0x00, 0x94, 0x00, 0x22, 0x00, 0x68, 0x00, 0x04, 0x00, 0x60, 0x00, 0x0B, 0x00, 0x3B, 0x00, /* 0000C740 */ 0x26, 0x00, 0x51, 0x00, 0x22, 0x00, 0x4C, 0x00, 0x37, 0x00, 0x72, 0x00, 0x37, 0x00, 0x60, 0x00, @@ -4620,10 +4620,10 @@ namespace Js /* 0000C830 */ 0x01, 0x08, 0x41, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C840 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C850 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, -/* 0000C860 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x32, 0x03, -/* 0000C870 */ 0x03, 0x04, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, -/* 0000C880 */ 0x35, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x02, 0xFE, 0x3E, 0x03, 0x08, 0x02, 0xFE, 0x3F, 0x03, 0x02, -/* 0000C890 */ 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x40, 0x03, 0xFE, +/* 0000C860 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x35, 0x03, +/* 0000C870 */ 0x03, 0x04, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, +/* 0000C880 */ 0x38, 0x03, 0x02, 0xFE, 0x40, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x08, 0x02, 0xFE, 0x42, 0x03, 0x02, +/* 0000C890 */ 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x43, 0x03, 0xFE, /* 0000C8A0 */ 0xC4, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x6D, 0x1A, /* 0000C8B0 */ 0x1B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1B, 0x5C, 0x01, 0x15, 0xE0, 0x1C, 0x00, 0x5C, 0x02, /* 0000C8C0 */ 0x1C, 0xF2, 0x03, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x16, 0x1A, 0x98, 0x1A, @@ -4653,18 +4653,18 @@ namespace Js /* 0000CA40 */ 0x15, 0x03, 0x00, 0x18, 0x12, 0x09, 0x1A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x13, 0x09, 0x12, 0x00, /* 0000CA50 */ 0x15, 0x03, 0x00, 0x18, 0x14, 0x09, 0x0A, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, /* 0000CA60 */ 0x00, 0x18, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, -/* 0000CA70 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0x32, 0x03, -/* 0000CA80 */ 0xFE, 0x25, 0x02, 0x00, 0x0E, 0xFE, 0xFB, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, +/* 0000CA70 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0x35, 0x03, +/* 0000CA80 */ 0xFE, 0x28, 0x02, 0x00, 0x0E, 0xFE, 0xFE, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, /* 0000CA90 */ 0x00, 0x2C, 0x00, 0x83, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x22, 0x00, 0x4D, 0x00, 0x1E, 0x00, 0x4C, /* 0000CAA0 */ 0x00, 0x7C, 0x00, 0xA0, 0x00, 0x1E, 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x3C, 0x00, 0x5E, 0x00, 0xAB, /* 0000CAB0 */ 0x00, 0x0D, 0x00, 0x4F, 0x00, 0x32, 0x00, 0x01, 0x01, 0x0C, 0x00, 0x43, 0x00, 0x00, 0x3F, 0x7E, -/* 0000CAC0 */ 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xEF, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, +/* 0000CAC0 */ 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xF2, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, /* 0000CAD0 */ 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x41, 0x47, /* 0000CAE0 */ 0xFE, 0x12, 0x02, 0xFE, 0x12, 0x02, 0x0A, 0x05, 0x0B, 0x06, 0x29, 0x22, 0x01, 0x04, 0x02, 0x02, /* 0000CAF0 */ 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CB00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CB10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, -/* 0000CB20 */ 0x00, 0x02, 0xFE, 0x1B, 0x03, 0xB2, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, +/* 0000CB20 */ 0x00, 0x02, 0xFE, 0x1E, 0x03, 0xB2, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, /* 0000CB30 */ 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x8F, 0x01, 0x00, 0x00, /* 0000CB40 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x6D, 0x0D, 0x0E, 0x01, 0x07, 0x01, 0x00, 0x5C, /* 0000CB50 */ 0x00, 0x0E, 0xF2, 0x01, 0x0D, 0x0D, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5C, 0x01, 0x0D, 0xE0, @@ -4675,8 +4675,8 @@ namespace Js /* 0000CBA0 */ 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x08, 0x0B, 0x09, 0x06, 0x00, 0x47, 0x00, 0x06, /* 0000CBB0 */ 0x09, 0x23, 0x00, 0x98, 0x0B, 0x08, 0x07, 0x03, 0x00, 0x47, 0x09, 0x0B, 0xA8, 0x0B, 0x15, 0x03, /* 0000CBC0 */ 0x00, 0x09, 0x0B, 0x09, 0x08, 0x00, 0xFB, 0x00, 0x06, 0x04, 0x09, 0x09, 0x08, 0x00, 0x47, 0x00, -/* 0000CBD0 */ 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0xF6, 0x01, -/* 0000CBE0 */ 0x00, 0x0E, 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, +/* 0000CBD0 */ 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0xF9, 0x01, +/* 0000CBE0 */ 0x00, 0x0E, 0xFE, 0x1F, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, /* 0000CBF0 */ 0x60, 0x00, 0x09, 0x00, 0x20, 0x00, 0x09, 0x00, 0x23, 0x00, 0x15, 0x00, 0x51, 0x00, 0x14, 0x00, /* 0000CC00 */ 0x41, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x09, 0x00, 0x33, 0x00, 0x0A, 0x00, 0x29, 0x00, 0x08, 0x00, /* 0000CC10 */ 0x39, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x02, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, @@ -4693,7 +4693,7 @@ namespace Js /* 0000CCC0 */ 0x5C, 0x00, 0x03, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x5C, /* 0000CCD0 */ 0x01, 0x09, 0xEE, 0x02, 0x08, 0x08, 0x02, 0x00, 0x5C, 0x02, 0x08, 0xD4, 0x00, 0x00, 0x00, 0x00, /* 0000CCE0 */ 0x08, 0x5C, 0x03, 0x08, 0xEE, 0x04, 0xFF, 0x07, 0x01, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000CCF0 */ 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x19, 0x03, 0x00, 0xFE, +/* 0000CCF0 */ 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x1C, 0x03, 0x00, 0xFE, /* 0000CD00 */ 0x7A, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x00, 0x5A, 0x00, 0x5A, 0x02, 0x0D, /* 0000CD10 */ 0x00, 0x16, 0x00, 0x00, 0x18, 0xCD, 0x00, 0x00, 0xBF, 0x7E, 0x1D, 0x0A, 0x00, 0xFC, 0x0F, 0xFF, /* 0000CD20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8A, 0x01, 0x6B, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x20, 0x00, 0xFE, @@ -4712,14 +4712,14 @@ namespace Js /* 0000CDF0 */ 0x5C, 0x02, 0x09, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x03, 0x09, 0xEE, 0x04, 0xFF, 0x08, /* 0000CE00 */ 0x01, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, 0x00, 0x93, 0x03, /* 0000CE10 */ 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0x9D, 0x09, 0x08, 0x04, 0x00, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000CE20 */ 0x00, 0x00, 0xFE, 0x74, 0x01, 0xFE, 0x1A, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, +/* 0000CE20 */ 0x00, 0x00, 0xFE, 0x77, 0x01, 0xFE, 0x1D, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, /* 0000CE30 */ 0x00, 0x18, 0x00, 0x43, 0x00, 0x28, 0x00, 0x37, 0x00, 0x56, 0x00, 0x28, 0x01, 0x1C, 0x00, 0x27, /* 0000CE40 */ 0x00, 0x00, 0x46, 0xCE, 0x00, 0x00, 0x3F, 0x6E, 0x0D, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, /* 0000CE50 */ 0xFF, 0xFF, 0xFE, 0x8E, 0x01, 0x56, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x21, 0x00, 0xFE, 0xF2, 0x45, /* 0000CE60 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xF2, 0x45, 0xCC, 0xCC, 0x04, 0x03, 0x06, 0x0A, /* 0000CE70 */ 0x09, 0x03, 0x01, 0x01, 0x02, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CE80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000CE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB8, 0x02, 0x33, 0x8F, 0x01, 0x00, 0x00, +/* 0000CE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBB, 0x02, 0x33, 0x8F, 0x01, 0x00, 0x00, /* 0000CEA0 */ 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x98, 0x06, 0x06, 0x03, 0x00, 0x00, 0x47, 0x04, /* 0000CEB0 */ 0x06, 0x15, 0x03, 0x00, 0x04, 0x02, 0x09, 0x12, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000CEC0 */ 0x00, 0x00, 0x06, 0x01, 0x00, 0x9D, 0x03, 0x06, 0x04, 0x00, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, @@ -4765,13 +4765,13 @@ namespace Js /* 0000D140 */ 0x0C, 0x5C, 0x03, 0x06, 0x5C, 0x04, 0x08, 0xEE, 0x05, 0x00, 0x0B, 0x00, 0x00, 0x09, 0x02, 0x00, /* 0000D150 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFE, 0xDE, 0x34, 0x03, 0x07, 0x00, 0x00, 0x00, /* 0000D160 */ 0x20, 0x00, 0x4A, 0x00, 0x35, 0x00, 0x61, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, -/* 0000D170 */ 0xFE, 0xA7, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, 0x00, 0xFE, 0x5D, +/* 0000D170 */ 0xFE, 0xAA, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, 0x00, 0xFE, 0x5D, /* 0000D180 */ 0x2F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x5D, 0x2F, 0xFE, 0x7E, 0x03, 0xFE, 0x7E, /* 0000D190 */ 0x03, 0x08, 0x08, 0x0C, 0x0A, 0x51, 0x4E, 0x01, 0x09, 0x07, 0x01, 0x05, 0x05, 0x05, 0x05, 0xFF, /* 0000D1A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, /* 0000D1B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000D1C0 */ 0x04, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0x17, -/* 0000D1D0 */ 0x03, 0x02, 0xFE, 0x18, 0x03, 0xFE, 0x8C, 0x01, 0xA8, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, +/* 0000D1C0 */ 0x04, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0x1A, +/* 0000D1D0 */ 0x03, 0x02, 0xFE, 0x1B, 0x03, 0xFE, 0x8C, 0x01, 0xA8, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, /* 0000D1E0 */ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x08, 0xEE, /* 0000D1F0 */ 0x02, 0x0C, 0x0C, 0x00, 0x00, 0x47, 0x08, 0x0C, 0x2C, 0x0C, 0x09, 0x15, 0x03, 0x00, 0x0C, 0x03, /* 0000D200 */ 0x09, 0x90, 0x00, 0x62, 0x0C, 0x09, 0x00, 0x47, 0x0A, 0x0C, 0x2C, 0x0C, 0x0A, 0x15, 0x03, 0x00, @@ -4796,17 +4796,17 @@ namespace Js /* 0000D330 */ 0x00, 0x00, 0x0D, 0x02, 0x00, 0x62, 0x0D, 0x0D, 0x04, 0x5C, 0x02, 0x0D, 0x8F, 0x01, 0x00, 0x00, /* 0000D340 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0D, 0x06, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x02, 0xEE, 0x01, /* 0000D350 */ 0x0D, 0x0D, 0x08, 0x00, 0x5C, 0x03, 0x0D, 0xEE, 0x04, 0x00, 0x0C, 0x07, 0x00, 0x09, 0x02, 0x00, -/* 0000D360 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2D, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x28, 0x02, 0xFE, -/* 0000D370 */ 0xF2, 0x01, 0xFE, 0xF4, 0x01, 0x00, 0xFE, 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, +/* 0000D360 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x30, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2B, 0x02, 0xFE, +/* 0000D370 */ 0xF5, 0x01, 0xFE, 0xF7, 0x01, 0x00, 0xFE, 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, /* 0000D380 */ 0x36, 0x00, 0x0B, 0x00, 0x33, 0x00, 0x07, 0x00, 0x30, 0x00, 0x0B, 0x00, 0x37, 0x00, 0x26, 0x00, /* 0000D390 */ 0x39, 0x00, 0x10, 0x00, 0x4B, 0x00, 0x48, 0x00, 0x9B, 0x00, 0x13, 0x00, 0x4D, 0x00, 0x6E, 0x00, -/* 0000D3A0 */ 0x95, 0x00, 0x4E, 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE6, +/* 0000D3A0 */ 0x95, 0x00, 0x4E, 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE9, /* 0000D3B0 */ 0x02, 0xFE, 0x25, 0x01, 0x24, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1A, 0x00, 0xFE, 0x60, 0x2D, 0xFF, /* 0000D3C0 */ 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0x60, 0x2D, 0xFE, 0xB2, 0x01, 0xFE, 0xB2, 0x01, 0x08, /* 0000D3D0 */ 0x05, 0x0B, 0x04, 0x28, 0x27, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, /* 0000D3E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, /* 0000D3F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, -/* 0000D400 */ 0xFE, 0xA3, 0x02, 0x04, 0xB9, 0x14, 0x0D, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, +/* 0000D400 */ 0xFE, 0xA6, 0x02, 0x04, 0xB9, 0x14, 0x0D, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, /* 0000D410 */ 0x03, 0x00, 0x05, 0x0B, 0x09, 0x23, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 0000D420 */ 0x0C, 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x06, /* 0000D430 */ 0xF2, 0x02, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, @@ -4818,16 +4818,16 @@ namespace Js /* 0000D490 */ 0x02, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, /* 0000D4A0 */ 0x00, 0x00, 0x0B, 0x01, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x07, 0x5C, 0x02, /* 0000D4B0 */ 0x08, 0xEE, 0x03, 0x00, 0x0B, 0x03, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000D4C0 */ 0xFE, 0x23, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x2C, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, +/* 0000D4C0 */ 0xFE, 0x26, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x2F, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, /* 0000D4D0 */ 0x00, 0x00, 0x12, 0x00, 0x38, 0x00, 0x23, 0x00, 0x43, 0x00, 0x26, 0x00, 0x39, 0x00, 0x16, 0x00, /* 0000D4E0 */ 0x4D, 0x00, 0x23, 0x00, 0x43, 0x00, 0x23, 0x00, 0x32, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x4F, -/* 0000D4F0 */ 0xFC, 0x0F, 0xFE, 0xC9, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x18, 0x00, +/* 0000D4F0 */ 0xFC, 0x0F, 0xFE, 0xCC, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x18, 0x00, /* 0000D500 */ 0xFE, 0xB8, 0x29, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xB8, 0x29, 0xFE, 0x80, /* 0000D510 */ 0x03, 0xFE, 0x80, 0x03, 0x04, 0x09, 0x0A, 0x10, 0x05, 0x20, 0x20, 0x01, 0x02, 0x01, 0x05, 0x03, /* 0000D520 */ 0x03, 0x03, 0x03, 0x01, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D530 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, -/* 0000D540 */ 0x00, 0x00, 0x04, 0x02, 0xFE, 0x11, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, -/* 0000D550 */ 0x02, 0xFE, 0xC2, 0x02, 0x03, 0xAB, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, 0x05, 0x00, 0x00, +/* 0000D540 */ 0x00, 0x00, 0x04, 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, +/* 0000D550 */ 0x02, 0xFE, 0xC5, 0x02, 0x03, 0xAB, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, 0x05, 0x00, 0x00, /* 0000D560 */ 0x00, 0x0C, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x10, 0x96, 0x03, 0x00, /* 0000D570 */ 0x00, 0x00, 0x02, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, /* 0000D580 */ 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x11, 0x01, @@ -4839,17 +4839,17 @@ namespace Js /* 0000D5E0 */ 0x00, 0x7B, 0x07, 0x11, 0x01, 0x7B, 0x07, 0x11, 0x02, 0x5C, 0x03, 0x11, 0xEE, 0x04, 0xFF, 0x10, /* 0000D5F0 */ 0x01, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, /* 0000D600 */ 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000D610 */ 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x01, -/* 0000D620 */ 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x12, 0x03, 0xFE, 0x13, 0x03, 0xFE, 0x14, 0x03, 0xFE, -/* 0000D630 */ 0x15, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x06, +/* 0000D610 */ 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x82, 0x01, +/* 0000D620 */ 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x15, 0x03, 0xFE, 0x16, 0x03, 0xFE, 0x17, 0x03, 0xFE, +/* 0000D630 */ 0x18, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x06, /* 0000D640 */ 0x00, 0x18, 0x00, 0x33, 0x00, 0x7C, 0x02, 0x4C, 0x00, 0x69, 0x00, 0x0D, 0x00, 0x14, 0x00, 0x00, /* 0000D650 */ 0x54, 0xD6, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0B, 0x4F, 0xFD, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D660 */ 0xFE, 0x15, 0x01, 0x41, 0xFF, 0xB2, 0x41, 0x11, 0x00, 0x19, 0x00, 0xFE, 0x77, 0x2A, 0xFF, 0x00, /* 0000D670 */ 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x77, 0x2A, 0xFE, 0x37, 0x02, 0xFE, 0x37, 0x02, 0x08, 0x0B, /* 0000D680 */ 0x0F, 0x06, 0x30, 0x2F, 0x02, 0x03, 0x07, 0x45, 0x05, 0x05, 0x05, 0x05, 0x01, 0x01, 0xFF, 0xFF, /* 0000D690 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, -/* 0000D6A0 */ 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xA6, 0x02, -/* 0000D6B0 */ 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC1, 0x02, 0x08, 0x03, 0x01, +/* 0000D6A0 */ 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xA9, 0x02, +/* 0000D6B0 */ 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0xC4, 0x02, 0x08, 0x03, 0x01, /* 0000D6C0 */ 0x01, 0x00, 0x00, 0x00, 0xEC, 0xA8, 0x0D, 0xE5, 0xC4, 0x00, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x2A, /* 0000D6D0 */ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x05, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x0B, 0x8F, /* 0000D6E0 */ 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x5C, 0x02, 0x11, 0xA8, 0x11, @@ -4866,16 +4866,16 @@ namespace Js /* 0000D790 */ 0x06, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x07, 0x02, 0x00, /* 0000D7A0 */ 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x0C, 0xF6, 0x02, 0xFF, 0x10, 0x02, 0x00, 0xE9, 0xA8, 0x00, 0x24, /* 0000D7B0 */ 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000D7C0 */ 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, -/* 0000D7D0 */ 0x00, 0xFE, 0xEA, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, 0x01, +/* 0000D7C0 */ 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, +/* 0000D7D0 */ 0x00, 0xFE, 0xED, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, 0x01, /* 0000D7E0 */ 0x00, 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x5F, 0x00, 0x0B, 0x00, 0x2C, /* 0000D7F0 */ 0x00, 0x5A, 0x00, 0x8E, 0x00, 0x20, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x92, -/* 0000D800 */ 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xC8, 0x02, 0xED, 0x04, 0xFF, 0xA3, +/* 0000D800 */ 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xCB, 0x02, 0xED, 0x04, 0xFF, 0xA3, /* 0000D810 */ 0x41, 0x01, 0x00, 0x16, 0x00, 0xFE, 0x5B, 0x25, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, /* 0000D820 */ 0xFE, 0x5B, 0x25, 0xFE, 0x55, 0x04, 0xFE, 0x55, 0x04, 0x01, 0x08, 0x05, 0x0A, 0x05, 0x29, 0x26, /* 0000D830 */ 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x09, /* 0000D840 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000D850 */ 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x04, 0xBB, 0x2C, 0x0A, 0x05, 0x14, 0x03, +/* 0000D850 */ 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x04, 0xBB, 0x2C, 0x0A, 0x05, 0x14, 0x03, /* 0000D860 */ 0x00, 0x0A, 0x02, 0x09, 0x08, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x09, 0xA6, 0x00, 0x2C, 0x0A, /* 0000D870 */ 0x05, 0x14, 0x03, 0x00, 0x0A, 0x03, 0x09, 0x0C, 0x00, 0xCE, 0x0A, 0x01, 0x01, 0x00, 0xA1, 0x00, /* 0000D880 */ 0x05, 0x0A, 0x47, 0x05, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0B, 0x00, @@ -4887,8 +4887,8 @@ namespace Js /* 0000D8E0 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x07, 0x04, 0x00, 0x5C, /* 0000D8F0 */ 0x00, 0x04, 0x5C, 0x01, 0x05, 0x5C, 0x02, 0x06, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x5C, 0x03, /* 0000D900 */ 0x0B, 0xEE, 0x04, 0xFF, 0x0A, 0x02, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x09, -/* 0000D910 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x2A, 0x02, 0xF0, 0xFE, -/* 0000D920 */ 0x0E, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x33, 0x00, 0x08, +/* 0000D910 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x2D, 0x02, 0xF0, 0xFE, +/* 0000D920 */ 0x11, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x33, 0x00, 0x08, /* 0000D930 */ 0x00, 0x21, 0x00, 0x0B, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x2B, 0x00, 0x26, 0x00, 0x2F, 0x00, 0x2A, /* 0000D940 */ 0x00, 0x71, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x27, 0x00, 0xA5, 0x02, 0x0D, 0x00, 0x12, 0x00, 0x00, /* 0000D950 */ 0x54, 0xD9, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4896,8 +4896,8 @@ namespace Js /* 0000D970 */ 0x00, 0x02, 0x02, 0xFE, 0x12, 0x27, 0xFE, 0x7C, 0x02, 0xFE, 0x7C, 0x02, 0x06, 0x08, 0x0B, 0x06, /* 0000D980 */ 0x49, 0x47, 0x02, 0x08, 0x07, 0x41, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D990 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D9A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x05, 0x03, 0x02, -/* 0000D9B0 */ 0xFE, 0x0F, 0x03, 0x03, 0x02, 0xFE, 0x10, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, +/* 0000D9A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x08, 0x03, 0x02, +/* 0000D9B0 */ 0xFE, 0x12, 0x03, 0x03, 0x02, 0xFE, 0x13, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, /* 0000D9C0 */ 0x01, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x0B, 0x00, 0x2C, 0x0B, 0x08, 0x15, /* 0000D9D0 */ 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x08, 0x04, 0x09, 0x25, 0x00, 0x8F, /* 0000D9E0 */ 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, @@ -4922,11 +4922,11 @@ namespace Js /* 0000DB10 */ 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x06, /* 0000DB20 */ 0x00, 0x5C, 0x01, 0x0C, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0C, 0x05, 0x00, /* 0000DB30 */ 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x09, 0xEE, 0x04, 0xFF, 0x0B, 0x07, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000DB40 */ 0x00, 0x00, 0xFE, 0x21, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0xF1, 0x01, 0xFE, 0x2B, 0x02, 0xFE, 0xF2, +/* 0000DB40 */ 0x00, 0x00, 0xFE, 0x24, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x2E, 0x02, 0xFE, 0xF5, /* 0000DB50 */ 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x66, 0x00, 0x25, 0x00, /* 0000DB60 */ 0x4A, 0x00, 0x26, 0x00, 0x34, 0x00, 0x2A, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x4E, 0x00, 0x26, 0x00, /* 0000DB70 */ 0x39, 0x00, 0x4B, 0x00, 0x66, 0x00, 0x3B, 0x00, 0x4A, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, -/* 0000DB80 */ 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, 0x00, 0xFE, 0x35, +/* 0000DB80 */ 0xFC, 0x07, 0xFE, 0xCA, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, 0x00, 0xFE, 0x35, /* 0000DB90 */ 0x24, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x24, 0xA6, 0xA6, 0x05, 0x03, 0x05, /* 0000DBA0 */ 0x04, 0x14, 0x13, 0x01, 0x02, 0x03, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DBB0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4937,15 +4937,15 @@ namespace Js /* 0000DC00 */ 0x6D, 0x05, 0x06, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x06, 0x5C, 0x01, 0x03, 0x8F, 0x01, 0x00, /* 0000DC10 */ 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x02, 0x07, 0xF2, 0x03, 0x05, 0x05, /* 0000DC20 */ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x05, 0x02, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000DC30 */ 0x00, 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, 0x00, 0x00, +/* 0000DC30 */ 0x00, 0x00, 0x00, 0xFE, 0x29, 0x02, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, 0x00, 0x00, /* 0000DC40 */ 0x00, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x3B, 0x00, 0x47, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, -/* 0000DC50 */ 0xFC, 0x07, 0xFE, 0xC6, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, 0xFE, 0xDE, +/* 0000DC50 */ 0xFC, 0x07, 0xFE, 0xC9, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, 0xFE, 0xDE, /* 0000DC60 */ 0x21, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xDE, 0x21, 0xFE, 0x4F, 0x02, 0xFE, 0x4F, /* 0000DC70 */ 0x02, 0x0B, 0x07, 0x0F, 0x08, 0x3B, 0x38, 0x01, 0x01, 0x06, 0x05, 0x01, 0x03, 0x03, 0x03, 0x03, /* 0000DC80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, /* 0000DC90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000DCA0 */ 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x04, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0x02, 0xFE, -/* 0000DCB0 */ 0x0D, 0x03, 0xFE, 0x10, 0x01, 0xA8, 0x0D, 0x98, 0x0F, 0x07, 0x08, 0x00, 0x00, 0x47, 0x0C, 0x0F, +/* 0000DCA0 */ 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x04, 0x02, 0xFE, 0x0E, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, +/* 0000DCB0 */ 0x10, 0x03, 0xFE, 0x10, 0x01, 0xA8, 0x0D, 0x98, 0x0F, 0x07, 0x08, 0x00, 0x00, 0x47, 0x0C, 0x0F, /* 0000DCC0 */ 0x2C, 0x0F, 0x0C, 0x15, 0x03, 0x00, 0x0F, 0x02, 0x09, 0xF0, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000DCD0 */ 0x2D, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x6D, 0x0F, 0x10, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, /* 0000DCE0 */ 0x10, 0x5C, 0x01, 0x0C, 0xF2, 0x02, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x0D, @@ -4962,17 +4962,17 @@ namespace Js /* 0000DD90 */ 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x6D, 0x0F, /* 0000DDA0 */ 0x10, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0D, 0xF2, 0x02, 0x00, 0x0F, 0x02, /* 0000DDB0 */ 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x0B, 0x00, 0x09, 0x06, 0x00, 0x47, 0x00, 0x0B, 0x09, 0x02, -/* 0000DDC0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, 0x23, 0x00, 0xFE, +/* 0000DDC0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x23, 0x00, 0xFE, /* 0000DDD0 */ 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0B, 0x00, 0x34, 0x00, 0x26, /* 0000DDE0 */ 0x00, 0x41, 0x00, 0x32, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x90, 0x00, 0x29, 0x00, 0x42, 0x00, 0x08, -/* 0000DDF0 */ 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC5, 0x02, 0xBC, 0x04, +/* 0000DDF0 */ 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC8, 0x02, 0xBC, 0x04, /* 0000DE00 */ 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, 0xA7, 0x1E, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, /* 0000DE10 */ 0x06, 0xFE, 0xA7, 0x1E, 0xFE, 0x2F, 0x03, 0xFE, 0x2F, 0x03, 0x0B, 0x0A, 0x11, 0x0A, 0x50, 0x4A, /* 0000DE20 */ 0x01, 0x01, 0x08, 0x06, 0x01, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DE30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000DE40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, -/* 0000DE50 */ 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0x07, 0x03, -/* 0000DE60 */ 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0xFE, 0x82, 0x01, 0x98, 0x11, 0x0A, 0x0B, 0x00, +/* 0000DE40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, +/* 0000DE50 */ 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xFE, 0x0A, 0x03, +/* 0000DE60 */ 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0xFE, 0x82, 0x01, 0x98, 0x11, 0x0A, 0x0B, 0x00, /* 0000DE70 */ 0x00, 0x47, 0x0F, 0x11, 0xA8, 0x11, 0x15, 0x03, 0x00, 0x0F, 0x11, 0x09, 0x65, 0x01, 0x0C, 0x03, /* 0000DE80 */ 0x00, 0x0C, 0x02, 0x09, 0x26, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x12, /* 0000DE90 */ 0x00, 0x00, 0x6D, 0x11, 0x12, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x12, 0x5C, 0x01, 0x0F, 0xF2, @@ -4997,7 +4997,7 @@ namespace Js /* 0000DFC0 */ 0x07, 0x00, 0xEE, 0x04, 0x13, 0x13, 0x07, 0x00, 0x2F, 0x13, 0x07, 0x13, 0x2F, 0x13, 0x13, 0x09, /* 0000DFD0 */ 0x5C, 0x03, 0x13, 0xF2, 0x04, 0xFF, 0x11, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x47, 0x00, 0x0F, /* 0000DFE0 */ 0x09, 0x08, 0x00, 0x47, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000DFF0 */ 0x25, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, +/* 0000DFF0 */ 0x28, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, /* 0000E000 */ 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0x08, 0x00, 0x2A, 0x00, /* 0000E010 */ 0x26, 0x00, 0x48, 0x00, 0x08, 0x00, 0x29, 0x00, 0x26, 0x00, 0x40, 0x00, 0x08, 0x00, 0x29, 0x00, /* 0000E020 */ 0x26, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x6C, 0x00, 0x96, 0x00, 0xA9, 0x00, 0x06, 0x00, 0x24, 0x00, @@ -5006,9 +5006,9 @@ namespace Js /* 0000E050 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x1B, 0x19, 0xFE, 0x0A, 0x05, 0xFE, 0x0A, 0x05, 0x04, 0x0A, /* 0000E060 */ 0x0B, 0x04, 0x1D, 0x1D, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E070 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000E080 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xFE, -/* 0000E090 */ 0x02, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x00, 0x03, 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, 0x02, -/* 0000E0A0 */ 0x03, 0x02, 0xFE, 0x03, 0x03, 0x03, 0x04, 0x8E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, +/* 0000E080 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x01, +/* 0000E090 */ 0x03, 0x02, 0xFE, 0x02, 0x03, 0x02, 0xFE, 0x03, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x05, +/* 0000E0A0 */ 0x03, 0x02, 0xFE, 0x06, 0x03, 0x03, 0x04, 0x8E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, /* 0000E0B0 */ 0x00, 0x0B, 0x00, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0000E0C0 */ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, /* 0000E0D0 */ 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x01, @@ -5018,12 +5018,12 @@ namespace Js /* 0000E110 */ 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, /* 0000E120 */ 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, 0x00, 0x00, 0xEE, 0x03, 0x00, 0x0B, 0x00, 0x00, 0x09, /* 0000E130 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, -/* 0000E140 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x27, 0x02, 0x00, -/* 0000E150 */ 0x00, 0x25, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0xFE, 0xFE, -/* 0000E160 */ 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x25, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x03, 0x03, +/* 0000E140 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, +/* 0000E150 */ 0x00, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x01, +/* 0000E160 */ 0x03, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x28, 0x02, 0xFE, 0x2D, 0x02, 0xFE, 0x06, 0x03, /* 0000E170 */ 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0xF2, 0x04, 0x00, 0x8B, 0xE5, /* 0000E180 */ 0x00, 0x00, 0xF5, 0xE4, 0x00, 0x00, 0x5F, 0xE4, 0x00, 0x00, 0xC9, 0xE3, 0x00, 0x00, 0x78, 0xE2, -/* 0000E190 */ 0x00, 0x00, 0x96, 0xE1, 0x00, 0x00, 0x3F, 0xFE, 0x11, 0x0E, 0x00, 0xFC, 0x07, 0xFE, 0x03, 0x03, +/* 0000E190 */ 0x00, 0x00, 0x96, 0xE1, 0x00, 0x00, 0x3F, 0xFE, 0x11, 0x0E, 0x00, 0xFC, 0x07, 0xFE, 0x06, 0x03, /* 0000E1A0 */ 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, 0xFE, 0xCF, 0x1C, 0xFF, 0x00, 0x10, 0x01, /* 0000E1B0 */ 0x00, 0x03, 0x03, 0xFE, 0xCF, 0x1C, 0xFE, 0x3D, 0x01, 0xFE, 0x3D, 0x01, 0x05, 0x04, 0x07, 0x05, /* 0000E1C0 */ 0x1C, 0x1A, 0x19, 0x01, 0x02, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5038,7 +5038,7 @@ namespace Js /* 0000E250 */ 0x47, 0x04, 0x07, 0x09, 0x9A, 0xFF, 0xED, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, /* 0000E260 */ 0x26, 0x1D, 0x05, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1A, 0x00, 0x34, 0x00, 0x55, 0x00, 0x08, /* 0000E270 */ 0x00, 0x39, 0x00, 0x25, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x51, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, -/* 0000E280 */ 0x02, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, 0x1B, 0xFF, 0x00, +/* 0000E280 */ 0x05, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, 0x1B, 0xFF, 0x00, /* 0000E290 */ 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAF, 0x1B, 0xFE, 0x02, 0x01, 0xFE, 0x02, 0x01, 0x09, 0x06, /* 0000E2A0 */ 0x0A, 0x07, 0x2A, 0x25, 0x01, 0x05, 0x01, 0x04, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, /* 0000E2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, 0xFF, @@ -5059,7 +5059,7 @@ namespace Js /* 0000E3A0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1B, 0x29, 0x00, 0xFE, 0xCF, 0x1B, 0x06, /* 0000E3B0 */ 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x2A, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x44, 0x00, 0x39, 0x00, /* 0000E3C0 */ 0x59, 0x00, 0x4B, 0x00, 0x08, 0x00, 0x19, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, -/* 0000E3D0 */ 0xFE, 0x01, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, 0x1B, 0xFF, +/* 0000E3D0 */ 0xFE, 0x04, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, 0x1B, 0xFF, /* 0000E3E0 */ 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x1B, 0x5F, 0x5F, 0x03, 0x03, 0x05, 0x03, 0x10, /* 0000E3F0 */ 0x0E, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E400 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5068,7 +5068,7 @@ namespace Js /* 0000E430 */ 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, 0x47, 0x00, 0x05, /* 0000E440 */ 0x09, 0x05, 0x00, 0xA8, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, /* 0000E450 */ 0x00, 0x00, 0xFE, 0x55, 0x1B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x3E, 0x00, 0x00, 0x3F, -/* 0000E460 */ 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x00, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, +/* 0000E460 */ 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x03, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, /* 0000E470 */ 0x0F, 0x00, 0xFE, 0xBA, 0x1A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xBA, 0x1A, 0x58, /* 0000E480 */ 0x58, 0x03, 0x03, 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E490 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5077,7 +5077,7 @@ namespace Js /* 0000E4C0 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x07, 0x02, 0x00, 0x5C, /* 0000E4D0 */ 0x00, 0x02, 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, 0x47, 0x00, 0x05, 0x09, 0x02, /* 0000E4E0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDA, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000E4F0 */ 0x35, 0x00, 0x37, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xFF, 0x02, 0x96, +/* 0000E4F0 */ 0x35, 0x00, 0x37, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x02, 0x03, 0x96, /* 0000E500 */ 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, 0xFE, 0x3F, 0x1A, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000E510 */ 0x02, 0x02, 0xFE, 0x3F, 0x1A, 0x5E, 0x5E, 0x03, 0x03, 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, /* 0000E520 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5087,7 +5087,7 @@ namespace Js /* 0000E560 */ 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, 0x47, 0x00, 0x05, 0x09, 0x05, 0x00, 0xA8, /* 0000E570 */ 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5F, /* 0000E580 */ 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, -/* 0000E590 */ 0xFC, 0x07, 0xFE, 0xFE, 0x02, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, 0x00, 0xFE, 0x5F, +/* 0000E590 */ 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, 0x00, 0xFE, 0x5F, /* 0000E5A0 */ 0x19, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x5F, 0x19, 0xC5, 0xC5, 0x04, 0x04, 0x06, /* 0000E5B0 */ 0x03, 0x17, 0x15, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E5C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5098,9 +5098,9 @@ namespace Js /* 0000E610 */ 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x07, 0x02, 0x00, /* 0000E620 */ 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x04, 0xEE, 0x02, 0x06, 0x06, 0x01, 0x00, 0x47, 0x00, 0x06, 0x09, /* 0000E630 */ 0x05, 0x00, 0xA8, 0x06, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000E640 */ 0xFE, 0x20, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x27, 0x00, +/* 0000E640 */ 0xFE, 0x23, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x27, 0x00, /* 0000E650 */ 0x20, 0x00, 0x40, 0x00, 0x35, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x8F, 0xFC, 0x07, -/* 0000E660 */ 0xFE, 0xE3, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, 0x95, 0x18, 0xFF, +/* 0000E660 */ 0xFE, 0xE6, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, 0x95, 0x18, 0xFF, /* 0000E670 */ 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x95, 0x18, 0x6D, 0x6D, 0x05, 0x03, 0x04, 0x06, 0x12, /* 0000E680 */ 0x12, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E690 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5110,14 +5110,14 @@ namespace Js /* 0000E6D0 */ 0x00, 0x07, 0x00, 0x00, 0x6D, 0x06, 0x07, 0x01, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x07, 0xF2, 0x01, /* 0000E6E0 */ 0x06, 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5C, 0x01, 0x06, 0xE0, 0x06, 0x00, 0x5C, 0x02, /* 0000E6F0 */ 0x06, 0xF2, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x04, 0x02, 0x00, -/* 0000E700 */ 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0xF6, 0x01, -/* 0000E710 */ 0x00, 0x09, 0xFE, 0xFD, 0x02, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, -/* 0000E720 */ 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x79, 0x19, 0xFF, +/* 0000E700 */ 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0xF9, 0x01, +/* 0000E710 */ 0x00, 0x09, 0xFE, 0x00, 0x03, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, +/* 0000E720 */ 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE5, 0x02, 0x79, 0x19, 0xFF, /* 0000E730 */ 0xA2, 0x41, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xC9, 0x15, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, /* 0000E740 */ 0xFE, 0xC9, 0x15, 0xFE, 0xA8, 0x02, 0xFE, 0xA8, 0x02, 0x0C, 0x06, 0x10, 0x06, 0x42, 0x37, 0x18, /* 0000E750 */ 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E760 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000E770 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x7A, 0xD1, 0x00, 0x02, 0xFE, 0xFC, +/* 0000E770 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x7A, 0xD1, 0x00, 0x02, 0xFE, 0xFF, /* 0000E780 */ 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0xA8, /* 0000E790 */ 0x0D, 0xA8, 0x0E, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, 0x16, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000E7A0 */ 0x07, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x62, 0x11, 0x11, 0x00, 0x47, 0x10, 0x11, 0x09, 0x0F, @@ -5135,17 +5135,17 @@ namespace Js /* 0000E860 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x07, 0x05, 0x00, 0x5C, /* 0000E870 */ 0x00, 0x03, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x0A, 0xA8, 0x11, 0x5C, 0x03, 0x11, 0x5C, 0x04, 0x0C, /* 0000E880 */ 0xEE, 0x05, 0x00, 0x10, 0x03, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000E890 */ 0xF4, 0x01, 0xFE, 0xEA, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, +/* 0000E890 */ 0xF7, 0x01, 0xFE, 0xED, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, /* 0000E8A0 */ 0x62, 0x00, 0x1E, 0x00, 0x36, 0x00, 0x0F, 0x00, 0x34, 0x00, 0x16, 0x00, 0x3A, 0x00, 0x07, 0x00, /* 0000E8B0 */ 0x0B, 0x00, 0x08, 0x00, 0x20, 0x00, 0x2D, 0x00, 0x6A, 0x00, 0x0E, 0x00, 0x36, 0x00, 0x08, 0x00, /* 0000E8C0 */ 0x4C, 0xFF, 0x08, 0x00, 0xE8, 0x00, 0x2B, 0x00, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x35, 0x02, 0xCF, -/* 0000E8D0 */ 0xFD, 0x0F, 0xFE, 0xE1, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, 0x00, 0xFE, 0xD8, +/* 0000E8D0 */ 0xFD, 0x0F, 0xFE, 0xE4, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, 0x00, 0xFE, 0xD8, /* 0000E8E0 */ 0x0E, 0x02, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0xD8, 0x0E, 0xFE, 0xD4, 0x06, 0xFE, /* 0000E8F0 */ 0xD4, 0x06, 0x03, 0x10, 0x0C, 0x15, 0x09, 0x62, 0x5B, 0x01, 0x01, 0x08, 0x01, 0x09, 0x05, 0x05, /* 0000E900 */ 0x05, 0x05, 0x01, 0x01, 0x01, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x14, 0xFF, 0xFF, 0xFF, /* 0000E910 */ 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, -/* 0000E920 */ 0x02, 0xFE, 0xF3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF4, 0x02, 0x02, 0xFE, 0xB8, -/* 0000E930 */ 0x02, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xF7, 0x02, 0x03, 0xFE, 0xE5, +/* 0000E920 */ 0x02, 0xFE, 0xF6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF7, 0x02, 0x02, 0xFE, 0xBB, +/* 0000E930 */ 0x02, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xF9, 0x02, 0x02, 0xFE, 0xFA, 0x02, 0x03, 0xFE, 0xE5, /* 0000E940 */ 0x01, 0x96, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x8F, 0x01, 0x00, /* 0000E950 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x6D, 0x16, 0x17, 0x00, 0x07, 0x02, 0x00, /* 0000E960 */ 0x5C, 0x00, 0x17, 0x93, 0x03, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x5C, 0x01, 0x18, 0xF2, 0x02, @@ -5177,9 +5177,9 @@ namespace Js /* 0000EB00 */ 0xA8, 0x19, 0x47, 0x18, 0x19, 0x7B, 0x18, 0x17, 0x02, 0x7B, 0x10, 0x17, 0x03, 0x7B, 0x11, 0x17, /* 0000EB10 */ 0x04, 0x5C, 0x01, 0x17, 0x5D, 0x02, 0x0B, 0x05, 0x00, 0xEE, 0x03, 0x00, 0x16, 0x05, 0x00, 0x09, /* 0000EB20 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 0000EB30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, -/* 0000EB40 */ 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0x02, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0x04, 0x02, 0xFE, 0x38, -/* 0000EB50 */ 0x02, 0xFE, 0xF8, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xF9, 0x02, 0x00, 0x0D, 0xFE, 0xFA, 0x02, 0x00, +/* 0000EB30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x3B, 0x02, 0x00, +/* 0000EB40 */ 0x00, 0x00, 0xFE, 0xFA, 0x01, 0xFE, 0x05, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x07, 0x02, 0xFE, 0x3B, +/* 0000EB50 */ 0x02, 0xFE, 0xFB, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xFC, 0x02, 0x00, 0x0D, 0xFE, 0xFD, 0x02, 0x00, /* 0000EB60 */ 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x37, 0x00, 0x07, 0x00, 0x1C, 0x00, /* 0000EB70 */ 0x33, 0x00, 0x3F, 0x02, 0x3D, 0x00, 0x4A, 0x00, 0x1D, 0x00, 0x39, 0x00, 0x12, 0x00, 0x51, 0x00, /* 0000EB80 */ 0x0B, 0x00, 0x20, 0x00, 0x33, 0x00, 0xBF, 0x01, 0x0B, 0x00, 0x2A, 0x00, 0xBA, 0x00, 0x1F, 0x01, @@ -5201,21 +5201,21 @@ namespace Js /* 0000EC80 */ 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0A, /* 0000EC90 */ 0x04, 0x00, 0x5C, 0x01, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x05, /* 0000ECA0 */ 0x00, 0x5C, 0x02, 0x0A, 0x5C, 0x03, 0x05, 0xEE, 0x04, 0xFF, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000ECB0 */ 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0x0E, 0xFE, 0xFB, 0x02, 0x00, 0xFE, 0xF9, 0x12, 0x05, +/* 0000ECB0 */ 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0x0E, 0xFE, 0xFE, 0x02, 0x00, 0xFE, 0xF9, 0x12, 0x05, /* 0000ECC0 */ 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x7B, 0x00, 0x09, 0x00, 0x25, 0x00, 0x41, 0x00, 0x60, 0x00, /* 0000ECD0 */ 0x3B, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000ECE0 */ 0xFF, 0x5D, 0x3D, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x08, 0x00, 0xFE, 0xA1, 0x0F, 0xFF, 0x00, 0x10, /* 0000ECF0 */ 0x01, 0x00, 0x02, 0x02, 0xFE, 0xA1, 0x0F, 0x61, 0x61, 0x04, 0x05, 0x07, 0x06, 0x0F, 0x0F, 0x02, /* 0000ED00 */ 0x01, 0x03, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000ED10 */ 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000ED20 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x04, 0x50, 0x8F, 0x02, +/* 0000ED20 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x04, 0x50, 0x8F, 0x02, /* 0000ED30 */ 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x05, 0x00, 0x5C, 0x00, 0x04, /* 0000ED40 */ 0x8F, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x5C, 0x01, 0x08, 0x8F, /* 0000ED50 */ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x5C, 0x02, 0x08, 0x2F, 0x08, /* 0000ED60 */ 0x02, 0x05, 0x5C, 0x03, 0x08, 0x5D, 0x04, 0x03, 0x00, 0x00, 0xEE, 0x05, 0x07, 0x07, 0x00, 0x00, /* 0000ED70 */ 0x94, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, /* 0000ED80 */ 0x00, 0xFE, 0xB5, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x4C, 0x00, 0x00, 0x3F, 0x7E, -/* 0000ED90 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF2, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x06, +/* 0000ED90 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF5, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x06, /* 0000EDA0 */ 0x00, 0xFE, 0xA2, 0x0D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xA2, 0x0D, 0xFE, 0x14, /* 0000EDB0 */ 0x01, 0xFE, 0x14, 0x01, 0x06, 0x02, 0x06, 0x03, 0x15, 0x12, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, /* 0000EDC0 */ 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5225,19 +5225,19 @@ namespace Js /* 0000EE00 */ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x04, 0x06, 0x14, 0x03, 0x00, 0x03, 0x02, 0x09, /* 0000EE10 */ 0x09, 0x00, 0x47, 0x00, 0x04, 0x09, 0x18, 0x00, 0x09, 0x0D, 0x00, 0x14, 0x03, 0x00, 0x03, 0x04, /* 0000EE20 */ 0x09, 0x05, 0x00, 0xA8, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x04, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 0000EE30 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, 0x00, 0x00, 0x00, +/* 0000EE30 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0000EE40 */ 0x26, 0x00, 0x47, 0x00, 0x08, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x25, 0x00, 0x08, 0x00, 0x26, 0x00, /* 0000EE50 */ 0x05, 0x00, 0x1B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, -/* 0000EE60 */ 0xFE, 0xE0, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, 0x2B, 0x0D, 0xFF, +/* 0000EE60 */ 0xFE, 0xE3, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, 0x2B, 0x0D, 0xFF, /* 0000EE70 */ 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x2B, 0x0D, 0x53, 0x53, 0x05, 0x02, 0x05, 0x04, 0x0B, /* 0000EE80 */ 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EEA0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000EEB0 */ 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x6D, 0x05, 0x06, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 0000EEC0 */ 0x06, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x02, 0xF2, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000EED0 */ 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x70, 0x02, 0x00, 0xFE, 0x49, +/* 0000EED0 */ 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x73, 0x02, 0x00, 0xFE, 0x49, /* 0000EEE0 */ 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x34, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x08, 0x0F, -/* 0000EEF0 */ 0xFC, 0x07, 0xFE, 0xDF, 0x02, 0x48, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x04, 0x00, 0xFE, 0x8B, +/* 0000EEF0 */ 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x48, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x04, 0x00, 0xFE, 0x8B, /* 0000EF00 */ 0x0C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x8B, 0x0C, 0x7F, 0x7F, 0x02, 0x04, 0x05, /* 0000EF10 */ 0x0A, 0x0A, 0x01, 0x41, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EF20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5245,8 +5245,8 @@ namespace Js /* 0000EF40 */ 0x00, 0xF9, 0x7F, 0xFD, 0xDF, 0xC1, 0x05, 0x00, 0x00, 0x40, 0xFE, 0x7F, 0xFD, 0xDF, 0xC1, 0x1E, /* 0000EF50 */ 0x62, 0x05, 0x04, 0x00, 0x14, 0x0F, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0x62, 0x05, 0x04, 0x00, /* 0000EF60 */ 0x14, 0x03, 0x00, 0x05, 0x03, 0x09, 0x02, 0x00, 0x23, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000EF70 */ 0xFE, 0x08, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4B, 0x00, -/* 0000EF80 */ 0x04, 0x00, 0x1A, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF1, 0x02, 0x3E, +/* 0000EF70 */ 0xFE, 0x0B, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4B, 0x00, +/* 0000EF80 */ 0x04, 0x00, 0x1A, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF4, 0x02, 0x3E, /* 0000EF90 */ 0x12, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x03, 0x00, 0xFE, 0x5B, 0x0B, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000EFA0 */ 0x04, 0x04, 0xFE, 0x5B, 0x0B, 0xA9, 0xA9, 0x06, 0x05, 0x09, 0x03, 0x11, 0x0F, 0x0D, 0x01, 0x01, /* 0000EFB0 */ 0x01, 0x01, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5257,7 +5257,7 @@ namespace Js /* 0000F000 */ 0x05, 0x08, 0x00, 0x00, 0x5C, 0x01, 0x0A, 0xEE, 0x02, 0xFF, 0x09, 0x00, 0x00, 0x28, 0x08, 0x08, /* 0000F010 */ 0x09, 0xD8, 0xFF, 0xED, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x0B, 0x05, /* 0000F020 */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x23, 0x00, 0x08, 0x00, 0x21, 0x00, 0x18, 0x00, 0x21, 0x00, -/* 0000F030 */ 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD4, 0x02, 0x28, +/* 0000F030 */ 0x0A, 0x00, 0x1B, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD7, 0x02, 0x28, /* 0000F040 */ 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x02, 0x00, 0xFE, 0x22, 0x07, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000F050 */ 0x04, 0x04, 0xFE, 0x22, 0x07, 0x73, 0x73, 0x06, 0x04, 0x08, 0x09, 0x10, 0x10, 0x01, 0x02, 0x02, /* 0000F060 */ 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h b/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h index 3f195adae7c..de2414f7f6f 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h @@ -1415,7 +1415,7 @@ namespace Js { const char Library_Bytecode_intl[] = { /* 00000000 */ 0x43, 0x68, 0x42, 0x63, 0xD5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFE, 0x9A, 0x02, 0x00, 0xFF, +/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFE, 0x9D, 0x02, 0x00, 0xFF, /* 00000020 */ 0x24, 0x1C, 0x01, 0x00, 0xFF, 0x24, 0x1C, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00, 0x6A, 0x26, 0x00, /* 00000030 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x52, 0x00, 0x00, 0xFE, 0x23, 0x01, 0xF0, 0x05, 0x00, 0x00, /* 00000040 */ 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, @@ -2733,11 +2733,11 @@ namespace Js /* 00005240 */ 0x00, 0x8D, 0x1A, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x8F, 0x1B, 0x01, /* 00005250 */ 0x00, 0x8F, 0x1B, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x1F, 0x1C, 0x01, /* 00005260 */ 0x00, 0x1F, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x44, 0x39, 0x6E, -/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9A, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, +/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9D, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, /* 00005280 */ 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0xFE, 0x75, 0x01, 0xFF, 0xAF, 0x1A, 0x01, 0x00, 0xFF, 0xAF, /* 00005290 */ 0x1A, 0x01, 0x00, 0x01, 0x04, 0x04, 0x05, 0x05, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000052A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x02, 0x07, 0x0C, +/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x02, 0x07, 0x0C, /* 000052C0 */ 0xA8, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFA, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, /* 000052D0 */ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x10, 0x0A, 0x4F, 0xFC, /* 000052E0 */ 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x01, 0x00, 0xFE, @@ -2745,17 +2745,17 @@ namespace Js /* 00005300 */ 0x01, 0x00, 0xFF, 0x89, 0x1A, 0x01, 0x00, 0x39, 0x13, 0x2F, 0x3E, 0x09, 0xFE, 0xAC, 0x01, 0xFE, /* 00005310 */ 0xA7, 0x01, 0x21, 0x10, 0x40, 0x3D, 0x3C, 0x3D, 0x3D, 0x12, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00005320 */ 0x3C, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00005330 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9C, 0x02, 0x02, 0xFE, 0x9D, 0x02, 0x02, 0xFE, 0x9E, 0x02, 0x02, -/* 00005340 */ 0xFE, 0x9F, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, 0xA2, -/* 00005350 */ 0x02, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0xA6, -/* 00005360 */ 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xAA, -/* 00005370 */ 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, 0x02, 0xFE, 0xAE, -/* 00005380 */ 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, 0x02, 0xFE, 0xB2, -/* 00005390 */ 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, 0x02, 0xFE, 0xB6, -/* 000053A0 */ 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, 0x02, 0xFE, 0xBA, -/* 000053B0 */ 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, 0x02, 0xFE, 0xBE, -/* 000053C0 */ 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC1, 0x02, 0x09, 0x02, -/* 000053D0 */ 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xFB, 0x08, 0x96, 0x3A, +/* 00005330 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x02, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, +/* 00005340 */ 0xFE, 0xA2, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, +/* 00005350 */ 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, +/* 00005360 */ 0x02, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, +/* 00005370 */ 0x02, 0x02, 0xFE, 0xAE, 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, +/* 00005380 */ 0x02, 0x02, 0xFE, 0xB2, 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, +/* 00005390 */ 0x02, 0x02, 0xFE, 0xB6, 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, +/* 000053A0 */ 0x02, 0x02, 0xFE, 0xBA, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, +/* 000053B0 */ 0x02, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, +/* 000053C0 */ 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC4, 0x02, 0x09, 0x02, +/* 000053D0 */ 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0xC6, 0x02, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xFB, 0x08, 0x96, 0x3A, /* 000053E0 */ 0x00, 0x00, 0x00, 0x30, 0xD4, 0x09, 0x00, 0x00, 0x00, 0x31, 0x96, 0x02, 0x00, 0x00, 0x00, 0x31, /* 000053F0 */ 0xD4, 0x0A, 0x00, 0x00, 0x00, 0x32, 0x96, 0x03, 0x00, 0x00, 0x00, 0x32, 0xD4, 0x0B, 0x00, 0x00, /* 00005400 */ 0x00, 0x33, 0x96, 0x04, 0x00, 0x00, 0x00, 0x33, 0xD4, 0x0C, 0x00, 0x00, 0x00, 0x34, 0x96, 0x05, @@ -2900,51 +2900,51 @@ namespace Js /* 00005CB0 */ 0x28, 0x01, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7B, 0x3A, 0x3F, 0x38, /* 00005CC0 */ 0x7B, 0x29, 0x3F, 0x39, 0x7B, 0x2B, 0x3F, 0x3A, 0x7B, 0x29, 0x3F, 0x3B, 0x5C, 0x03, 0x3F, 0xEE, /* 00005CD0 */ 0x04, 0xFF, 0x3E, 0x20, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x12, 0xFE, 0x40, 0x01, 0x00, 0x28, 0x01, -/* 00005CE0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00005CF0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, -/* 00005D00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00005D10 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 00005D20 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00005D30 */ 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, -/* 00005D40 */ 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 00005D50 */ 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, -/* 00005D60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xB8, 0x00, -/* 00005D70 */ 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, -/* 00005D80 */ 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, -/* 00005D90 */ 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DA0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DB0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DC0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005DD0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, -/* 00005DE0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x02, 0x00, 0x00, 0xAD, 0x02, 0x00, 0x00, 0xAE, 0x02, -/* 00005DF0 */ 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB9, 0x02, 0x00, 0x00, 0xBA, 0x02, -/* 00005E00 */ 0x00, 0x00, 0xBB, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, -/* 00005E40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 00005E50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xF9, 0x00, -/* 00005E60 */ 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, 0x00, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x03, -/* 00005E70 */ 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, -/* 00005E80 */ 0xFE, 0xD3, 0x01, 0xFE, 0x05, 0x02, 0x1B, 0xFE, 0x06, 0x02, 0x23, 0xFE, 0x07, 0x02, 0xF9, 0xFE, -/* 00005E90 */ 0x08, 0x02, 0x29, 0xFE, 0x09, 0x02, 0xFE, 0x0A, 0x02, 0xFE, 0x0B, 0x02, 0xFE, 0x0C, 0x02, 0xFE, -/* 00005EA0 */ 0x0D, 0x02, 0xFE, 0x11, 0x02, 0xFE, 0x12, 0x02, 0xFE, 0x13, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, -/* 00005EB0 */ 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1B, 0x02, 0xFE, 0x1C, 0x02, -/* 00005EC0 */ 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x84, 0x01, 0xFE, -/* 00005ED0 */ 0x7F, 0x01, 0xFE, 0xAB, 0x02, 0xFE, 0xAA, 0x02, 0xFE, 0xAD, 0x02, 0xFE, 0xAF, 0x02, 0xFE, 0xAE, -/* 00005EE0 */ 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xB4, 0x02, -/* 00005EF0 */ 0xFE, 0xB9, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xBC, 0x02, 0xFE, 0xBB, 0x02, 0xFE, 0xBD, 0x02, 0xFE, -/* 00005F00 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xDB, 0xFE, 0xC5, 0x02, 0xFE, -/* 00005F10 */ 0xC6, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xC8, 0x02, 0xFE, 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, -/* 00005F20 */ 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, -/* 00005F30 */ 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xCE, 0x02, 0xF7, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, -/* 00005F40 */ 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, -/* 00005F50 */ 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, -/* 00005F60 */ 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xDF, 0x02, -/* 00005F70 */ 0xFE, 0xE0, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xE1, 0x02, 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, -/* 00005F80 */ 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, -/* 00005F90 */ 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, -/* 00005FA0 */ 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, +/* 00005CE0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00005CF0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, +/* 00005D00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00005D10 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 00005D20 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00005D30 */ 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, +/* 00005D40 */ 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, +/* 00005D50 */ 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, +/* 00005D60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xB8, 0x00, +/* 00005D70 */ 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, +/* 00005D80 */ 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x02, +/* 00005D90 */ 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DA0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DB0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DC0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005DD0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, +/* 00005DE0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x02, 0x00, 0x00, 0xB0, 0x02, 0x00, 0x00, 0xB1, 0x02, +/* 00005DF0 */ 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xBD, 0x02, +/* 00005E00 */ 0x00, 0x00, 0xBE, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, +/* 00005E40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 00005E50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xFC, 0x00, +/* 00005E60 */ 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, 0x03, 0x02, 0xFE, 0x04, 0x02, 0xFE, 0x06, +/* 00005E70 */ 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, +/* 00005E80 */ 0xFE, 0xD6, 0x01, 0xFE, 0x08, 0x02, 0x1B, 0xFE, 0x09, 0x02, 0x23, 0xFE, 0x0A, 0x02, 0xFC, 0xFE, +/* 00005E90 */ 0x0B, 0x02, 0x29, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, 0xFE, 0x0E, 0x02, 0xFE, 0x0F, 0x02, 0xFE, +/* 00005EA0 */ 0x10, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x18, +/* 00005EB0 */ 0x02, 0xFE, 0x19, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0x1F, 0x02, +/* 00005EC0 */ 0xFE, 0x20, 0x02, 0xFE, 0x21, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x87, 0x01, 0xFE, +/* 00005ED0 */ 0x82, 0x01, 0xFE, 0xAE, 0x02, 0xFE, 0xAD, 0x02, 0xFE, 0xB0, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, +/* 00005EE0 */ 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB8, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xB7, 0x02, +/* 00005EF0 */ 0xFE, 0xBC, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0xBE, 0x02, 0xFE, 0xC0, 0x02, 0xFE, +/* 00005F00 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xDB, 0xFE, 0xC8, 0x02, 0xFE, +/* 00005F10 */ 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0xFE, 0xCE, +/* 00005F20 */ 0x02, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, +/* 00005F30 */ 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD1, 0x02, 0xF7, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, +/* 00005F40 */ 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, +/* 00005F50 */ 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, +/* 00005F60 */ 0x02, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xE1, 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xE2, 0x02, +/* 00005F70 */ 0xFE, 0xE3, 0x02, 0xFE, 0xF8, 0x01, 0xFE, 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, +/* 00005F80 */ 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, +/* 00005F90 */ 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, +/* 00005FA0 */ 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x02, 0xFE, 0xF3, 0x02, 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, /* 00005FB0 */ 0x00, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x12, 0x00, 0x36, 0x00, 0x12, 0x00, 0x3A, 0x00, 0x12, 0x00, /* 00005FC0 */ 0x44, 0x00, 0x12, 0x00, 0x25, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, /* 00005FD0 */ 0x23, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x23, 0x00, 0x12, 0x00, @@ -2972,17 +2972,17 @@ namespace Js /* 00006130 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x84, 0xAC, 0xFE, 0xAF, 0x6D, 0xFE, 0xAF, 0x6D, 0x01, 0x13, /* 00006140 */ 0x2F, 0x3B, 0x09, 0xD9, 0xD9, 0x01, 0x10, 0x01, 0x09, 0x11, 0x11, 0x11, 0x11, 0x06, 0x02, 0x38, /* 00006150 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, -/* 00006160 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, 0x5F, 0x03, -/* 00006170 */ 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, 0x03, 0x02, 0xFE, 0x63, 0x03, -/* 00006180 */ 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, 0x03, 0x02, 0xFE, 0x67, 0x03, -/* 00006190 */ 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, 0x03, 0x02, 0xFE, 0x6B, 0x03, -/* 000061A0 */ 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, 0x03, 0x02, 0xFE, 0x6F, 0x03, -/* 000061B0 */ 0x02, 0xFE, 0x70, 0x03, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 000061C0 */ 0xFE, 0x72, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x73, 0x03, 0x01, 0x02, 0x00, 0x00, -/* 000061D0 */ 0x00, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x58, -/* 000061E0 */ 0x03, 0x02, 0xFE, 0x21, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, -/* 000061F0 */ 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x08, 0x02, 0xFE, 0x51, 0x03, 0x02, -/* 00006200 */ 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0xA7, 0x02, 0xFE, +/* 00006160 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, 0x03, +/* 00006170 */ 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, 0x03, +/* 00006180 */ 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, 0x03, +/* 00006190 */ 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, 0x03, +/* 000061A0 */ 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x72, 0x03, +/* 000061B0 */ 0x02, 0xFE, 0x73, 0x03, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, +/* 000061C0 */ 0xFE, 0x75, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x76, 0x03, 0x01, 0x02, 0x00, 0x00, +/* 000061D0 */ 0x00, 0x02, 0xFE, 0x77, 0x03, 0x02, 0xFE, 0x78, 0x03, 0x02, 0xFE, 0x79, 0x03, 0x02, 0xFE, 0x5B, +/* 000061E0 */ 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, +/* 000061F0 */ 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x08, 0x02, 0xFE, 0x54, 0x03, 0x02, +/* 00006200 */ 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0xAA, 0x02, 0xFE, /* 00006210 */ 0x04, 0x05, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, 0x33, 0xA8, 0x34, 0xA8, 0x35, /* 00006220 */ 0xA8, 0x36, 0xA8, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, /* 00006230 */ 0x14, 0x17, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, @@ -3064,23 +3064,23 @@ namespace Js /* 000066F0 */ 0x0C, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0xEE, 0x04, 0xFF, 0x3D, 0x0F, 0x00, 0x91, 0x01, /* 00006700 */ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, /* 00006710 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x06, 0x9C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00006720 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00006730 */ 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00006740 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, -/* 00006750 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, -/* 00006760 */ 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00006770 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00006780 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00006790 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 000067A0 */ 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x03, 0x00, 0x00, 0x61, 0x03, 0x00, -/* 000067B0 */ 0x00, 0x63, 0x03, 0x00, 0x00, 0x65, 0x03, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x69, 0x03, 0x00, -/* 000067C0 */ 0x00, 0x6B, 0x03, 0x00, 0x00, 0x6D, 0x03, 0x00, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x5F, -/* 000067D0 */ 0x03, 0xFE, 0x61, 0x03, 0xFE, 0x63, 0x03, 0xFE, 0x65, 0x03, 0xFE, 0x67, 0x03, 0xFE, 0x69, 0x03, -/* 000067E0 */ 0xFE, 0x6B, 0x03, 0xFE, 0x6D, 0x03, 0xFE, 0x6F, 0x03, 0xFE, 0xFD, 0x01, 0xFE, 0x5F, 0x02, 0xFE, -/* 000067F0 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, -/* 00006800 */ 0x01, 0xFE, 0x77, 0x03, 0x02, 0x01, 0x07, 0x00, 0xFE, 0x78, 0x03, 0x01, 0xFE, 0x79, 0x03, 0x02, -/* 00006810 */ 0xFE, 0x7A, 0x03, 0x03, 0xFE, 0x7B, 0x03, 0x04, 0xFE, 0x7C, 0x03, 0x05, 0xFE, 0x7D, 0x03, 0x06, -/* 00006820 */ 0xFE, 0x7E, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE6, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x9D, 0xAC, +/* 00006720 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00006730 */ 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00006740 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, +/* 00006750 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, +/* 00006760 */ 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00006770 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00006780 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00006790 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 000067A0 */ 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x03, 0x00, 0x00, 0x64, 0x03, 0x00, +/* 000067B0 */ 0x00, 0x66, 0x03, 0x00, 0x00, 0x68, 0x03, 0x00, 0x00, 0x6A, 0x03, 0x00, 0x00, 0x6C, 0x03, 0x00, +/* 000067C0 */ 0x00, 0x6E, 0x03, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x62, +/* 000067D0 */ 0x03, 0xFE, 0x64, 0x03, 0xFE, 0x66, 0x03, 0xFE, 0x68, 0x03, 0xFE, 0x6A, 0x03, 0xFE, 0x6C, 0x03, +/* 000067E0 */ 0xFE, 0x6E, 0x03, 0xFE, 0x70, 0x03, 0xFE, 0x72, 0x03, 0xFE, 0x00, 0x02, 0xFE, 0x62, 0x02, 0xFE, +/* 000067F0 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, +/* 00006800 */ 0x01, 0xFE, 0x7A, 0x03, 0x02, 0x01, 0x07, 0x00, 0xFE, 0x7B, 0x03, 0x01, 0xFE, 0x7C, 0x03, 0x02, +/* 00006810 */ 0xFE, 0x7D, 0x03, 0x03, 0xFE, 0x7E, 0x03, 0x04, 0xFE, 0x7F, 0x03, 0x05, 0xFE, 0x80, 0x03, 0x06, +/* 00006820 */ 0xFE, 0x81, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE9, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x9D, 0xAC, /* 00006830 */ 0x12, 0x12, 0x00, 0x00, 0x00, 0xB4, 0x00, 0xD0, 0x13, 0x37, 0x00, 0x16, 0x37, 0x54, 0x00, 0x1E, /* 00006840 */ 0x03, 0x54, 0x00, 0x28, 0x03, 0x54, 0x00, 0x26, 0x03, 0x48, 0x00, 0xA7, 0x05, 0x2C, 0x00, 0x29, /* 00006850 */ 0x04, 0x2C, 0x00, 0x56, 0x00, 0x1D, 0x00, 0x4A, 0x00, 0x61, 0x00, 0x9E, 0x00, 0x3E, 0x00, 0x4B, @@ -3089,16 +3089,16 @@ namespace Js /* 00006880 */ 0x00, 0x00, 0x8C, 0x8E, 0x00, 0x00, 0x46, 0x8C, 0x00, 0x00, 0x3B, 0x8A, 0x00, 0x00, 0x92, 0x85, /* 00006890 */ 0x00, 0x00, 0xE7, 0x7B, 0x00, 0x00, 0x67, 0x79, 0x00, 0x00, 0xEB, 0x76, 0x00, 0x00, 0x6F, 0x74, /* 000068A0 */ 0x00, 0x00, 0xB8, 0x71, 0x00, 0x00, 0x0E, 0x6F, 0x00, 0x00, 0xC8, 0x6D, 0x00, 0x00, 0xB2, 0x68, -/* 000068B0 */ 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x4D, 0x05, 0x1B, +/* 000068B0 */ 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x4D, 0x05, 0x1B, /* 000068C0 */ 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x42, 0x00, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x10, /* 000068D0 */ 0x01, 0x00, 0x01, 0x01, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0xFE, 0x0D, 0x08, 0xFE, 0x0D, 0x08, 0x03, /* 000068E0 */ 0x07, 0x15, 0x19, 0x09, 0x7A, 0x7A, 0x04, 0x08, 0x09, 0x08, 0x20, 0x20, 0x20, 0x20, 0x01, 0x16, /* 000068F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xBA, 0x03, -/* 00006910 */ 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0xBB, 0x03, 0x02, 0xFE, 0x47, 0x03, -/* 00006920 */ 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0xB0, 0x03, -/* 00006930 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, -/* 00006940 */ 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x03, 0x04, 0xFE, 0x8B, +/* 00006900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBD, 0x03, +/* 00006910 */ 0x02, 0xFE, 0xC7, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xBE, 0x03, 0x02, 0xFE, 0x4A, 0x03, +/* 00006920 */ 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xB3, 0x03, +/* 00006930 */ 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, +/* 00006940 */ 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x03, 0x04, 0xFE, 0x8B, /* 00006950 */ 0x02, 0x5B, 0x15, 0xB4, 0x15, 0x15, 0x2C, 0x19, 0x15, 0x15, 0x03, 0x00, 0x19, 0x02, 0x09, 0x2A, /* 00006960 */ 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x6D, 0x19, 0x1A, /* 00006970 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, @@ -3140,17 +3140,17 @@ namespace Js /* 00006BB0 */ 0x14, 0x93, 0x04, 0x00, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x5C, 0x01, 0x1A, 0x8F, 0x04, 0x00, 0x00, /* 00006BC0 */ 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0x08, 0x00, 0x62, 0x1A, 0x1A, 0x1F, 0x5C, 0x02, 0x1A, 0xEE, /* 00006BD0 */ 0x03, 0x00, 0x19, 0x07, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x40, 0x00, 0x00, -/* 00006BE0 */ 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x5E, -/* 00006BF0 */ 0x02, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x46, -/* 00006C00 */ 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, -/* 00006C10 */ 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, -/* 00006C20 */ 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0xE2, 0x01, -/* 00006C30 */ 0xFE, 0xEA, 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0x60, 0x02, 0xFE, -/* 00006C40 */ 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x46, -/* 00006C50 */ 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x53, 0x02, -/* 00006C60 */ 0xFE, 0x48, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, -/* 00006C70 */ 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, -/* 00006C80 */ 0x02, 0xFE, 0x14, 0x01, 0xFE, 0x5C, 0x03, 0xFE, 0xBC, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFF, 0xB3, +/* 00006BE0 */ 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x61, +/* 00006BF0 */ 0x02, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x51, 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x49, +/* 00006C00 */ 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, +/* 00006C10 */ 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, +/* 00006C20 */ 0x02, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0xE5, 0x01, +/* 00006C30 */ 0xFE, 0xED, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x61, 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0x63, 0x02, 0xFE, +/* 00006C40 */ 0x5C, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, +/* 00006C50 */ 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x56, 0x02, +/* 00006C60 */ 0xFE, 0x4B, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, +/* 00006C70 */ 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x52, +/* 00006C80 */ 0x02, 0xFE, 0x17, 0x01, 0xFE, 0x5F, 0x03, 0xFE, 0xBF, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFF, 0xB3, /* 00006C90 */ 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x92, 0x00, /* 00006CA0 */ 0x29, 0x00, 0x4C, 0x00, 0x25, 0x00, 0x6C, 0x00, 0x2A, 0x00, 0x92, 0x00, 0x13, 0x01, 0xDE, 0x03, /* 00006CB0 */ 0x28, 0x00, 0x3F, 0x00, 0x61, 0x00, 0x5B, 0x01, 0x3B, 0x00, 0x45, 0x00, 0x00, 0xC1, 0x6C, 0x00, @@ -3159,7 +3159,7 @@ namespace Js /* 00006CE0 */ 0x01, 0x00, 0x02, 0x02, 0xFF, 0x31, 0x17, 0x01, 0x00, 0xE9, 0xE9, 0x04, 0x05, 0x07, 0x05, 0x1A, /* 00006CF0 */ 0x1A, 0x05, 0x02, 0x01, 0x01, 0x05, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006D00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006D10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x5D, 0x03, +/* 00006D10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0x60, 0x03, /* 00006D20 */ 0x04, 0x90, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x98, 0x07, /* 00006D30 */ 0x07, 0x05, 0x00, 0x00, 0xA8, 0x08, 0x15, 0x0B, 0x00, 0x07, 0x08, 0x09, 0x00, 0x00, 0x14, 0x03, /* 00006D40 */ 0x00, 0x05, 0x02, 0x09, 0x68, 0x00, 0x8F, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, @@ -3176,7 +3176,7 @@ namespace Js /* 00006DF0 */ 0xFE, 0x6B, 0x02, 0xFE, 0x6B, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x03, 0x01, 0x09, /* 00006E00 */ 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006E10 */ 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006E20 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, +/* 00006E20 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, /* 00006E30 */ 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, /* 00006E40 */ 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, /* 00006E50 */ 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, @@ -3187,17 +3187,17 @@ namespace Js /* 00006EA0 */ 0x0F, 0x2D, 0x00, 0x08, 0x09, 0x00, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006EB0 */ 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, /* 00006EC0 */ 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 00006ED0 */ 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 00006EE0 */ 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0x43, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, +/* 00006ED0 */ 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 00006EE0 */ 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0x46, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, /* 00006EF0 */ 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x8B, 0x00, 0x26, 0x00, 0x4C, /* 00006F00 */ 0x00, 0x15, 0x00, 0x6C, 0x00, 0x2A, 0x00, 0x8B, 0x00, 0x09, 0x00, 0x38, 0x00, 0x00, 0x3F, 0x7E, -/* 00006F10 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, +/* 00006F10 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, /* 00006F20 */ 0x00, 0x40, 0x00, 0xFF, 0xE3, 0x06, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006F30 */ 0xE3, 0x06, 0x01, 0x00, 0xFE, 0xCA, 0x03, 0xFE, 0xCA, 0x03, 0x0A, 0x09, 0x0D, 0x0A, 0x61, 0x60, /* 00006F40 */ 0x04, 0x03, 0x0C, 0x06, 0x0B, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006F60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00006F70 */ 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +/* 00006F60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00006F70 */ 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, /* 00006F80 */ 0x00, 0x04, 0xFE, 0xEA, 0x01, 0x5B, 0x09, 0xB4, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0D, 0x09, 0x15, /* 00006F90 */ 0x03, 0x00, 0x0D, 0x03, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006FA0 */ 0x0E, 0x00, 0x00, 0x6D, 0x0D, 0x0E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0E, 0x5D, 0x01, 0x04, @@ -3229,18 +3229,18 @@ namespace Js /* 00007140 */ 0x10, 0x05, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x08, 0xEE, 0x01, 0x10, 0x10, 0x0B, 0x00, 0x5C, /* 00007150 */ 0x01, 0x10, 0x5C, 0x02, 0x0A, 0xF2, 0x03, 0x0E, 0x0E, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x5C, /* 00007160 */ 0x01, 0x0E, 0xEE, 0x02, 0x00, 0x0D, 0x09, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 00007170 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xF0, 0xFE, 0x24, 0x02, 0xFE, 0xFC, -/* 00007180 */ 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x0B, +/* 00007170 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xF0, 0xFE, 0x27, 0x02, 0xFE, 0xFF, +/* 00007180 */ 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x0B, /* 00007190 */ 0x00, 0x39, 0x00, 0x2A, 0x00, 0x81, 0x00, 0x26, 0x00, 0x48, 0x00, 0x15, 0x00, 0x68, 0x00, 0x2A, /* 000071A0 */ 0x00, 0x83, 0x00, 0x0C, 0x00, 0x36, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x51, 0x00, 0x6D, /* 000071B0 */ 0x00, 0x85, 0x00, 0x5E, 0x00, 0x52, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, -/* 000071C0 */ 0xC4, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, 0x00, 0xFF, 0x1B, 0x01, +/* 000071C0 */ 0xC7, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, 0x00, 0xFF, 0x1B, 0x01, /* 000071D0 */ 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, 0x1B, 0x01, 0x01, 0x00, 0xFE, 0x69, /* 000071E0 */ 0x05, 0xFE, 0x69, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x02, 0x09, 0x09, 0x0B, 0x08, /* 000071F0 */ 0x07, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007200 */ 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007210 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, -/* 00007220 */ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, +/* 00007220 */ 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, /* 00007230 */ 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, /* 00007240 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, /* 00007250 */ 0x08, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, @@ -3269,9 +3269,9 @@ namespace Js /* 000073C0 */ 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, /* 000073D0 */ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, /* 000073E0 */ 0x03, 0x0C, 0xEE, 0x04, 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, -/* 000073F0 */ 0x82, 0x0F, 0x0F, 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 00007400 */ 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, -/* 00007410 */ 0xFE, 0x43, 0x02, 0xFE, 0x43, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, 0x07, 0x00, +/* 000073F0 */ 0x82, 0x0F, 0x0F, 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, +/* 00007400 */ 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, +/* 00007410 */ 0xFE, 0x46, 0x02, 0xFE, 0x46, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, 0x07, 0x00, /* 00007420 */ 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, /* 00007430 */ 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, /* 00007440 */ 0x5B, 0x00, 0x26, 0x00, 0x38, 0x00, 0x22, 0x00, 0x39, 0x00, 0x25, 0x00, 0xA1, 0x00, 0x26, 0x00, @@ -3282,9 +3282,9 @@ namespace Js /* 00007490 */ 0xFE, 0x21, 0xFE, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, 0x5A, 0x03, /* 000074A0 */ 0x02, 0x0B, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000074B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000074C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 000074D0 */ 0xFE, 0x73, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 000074E0 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x81, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, +/* 000074C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 000074D0 */ 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 000074E0 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x84, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, /* 000074F0 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x1B, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8F, /* 00007500 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE1, 0x10, 0x0B, 0x10, 0x00, /* 00007510 */ 0x0F, 0x2D, 0x00, 0x10, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, @@ -3313,7 +3313,7 @@ namespace Js /* 00007680 */ 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, 0xF2, 0x02, 0x13, 0x13, /* 00007690 */ 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0xF2, 0x03, 0x11, 0x11, /* 000076A0 */ 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x5C, 0x01, 0x11, 0xEE, 0x02, 0x00, 0x10, 0x08, 0x00, 0x09, -/* 000076B0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, +/* 000076B0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, /* 000076C0 */ 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, /* 000076D0 */ 0x71, 0x00, 0x45, 0x00, 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, /* 000076E0 */ 0x3B, 0x00, 0x56, 0x00, 0x77, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x1F, @@ -3322,9 +3322,9 @@ namespace Js /* 00007710 */ 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, 0x5A, 0x03, 0x02, 0x0B, 0x0B, 0x0B, /* 00007720 */ 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007730 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007740 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x72, 0x03, 0x02, -/* 00007750 */ 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, -/* 00007760 */ 0x00, 0x00, 0x02, 0xFE, 0x7F, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0E, +/* 00007740 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, +/* 00007750 */ 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +/* 00007760 */ 0x00, 0x00, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0E, /* 00007770 */ 0x2C, 0x10, 0x0B, 0x15, 0x1B, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, /* 00007780 */ 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x2D, 0x00, 0x10, /* 00007790 */ 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x6D, @@ -3353,7 +3353,7 @@ namespace Js /* 00007900 */ 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, 0xF2, 0x02, 0x13, 0x13, 0x02, 0x00, 0x00, 0x00, /* 00007910 */ 0x0A, 0x00, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0xF2, 0x03, 0x11, 0x11, 0x01, 0x00, 0x00, 0x00, /* 00007920 */ 0x09, 0x00, 0x5C, 0x01, 0x11, 0xEE, 0x02, 0x00, 0x10, 0x08, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 00007930 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x18, +/* 00007930 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x18, /* 00007940 */ 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, 0x71, 0x00, 0x45, 0x00, /* 00007950 */ 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, 0x3B, 0x00, 0x56, 0x00, /* 00007960 */ 0x77, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, @@ -3362,9 +3362,9 @@ namespace Js /* 00007990 */ 0x02, 0x0A, 0x0C, 0x11, 0x0A, 0x5D, 0x5A, 0x03, 0x02, 0x0B, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, /* 000079A0 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000079B0 */ 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000079C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, -/* 000079D0 */ 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 000079E0 */ 0x80, 0x03, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0C, 0xB4, 0x0C, 0x0C, 0xAE, 0x0F, +/* 000079C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, +/* 000079D0 */ 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, +/* 000079E0 */ 0x83, 0x03, 0x02, 0xFE, 0x85, 0x03, 0xFE, 0xC9, 0x01, 0x5B, 0x0C, 0xB4, 0x0C, 0x0C, 0xAE, 0x0F, /* 000079F0 */ 0x2C, 0x11, 0x0C, 0x15, 0x1B, 0x00, 0x11, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, /* 00007A00 */ 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0xE1, 0x11, 0x0C, 0x11, 0x00, 0x0F, 0x2D, 0x00, 0x11, /* 00007A10 */ 0x09, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x6D, @@ -3393,24 +3393,24 @@ namespace Js /* 00007B80 */ 0x02, 0x00, 0x5C, 0x00, 0x15, 0x5C, 0x01, 0x0C, 0xF2, 0x02, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, /* 00007B90 */ 0x0A, 0x00, 0x5C, 0x01, 0x14, 0x5C, 0x02, 0x0E, 0xF2, 0x03, 0x12, 0x12, 0x01, 0x00, 0x00, 0x00, /* 00007BA0 */ 0x09, 0x00, 0x5C, 0x01, 0x12, 0xEE, 0x02, 0x00, 0x11, 0x08, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 00007BB0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0xF6, +/* 00007BB0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0xF6, /* 00007BC0 */ 0xF7, 0x09, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x50, 0x00, 0x2A, 0x00, 0x6D, 0x00, 0x45, 0x00, /* 00007BD0 */ 0x54, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x25, 0x00, 0x3B, 0x00, 0x56, 0x00, -/* 00007BE0 */ 0x75, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x25, 0x0B, 0x4F, 0xFD, 0x07, 0xFE, 0x7E, +/* 00007BE0 */ 0x75, 0x00, 0x69, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x25, 0x0B, 0x4F, 0xFD, 0x07, 0xFE, 0x81, /* 00007BF0 */ 0x03, 0xFE, 0x58, 0x04, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x3B, 0x00, 0xFE, 0x61, 0xDB, 0xFF, /* 00007C00 */ 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x61, 0xDB, 0xFE, 0x04, 0x1C, 0xFE, 0x04, 0x1C, 0x1C, /* 00007C10 */ 0x29, 0x41, 0x07, 0xFE, 0xAA, 0x01, 0xFE, 0x8A, 0x01, 0x03, 0x01, 0x0C, 0x22, 0x0E, 0x45, 0x2B, /* 00007C20 */ 0x2B, 0x2B, 0x2B, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007C30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007C40 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0x08, -/* 00007C50 */ 0x02, 0xFE, 0x80, 0x03, 0x02, 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, -/* 00007C60 */ 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xAF, 0x03, -/* 00007C70 */ 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0xB0, 0x03, -/* 00007C80 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x84, 0x03, -/* 00007C90 */ 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, -/* 00007CA0 */ 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0xB3, 0x03, -/* 00007CB0 */ 0x02, 0xFE, 0xB4, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x03, 0x02, 0xFE, 0x58, -/* 00007CC0 */ 0x03, 0x02, 0xFE, 0x76, 0x03, 0x09, 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x01, 0x00, +/* 00007C40 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0x08, +/* 00007C50 */ 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, +/* 00007C60 */ 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, +/* 00007C70 */ 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0xB3, 0x03, +/* 00007C80 */ 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x87, 0x03, +/* 00007C90 */ 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, +/* 00007CA0 */ 0x02, 0xFE, 0xB4, 0x03, 0x02, 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0xB6, 0x03, +/* 00007CB0 */ 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0xB8, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x03, 0x02, 0xFE, 0x5B, +/* 00007CC0 */ 0x03, 0x02, 0xFE, 0x79, 0x03, 0x09, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x01, 0x00, /* 00007CD0 */ 0x00, 0x00, 0x00, 0xFE, 0x05, 0x07, 0xA8, 0x3F, 0x2C, 0x42, 0x29, 0x0D, 0x03, 0x00, 0x42, 0x02, /* 00007CE0 */ 0x09, 0x1C, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x6D, /* 00007CF0 */ 0x42, 0x43, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x43, 0xF6, 0x01, 0xFF, 0x42, 0x00, 0x00, 0x8F, @@ -3524,17 +3524,17 @@ namespace Js /* 000083B0 */ 0x03, 0x43, 0x43, 0x21, 0x00, 0x77, 0x43, 0x42, 0x27, 0x62, 0x42, 0x29, 0x28, 0xA8, 0x43, 0x15, /* 000083C0 */ 0x03, 0x00, 0x42, 0x43, 0x09, 0x0C, 0x00, 0x62, 0x42, 0x29, 0x29, 0x43, 0x42, 0x42, 0x20, 0x77, /* 000083D0 */ 0x42, 0x29, 0x1D, 0x77, 0x06, 0x29, 0x2A, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x2C, 0x00, 0x00, 0x00, -/* 000083E0 */ 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x4D, 0x02, -/* 000083F0 */ 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x4B, 0x02, -/* 00008400 */ 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x00, 0xFE, -/* 00008410 */ 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x2E, 0x02, 0xFE, 0x29, -/* 00008420 */ 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, -/* 00008430 */ 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4F, 0x02, 0xFE, -/* 00008440 */ 0x39, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x51, 0x02, 0xFE, 0x58, -/* 00008450 */ 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, 0x02, -/* 00008460 */ 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xEE, 0x01, 0xFE, -/* 00008470 */ 0xE3, 0x01, 0xFE, 0xFA, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xF0, 0x01, 0xFE, 0xEF, 0x01, 0xFE, 0x5D, -/* 00008480 */ 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x56, 0x02, 0xFE, 0xEE, 0x01, 0xFE, 0x37, 0x02, +/* 000083E0 */ 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x50, 0x02, +/* 000083F0 */ 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4E, 0x02, +/* 00008400 */ 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0xFE, +/* 00008410 */ 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0x2C, +/* 00008420 */ 0x02, 0xFE, 0x32, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, +/* 00008430 */ 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x52, 0x02, 0xFE, +/* 00008440 */ 0x3C, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x54, 0x02, 0xFE, 0x5B, +/* 00008450 */ 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, 0x02, +/* 00008460 */ 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x5F, 0x02, 0xFE, 0xF1, 0x01, 0xFE, +/* 00008470 */ 0xE6, 0x01, 0xFE, 0xFD, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF2, 0x01, 0xFE, 0x60, +/* 00008480 */ 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x59, 0x02, 0xFE, 0xF1, 0x01, 0xFE, 0x3A, 0x02, /* 00008490 */ 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, 0x1C, 0x00, 0x42, /* 000084A0 */ 0x00, 0x3F, 0x00, 0xA0, 0x00, 0x22, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6A, 0x00, 0x26, 0x00, 0x48, /* 000084B0 */ 0x00, 0x37, 0x00, 0x72, 0x00, 0x2E, 0x00, 0x60, 0x00, 0x0A, 0x00, 0x33, 0x00, 0x22, 0x00, 0x54, @@ -3551,16 +3551,16 @@ namespace Js /* 00008560 */ 0x00, 0x04, 0x00, 0x38, 0x00, 0x07, 0x00, 0x5C, 0x00, 0x34, 0x00, 0xE3, 0x00, 0x28, 0x00, 0x48, /* 00008570 */ 0x00, 0x01, 0x00, 0x4C, 0x00, 0x1B, 0x00, 0x7C, 0x01, 0x1D, 0x00, 0x7B, 0x00, 0x25, 0x00, 0x68, /* 00008580 */ 0x00, 0x35, 0x00, 0x83, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x0C, 0x00, 0x6F, 0x00, 0x06, 0x00, 0x40, -/* 00008590 */ 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0x1E, 0x04, 0x0C, +/* 00008590 */ 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x80, 0x03, 0xFE, 0x1E, 0x04, 0x0C, /* 000085A0 */ 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x3A, 0x00, 0xFE, 0xEB, 0xCD, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, /* 000085B0 */ 0x03, 0xFE, 0xEB, 0xCD, 0xFE, 0x66, 0x0D, 0xFE, 0x66, 0x0D, 0x07, 0x12, 0x16, 0x06, 0xC8, 0xBB, /* 000085C0 */ 0x03, 0x02, 0x10, 0x07, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000085D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000085E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x04, -/* 000085F0 */ 0x02, 0xFE, 0x8E, 0x03, 0x03, 0x02, 0xFE, 0xA9, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 00008600 */ 0xAA, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0xAB, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, -/* 00008610 */ 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, -/* 00008620 */ 0x88, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0xFE, 0x6E, 0x03, 0xA8, 0x14, 0x62, 0x16, 0x13, 0x00, 0xA8, +/* 000085E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAB, 0x03, 0x04, +/* 000085F0 */ 0x02, 0xFE, 0x91, 0x03, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, +/* 00008600 */ 0xAD, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, +/* 00008610 */ 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, +/* 00008620 */ 0x8B, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0xFE, 0x6E, 0x03, 0xA8, 0x14, 0x62, 0x16, 0x13, 0x00, 0xA8, /* 00008630 */ 0x17, 0x15, 0x03, 0x00, 0x16, 0x17, 0x09, 0x2C, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, /* 00008640 */ 0x00, 0x00, 0x16, 0x00, 0x00, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, /* 00008650 */ 0x62, 0x17, 0x13, 0x00, 0x5C, 0x02, 0x17, 0x5D, 0x03, 0x02, 0x00, 0x00, 0xEE, 0x04, 0x16, 0x16, @@ -3615,9 +3615,9 @@ namespace Js /* 00008960 */ 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x4B, 0x16, 0x07, /* 00008970 */ 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, 0x62, 0x17, 0x13, 0x09, 0x5C, 0x02, 0x17, 0x5D, /* 00008980 */ 0x03, 0x11, 0x0F, 0x00, 0xEE, 0x04, 0x16, 0x16, 0x0F, 0x00, 0x47, 0x12, 0x16, 0x47, 0x00, 0x12, -/* 00008990 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x51, 0x02, 0xFE, 0x58, 0x02, 0xFE, -/* 000089A0 */ 0x52, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, -/* 000089B0 */ 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0x1C, 0xFE, 0xAD, +/* 00008990 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x54, 0x02, 0xFE, 0x5B, 0x02, 0xFE, +/* 000089A0 */ 0x55, 0x02, 0xFE, 0x05, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, +/* 000089B0 */ 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0x1C, 0xFE, 0xB0, /* 000089C0 */ 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x43, 0x00, 0x2C, 0x00, /* 000089D0 */ 0x8B, 0x00, 0x0E, 0x00, 0x94, 0x01, 0x0C, 0x00, 0x40, 0x00, 0x2C, 0x00, 0x6C, 0x00, 0x08, 0x00, /* 000089E0 */ 0x2F, 0x00, 0x38, 0x00, 0x93, 0x00, 0x3E, 0x00, 0x9A, 0x00, 0x0C, 0x00, 0x3D, 0x00, 0x2C, 0x00, @@ -3626,15 +3626,15 @@ namespace Js /* 00008A10 */ 0x3F, 0x00, 0x2C, 0x00, 0x8A, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x2C, 0x00, 0x8C, 0x00, 0x0E, 0x00, /* 00008A20 */ 0x42, 0x00, 0x2C, 0x00, 0x90, 0x00, 0x0E, 0x00, 0x42, 0x00, 0x2C, 0x00, 0x90, 0x00, 0x0E, 0x00, /* 00008A30 */ 0x48, 0x00, 0x2C, 0x00, 0x8F, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, -/* 00008A40 */ 0xFC, 0x07, 0xFE, 0x7C, 0x03, 0xFE, 0x0C, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, +/* 00008A40 */ 0xFC, 0x07, 0xFE, 0x7F, 0x03, 0xFE, 0x0C, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, /* 00008A50 */ 0xFE, 0xF7, 0xC8, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xF7, 0xC8, 0xFE, 0x81, 0x04, /* 00008A60 */ 0xFE, 0x81, 0x04, 0x09, 0x11, 0x16, 0x07, 0x43, 0x40, 0x03, 0x05, 0x06, 0x06, 0x01, 0x01, 0x01, /* 00008A70 */ 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008A80 */ 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008A90 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0xA3, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA4, -/* 00008AA0 */ 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x01, 0x00, 0x00, -/* 00008AB0 */ 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA5, 0x03, 0x01, -/* 00008AC0 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA6, 0x03, 0x02, 0xFE, 0xA7, 0x03, 0xFE, 0x44, 0x01, 0x8F, +/* 00008A90 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0xA6, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA7, +/* 00008AA0 */ 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x01, 0x00, 0x00, +/* 00008AB0 */ 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x01, +/* 00008AC0 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA9, 0x03, 0x02, 0xFE, 0xAA, 0x03, 0xFE, 0x44, 0x01, 0x8F, /* 00008AD0 */ 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x6D, 0x16, 0x17, 0x00, 0x07, /* 00008AE0 */ 0x03, 0x00, 0x5C, 0x00, 0x17, 0x5C, 0x01, 0x11, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, /* 00008AF0 */ 0x00, 0x18, 0x01, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x19, 0x02, 0x13, 0x03, 0x5C, @@ -3655,20 +3655,20 @@ namespace Js /* 00008BE0 */ 0x17, 0x05, 0x00, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x11, 0x98, 0x17, 0x14, 0x0A, 0x03, 0x00, 0x5C, /* 00008BF0 */ 0x03, 0x17, 0x98, 0x17, 0x14, 0x0C, 0x04, 0x00, 0xFB, 0x17, 0x0B, 0x17, 0x10, 0x5C, 0x04, 0x17, /* 00008C00 */ 0xEE, 0x05, 0x00, 0x16, 0x05, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, -/* 00008C10 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, +/* 00008C10 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, /* 00008C20 */ 0x00, 0x49, 0x00, 0x90, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x42, 0x00, 0x01, 0x01, 0x06, 0x00, 0x3C, /* 00008C30 */ 0x00, 0x08, 0x00, 0x6E, 0x00, 0x47, 0x00, 0x82, 0x00, 0x0E, 0x00, 0x33, 0x00, 0x44, 0x00, 0x8D, -/* 00008C40 */ 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, +/* 00008C40 */ 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7E, 0x03, /* 00008C50 */ 0xFE, 0xFC, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x38, 0x00, 0xFE, 0xBE, 0xC3, 0xFF, 0x00, /* 00008C60 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xBE, 0xC3, 0xFE, 0x2B, 0x05, 0xFE, 0x2B, 0x05, 0x09, 0x14, /* 00008C70 */ 0x19, 0x07, 0x50, 0x4B, 0x03, 0x05, 0x06, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, /* 00008C80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xFF, /* 00008C90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00008CA0 */ 0x98, 0x03, 0x02, 0xFE, 0x99, 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9A, 0x03, 0x02, 0xFE, 0x9B, 0x03, -/* 00008CB0 */ 0x02, 0xFE, 0x9C, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x8C, -/* 00008CC0 */ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 00008CD0 */ 0xFE, 0x9F, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0xA1, 0x03, 0x02, -/* 00008CE0 */ 0xFE, 0xA2, 0x03, 0xFE, 0x73, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, +/* 00008CA0 */ 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x9E, 0x03, +/* 00008CB0 */ 0x02, 0xFE, 0x9F, 0x03, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8F, +/* 00008CC0 */ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 00008CD0 */ 0xFE, 0xA2, 0x03, 0x02, 0xFE, 0xA3, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, +/* 00008CE0 */ 0xFE, 0xA5, 0x03, 0xFE, 0x73, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, /* 00008CF0 */ 0x00, 0x00, 0x6D, 0x19, 0x1A, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, 0x01, 0x14, 0x8F, /* 00008D00 */ 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, /* 00008D10 */ 0x04, 0xFB, 0x1C, 0x02, 0x16, 0x03, 0x5C, 0x01, 0x1C, 0xEE, 0x02, 0x1B, 0x1B, 0x01, 0x00, 0x5C, @@ -3691,31 +3691,31 @@ namespace Js /* 00008E20 */ 0x04, 0x00, 0x2F, 0x1A, 0x0D, 0x1A, 0x2F, 0x1A, 0x1A, 0x0F, 0x14, 0x03, 0x00, 0x15, 0x11, 0x09, /* 00008E30 */ 0x06, 0x00, 0x47, 0x1B, 0x12, 0x09, 0x03, 0x00, 0x47, 0x1B, 0x13, 0x2F, 0x1A, 0x1A, 0x1B, 0x2F, /* 00008E40 */ 0x1A, 0x1A, 0x10, 0x5C, 0x04, 0x1A, 0xEE, 0x05, 0x00, 0x19, 0x05, 0x00, 0x09, 0x08, 0x00, 0x47, -/* 00008E50 */ 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, +/* 00008E50 */ 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, /* 00008E60 */ 0x96, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x0D, 0x01, 0x08, 0x00, 0x2B, 0x00, 0x42, /* 00008E70 */ 0x00, 0xF6, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x16, 0x00, 0x48, 0x00, 0x52, 0x00, 0x86, 0x00, 0x08, /* 00008E80 */ 0x00, 0x31, 0x00, 0x60, 0x00, 0xC6, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x6E, 0x05, 0x0A, -/* 00008E90 */ 0x00, 0xFC, 0x07, 0xFE, 0x7A, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x37, +/* 00008E90 */ 0x00, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x37, /* 00008EA0 */ 0x00, 0xFE, 0x4E, 0xC2, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x4E, 0xC2, 0xEF, 0xEF, /* 00008EB0 */ 0x03, 0x05, 0x07, 0x0E, 0x0B, 0x03, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008EC0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008ED0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, -/* 00008EE0 */ 0xB8, 0x02, 0x02, 0xFE, 0x60, 0x03, 0x34, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, +/* 00008ED0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, +/* 00008EE0 */ 0xBB, 0x02, 0x02, 0xFE, 0x63, 0x03, 0x34, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, /* 00008EF0 */ 0x06, 0x00, 0x47, 0x00, 0x03, 0x09, 0x21, 0x00, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 00008F00 */ 0x00, 0x07, 0x00, 0x00, 0x98, 0x07, 0x07, 0x05, 0x00, 0x00, 0x47, 0x00, 0x07, 0x0F, 0x03, 0x00, /* 00008F10 */ 0x07, 0x47, 0x00, 0x04, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x8A, /* 00008F20 */ 0xC2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x21, 0x00, -/* 00008F30 */ 0x45, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x79, 0x03, 0xFE, 0xB3, 0x03, +/* 00008F30 */ 0x45, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x7C, 0x03, 0xFE, 0xB3, 0x03, /* 00008F40 */ 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x35, 0x00, 0xFE, 0x96, 0xB6, 0x01, 0xFF, 0x00, 0x10, 0x01, /* 00008F50 */ 0x00, 0x02, 0x02, 0xFE, 0x96, 0xB6, 0xFE, 0xC7, 0x09, 0xFE, 0xC7, 0x09, 0x02, 0x06, 0x17, 0x1B, /* 00008F60 */ 0x05, 0xCC, 0xCA, 0x03, 0x0D, 0x02, 0x07, 0x05, 0x05, 0x05, 0x05, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008F70 */ 0xFF, 0x19, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008F80 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, -/* 00008F90 */ 0x04, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x8F, -/* 00008FA0 */ 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, -/* 00008FB0 */ 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, -/* 00008FC0 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x01, 0x00, 0x00, -/* 00008FD0 */ 0x00, 0x00, 0x02, 0xFE, 0x96, 0x03, 0xFE, 0x4D, 0x04, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCE, +/* 00008F80 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, +/* 00008F90 */ 0x04, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, +/* 00008FA0 */ 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, +/* 00008FB0 */ 0x03, 0x02, 0xFE, 0x96, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x97, 0x03, 0x02, 0xFE, 0x98, +/* 00008FC0 */ 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x01, 0x00, 0x00, +/* 00008FD0 */ 0x00, 0x00, 0x02, 0xFE, 0x99, 0x03, 0xFE, 0x4D, 0x04, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCE, /* 00008FE0 */ 0x1B, 0x00, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x1B, 0x93, 0x03, 0x00, 0x00, 0x00, 0x1B, /* 00008FF0 */ 0x00, 0x00, 0x62, 0x1B, 0x1B, 0x00, 0x0F, 0x03, 0x00, 0x1B, 0x09, 0xAD, 0x00, 0x93, 0x03, 0x00, /* 00009000 */ 0x00, 0x00, 0x1B, 0x00, 0x00, 0x62, 0x1B, 0x1B, 0x00, 0x14, 0x17, 0x00, 0x1B, 0x02, 0x09, 0x00, @@ -3784,8 +3784,8 @@ namespace Js /* 000093F0 */ 0x03, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1C, 0x06, 0x00, 0x5C, 0x01, 0x1C, 0x93, 0x02, /* 00009400 */ 0x00, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x5C, 0x02, 0x1C, 0x5D, 0x03, 0x16, 0x0C, 0x00, 0xEE, 0x04, /* 00009410 */ 0x1B, 0x1B, 0x0C, 0x00, 0x47, 0x00, 0x1B, 0x09, 0x05, 0x00, 0xA8, 0x1B, 0x47, 0x00, 0x1B, 0x09, -/* 00009420 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, -/* 00009430 */ 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x97, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFE, 0xD8, +/* 00009420 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, +/* 00009430 */ 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x9A, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFE, 0xD8, /* 00009440 */ 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x26, 0x00, 0x13, 0x00, 0x2C, 0x00, 0x28, 0x00, /* 00009450 */ 0x5C, 0x00, 0x3A, 0x00, 0x64, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x37, 0x00, 0xAA, 0x00, 0x13, 0x00, /* 00009460 */ 0x29, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x3A, 0x00, 0x5F, 0x00, 0x14, 0x00, 0x3B, 0x00, 0x37, 0x00, @@ -3805,16 +3805,16 @@ namespace Js /* 00009540 */ 0x02, 0x00, 0x5C, 0x01, 0x06, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x03, /* 00009550 */ 0x00, 0x5C, 0x02, 0x06, 0x5C, 0x03, 0x03, 0xEE, 0x04, 0xFF, 0x05, 0x00, 0x00, 0xA8, 0x00, 0x24, /* 00009560 */ 0x00, 0x00, 0x00, 0x00, 0xFE, 0x12, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x2D, 0x00, -/* 00009570 */ 0x3B, 0x00, 0x5C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x78, 0x03, 0xFE, +/* 00009570 */ 0x3B, 0x00, 0x5C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, /* 00009580 */ 0x82, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x34, 0x00, 0xFE, 0xDC, 0xAC, 0xFF, 0x00, 0x10, /* 00009590 */ 0x01, 0x00, 0x04, 0x04, 0xFE, 0xDC, 0xAC, 0xFE, 0x1F, 0x09, 0xFE, 0x1F, 0x09, 0x07, 0x15, 0x1A, /* 000095A0 */ 0x05, 0x93, 0x8D, 0x03, 0x08, 0x03, 0x01, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, /* 000095B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, /* 000095C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, -/* 000095D0 */ 0x02, 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x80, 0x03, 0x09, 0x02, 0xFE, 0x81, 0x03, 0x02, 0xFE, 0x82, -/* 000095E0 */ 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0xC0, -/* 000095F0 */ 0x02, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, -/* 00009600 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0xFE, 0x9B, 0x02, +/* 000095D0 */ 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x09, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, +/* 000095E0 */ 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0xC3, +/* 000095F0 */ 0x02, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, +/* 00009600 */ 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0xFE, 0x9B, 0x02, /* 00009610 */ 0xA8, 0x1A, 0x14, 0x03, 0x00, 0x15, 0x1A, 0x09, 0x28, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x08, /* 00009620 */ 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x03, 0xCB, 0x1B, 0x5C, 0x01, /* 00009630 */ 0x1B, 0x5D, 0x02, 0x02, 0x00, 0x00, 0xEE, 0x03, 0x1A, 0x1A, 0x00, 0x00, 0x47, 0x15, 0x1A, 0x09, @@ -3857,19 +3857,19 @@ namespace Js /* 00009880 */ 0x05, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x7B, 0x0C, 0x1B, 0x08, 0x7B, 0x04, 0x1B, 0x09, /* 00009890 */ 0x7B, 0x04, 0x1B, 0x0A, 0x7B, 0x04, 0x1B, 0x0B, 0x5C, 0x03, 0x1B, 0xEE, 0x04, 0xFF, 0x1A, 0x07, /* 000098A0 */ 0x00, 0x47, 0x00, 0x15, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x06, 0x90, 0x00, 0x78, 0x00, -/* 000098B0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 000098C0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 000098D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 000098E0 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 000098F0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009900 */ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 00009910 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x18, 0x00, -/* 00009920 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00009930 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 00009940 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00009950 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, -/* 00009960 */ 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, -/* 00009970 */ 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, +/* 000098B0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 000098C0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 000098D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 000098E0 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 000098F0 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009900 */ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 00009910 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, +/* 00009920 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00009930 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 00009940 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00009950 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, +/* 00009960 */ 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, +/* 00009970 */ 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, /* 00009980 */ 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, 0x00, 0x28, 0x00, 0x51, 0x00, 0x26, 0x00, 0x4C, 0x00, /* 00009990 */ 0x03, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x46, 0x00, 0x38, 0x00, 0x96, 0x00, 0x03, 0x00, 0x3A, 0x00, /* 000099A0 */ 0x10, 0x00, 0x46, 0x00, 0x2A, 0x00, 0x79, 0x00, 0x03, 0x00, 0x3C, 0x00, 0x17, 0x00, 0x58, 0x00, @@ -3880,14 +3880,14 @@ namespace Js /* 000099F0 */ 0x00, 0x01, 0x01, 0xFE, 0x40, 0x7A, 0xFE, 0xA1, 0x31, 0xFE, 0xA1, 0x31, 0x01, 0x0D, 0x22, 0x28, /* 00009A00 */ 0x09, 0xA6, 0xA6, 0x01, 0x0C, 0x01, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0x25, 0xFF, 0xFF, /* 00009A10 */ 0xFF, 0xFF, 0xFF, 0x26, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009A20 */ 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x43, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x04, 0x01, -/* 00009A30 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x45, 0x03, 0x02, 0xFE, 0x46, 0x03, 0x02, 0xFE, 0xA7, 0x02, -/* 00009A40 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC2, 0x02, 0x03, 0x02, 0xFE, -/* 00009A50 */ 0xF3, 0x02, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, -/* 00009A60 */ 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, -/* 00009A70 */ 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, -/* 00009A80 */ 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, -/* 00009A90 */ 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0xFE, 0xC1, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, +/* 00009A20 */ 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x46, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x04, 0x01, +/* 00009A30 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, 0xAA, 0x02, +/* 00009A40 */ 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC5, 0x02, 0x03, 0x02, 0xFE, +/* 00009A50 */ 0xF6, 0x02, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, +/* 00009A60 */ 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, +/* 00009A70 */ 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, +/* 00009A80 */ 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, +/* 00009A90 */ 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0xFE, 0xC1, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, /* 00009AA0 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x17, 0x00, 0x2A, /* 00009AB0 */ 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, /* 00009AC0 */ 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x8A, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, @@ -3948,17 +3948,17 @@ namespace Js /* 00009E30 */ 0x2B, 0x06, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, 0x03, 0x2B, 0xEE, 0x04, 0xFF, /* 00009E40 */ 0x2A, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, /* 00009E50 */ 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, -/* 00009E60 */ 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 00009E70 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 00009E80 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009E90 */ 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 00009EA0 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, -/* 00009EB0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 00009EC0 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, -/* 00009ED0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 00009EE0 */ 0x00, 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, -/* 00009EF0 */ 0x7C, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0xC6, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, -/* 00009F00 */ 0x53, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE5, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x59, 0x7A, 0x0F, +/* 00009E60 */ 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 00009E70 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 00009E80 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009E90 */ 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 00009EA0 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, +/* 00009EB0 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 00009EC0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, +/* 00009ED0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 00009EE0 */ 0x00, 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, +/* 00009EF0 */ 0x7F, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0xC9, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, +/* 00009F00 */ 0x56, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE8, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x59, 0x7A, 0x0F, /* 00009F10 */ 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x87, 0x19, 0x54, 0x00, 0xDF, 0x02, 0x48, 0x00, 0xA2, 0x05, /* 00009F20 */ 0x2C, 0x00, 0x4C, 0x03, 0x2C, 0x00, 0x54, 0x00, 0x54, 0x00, 0x9D, 0x00, 0x37, 0x00, 0x23, 0x01, /* 00009F30 */ 0x61, 0x00, 0x9A, 0x00, 0x3E, 0x00, 0x49, 0x00, 0x5C, 0x00, 0xA0, 0x00, 0x68, 0x00, 0xD8, 0x04, @@ -3970,7 +3970,7 @@ namespace Js /* 00009F90 */ 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, /* 00009FA0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, /* 00009FB0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00009FC0 */ 0x0F, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, +/* 00009FC0 */ 0x12, 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, /* 00009FD0 */ 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, /* 00009FE0 */ 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 00009FF0 */ 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, @@ -3981,16 +3981,16 @@ namespace Js /* 0000A040 */ 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, /* 0000A050 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, /* 0000A060 */ 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, -/* 0000A070 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, -/* 0000A080 */ 0xFE, 0x43, 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, +/* 0000A070 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, +/* 0000A080 */ 0xFE, 0x46, 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, /* 0000A090 */ 0x2A, 0x00, 0x87, 0x00, 0x26, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x6A, 0x00, 0x2A, 0x00, 0x87, 0x00, -/* 0000A0A0 */ 0x09, 0x00, 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, +/* 0000A0A0 */ 0x09, 0x00, 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, /* 0000A0B0 */ 0x53, 0x03, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x30, 0x00, 0xFE, 0xA2, 0xA3, 0x01, 0xFF, 0x00, /* 0000A0C0 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xA2, 0xA3, 0xFE, 0x1A, 0x04, 0xFE, 0x1A, 0x04, 0x02, 0x06, /* 0000A0D0 */ 0x07, 0x0B, 0x05, 0x40, 0x40, 0x04, 0x06, 0x07, 0x08, 0x03, 0x03, 0x03, 0x03, 0x08, 0xFF, 0xFF, /* 0000A0E0 */ 0xFF, 0xFF, 0xFF, 0x09, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, -/* 0000A100 */ 0xC3, 0x02, 0x03, 0x04, 0xFE, 0x48, 0x01, 0x5B, 0x07, 0xB4, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, +/* 0000A0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, +/* 0000A100 */ 0xC6, 0x02, 0x03, 0x04, 0xFE, 0x48, 0x01, 0x5B, 0x07, 0xB4, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, /* 0000A110 */ 0x03, 0x00, 0x0B, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 0000A120 */ 0x0C, 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5D, 0x01, 0x03, /* 0000A130 */ 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4011,7 +4011,7 @@ namespace Js /* 0000A220 */ 0x8F, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, /* 0000A230 */ 0x00, 0x06, 0x93, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x06, 0x00, 0x5C, 0x01, 0x0C, 0xCB, 0x0C, 0x5C, /* 0000A240 */ 0x02, 0x0C, 0xEE, 0x03, 0x00, 0x0B, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 0000A250 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x5C, 0x03, 0xFE, 0xE8, 0x01, +/* 0000A250 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x5F, 0x03, 0xFE, 0xEB, 0x01, /* 0000A260 */ 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x8E, /* 0000A270 */ 0x00, 0x29, 0x00, 0x4C, 0x00, 0x25, 0x00, 0x6A, 0x00, 0x2A, 0x00, 0x90, 0x00, 0x28, 0x00, 0x49, /* 0000A280 */ 0x00, 0x3F, 0x00, 0x4A, 0x01, 0x2D, 0x00, 0x3F, 0x00, 0x00, 0x8E, 0xA2, 0x00, 0x00, 0x3F, 0x6E, @@ -4020,19 +4020,19 @@ namespace Js /* 0000A2B0 */ 0x62, 0xA6, 0xFC, 0xFC, 0x05, 0x04, 0x06, 0x0D, 0x0D, 0x05, 0x01, 0x01, 0x02, 0x41, 0xFF, 0xFF, /* 0000A2C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, /* 0000A2D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, -/* 0000A2E0 */ 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0x0A, 0x03, 0x48, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +/* 0000A2E0 */ 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x0D, 0x03, 0x48, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0000A2F0 */ 0x00, 0x06, 0x00, 0x00, 0x2F, 0x07, 0x02, 0x04, 0x2D, 0x06, 0x06, 0x07, 0x15, 0x03, 0x00, 0x06, /* 0000A300 */ 0x03, 0x09, 0x28, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, /* 0000A310 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x2F, 0x08, 0x02, 0x04, /* 0000A320 */ 0x98, 0x07, 0x07, 0x08, 0x00, 0x00, 0x9D, 0x07, 0x06, 0x04, 0x00, 0x00, 0xA8, 0x00, 0x24, 0x00, /* 0000A330 */ 0x00, 0x00, 0x00, 0xFE, 0x93, 0xA6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x5B, 0x00, 0x2A, -/* 0000A340 */ 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x37, +/* 0000A340 */ 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x37, /* 0000A350 */ 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x2F, 0x00, 0xFE, 0xAA, 0x9C, 0xFF, 0x00, 0x10, 0x01, /* 0000A360 */ 0x00, 0x02, 0x02, 0xFE, 0xAA, 0x9C, 0xFE, 0xF1, 0x02, 0xFE, 0xF1, 0x02, 0x08, 0x07, 0x0B, 0x07, /* 0000A370 */ 0x3D, 0x39, 0x04, 0x06, 0x03, 0x09, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A380 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A390 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 0000A3A0 */ 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0x21, 0x01, +/* 0000A390 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 0000A3A0 */ 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFE, 0x21, 0x01, /* 0000A3B0 */ 0x5B, 0x08, 0xB4, 0x08, 0x08, 0x8F, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0C, 0x00, /* 0000A3C0 */ 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x07, 0xF2, 0x02, /* 0000A3D0 */ 0x0B, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x07, 0x0B, 0x2C, 0x0B, 0x08, 0x15, 0x03, @@ -4051,17 +4051,17 @@ namespace Js /* 0000A4A0 */ 0x14, 0x03, 0x00, 0x07, 0x0E, 0x09, 0x06, 0x00, 0x47, 0x0E, 0x05, 0x09, 0x03, 0x00, 0x47, 0x0E, /* 0000A4B0 */ 0x07, 0x5C, 0x01, 0x0E, 0x5C, 0x02, 0x09, 0xF2, 0x03, 0x0C, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x05, /* 0000A4C0 */ 0x00, 0x5C, 0x01, 0x0C, 0xEE, 0x02, 0x00, 0x0B, 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000A4D0 */ 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, -/* 0000A4E0 */ 0xF8, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x26, 0x00, 0x31, 0x00, 0x0B, +/* 0000A4D0 */ 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, +/* 0000A4E0 */ 0xFB, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x26, 0x00, 0x31, 0x00, 0x0B, /* 0000A4F0 */ 0x00, 0x39, 0x00, 0x2A, 0x00, 0x7F, 0x00, 0x26, 0x00, 0x48, 0x00, 0x15, 0x00, 0x66, 0x00, 0x2A, /* 0000A500 */ 0x00, 0xD8, 0x00, 0x5A, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, -/* 0000A510 */ 0xC3, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, 0xEB, 0x96, +/* 0000A510 */ 0xC6, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, 0xEB, 0x96, /* 0000A520 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xEB, 0x96, 0xFE, 0x64, 0x05, 0xFE, 0x64, 0x05, /* 0000A530 */ 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x02, 0x09, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, /* 0000A540 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, /* 0000A550 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, /* 0000A560 */ 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, -/* 0000A570 */ 0x04, 0x02, 0xFE, 0xC3, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, +/* 0000A570 */ 0x04, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, /* 0000A580 */ 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, /* 0000A590 */ 0x0F, 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, 0x08, 0x0F, 0x62, 0x0F, /* 0000A5A0 */ 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x03, 0x01, 0x00, @@ -4089,10 +4089,10 @@ namespace Js /* 0000A700 */ 0x00, 0x00, 0x10, 0x06, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x04, 0x00, 0x00, 0x00, /* 0000A710 */ 0x1E, 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, /* 0000A720 */ 0x00, 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0xEE, 0x04, -/* 0000A730 */ 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, +/* 0000A730 */ 0x10, 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, /* 0000A740 */ 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, -/* 0000A750 */ 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, -/* 0000A760 */ 0x43, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, +/* 0000A750 */ 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, +/* 0000A760 */ 0x46, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, /* 0000A770 */ 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 0000A780 */ 0x09, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, 0x59, 0x00, 0x26, 0x00, 0x3A, 0x00, /* 0000A790 */ 0x22, 0x00, 0x39, 0x00, 0x25, 0x00, 0x9F, 0x00, 0x26, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, 0x00, @@ -4103,7 +4103,7 @@ namespace Js /* 0000A7E0 */ 0xFE, 0x73, 0x02, 0x09, 0x09, 0x0E, 0x07, 0x40, 0x3C, 0x03, 0x02, 0x06, 0x06, 0x0B, 0x03, 0x03, /* 0000A7F0 */ 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A800 */ 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A810 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0x43, +/* 0000A810 */ 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x46, /* 0000A820 */ 0x03, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x01, 0x5B, /* 0000A830 */ 0x09, 0xB4, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0E, 0x09, 0x15, 0x03, 0x00, 0x0E, 0x03, 0x09, 0x42, /* 0000A840 */ 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xE1, 0x0E, 0x09, @@ -4123,23 +4123,23 @@ namespace Js /* 0000A920 */ 0x03, 0x00, 0x5C, 0x00, 0x10, 0x2A, 0x11, 0x07, 0x14, 0x03, 0x00, 0x0C, 0x11, 0x09, 0x06, 0x00, /* 0000A930 */ 0x47, 0x11, 0x07, 0x09, 0x03, 0x00, 0x47, 0x11, 0x0C, 0x5C, 0x01, 0x11, 0x5C, 0x02, 0x0A, 0xF2, /* 0000A940 */ 0x03, 0x0F, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x5C, 0x01, 0x0F, 0xEE, 0x02, 0x00, 0x0E, -/* 0000A950 */ 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0x27, -/* 0000A960 */ 0x02, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x58, +/* 0000A950 */ 0x04, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x2A, +/* 0000A960 */ 0x02, 0xFE, 0xFB, 0x01, 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x58, /* 0000A970 */ 0x00, 0x2A, 0x00, 0x7B, 0x00, 0x25, 0x00, 0x3F, 0x00, 0x2F, 0x00, 0x58, 0x00, 0x26, 0x00, 0x8F, -/* 0000A980 */ 0x00, 0x5A, 0x00, 0x56, 0x00, 0x00, 0x3F, 0x7E, 0x21, 0x0B, 0x0F, 0xFD, 0x07, 0xFE, 0x53, 0x03, +/* 0000A980 */ 0x00, 0x5A, 0x00, 0x56, 0x00, 0x00, 0x3F, 0x7E, 0x21, 0x0B, 0x0F, 0xFD, 0x07, 0xFE, 0x56, 0x03, /* 0000A990 */ 0xFE, 0x94, 0x02, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x2C, 0x00, 0xFE, 0x9C, 0x7A, 0xFF, 0x00, /* 0000A9A0 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x9C, 0x7A, 0xFE, 0x34, 0x19, 0xFE, 0x34, 0x19, 0x18, 0x23, /* 0000A9B0 */ 0x37, 0x07, 0xFE, 0x83, 0x01, 0xFE, 0x5E, 0x01, 0x03, 0x04, 0x22, 0x10, 0x45, 0x1E, 0x1E, 0x1E, /* 0000A9C0 */ 0x1E, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A9D0 */ 0xFF, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, -/* 0000A9E0 */ 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0x0A, -/* 0000A9F0 */ 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, -/* 0000AA00 */ 0x16, 0x03, 0x02, 0xFE, 0x48, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, -/* 0000AA10 */ 0x49, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x56, 0x03, 0x02, -/* 0000AA20 */ 0xFE, 0x57, 0x03, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0x4B, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, -/* 0000AA30 */ 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, -/* 0000AA40 */ 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x14, 0x00, -/* 0000AA50 */ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, +/* 0000A9E0 */ 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC6, 0x02, 0x08, 0x02, 0xFE, 0x0D, +/* 0000A9F0 */ 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, +/* 0000AA00 */ 0x19, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, +/* 0000AA10 */ 0x4C, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x59, 0x03, 0x02, +/* 0000AA20 */ 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0x4E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, +/* 0000AA30 */ 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, +/* 0000AA40 */ 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x01, 0x14, 0x00, +/* 0000AA50 */ 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x50, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, /* 0000AA60 */ 0xFE, 0x78, 0x06, 0x2C, 0x38, 0x23, 0x0D, 0x03, 0x00, 0x38, 0x02, 0x09, 0x1C, 0x00, 0x8F, 0x03, /* 0000AA70 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x6D, 0x38, 0x39, 0x00, 0x07, 0x01, /* 0000AA80 */ 0x00, 0x5C, 0x00, 0x39, 0xF6, 0x01, 0xFF, 0x38, 0x00, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0A, @@ -4243,13 +4243,13 @@ namespace Js /* 0000B0A0 */ 0x23, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x39, 0x01, 0x00, 0x07, 0x03, 0x00, /* 0000B0B0 */ 0x5C, 0x00, 0x04, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3A, 0x0F, 0x00, 0x5C, /* 0000B0C0 */ 0x01, 0x3A, 0x62, 0x3A, 0x23, 0x1B, 0x5C, 0x02, 0x3A, 0xF6, 0x03, 0x39, 0x39, 0x21, 0x00, 0x77, -/* 0000B0D0 */ 0x39, 0x38, 0x1C, 0x77, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, -/* 0000B0E0 */ 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xD9, 0x01, 0xFE, -/* 0000B0F0 */ 0xDA, 0x01, 0xFE, 0x33, 0x02, 0xFE, 0x34, 0x02, 0xFE, 0xFB, 0x01, 0xF9, 0xFE, 0x59, 0x03, 0xFE, -/* 0000B100 */ 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x45, 0x02, 0xFE, 0xDF, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0xE1, -/* 0000B110 */ 0x01, 0xFE, 0xD6, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, -/* 0000B120 */ 0xFE, 0xDE, 0x01, 0xFE, 0xDC, 0x01, 0xFE, 0xF9, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0xDD, 0x01, 0xFE, -/* 0000B130 */ 0xDD, 0x01, 0xFE, 0x36, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 0000B0D0 */ 0x39, 0x38, 0x1C, 0x77, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, +/* 0000B0E0 */ 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xDC, 0x01, 0xFE, +/* 0000B0F0 */ 0xDD, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x37, 0x02, 0xFE, 0xFE, 0x01, 0xFC, 0xFE, 0x5C, 0x03, 0xFE, +/* 0000B100 */ 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x48, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xE4, +/* 0000B110 */ 0x01, 0xFE, 0xD9, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, 0xFE, 0xDA, 0x01, 0xFE, 0xDB, 0x01, +/* 0000B120 */ 0xFE, 0xE1, 0x01, 0xFE, 0xDF, 0x01, 0xFE, 0xFC, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0xE0, 0x01, 0xFE, +/* 0000B130 */ 0xE0, 0x01, 0xFE, 0x39, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 0000B140 */ 0x3C, 0x00, 0x1C, 0x00, 0x42, 0x00, 0x3F, 0x00, 0x9C, 0x00, 0x22, 0x00, 0x6E, 0x00, 0x04, 0x00, /* 0000B150 */ 0x64, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x26, 0x00, 0x51, 0x00, 0x22, 0x00, 0x4C, 0x00, 0x37, 0x00, /* 0000B160 */ 0x72, 0x00, 0x3B, 0x00, 0x73, 0x00, 0x03, 0x00, 0x2B, 0x00, 0x2E, 0x00, 0x60, 0x00, 0x3B, 0x00, @@ -4273,11 +4273,11 @@ namespace Js /* 0000B280 */ 0x01, 0xFE, 0xA2, 0x49, 0xFE, 0x43, 0x30, 0xFE, 0x43, 0x30, 0x0B, 0x17, 0x1B, 0x09, 0x99, 0x99, /* 0000B290 */ 0x01, 0x0C, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B2A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0xFF, -/* 0000B2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x1D, 0x03, 0x02, 0xFE, -/* 0000B2C0 */ 0x1E, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1F, 0x03, 0x02, 0xFE, 0x20, 0x03, -/* 0000B2D0 */ 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC2, -/* 0000B2E0 */ 0x02, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, -/* 0000B2F0 */ 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, 0xFE, +/* 0000B2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x20, 0x03, 0x02, 0xFE, +/* 0000B2C0 */ 0x21, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, 0x03, +/* 0000B2D0 */ 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC5, +/* 0000B2E0 */ 0x02, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, +/* 0000B2F0 */ 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x27, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x29, 0x03, 0xFE, /* 0000B300 */ 0x8A, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 0000B310 */ 0x00, 0x1D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x1D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 0000B320 */ 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, @@ -4335,17 +4335,17 @@ namespace Js /* 0000B660 */ 0x1F, 0x1E, 0x06, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, /* 0000B670 */ 0xFF, 0x1D, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000B680 */ 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, -/* 0000B690 */ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, -/* 0000B6A0 */ 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 0000B6B0 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 0000B6C0 */ 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 0000B6D0 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, -/* 0000B6E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, -/* 0000B6F0 */ 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, -/* 0000B700 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, -/* 0000B710 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, -/* 0000B720 */ 0xFE, 0x7C, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x27, 0x03, -/* 0000B730 */ 0x02, 0x02, 0x00, 0xFE, 0xE4, 0x01, 0x01, 0xFE, 0xE9, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, +/* 0000B690 */ 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, +/* 0000B6A0 */ 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, +/* 0000B6B0 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 0000B6C0 */ 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 0000B6D0 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, +/* 0000B6E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, +/* 0000B6F0 */ 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +/* 0000B700 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, +/* 0000B710 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, +/* 0000B720 */ 0xFE, 0x7F, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x2A, 0x03, +/* 0000B730 */ 0x02, 0x02, 0x00, 0xFE, 0xE7, 0x01, 0x01, 0xFE, 0xEC, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, /* 0000B740 */ 0x00, 0x00, 0x42, 0x00, 0x09, 0x17, 0x54, 0x00, 0x48, 0x04, 0x48, 0x00, 0xC4, 0x05, 0x2C, 0x00, /* 0000B750 */ 0x41, 0x00, 0x2C, 0x00, 0x67, 0x03, 0x54, 0x00, 0x95, 0x00, 0x61, 0x00, 0x92, 0x00, 0x3E, 0x00, /* 0000B760 */ 0x47, 0x00, 0x5C, 0x00, 0x98, 0x00, 0x68, 0x00, 0xBD, 0x05, 0x7F, 0x00, 0x12, 0x03, 0x0F, 0x00, @@ -4356,8 +4356,8 @@ namespace Js /* 0000B7B0 */ 0xFE, 0xAC, 0x76, 0xFE, 0x50, 0x02, 0xFE, 0x50, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x03, /* 0000B7C0 */ 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B7D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B7E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, -/* 0000B7F0 */ 0x02, 0xFE, 0xBF, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, +/* 0000B7E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, +/* 0000B7F0 */ 0x02, 0xFE, 0xC2, 0x02, 0xAA, 0x5B, 0x05, 0xB4, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, /* 0000B800 */ 0x08, 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, /* 0000B810 */ 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5D, 0x01, 0x03, 0x00, 0x00, /* 0000B820 */ 0x5D, 0x02, 0x04, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, @@ -4368,17 +4368,17 @@ namespace Js /* 0000B870 */ 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x6D, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, /* 0000B880 */ 0x5D, 0x01, 0x03, 0x02, 0x00, 0x5D, 0x02, 0x04, 0x02, 0x00, 0xF2, 0x03, 0xFF, 0x08, 0x00, 0x00, /* 0000B890 */ 0x00, 0x00, 0x02, 0x00, 0x62, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 0000B8A0 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0xD3, +/* 0000B8A0 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x45, 0x02, 0x00, 0xFE, 0xD3, /* 0000B8B0 */ 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x80, 0x00, 0x26, 0x00, /* 0000B8C0 */ 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, 0x2A, 0x00, 0x80, 0x00, 0x09, 0x00, 0x39, 0x00, 0x00, 0x3F, -/* 0000B8D0 */ 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x23, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, +/* 0000B8D0 */ 0x7E, 0x11, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x26, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, /* 0000B8E0 */ 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, 0x70, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xD8, /* 0000B8F0 */ 0x70, 0xFE, 0x03, 0x05, 0xFE, 0x03, 0x05, 0x05, 0x0D, 0x10, 0x04, 0x33, 0x32, 0x03, 0x03, 0x01, /* 0000B900 */ 0x09, 0x11, 0x11, 0x11, 0x11, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B910 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x42, 0x03, 0x02, -/* 0000B930 */ 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, -/* 0000B940 */ 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x3B, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, +/* 0000B920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x45, 0x03, 0x02, +/* 0000B930 */ 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, +/* 0000B940 */ 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x3E, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, /* 0000B950 */ 0xEB, 0x5B, 0x0D, 0xB4, 0x0D, 0x0D, 0x2C, 0x10, 0x0D, 0x15, 0x03, 0x00, 0x10, 0x02, 0x09, 0x2A, /* 0000B960 */ 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x6D, 0x10, 0x11, /* 0000B970 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x11, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, 0x02, 0x04, 0x00, @@ -4394,20 +4394,20 @@ namespace Js /* 0000BA10 */ 0x07, 0x7B, 0x10, 0x00, 0x08, 0x62, 0x10, 0x0E, 0x09, 0x7B, 0x10, 0x00, 0x0A, 0x62, 0x10, 0x0E, /* 0000BA20 */ 0x0B, 0x7B, 0x10, 0x00, 0x0C, 0x62, 0x10, 0x0E, 0x0D, 0x7B, 0x10, 0x00, 0x0E, 0x62, 0x10, 0x0E, /* 0000BA30 */ 0x0F, 0x7B, 0x10, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x24, 0x00, 0x00, -/* 0000BA40 */ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x29, -/* 0000BA50 */ 0x03, 0x00, 0x00, 0xEB, 0x01, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0xEC, -/* 0000BA60 */ 0x01, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, -/* 0000BA70 */ 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x3B, 0x02, 0xFE, 0x29, 0x03, 0xFE, 0x3C, 0x02, -/* 0000BA80 */ 0xFE, 0xEB, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0x3B, 0x03, 0xFE, -/* 0000BA90 */ 0x3F, 0x02, 0xFE, 0xEC, 0x01, 0xFE, 0x3E, 0x02, 0xFE, 0x32, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, +/* 0000BA40 */ 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x2C, +/* 0000BA50 */ 0x03, 0x00, 0x00, 0xEE, 0x01, 0x00, 0x00, 0xF0, 0x01, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x00, 0xEF, +/* 0000BA60 */ 0x01, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, +/* 0000BA70 */ 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, 0xFE, 0x3E, 0x02, 0xFE, 0x2C, 0x03, 0xFE, 0x3F, 0x02, +/* 0000BA80 */ 0xFE, 0xEE, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0xF0, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x3E, 0x03, 0xFE, +/* 0000BA90 */ 0x42, 0x02, 0xFE, 0xEF, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x35, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, /* 0000BAA0 */ 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x2A, 0x00, 0x86, 0x00, 0x26, 0x00, 0x4C, 0x00, /* 0000BAB0 */ 0x15, 0x00, 0x66, 0x00, 0x2A, 0x00, 0x88, 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x11, -/* 0000BAC0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x24, 0x03, 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 0000BAC0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x27, 0x03, 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 0000BAD0 */ 0x28, 0x00, 0xFE, 0x63, 0x6B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x63, 0x6B, 0xFE, /* 0000BAE0 */ 0x01, 0x03, 0xFE, 0x01, 0x03, 0x09, 0x06, 0x0B, 0x0B, 0x44, 0x41, 0x03, 0x07, 0x03, 0x09, 0x08, /* 0000BAF0 */ 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BB00 */ 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000BB10 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, +/* 0000BB10 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, /* 0000BB20 */ 0x04, 0xFE, 0x3F, 0x01, 0x5B, 0x08, 0xB4, 0x08, 0x08, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, /* 0000BB30 */ 0x02, 0x09, 0x2A, 0x00, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, /* 0000BB40 */ 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5D, 0x01, 0x03, 0x00, 0x00, 0x5D, @@ -4428,18 +4428,18 @@ namespace Js /* 0000BC30 */ 0x04, 0x5C, 0x03, 0x0E, 0x62, 0x0E, 0x09, 0x05, 0x5C, 0x04, 0x0E, 0x62, 0x0E, 0x09, 0x06, 0x5C, /* 0000BC40 */ 0x05, 0x0E, 0x62, 0x0E, 0x09, 0x07, 0x5C, 0x06, 0x0E, 0xF2, 0x07, 0x0C, 0x0C, 0x03, 0x00, 0x00, /* 0000BC50 */ 0x00, 0x06, 0x00, 0x5C, 0x01, 0x0C, 0xEE, 0x02, 0x00, 0x0B, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, -/* 0000BC60 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0xF3, -/* 0000BC70 */ 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x91, +/* 0000BC60 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xF6, +/* 0000BC70 */ 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x91, /* 0000BC80 */ 0x6B, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x2A, 0x00, 0x78, 0x00, 0x26, 0x00, /* 0000BC90 */ 0x48, 0x00, 0x15, 0x00, 0x62, 0x00, 0x2A, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x24, 0x00, 0x1E, 0x00, -/* 0000BCA0 */ 0x26, 0x00, 0x62, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xBF, +/* 0000BCA0 */ 0x26, 0x00, 0x62, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC2, /* 0000BCB0 */ 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, 0xFE, 0x3A, 0x65, 0xFF, /* 0000BCC0 */ 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x3A, 0x65, 0xFE, 0x84, 0x05, 0xFE, 0x84, 0x05, 0x0A, /* 0000BCD0 */ 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x03, 0x02, 0x09, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, 0xFF, /* 0000BCE0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, /* 0000BCF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, /* 0000BD00 */ 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, -/* 0000BD10 */ 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, +/* 0000BD10 */ 0x02, 0xFE, 0xC2, 0x02, 0xFE, 0xD5, 0x01, 0x5B, 0x0B, 0xB4, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, /* 0000BD20 */ 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x62, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, /* 0000BD30 */ 0x03, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x04, 0x00, 0x00, 0x47, 0x08, 0x0F, 0x62, 0x0F, 0x0A, /* 0000BD40 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x09, 0x00, 0x98, 0x0F, 0x0A, 0x03, 0x01, 0x00, 0x47, @@ -4467,9 +4467,9 @@ namespace Js /* 0000BEA0 */ 0x00, 0x10, 0x06, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x1E, /* 0000BEB0 */ 0x00, 0x00, 0x00, 0x11, 0x07, 0x00, 0x5C, 0x01, 0x11, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000BEC0 */ 0x00, 0x00, 0x11, 0x08, 0x00, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0xEE, 0x04, 0x10, -/* 0000BED0 */ 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, 0x01, +/* 0000BED0 */ 0x10, 0x08, 0x00, 0x77, 0x10, 0x0F, 0x05, 0x62, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, 0x01, /* 0000BEE0 */ 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, -/* 0000BEF0 */ 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x42, 0x02, 0xFE, 0x42, +/* 0000BEF0 */ 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x45, 0x02, 0xFE, 0x45, /* 0000BF00 */ 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, /* 0000BF10 */ 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x09, /* 0000BF20 */ 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x20, 0x00, 0x55, 0x00, 0x26, 0x00, 0x38, 0x00, 0x22, @@ -4481,7 +4481,7 @@ namespace Js /* 0000BF80 */ 0xDD, 0x03, 0x0A, 0x08, 0x0E, 0x0B, 0x4F, 0x4B, 0x02, 0x03, 0x08, 0x05, 0x0B, 0x07, 0x07, 0x07, /* 0000BF90 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BFA0 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000BFB0 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x01, 0x00, +/* 0000BFB0 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x21, 0x03, 0x04, 0x01, 0x01, 0x00, /* 0000BFC0 */ 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x66, 0x01, 0x5B, 0x0A, 0xB4, 0x0A, 0x0A, 0xAE, /* 0000BFD0 */ 0x08, 0xA8, 0x0C, 0x98, 0x0E, 0x08, 0x03, 0x00, 0x00, 0x47, 0x09, 0x0E, 0xA8, 0x0E, 0x14, 0x0B, /* 0000BFE0 */ 0x00, 0x0A, 0x0E, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x0A, 0x02, 0x09, 0x28, 0x00, 0x8F, 0x02, @@ -4505,23 +4505,23 @@ namespace Js /* 0000C100 */ 0x11, 0x62, 0x11, 0x0C, 0x04, 0x5C, 0x04, 0x11, 0x62, 0x11, 0x0C, 0x05, 0x5C, 0x05, 0x11, 0x62, /* 0000C110 */ 0x11, 0x0C, 0x06, 0x5C, 0x06, 0x11, 0xF2, 0x07, 0x0F, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, /* 0000C120 */ 0x5C, 0x01, 0x0F, 0xEE, 0x02, 0x00, 0x0E, 0x06, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000C130 */ 0x00, 0x00, 0xFE, 0x22, 0x02, 0xFE, 0x20, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, -/* 0000C140 */ 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, +/* 0000C130 */ 0x00, 0x00, 0xFE, 0x25, 0x02, 0xFE, 0x23, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, +/* 0000C140 */ 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, /* 0000C150 */ 0x09, 0x00, 0x2E, 0x00, 0x12, 0x00, 0x44, 0x00, 0x28, 0x00, 0x77, 0x00, 0x08, 0x00, 0x2E, 0x00, /* 0000C160 */ 0x20, 0x00, 0xF1, 0x00, 0x1E, 0x00, 0x31, 0x00, 0x1E, 0x00, 0x2E, 0x00, 0x23, 0x00, 0x46, 0x00, /* 0000C170 */ 0x2F, 0x00, 0x52, 0x00, 0x62, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x25, 0x0B, 0x0F, 0xFD, 0x0F, -/* 0000C180 */ 0xFE, 0x27, 0x03, 0xFE, 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, +/* 0000C180 */ 0xFE, 0x2A, 0x03, 0xFE, 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, /* 0000C190 */ 0x49, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xFE, 0x49, 0xFE, 0xB6, 0x16, 0xFE, /* 0000C1A0 */ 0xB6, 0x16, 0x03, 0x15, 0x24, 0x35, 0x08, 0xFE, 0x0B, 0x01, 0xFA, 0x02, 0x02, 0x05, 0x12, 0x0F, /* 0000C1B0 */ 0x44, 0x14, 0x14, 0x14, 0x14, 0x01, 0x32, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x34, 0xFF, 0xFF, -/* 0000C1C0 */ 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 0000C1D0 */ 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xBF, 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, -/* 0000C1E0 */ 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, -/* 0000C1F0 */ 0x29, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, -/* 0000C200 */ 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, -/* 0000C210 */ 0x31, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x09, 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, -/* 0000C220 */ 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, -/* 0000C230 */ 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x01, +/* 0000C1C0 */ 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 0000C1D0 */ 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC2, 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, +/* 0000C1E0 */ 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, +/* 0000C1F0 */ 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, +/* 0000C200 */ 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, +/* 0000C210 */ 0x34, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x09, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, +/* 0000C220 */ 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, +/* 0000C230 */ 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3B, 0x03, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x01, /* 0000C240 */ 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8C, 0x04, 0xA8, 0x2F, 0xA8, 0x30, /* 0000C250 */ 0xA8, 0x31, 0x2C, 0x36, 0x24, 0x0D, 0x03, 0x00, 0x36, 0x02, 0x09, 0x1C, 0x00, 0x8F, 0x02, 0x00, /* 0000C260 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x6D, 0x36, 0x37, 0x00, 0x07, 0x01, 0x00, @@ -4595,11 +4595,11 @@ namespace Js /* 0000C6A0 */ 0x77, 0x29, 0x24, 0x0D, 0x77, 0x2A, 0x24, 0x0E, 0x77, 0x2B, 0x24, 0x0F, 0x93, 0x02, 0x00, 0x00, /* 0000C6B0 */ 0x00, 0x36, 0x0C, 0x00, 0x77, 0x36, 0x24, 0x10, 0x93, 0x03, 0x00, 0x00, 0x00, 0x36, 0x0E, 0x00, /* 0000C6C0 */ 0x77, 0x36, 0x24, 0x11, 0x93, 0x04, 0x00, 0x00, 0x00, 0x36, 0x0A, 0x00, 0x77, 0x36, 0x24, 0x12, -/* 0000C6D0 */ 0x77, 0x06, 0x24, 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, -/* 0000C6E0 */ 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x38, 0x02, 0xFE, -/* 0000C6F0 */ 0x04, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0x3A, -/* 0000C700 */ 0x02, 0xFE, 0x3B, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, -/* 0000C710 */ 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0xEC, 0x01, 0xFE, 0x3B, 0x03, 0x00, +/* 0000C6D0 */ 0x77, 0x06, 0x24, 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, +/* 0000C6E0 */ 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xF7, 0x01, 0xFE, 0x3B, 0x02, 0xFE, +/* 0000C6F0 */ 0x07, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0x3D, +/* 0000C700 */ 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, +/* 0000C710 */ 0xFE, 0x43, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0xEF, 0x01, 0xFE, 0x3E, 0x03, 0x00, /* 0000C720 */ 0xFE, 0x4C, 0x4A, 0x35, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x42, 0x00, /* 0000C730 */ 0x3F, 0x00, 0x94, 0x00, 0x22, 0x00, 0x68, 0x00, 0x04, 0x00, 0x60, 0x00, 0x0B, 0x00, 0x3B, 0x00, /* 0000C740 */ 0x26, 0x00, 0x51, 0x00, 0x22, 0x00, 0x4C, 0x00, 0x37, 0x00, 0x72, 0x00, 0x37, 0x00, 0x60, 0x00, @@ -4620,10 +4620,10 @@ namespace Js /* 0000C830 */ 0x01, 0x08, 0x41, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C840 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C850 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, -/* 0000C860 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x32, 0x03, -/* 0000C870 */ 0x03, 0x04, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, -/* 0000C880 */ 0x35, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x02, 0xFE, 0x3E, 0x03, 0x08, 0x02, 0xFE, 0x3F, 0x03, 0x02, -/* 0000C890 */ 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x40, 0x03, 0xFE, +/* 0000C860 */ 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x35, 0x03, +/* 0000C870 */ 0x03, 0x04, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, +/* 0000C880 */ 0x38, 0x03, 0x02, 0xFE, 0x40, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x08, 0x02, 0xFE, 0x42, 0x03, 0x02, +/* 0000C890 */ 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x43, 0x03, 0xFE, /* 0000C8A0 */ 0xC4, 0x01, 0x8F, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x6D, 0x1A, /* 0000C8B0 */ 0x1B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1B, 0x5C, 0x01, 0x15, 0xE0, 0x1C, 0x00, 0x5C, 0x02, /* 0000C8C0 */ 0x1C, 0xF2, 0x03, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x16, 0x1A, 0x98, 0x1A, @@ -4653,18 +4653,18 @@ namespace Js /* 0000CA40 */ 0x15, 0x03, 0x00, 0x18, 0x12, 0x09, 0x1A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x13, 0x09, 0x12, 0x00, /* 0000CA50 */ 0x15, 0x03, 0x00, 0x18, 0x14, 0x09, 0x0A, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, /* 0000CA60 */ 0x00, 0x18, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, -/* 0000CA70 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0x32, 0x03, -/* 0000CA80 */ 0xFE, 0x25, 0x02, 0x00, 0x0E, 0xFE, 0xFB, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, +/* 0000CA70 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0x35, 0x03, +/* 0000CA80 */ 0xFE, 0x28, 0x02, 0x00, 0x0E, 0xFE, 0xFE, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, /* 0000CA90 */ 0x00, 0x2C, 0x00, 0x83, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x22, 0x00, 0x4D, 0x00, 0x1E, 0x00, 0x4C, /* 0000CAA0 */ 0x00, 0x7C, 0x00, 0xA0, 0x00, 0x1E, 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x3C, 0x00, 0x5E, 0x00, 0xAB, /* 0000CAB0 */ 0x00, 0x0D, 0x00, 0x4F, 0x00, 0x32, 0x00, 0x01, 0x01, 0x0C, 0x00, 0x43, 0x00, 0x00, 0x3F, 0x7E, -/* 0000CAC0 */ 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xEF, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, +/* 0000CAC0 */ 0x15, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xF2, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, /* 0000CAD0 */ 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x41, 0x47, /* 0000CAE0 */ 0xFE, 0x12, 0x02, 0xFE, 0x12, 0x02, 0x0A, 0x05, 0x0B, 0x06, 0x2A, 0x23, 0x01, 0x04, 0x02, 0x02, /* 0000CAF0 */ 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CB00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CB10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, -/* 0000CB20 */ 0x00, 0x02, 0xFE, 0x1B, 0x03, 0xB5, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, +/* 0000CB20 */ 0x00, 0x02, 0xFE, 0x1E, 0x03, 0xB5, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, /* 0000CB30 */ 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x8F, 0x01, 0x00, 0x00, /* 0000CB40 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x6D, 0x0D, 0x0E, 0x01, 0x07, 0x01, 0x00, 0x5C, /* 0000CB50 */ 0x00, 0x0E, 0xF2, 0x01, 0x0D, 0x0D, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5C, 0x01, 0x0D, 0xE0, @@ -4675,8 +4675,8 @@ namespace Js /* 0000CBA0 */ 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x08, 0x0B, 0x09, 0x06, 0x00, 0x47, 0x00, 0x06, /* 0000CBB0 */ 0x09, 0x26, 0x00, 0x98, 0x0B, 0x08, 0x07, 0x03, 0x00, 0x47, 0x09, 0x0B, 0xA8, 0x0B, 0x15, 0x03, /* 0000CBC0 */ 0x00, 0x09, 0x0B, 0x09, 0x0B, 0x00, 0x2F, 0x00, 0x06, 0x04, 0x2F, 0x00, 0x00, 0x09, 0x09, 0x08, -/* 0000CBD0 */ 0x00, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, -/* 0000CBE0 */ 0xFE, 0xF6, 0x01, 0x00, 0x0E, 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, +/* 0000CBD0 */ 0x00, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, +/* 0000CBE0 */ 0xFE, 0xF9, 0x01, 0x00, 0x0E, 0xFE, 0x1F, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, /* 0000CBF0 */ 0x00, 0x4C, 0x00, 0x60, 0x00, 0x09, 0x00, 0x20, 0x00, 0x09, 0x00, 0x23, 0x00, 0x15, 0x00, 0x51, /* 0000CC00 */ 0x00, 0x14, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x09, 0x00, 0x33, 0x00, 0x0A, 0x00, 0x29, /* 0000CC10 */ 0x00, 0x0B, 0x00, 0x39, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0xBF, 0x7E, 0x11, 0x02, 0x00, 0xFC, @@ -4693,7 +4693,7 @@ namespace Js /* 0000CCC0 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x03, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x09, /* 0000CCD0 */ 0x04, 0x00, 0x5C, 0x01, 0x09, 0xEE, 0x02, 0x08, 0x08, 0x02, 0x00, 0x5C, 0x02, 0x08, 0xD4, 0x00, /* 0000CCE0 */ 0x00, 0x00, 0x00, 0x08, 0x5C, 0x03, 0x08, 0xEE, 0x04, 0xFF, 0x07, 0x01, 0x00, 0x93, 0x02, 0x00, -/* 0000CCF0 */ 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x19, +/* 0000CCF0 */ 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x1C, /* 0000CD00 */ 0x03, 0x00, 0xFE, 0x7A, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x30, 0x00, 0x5A, 0x00, /* 0000CD10 */ 0x5A, 0x02, 0x0D, 0x00, 0x16, 0x00, 0x00, 0x1B, 0xCD, 0x00, 0x00, 0xBF, 0x7E, 0x1D, 0x0A, 0x00, /* 0000CD20 */ 0xFC, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8A, 0x01, 0x6B, 0xFF, 0xA2, 0x41, 0x11, 0x00, @@ -4712,14 +4712,14 @@ namespace Js /* 0000CDF0 */ 0x09, 0x02, 0x00, 0x5C, 0x02, 0x09, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x03, 0x09, 0xEE, /* 0000CE00 */ 0x04, 0xFF, 0x08, 0x01, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, /* 0000CE10 */ 0x00, 0x93, 0x03, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0x9D, 0x09, 0x08, 0x04, 0x00, 0x00, 0xA8, -/* 0000CE20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x74, 0x01, 0xFE, 0x1A, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, +/* 0000CE20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x77, 0x01, 0xFE, 0x1D, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, /* 0000CE30 */ 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x43, 0x00, 0x28, 0x00, 0x37, 0x00, 0x56, 0x00, 0x28, 0x01, /* 0000CE40 */ 0x1C, 0x00, 0x27, 0x00, 0x00, 0x49, 0xCE, 0x00, 0x00, 0x3F, 0x6E, 0x0D, 0x0A, 0x00, 0xFC, 0x07, /* 0000CE50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8E, 0x01, 0x56, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x21, 0x00, /* 0000CE60 */ 0xFE, 0xF2, 0x45, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xF2, 0x45, 0xCC, 0xCC, 0x04, /* 0000CE70 */ 0x03, 0x06, 0x0A, 0x09, 0x03, 0x01, 0x01, 0x02, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CE80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000CE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB8, 0x02, 0x33, 0x8F, +/* 0000CE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBB, 0x02, 0x33, 0x8F, /* 0000CEA0 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x98, 0x06, 0x06, 0x03, 0x00, /* 0000CEB0 */ 0x00, 0x47, 0x04, 0x06, 0x15, 0x03, 0x00, 0x04, 0x02, 0x09, 0x12, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 0000CEC0 */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x9D, 0x03, 0x06, 0x04, 0x00, 0x00, 0xA8, 0x00, @@ -4765,13 +4765,13 @@ namespace Js /* 0000D140 */ 0x00, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x06, 0x5C, 0x04, 0x08, 0xEE, 0x05, 0x00, 0x0B, 0x00, 0x00, /* 0000D150 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFE, 0xDE, 0x34, 0x03, 0x07, /* 0000D160 */ 0x00, 0x00, 0x00, 0x20, 0x00, 0x4A, 0x00, 0x35, 0x00, 0x61, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, -/* 0000D170 */ 0x0F, 0xFC, 0x07, 0xFE, 0xA7, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, +/* 0000D170 */ 0x0F, 0xFC, 0x07, 0xFE, 0xAA, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, /* 0000D180 */ 0x00, 0xFE, 0x5D, 0x2F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x5D, 0x2F, 0xFE, 0x7E, /* 0000D190 */ 0x03, 0xFE, 0x7E, 0x03, 0x08, 0x08, 0x0C, 0x0A, 0x51, 0x4E, 0x01, 0x09, 0x07, 0x01, 0x05, 0x05, /* 0000D1A0 */ 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D1B0 */ 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D1C0 */ 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, -/* 0000D1D0 */ 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x18, 0x03, 0xFE, 0x8C, 0x01, 0xA8, 0x0A, 0x8F, 0x01, 0x00, +/* 0000D1C0 */ 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, +/* 0000D1D0 */ 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x1B, 0x03, 0xFE, 0x8C, 0x01, 0xA8, 0x0A, 0x8F, 0x01, 0x00, /* 0000D1E0 */ 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, /* 0000D1F0 */ 0x01, 0x08, 0xEE, 0x02, 0x0C, 0x0C, 0x00, 0x00, 0x47, 0x08, 0x0C, 0x2C, 0x0C, 0x09, 0x15, 0x03, /* 0000D200 */ 0x00, 0x0C, 0x03, 0x09, 0x90, 0x00, 0x62, 0x0C, 0x09, 0x00, 0x47, 0x0A, 0x0C, 0x2C, 0x0C, 0x0A, @@ -4796,17 +4796,17 @@ namespace Js /* 0000D330 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x02, 0x00, 0x62, 0x0D, 0x0D, 0x04, 0x5C, 0x02, 0x0D, 0x8F, /* 0000D340 */ 0x01, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0D, 0x06, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, /* 0000D350 */ 0x02, 0xEE, 0x01, 0x0D, 0x0D, 0x08, 0x00, 0x5C, 0x03, 0x0D, 0xEE, 0x04, 0x00, 0x0C, 0x07, 0x00, -/* 0000D360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2D, 0x02, 0xFE, 0x26, 0x02, 0xFE, -/* 0000D370 */ 0x28, 0x02, 0xFE, 0xF2, 0x01, 0xFE, 0xF4, 0x01, 0x00, 0xFE, 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, +/* 0000D360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x30, 0x02, 0xFE, 0x29, 0x02, 0xFE, +/* 0000D370 */ 0x2B, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xF7, 0x01, 0x00, 0xFE, 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, /* 0000D380 */ 0x00, 0x1E, 0x00, 0x36, 0x00, 0x0B, 0x00, 0x33, 0x00, 0x07, 0x00, 0x30, 0x00, 0x0B, 0x00, 0x37, /* 0000D390 */ 0x00, 0x26, 0x00, 0x39, 0x00, 0x10, 0x00, 0x4B, 0x00, 0x48, 0x00, 0x9B, 0x00, 0x13, 0x00, 0x4D, /* 0000D3A0 */ 0x00, 0x6E, 0x00, 0x95, 0x00, 0x4E, 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, -/* 0000D3B0 */ 0x07, 0xFE, 0xE6, 0x02, 0xFE, 0x25, 0x01, 0x24, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1A, 0x00, 0xFE, +/* 0000D3B0 */ 0x07, 0xFE, 0xE9, 0x02, 0xFE, 0x25, 0x01, 0x24, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1A, 0x00, 0xFE, /* 0000D3C0 */ 0x60, 0x2D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0x60, 0x2D, 0xFE, 0xB2, 0x01, 0xFE, /* 0000D3D0 */ 0xB2, 0x01, 0x08, 0x05, 0x0B, 0x04, 0x28, 0x27, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x03, 0x03, /* 0000D3E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, /* 0000D3F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000D400 */ 0x00, 0x03, 0x02, 0xFE, 0xA3, 0x02, 0x04, 0xB9, 0x14, 0x0D, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, +/* 0000D400 */ 0x00, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x04, 0xB9, 0x14, 0x0D, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, /* 0000D410 */ 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x05, 0x0B, 0x09, 0x23, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, /* 0000D420 */ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x6D, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, /* 0000D430 */ 0x5C, 0x01, 0x06, 0xF2, 0x02, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, @@ -4818,16 +4818,16 @@ namespace Js /* 0000D490 */ 0x01, 0x06, 0xF2, 0x02, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 0000D4A0 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, /* 0000D4B0 */ 0x07, 0x5C, 0x02, 0x08, 0xEE, 0x03, 0x00, 0x0B, 0x03, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000D4C0 */ 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x2C, 0x02, 0x00, 0xFE, 0x9B, 0x2D, +/* 0000D4C0 */ 0x00, 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x2F, 0x02, 0x00, 0xFE, 0x9B, 0x2D, /* 0000D4D0 */ 0x07, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x38, 0x00, 0x23, 0x00, 0x43, 0x00, 0x26, 0x00, 0x39, /* 0000D4E0 */ 0x00, 0x16, 0x00, 0x4D, 0x00, 0x23, 0x00, 0x43, 0x00, 0x23, 0x00, 0x32, 0x00, 0x00, 0xBF, 0x7E, -/* 0000D4F0 */ 0x31, 0x02, 0x4F, 0xFC, 0x0F, 0xFE, 0xC9, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, +/* 0000D4F0 */ 0x31, 0x02, 0x4F, 0xFC, 0x0F, 0xFE, 0xCC, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, /* 0000D500 */ 0x00, 0x18, 0x00, 0xFE, 0xB8, 0x29, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xB8, /* 0000D510 */ 0x29, 0xFE, 0x80, 0x03, 0xFE, 0x80, 0x03, 0x04, 0x09, 0x0A, 0x10, 0x05, 0x20, 0x20, 0x01, 0x02, /* 0000D520 */ 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, 0x01, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0F, 0xFF, /* 0000D530 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000D540 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x11, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, -/* 0000D550 */ 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, 0x02, 0x03, 0xAB, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, +/* 0000D540 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, +/* 0000D550 */ 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, 0x02, 0x03, 0xAB, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, /* 0000D560 */ 0x05, 0x00, 0x00, 0x00, 0x0C, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x10, /* 0000D570 */ 0x96, 0x03, 0x00, 0x00, 0x00, 0x02, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, /* 0000D580 */ 0x00, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, @@ -4839,9 +4839,9 @@ namespace Js /* 0000D5E0 */ 0x7B, 0x12, 0x11, 0x00, 0x7B, 0x07, 0x11, 0x01, 0x7B, 0x07, 0x11, 0x02, 0x5C, 0x03, 0x11, 0xEE, /* 0000D5F0 */ 0x04, 0xFF, 0x10, 0x01, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x02, 0x00, /* 0000D600 */ 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, -/* 0000D610 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, -/* 0000D620 */ 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x12, 0x03, 0xFE, 0x13, 0x03, 0xFE, -/* 0000D630 */ 0x14, 0x03, 0xFE, 0x15, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 0000D610 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +/* 0000D620 */ 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x15, 0x03, 0xFE, 0x16, 0x03, 0xFE, +/* 0000D630 */ 0x17, 0x03, 0xFE, 0x18, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 0000D640 */ 0x1A, 0x00, 0x06, 0x00, 0x18, 0x00, 0x33, 0x00, 0x7C, 0x02, 0x4C, 0x00, 0x69, 0x00, 0x0D, 0x00, /* 0000D650 */ 0x14, 0x00, 0x00, 0x57, 0xD6, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0B, 0x4F, 0xFD, 0x07, 0xFF, 0xFF, /* 0000D660 */ 0xFF, 0xFF, 0xFF, 0xFE, 0x15, 0x01, 0x41, 0xFF, 0xB2, 0x41, 0x11, 0x00, 0x19, 0x00, 0xFE, 0x77, @@ -4849,7 +4849,7 @@ namespace Js /* 0000D680 */ 0x02, 0x08, 0x0B, 0x0F, 0x06, 0x30, 0x2F, 0x02, 0x03, 0x07, 0x45, 0x05, 0x05, 0x05, 0x05, 0x01, /* 0000D690 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D6A0 */ 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x02, -/* 0000D6B0 */ 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC1, 0x02, +/* 0000D6B0 */ 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0xC4, 0x02, /* 0000D6C0 */ 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xEC, 0xA8, 0x0D, 0xE5, 0xC4, 0x00, 0x8F, 0x02, 0x00, /* 0000D6D0 */ 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, 0x05, 0x00, 0x5C, 0x00, 0x02, 0x5C, /* 0000D6E0 */ 0x01, 0x0B, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x5C, 0x02, @@ -4866,16 +4866,16 @@ namespace Js /* 0000D790 */ 0x00, 0xE7, 0x0C, 0x06, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, /* 0000D7A0 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x0C, 0xF6, 0x02, 0xFF, 0x10, 0x02, 0x00, 0xE9, /* 0000D7B0 */ 0xA8, 0x00, 0x24, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 0000D7C0 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x7C, -/* 0000D7D0 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0xEA, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, -/* 0000D7E0 */ 0xFE, 0x7C, 0x01, 0x00, 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x5F, 0x00, +/* 0000D7C0 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7F, +/* 0000D7D0 */ 0x01, 0x00, 0x00, 0x00, 0xFE, 0xED, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, +/* 0000D7E0 */ 0xFE, 0x7F, 0x01, 0x00, 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x5F, 0x00, /* 0000D7F0 */ 0x0B, 0x00, 0x2C, 0x00, 0x5A, 0x00, 0x8E, 0x00, 0x20, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1E, 0x00, -/* 0000D800 */ 0x1E, 0x00, 0x92, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xC8, 0x02, 0xED, +/* 0000D800 */ 0x1E, 0x00, 0x92, 0x00, 0x00, 0xBF, 0x7E, 0x31, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xCB, 0x02, 0xED, /* 0000D810 */ 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x16, 0x00, 0xFE, 0x5B, 0x25, 0x01, 0xFF, 0x00, 0x10, 0x01, /* 0000D820 */ 0x00, 0x02, 0x02, 0xFE, 0x5B, 0x25, 0xFE, 0x55, 0x04, 0xFE, 0x55, 0x04, 0x01, 0x08, 0x05, 0x0A, /* 0000D830 */ 0x05, 0x29, 0x26, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D840 */ 0xFF, 0x08, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x04, 0xBB, 0x2C, 0x0A, +/* 0000D850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x04, 0xBB, 0x2C, 0x0A, /* 0000D860 */ 0x05, 0x14, 0x03, 0x00, 0x0A, 0x02, 0x09, 0x08, 0x00, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x09, 0xA6, /* 0000D870 */ 0x00, 0x2C, 0x0A, 0x05, 0x14, 0x03, 0x00, 0x0A, 0x03, 0x09, 0x0C, 0x00, 0xCE, 0x0A, 0x01, 0x01, /* 0000D880 */ 0x00, 0xA1, 0x00, 0x05, 0x0A, 0x47, 0x05, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, @@ -4887,8 +4887,8 @@ namespace Js /* 0000D8E0 */ 0x00, 0x00, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x00, 0x07, /* 0000D8F0 */ 0x04, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x05, 0x5C, 0x02, 0x06, 0xD4, 0x00, 0x00, 0x00, 0x00, /* 0000D900 */ 0x0B, 0x5C, 0x03, 0x0B, 0xEE, 0x04, 0xFF, 0x0A, 0x02, 0x00, 0x93, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000D910 */ 0x02, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x2A, -/* 0000D920 */ 0x02, 0xF0, 0xFE, 0x0E, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 0000D910 */ 0x02, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x2D, +/* 0000D920 */ 0x02, 0xF0, 0xFE, 0x11, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 0000D930 */ 0x33, 0x00, 0x08, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x2B, 0x00, 0x26, 0x00, /* 0000D940 */ 0x2F, 0x00, 0x2A, 0x00, 0x71, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x27, 0x00, 0xA5, 0x02, 0x0D, 0x00, /* 0000D950 */ 0x12, 0x00, 0x00, 0x57, 0xD9, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFF, 0xFF, @@ -4897,7 +4897,7 @@ namespace Js /* 0000D980 */ 0x08, 0x0B, 0x06, 0x49, 0x47, 0x02, 0x08, 0x07, 0x41, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, /* 0000D990 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, /* 0000D9A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 0000D9B0 */ 0x05, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x03, 0x02, 0xFE, 0x10, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, +/* 0000D9B0 */ 0x08, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x03, 0x02, 0xFE, 0x13, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, /* 0000D9C0 */ 0xFF, 0xFE, 0x7F, 0x01, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x0B, 0x00, 0x2C, /* 0000D9D0 */ 0x0B, 0x08, 0x15, 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x08, 0x04, 0x09, /* 0000D9E0 */ 0x25, 0x00, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x6D, 0x0B, @@ -4922,11 +4922,11 @@ namespace Js /* 0000DB10 */ 0x03, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, /* 0000DB20 */ 0x00, 0x0C, 0x06, 0x00, 0x5C, 0x01, 0x0C, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 0000DB30 */ 0x0C, 0x05, 0x00, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x09, 0xEE, 0x04, 0xFF, 0x0B, 0x07, 0x00, 0xA8, -/* 0000DB40 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x21, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0xF1, 0x01, 0xFE, 0x2B, -/* 0000DB50 */ 0x02, 0xFE, 0xF2, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x66, +/* 0000DB40 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x24, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x2E, +/* 0000DB50 */ 0x02, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x66, /* 0000DB60 */ 0x00, 0x25, 0x00, 0x4A, 0x00, 0x26, 0x00, 0x34, 0x00, 0x2A, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x4E, /* 0000DB70 */ 0x00, 0x26, 0x00, 0x39, 0x00, 0x4B, 0x00, 0x66, 0x00, 0x3B, 0x00, 0x4A, 0x00, 0x00, 0x3F, 0x7E, -/* 0000DB80 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, +/* 0000DB80 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xCA, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, /* 0000DB90 */ 0x00, 0xFE, 0x35, 0x24, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x24, 0xA6, 0xA6, /* 0000DBA0 */ 0x05, 0x03, 0x05, 0x04, 0x14, 0x13, 0x01, 0x02, 0x03, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, /* 0000DBB0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, @@ -4937,15 +4937,15 @@ namespace Js /* 0000DC00 */ 0x06, 0x01, 0x00, 0x6D, 0x05, 0x06, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x06, 0x5C, 0x01, 0x03, /* 0000DC10 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x02, 0x07, 0xF2, /* 0000DC20 */ 0x03, 0x05, 0x05, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x00, 0x05, 0x02, 0x09, 0x02, 0x00, -/* 0000DC30 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0x68, 0x24, +/* 0000DC30 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x29, 0x02, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0x68, 0x24, /* 0000DC40 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x2B, 0x00, 0x3B, 0x00, 0x47, 0x00, 0x00, 0x3F, 0x7E, -/* 0000DC50 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC6, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, +/* 0000DC50 */ 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC9, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, /* 0000DC60 */ 0x00, 0xFE, 0xDE, 0x21, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xDE, 0x21, 0xFE, 0x4F, /* 0000DC70 */ 0x02, 0xFE, 0x4F, 0x02, 0x0B, 0x07, 0x0F, 0x08, 0x3B, 0x38, 0x01, 0x01, 0x06, 0x05, 0x01, 0x03, /* 0000DC80 */ 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DC90 */ 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000DCA0 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x04, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, -/* 0000DCB0 */ 0x03, 0x02, 0xFE, 0x0D, 0x03, 0xFE, 0x10, 0x01, 0xA8, 0x0D, 0x98, 0x0F, 0x07, 0x08, 0x00, 0x00, +/* 0000DCA0 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x04, 0x02, 0xFE, 0x0E, 0x03, 0x02, 0xFE, 0x0F, +/* 0000DCB0 */ 0x03, 0x02, 0xFE, 0x10, 0x03, 0xFE, 0x10, 0x01, 0xA8, 0x0D, 0x98, 0x0F, 0x07, 0x08, 0x00, 0x00, /* 0000DCC0 */ 0x47, 0x0C, 0x0F, 0x2C, 0x0F, 0x0C, 0x15, 0x03, 0x00, 0x0F, 0x02, 0x09, 0xF0, 0x00, 0x8F, 0x01, /* 0000DCD0 */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x6D, 0x0F, 0x10, 0x00, 0x07, 0x02, /* 0000DCE0 */ 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0C, 0xF2, 0x02, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4962,17 +4962,17 @@ namespace Js /* 0000DD90 */ 0x00, 0x00, 0x00, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x04, /* 0000DDA0 */ 0x00, 0x6D, 0x0F, 0x10, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0D, 0xF2, 0x02, /* 0000DDB0 */ 0x00, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x09, 0x0B, 0x00, 0x09, 0x06, 0x00, 0x47, 0x00, -/* 0000DDC0 */ 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, +/* 0000DDC0 */ 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, /* 0000DDD0 */ 0x23, 0x00, 0xFE, 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2D, 0x00, 0x0B, 0x00, /* 0000DDE0 */ 0x34, 0x00, 0x26, 0x00, 0x41, 0x00, 0x32, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x90, 0x00, 0x29, 0x00, -/* 0000DDF0 */ 0x42, 0x00, 0x08, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC5, +/* 0000DDF0 */ 0x42, 0x00, 0x08, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC8, /* 0000DE00 */ 0x02, 0xBC, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, 0xA7, 0x1E, 0xFF, 0x00, 0x10, /* 0000DE10 */ 0x01, 0x00, 0x06, 0x06, 0xFE, 0xA7, 0x1E, 0xFE, 0x2F, 0x03, 0xFE, 0x2F, 0x03, 0x0B, 0x0A, 0x11, /* 0000DE20 */ 0x0A, 0x50, 0x4A, 0x01, 0x01, 0x08, 0x06, 0x01, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DE30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000DE40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x04, -/* 0000DE50 */ 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, -/* 0000DE60 */ 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0xFE, 0x82, 0x01, 0x98, 0x11, +/* 0000DE40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x07, +/* 0000DE50 */ 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, +/* 0000DE60 */ 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0xFE, 0x82, 0x01, 0x98, 0x11, /* 0000DE70 */ 0x0A, 0x0B, 0x00, 0x00, 0x47, 0x0F, 0x11, 0xA8, 0x11, 0x15, 0x03, 0x00, 0x0F, 0x11, 0x09, 0x65, /* 0000DE80 */ 0x01, 0x0C, 0x03, 0x00, 0x0C, 0x02, 0x09, 0x26, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, /* 0000DE90 */ 0x00, 0x00, 0x12, 0x00, 0x00, 0x6D, 0x11, 0x12, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x12, 0x5C, @@ -4997,7 +4997,7 @@ namespace Js /* 0000DFC0 */ 0x5D, 0x03, 0x08, 0x07, 0x00, 0xEE, 0x04, 0x13, 0x13, 0x07, 0x00, 0x2F, 0x13, 0x07, 0x13, 0x2F, /* 0000DFD0 */ 0x13, 0x13, 0x09, 0x5C, 0x03, 0x13, 0xF2, 0x04, 0xFF, 0x11, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, /* 0000DFE0 */ 0x47, 0x00, 0x0F, 0x09, 0x08, 0x00, 0x47, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000DFF0 */ 0x00, 0x00, 0xFE, 0x25, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, 0x00, 0xFE, +/* 0000DFF0 */ 0x00, 0x00, 0xFE, 0x28, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x00, 0xFE, /* 0000E000 */ 0xF0, 0x1E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0x08, /* 0000E010 */ 0x00, 0x2A, 0x00, 0x26, 0x00, 0x48, 0x00, 0x08, 0x00, 0x29, 0x00, 0x26, 0x00, 0x40, 0x00, 0x08, /* 0000E020 */ 0x00, 0x29, 0x00, 0x26, 0x00, 0x40, 0x00, 0x3F, 0x00, 0x6C, 0x00, 0x96, 0x00, 0xA9, 0x00, 0x06, @@ -5007,8 +5007,8 @@ namespace Js /* 0000E060 */ 0x05, 0x04, 0x0A, 0x0B, 0x04, 0x1D, 0x1D, 0x01, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x01, 0xFF, /* 0000E070 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, /* 0000E080 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000E090 */ 0x02, 0xFE, 0xFE, 0x02, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x00, 0x03, 0x02, 0xFE, 0x01, 0x03, -/* 0000E0A0 */ 0x02, 0xFE, 0x02, 0x03, 0x02, 0xFE, 0x03, 0x03, 0x03, 0x04, 0x8E, 0x8F, 0x01, 0x00, 0x00, 0x00, +/* 0000E090 */ 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, 0x02, 0x03, 0x02, 0xFE, 0x03, 0x03, 0x02, 0xFE, 0x04, 0x03, +/* 0000E0A0 */ 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x03, 0x04, 0x8E, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000E0B0 */ 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, /* 0000E0C0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, /* 0000E0D0 */ 0x7B, 0x0D, 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7B, @@ -5018,13 +5018,13 @@ namespace Js /* 0000E110 */ 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x05, 0x01, /* 0000E120 */ 0x5F, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, 0x00, 0x00, 0xEE, 0x03, 0x00, 0x0B, /* 0000E130 */ 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000E140 */ 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, -/* 0000E150 */ 0x27, 0x02, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, -/* 0000E160 */ 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x25, 0x02, 0xFE, 0x2A, 0x02, -/* 0000E170 */ 0xFE, 0x03, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0xF2, 0x04, +/* 0000E140 */ 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, +/* 0000E150 */ 0x2A, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, +/* 0000E160 */ 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x28, 0x02, 0xFE, 0x2D, 0x02, +/* 0000E170 */ 0xFE, 0x06, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0xF2, 0x04, /* 0000E180 */ 0x00, 0x8E, 0xE5, 0x00, 0x00, 0xF8, 0xE4, 0x00, 0x00, 0x62, 0xE4, 0x00, 0x00, 0xCC, 0xE3, 0x00, /* 0000E190 */ 0x00, 0x7B, 0xE2, 0x00, 0x00, 0x99, 0xE1, 0x00, 0x00, 0x3F, 0xFE, 0x11, 0x0E, 0x00, 0xFC, 0x07, -/* 0000E1A0 */ 0xFE, 0x03, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, 0xFE, 0xCF, 0x1C, 0xFF, +/* 0000E1A0 */ 0xFE, 0x06, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, 0xFE, 0xCF, 0x1C, 0xFF, /* 0000E1B0 */ 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xCF, 0x1C, 0xFE, 0x3D, 0x01, 0xFE, 0x3D, 0x01, 0x05, /* 0000E1C0 */ 0x04, 0x07, 0x05, 0x1C, 0x1A, 0x19, 0x01, 0x02, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E1D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5038,7 +5038,7 @@ namespace Js /* 0000E250 */ 0x07, 0x01, 0x00, 0x47, 0x04, 0x07, 0x09, 0x9A, 0xFF, 0xED, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, /* 0000E260 */ 0x00, 0x00, 0xFE, 0x26, 0x1D, 0x05, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1A, 0x00, 0x34, 0x00, /* 0000E270 */ 0x55, 0x00, 0x08, 0x00, 0x39, 0x00, 0x25, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x51, 0x0A, 0x0F, -/* 0000E280 */ 0xFC, 0x07, 0xFE, 0x02, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, +/* 0000E280 */ 0xFC, 0x07, 0xFE, 0x05, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, /* 0000E290 */ 0x1B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAF, 0x1B, 0xFE, 0x02, 0x01, 0xFE, 0x02, /* 0000E2A0 */ 0x01, 0x09, 0x06, 0x0A, 0x07, 0x2A, 0x25, 0x01, 0x05, 0x01, 0x04, 0x01, 0x02, 0x02, 0x02, 0x02, /* 0000E2B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, @@ -5059,7 +5059,7 @@ namespace Js /* 0000E3A0 */ 0x47, 0x00, 0x08, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1B, 0x29, 0x00, 0xFE, /* 0000E3B0 */ 0xCF, 0x1B, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x2A, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x44, /* 0000E3C0 */ 0x00, 0x39, 0x00, 0x59, 0x00, 0x4B, 0x00, 0x08, 0x00, 0x19, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, -/* 0000E3D0 */ 0x00, 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, +/* 0000E3D0 */ 0x00, 0xFC, 0x07, 0xFE, 0x04, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, /* 0000E3E0 */ 0x35, 0x1B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x1B, 0x5F, 0x5F, 0x03, 0x03, /* 0000E3F0 */ 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E400 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5068,7 +5068,7 @@ namespace Js /* 0000E430 */ 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, /* 0000E440 */ 0x47, 0x00, 0x05, 0x09, 0x05, 0x00, 0xA8, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, /* 0000E450 */ 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x55, 0x1B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x3E, -/* 0000E460 */ 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x00, 0x03, 0x9B, 0x16, 0xFF, 0xA2, +/* 0000E460 */ 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x03, 0x03, 0x9B, 0x16, 0xFF, 0xA2, /* 0000E470 */ 0x41, 0x01, 0x00, 0x0F, 0x00, 0xFE, 0xBA, 0x1A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, /* 0000E480 */ 0xBA, 0x1A, 0x58, 0x58, 0x03, 0x03, 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, /* 0000E490 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, @@ -5078,7 +5078,7 @@ namespace Js /* 0000E4D0 */ 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, 0x47, 0x00, /* 0000E4E0 */ 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDA, 0x1A, 0x02, 0x00, /* 0000E4F0 */ 0x00, 0x00, 0x00, 0x35, 0x00, 0x37, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, -/* 0000E500 */ 0xFF, 0x02, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, 0xFE, 0x3F, 0x1A, 0xFF, 0x00, +/* 0000E500 */ 0x02, 0x03, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, 0xFE, 0x3F, 0x1A, 0xFF, 0x00, /* 0000E510 */ 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x3F, 0x1A, 0x5E, 0x5E, 0x03, 0x03, 0x05, 0x03, 0x10, 0x0E, /* 0000E520 */ 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E530 */ 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5087,7 +5087,7 @@ namespace Js /* 0000E560 */ 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0xEE, 0x02, 0x05, 0x05, 0x00, 0x00, 0x47, 0x00, 0x05, 0x09, /* 0000E570 */ 0x05, 0x00, 0xA8, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, /* 0000E580 */ 0x00, 0xFE, 0x5F, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, -/* 0000E590 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xFE, 0x02, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, +/* 0000E590 */ 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, /* 0000E5A0 */ 0x00, 0xFE, 0x5F, 0x19, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x5F, 0x19, 0xC5, 0xC5, /* 0000E5B0 */ 0x04, 0x04, 0x06, 0x03, 0x17, 0x15, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, /* 0000E5C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, @@ -5098,9 +5098,9 @@ namespace Js /* 0000E610 */ 0x06, 0x09, 0x21, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, /* 0000E620 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x04, 0xEE, 0x02, 0x06, 0x06, 0x01, 0x00, 0x47, /* 0000E630 */ 0x00, 0x06, 0x09, 0x05, 0x00, 0xA8, 0x06, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000E640 */ 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, +/* 0000E640 */ 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, /* 0000E650 */ 0x00, 0x27, 0x00, 0x20, 0x00, 0x40, 0x00, 0x35, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, -/* 0000E660 */ 0x8F, 0xFC, 0x07, 0xFE, 0xE3, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, +/* 0000E660 */ 0x8F, 0xFC, 0x07, 0xFE, 0xE6, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, /* 0000E670 */ 0x95, 0x18, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x95, 0x18, 0x6D, 0x6D, 0x05, 0x03, /* 0000E680 */ 0x04, 0x06, 0x12, 0x12, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, /* 0000E690 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, @@ -5110,15 +5110,15 @@ namespace Js /* 0000E6D0 */ 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x6D, 0x06, 0x07, 0x01, 0x07, 0x01, 0x00, 0x5C, 0x00, /* 0000E6E0 */ 0x07, 0xF2, 0x01, 0x06, 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5C, 0x01, 0x06, 0xE0, 0x06, /* 0000E6F0 */ 0x00, 0x5C, 0x02, 0x06, 0xF2, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, -/* 0000E700 */ 0x04, 0x02, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, -/* 0000E710 */ 0xFE, 0xF6, 0x01, 0x00, 0x09, 0xFE, 0xFD, 0x02, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, -/* 0000E720 */ 0x00, 0x54, 0x00, 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, +/* 0000E700 */ 0x04, 0x02, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, +/* 0000E710 */ 0xFE, 0xF9, 0x01, 0x00, 0x09, 0xFE, 0x00, 0x03, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, +/* 0000E720 */ 0x00, 0x54, 0x00, 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x15, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE5, 0x02, /* 0000E730 */ 0x79, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xC9, 0x15, 0xFF, 0x00, 0x10, 0x01, /* 0000E740 */ 0x00, 0x05, 0x05, 0xFE, 0xC9, 0x15, 0xFE, 0xA8, 0x02, 0xFE, 0xA8, 0x02, 0x0C, 0x06, 0x10, 0x06, /* 0000E750 */ 0x42, 0x37, 0x18, 0x01, 0x01, 0x04, 0x04, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, /* 0000E760 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, /* 0000E770 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x7A, 0xD1, 0x00, -/* 0000E780 */ 0x02, 0xFE, 0xFC, 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFE, +/* 0000E780 */ 0x02, 0xFE, 0xFF, 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFE, /* 0000E790 */ 0xFE, 0x00, 0xA8, 0x0D, 0xA8, 0x0E, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, 0x16, 0x00, 0x8F, 0x01, /* 0000E7A0 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x62, 0x11, 0x11, 0x00, 0x47, 0x10, /* 0000E7B0 */ 0x11, 0x09, 0x0F, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, @@ -5135,17 +5135,17 @@ namespace Js /* 0000E860 */ 0xFF, 0xED, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x07, /* 0000E870 */ 0x05, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x0A, 0xA8, 0x11, 0x5C, 0x03, 0x11, /* 0000E880 */ 0x5C, 0x04, 0x0C, 0xEE, 0x05, 0x00, 0x10, 0x03, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000E890 */ 0x00, 0x00, 0xFE, 0xF4, 0x01, 0xFE, 0xEA, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, +/* 0000E890 */ 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0xED, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, /* 0000E8A0 */ 0x00, 0x30, 0x00, 0x62, 0x00, 0x1E, 0x00, 0x36, 0x00, 0x0F, 0x00, 0x34, 0x00, 0x16, 0x00, 0x3A, /* 0000E8B0 */ 0x00, 0x07, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x20, 0x00, 0x2D, 0x00, 0x6A, 0x00, 0x0E, 0x00, 0x36, /* 0000E8C0 */ 0x00, 0x08, 0x00, 0x4C, 0xFF, 0x08, 0x00, 0xE8, 0x00, 0x2B, 0x00, 0x52, 0x00, 0x00, 0xBF, 0x7E, -/* 0000E8D0 */ 0x35, 0x02, 0xCF, 0xFD, 0x0F, 0xFE, 0xE1, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, +/* 0000E8D0 */ 0x35, 0x02, 0xCF, 0xFD, 0x0F, 0xFE, 0xE4, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, /* 0000E8E0 */ 0x00, 0xFE, 0xD8, 0x0E, 0x02, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0xD8, 0x0E, 0xFE, /* 0000E8F0 */ 0xD4, 0x06, 0xFE, 0xD4, 0x06, 0x03, 0x10, 0x0C, 0x15, 0x09, 0x62, 0x5B, 0x01, 0x01, 0x08, 0x01, /* 0000E900 */ 0x09, 0x05, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x14, /* 0000E910 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x01, 0x01, -/* 0000E920 */ 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF4, 0x02, -/* 0000E930 */ 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xF7, 0x02, +/* 0000E920 */ 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF7, 0x02, +/* 0000E930 */ 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xF9, 0x02, 0x02, 0xFE, 0xFA, 0x02, /* 0000E940 */ 0x03, 0xFE, 0xE5, 0x01, 0x96, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0E, /* 0000E950 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x6D, 0x16, 0x17, 0x00, /* 0000E960 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x17, 0x93, 0x03, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x5C, 0x01, @@ -5177,10 +5177,10 @@ namespace Js /* 0000EB00 */ 0x09, 0x05, 0x00, 0xA8, 0x19, 0x47, 0x18, 0x19, 0x7B, 0x18, 0x17, 0x02, 0x7B, 0x10, 0x17, 0x03, /* 0000EB10 */ 0x7B, 0x11, 0x17, 0x04, 0x5C, 0x01, 0x17, 0x5D, 0x02, 0x0B, 0x05, 0x00, 0xEE, 0x03, 0x00, 0x16, /* 0000EB20 */ 0x05, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000EB30 */ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, -/* 0000EB40 */ 0x38, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0x02, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0x04, -/* 0000EB50 */ 0x02, 0xFE, 0x38, 0x02, 0xFE, 0xF8, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xF9, 0x02, 0x00, 0x0D, 0xFE, -/* 0000EB60 */ 0xFA, 0x02, 0x00, 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x37, 0x00, 0x07, +/* 0000EB30 */ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, +/* 0000EB40 */ 0x3B, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFA, 0x01, 0xFE, 0x05, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x07, +/* 0000EB50 */ 0x02, 0xFE, 0x3B, 0x02, 0xFE, 0xFB, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xFC, 0x02, 0x00, 0x0D, 0xFE, +/* 0000EB60 */ 0xFD, 0x02, 0x00, 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x37, 0x00, 0x07, /* 0000EB70 */ 0x00, 0x1C, 0x00, 0x33, 0x00, 0x3F, 0x02, 0x3D, 0x00, 0x4A, 0x00, 0x1D, 0x00, 0x39, 0x00, 0x12, /* 0000EB80 */ 0x00, 0x51, 0x00, 0x0B, 0x00, 0x20, 0x00, 0x33, 0x00, 0xBF, 0x01, 0x0B, 0x00, 0x2A, 0x00, 0xBA, /* 0000EB90 */ 0x00, 0x1F, 0x01, 0x00, 0xD8, 0xEC, 0x00, 0x00, 0x9C, 0xEB, 0x00, 0x00, 0x3F, 0x7E, 0x15, 0x0A, @@ -5201,21 +5201,21 @@ namespace Js /* 0000EC80 */ 0x09, 0x01, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, /* 0000EC90 */ 0x00, 0x00, 0x0A, 0x04, 0x00, 0x5C, 0x01, 0x0A, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 0000ECA0 */ 0x00, 0x0A, 0x05, 0x00, 0x5C, 0x02, 0x0A, 0x5C, 0x03, 0x05, 0xEE, 0x04, 0xFF, 0x09, 0x02, 0x00, -/* 0000ECB0 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0x0E, 0xFE, 0xFB, 0x02, 0x00, 0xFE, +/* 0000ECB0 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0x0E, 0xFE, 0xFE, 0x02, 0x00, 0xFE, /* 0000ECC0 */ 0xF9, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x7B, 0x00, 0x09, 0x00, 0x25, 0x00, 0x41, /* 0000ECD0 */ 0x00, 0x60, 0x00, 0x3B, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFF, /* 0000ECE0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x3D, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x08, 0x00, 0xFE, 0xA1, 0x0F, /* 0000ECF0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xA1, 0x0F, 0x61, 0x61, 0x04, 0x05, 0x07, 0x06, /* 0000ED00 */ 0x0F, 0x0F, 0x02, 0x01, 0x03, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000ED10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000ED20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x04, +/* 0000ED20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x04, /* 0000ED30 */ 0x50, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x05, 0x00, /* 0000ED40 */ 0x5C, 0x00, 0x04, 0x8F, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x5C, /* 0000ED50 */ 0x01, 0x08, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x5C, 0x02, /* 0000ED60 */ 0x08, 0x2F, 0x08, 0x02, 0x05, 0x5C, 0x03, 0x08, 0x5D, 0x04, 0x03, 0x00, 0x00, 0xEE, 0x05, 0x07, /* 0000ED70 */ 0x07, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xA8, 0x00, 0x24, /* 0000ED80 */ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xB5, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x4C, 0x00, -/* 0000ED90 */ 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF2, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, +/* 0000ED90 */ 0x00, 0x3F, 0x7E, 0x11, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF5, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, /* 0000EDA0 */ 0x01, 0x00, 0x06, 0x00, 0xFE, 0xA2, 0x0D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xA2, /* 0000EDB0 */ 0x0D, 0xFE, 0x14, 0x01, 0xFE, 0x14, 0x01, 0x06, 0x02, 0x06, 0x03, 0x15, 0x12, 0x01, 0x01, 0x01, /* 0000EDC0 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5225,28 +5225,28 @@ namespace Js /* 0000EE00 */ 0xF2, 0x02, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x04, 0x06, 0x14, 0x03, 0x00, /* 0000EE10 */ 0x03, 0x02, 0x09, 0x09, 0x00, 0x47, 0x00, 0x04, 0x09, 0x18, 0x00, 0x09, 0x0D, 0x00, 0x14, 0x03, /* 0000EE20 */ 0x00, 0x03, 0x04, 0x09, 0x05, 0x00, 0xA8, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x04, 0x09, 0x02, -/* 0000EE30 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, +/* 0000EE30 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, /* 0000EE40 */ 0x00, 0x00, 0x00, 0x26, 0x00, 0x47, 0x00, 0x08, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x25, 0x00, 0x08, /* 0000EE50 */ 0x00, 0x26, 0x00, 0x05, 0x00, 0x1B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x7E, 0x11, 0x0A, -/* 0000EE60 */ 0x0F, 0xFC, 0x07, 0xFE, 0xE0, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, +/* 0000EE60 */ 0x0F, 0xFC, 0x07, 0xFE, 0xE3, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, /* 0000EE70 */ 0x2B, 0x0D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x2B, 0x0D, 0x53, 0x53, 0x05, 0x02, /* 0000EE80 */ 0x05, 0x04, 0x0B, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EE90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EEA0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x2D, 0x8F, 0x01, /* 0000EEB0 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x6D, 0x05, 0x06, 0x00, 0x07, 0x03, /* 0000EEC0 */ 0x00, 0x5C, 0x00, 0x06, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x02, 0xF2, 0x03, 0x00, 0x05, 0x00, 0x00, -/* 0000EED0 */ 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x70, 0x02, +/* 0000EED0 */ 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x73, 0x02, /* 0000EEE0 */ 0x00, 0xFE, 0x49, 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x34, 0x00, 0x00, 0x3F, 0x6E, -/* 0000EEF0 */ 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xDF, 0x02, 0x48, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x04, +/* 0000EEF0 */ 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x48, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x04, /* 0000EF00 */ 0x00, 0xFE, 0x8B, 0x0C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x8B, 0x0C, 0x7F, 0x7F, /* 0000EF10 */ 0x02, 0x04, 0x05, 0x0A, 0x0A, 0x01, 0x41, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EF20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000EF30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, /* 0000EF40 */ 0x01, 0x1C, 0x00, 0x0A, 0x80, 0x01, 0x07, 0x00, 0x0A, 0x80, 0x1E, 0x62, 0x05, 0x04, 0x00, 0x14, /* 0000EF50 */ 0x0F, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0x62, 0x05, 0x04, 0x00, 0x14, 0x03, 0x00, 0x05, 0x03, -/* 0000EF60 */ 0x09, 0x02, 0x00, 0x23, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x08, 0x01, 0x00, 0xFE, +/* 0000EF60 */ 0x09, 0x02, 0x00, 0x23, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x01, 0x00, 0xFE, /* 0000EF70 */ 0xA4, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x4B, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, -/* 0000EF80 */ 0x3F, 0xFE, 0x15, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF1, 0x02, 0x3E, 0x12, 0xFF, 0xA2, 0x41, 0x01, +/* 0000EF80 */ 0x3F, 0xFE, 0x15, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF4, 0x02, 0x3E, 0x12, 0xFF, 0xA2, 0x41, 0x01, /* 0000EF90 */ 0x00, 0x03, 0x00, 0xFE, 0x5B, 0x0B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x5B, 0x0B, /* 0000EFA0 */ 0xA9, 0xA9, 0x06, 0x05, 0x09, 0x03, 0x11, 0x0F, 0x0D, 0x01, 0x01, 0x01, 0x01, 0x41, 0xFF, 0xFF, /* 0000EFB0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5257,7 +5257,7 @@ namespace Js /* 0000F000 */ 0x01, 0x0A, 0xEE, 0x02, 0xFF, 0x09, 0x00, 0x00, 0x28, 0x08, 0x08, 0x09, 0xD8, 0xFF, 0xED, 0x00, /* 0000F010 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, /* 0000F020 */ 0x00, 0x23, 0x00, 0x08, 0x00, 0x21, 0x00, 0x18, 0x00, 0x21, 0x00, 0x0A, 0x00, 0x1B, 0x00, 0x00, -/* 0000F030 */ 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD4, 0x02, 0x28, 0x1F, 0xFF, 0xA2, 0x41, 0x01, +/* 0000F030 */ 0x3F, 0x7E, 0x11, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD7, 0x02, 0x28, 0x1F, 0xFF, 0xA2, 0x41, 0x01, /* 0000F040 */ 0x00, 0x02, 0x00, 0xFE, 0x22, 0x07, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x22, 0x07, /* 0000F050 */ 0x73, 0x73, 0x06, 0x04, 0x08, 0x09, 0x10, 0x10, 0x01, 0x02, 0x02, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000F060 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h index aec4b86d814..b5295f8ee86 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h @@ -1415,7 +1415,7 @@ namespace Js { const char Library_Bytecode_intl[] = { /* 00000000 */ 0x43, 0x68, 0x42, 0x63, 0xDC, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFE, 0x9A, 0x02, 0x00, 0xFF, +/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFE, 0x9D, 0x02, 0x00, 0xFF, /* 00000020 */ 0x24, 0x1C, 0x01, 0x00, 0xFF, 0x24, 0x1C, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00, 0x6A, 0x26, 0x00, /* 00000030 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x52, 0x00, 0x00, 0xFE, 0x23, 0x01, 0xF0, 0x05, 0x00, 0x00, /* 00000040 */ 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, @@ -2733,11 +2733,11 @@ namespace Js /* 00005240 */ 0x00, 0x8D, 0x1A, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x8F, 0x1B, 0x01, /* 00005250 */ 0x00, 0x8F, 0x1B, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x1F, 0x1C, 0x01, /* 00005260 */ 0x00, 0x1F, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x44, 0x39, 0x6E, -/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9A, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, +/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9D, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, /* 00005280 */ 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0xFE, 0x75, 0x01, 0xFF, 0xAF, 0x1A, 0x01, 0x00, 0xFF, 0xAF, /* 00005290 */ 0x1A, 0x01, 0x00, 0x01, 0x04, 0x04, 0x05, 0x05, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000052A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x02, 0x07, 0x0C, +/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x02, 0x07, 0x0C, /* 000052C0 */ 0xA8, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFA, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, /* 000052D0 */ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x00, 0x0A, 0x4F, 0xFC, /* 000052E0 */ 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x01, 0x00, 0xFE, @@ -2745,17 +2745,17 @@ namespace Js /* 00005300 */ 0x01, 0x00, 0xFF, 0x89, 0x1A, 0x01, 0x00, 0x39, 0x13, 0x2F, 0x3E, 0x09, 0xFE, 0xAC, 0x01, 0xFE, /* 00005310 */ 0xA7, 0x01, 0x10, 0x40, 0x3D, 0x3C, 0x3D, 0x3D, 0x12, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, /* 00005320 */ 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00005330 */ 0x00, 0x00, 0x02, 0xFE, 0x9C, 0x02, 0x02, 0xFE, 0x9D, 0x02, 0x02, 0xFE, 0x9E, 0x02, 0x02, 0xFE, -/* 00005340 */ 0x9F, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, 0xA2, 0x02, -/* 00005350 */ 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0xA6, 0x02, -/* 00005360 */ 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xAA, 0x02, -/* 00005370 */ 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, 0x02, 0xFE, 0xAE, 0x02, -/* 00005380 */ 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, 0x02, 0xFE, 0xB2, 0x02, -/* 00005390 */ 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, 0x02, 0xFE, 0xB6, 0x02, -/* 000053A0 */ 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, 0x02, 0xFE, 0xBA, 0x02, -/* 000053B0 */ 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, 0x02, 0xFE, 0xBE, 0x02, -/* 000053C0 */ 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC1, 0x02, 0x09, 0x02, 0xFE, -/* 000053D0 */ 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xF3, 0x07, 0x96, 0x3A, 0x00, +/* 00005330 */ 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x02, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, +/* 00005340 */ 0xA2, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, +/* 00005350 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, +/* 00005360 */ 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, +/* 00005370 */ 0x02, 0xFE, 0xAE, 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, +/* 00005380 */ 0x02, 0xFE, 0xB2, 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, +/* 00005390 */ 0x02, 0xFE, 0xB6, 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, +/* 000053A0 */ 0x02, 0xFE, 0xBA, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, +/* 000053B0 */ 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, 0x02, +/* 000053C0 */ 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC4, 0x02, 0x09, 0x02, 0xFE, +/* 000053D0 */ 0xC5, 0x02, 0x02, 0xFE, 0xC6, 0x02, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xF3, 0x07, 0x96, 0x3A, 0x00, /* 000053E0 */ 0x00, 0x00, 0x30, 0xD4, 0x09, 0x00, 0x00, 0x00, 0x31, 0x96, 0x02, 0x00, 0x00, 0x00, 0x31, 0xD4, /* 000053F0 */ 0x0A, 0x00, 0x00, 0x00, 0x32, 0x96, 0x03, 0x00, 0x00, 0x00, 0x32, 0xD4, 0x0B, 0x00, 0x00, 0x00, /* 00005400 */ 0x33, 0x96, 0x04, 0x00, 0x00, 0x00, 0x33, 0xD4, 0x0C, 0x00, 0x00, 0x00, 0x34, 0x96, 0x05, 0x00, @@ -2884,50 +2884,50 @@ namespace Js /* 00005BB0 */ 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7A, 0x3A, 0x3F, 0x38, 0x7A, 0x29, 0x3F, 0x39, 0x7A, 0x2B, 0x3F, /* 00005BC0 */ 0x3A, 0x7A, 0x29, 0x3F, 0x3B, 0x5C, 0x03, 0x3F, 0x1F, 0x04, 0xFF, 0x3E, 0xA8, 0x00, 0x24, 0x00, /* 00005BD0 */ 0x12, 0xFE, 0x40, 0x01, 0x00, 0x28, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00005BE0 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00005BF0 */ 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005C00 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, -/* 00005C10 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, -/* 00005C20 */ 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, -/* 00005C30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, -/* 00005C40 */ 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, -/* 00005C50 */ 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, -/* 00005C60 */ 0x00, 0xB7, 0x02, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00005C70 */ 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00005C80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, -/* 00005C90 */ 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, -/* 00005CA0 */ 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x02, 0x00, -/* 00005CB0 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, -/* 00005CC0 */ 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, -/* 00005CD0 */ 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x02, 0x00, -/* 00005CE0 */ 0x00, 0xAD, 0x02, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, -/* 00005CF0 */ 0x00, 0xB9, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBB, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, -/* 00005D00 */ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D10 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D30 */ 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, +/* 00005BE0 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00005BF0 */ 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005C00 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, +/* 00005C10 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, +/* 00005C20 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, +/* 00005C30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, +/* 00005C40 */ 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, +/* 00005C50 */ 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, +/* 00005C60 */ 0x00, 0xBA, 0x02, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00005C70 */ 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, +/* 00005C80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x02, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, +/* 00005C90 */ 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, +/* 00005CA0 */ 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, +/* 00005CB0 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, +/* 00005CC0 */ 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, +/* 00005CD0 */ 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x02, 0x00, +/* 00005CE0 */ 0x00, 0xB0, 0x02, 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, +/* 00005CF0 */ 0x00, 0xBC, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0xBE, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x00, +/* 00005D00 */ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D10 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D30 */ 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x00, /* 00005D40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, -/* 00005D50 */ 0x00, 0x23, 0x00, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, -/* 00005D60 */ 0x00, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x03, 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, -/* 00005D70 */ 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xD3, 0x01, 0xFE, 0x05, 0x02, 0x1B, 0xFE, 0x06, -/* 00005D80 */ 0x02, 0x23, 0xFE, 0x07, 0x02, 0xF9, 0xFE, 0x08, 0x02, 0x29, 0xFE, 0x09, 0x02, 0xFE, 0x0A, 0x02, -/* 00005D90 */ 0xFE, 0x0B, 0x02, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, 0xFE, 0x11, 0x02, 0xFE, 0x12, 0x02, 0xFE, -/* 00005DA0 */ 0x13, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x1A, -/* 00005DB0 */ 0x02, 0xFE, 0x1B, 0x02, 0xFE, 0x1C, 0x02, 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0xFF, 0x01, -/* 00005DC0 */ 0xFE, 0x2C, 0x02, 0xFE, 0x84, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0xAB, 0x02, 0xFE, 0xAA, 0x02, 0xFE, -/* 00005DD0 */ 0xAD, 0x02, 0xFE, 0xAF, 0x02, 0xFE, 0xAE, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, -/* 00005DE0 */ 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB9, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xBC, 0x02, -/* 00005DF0 */ 0xFE, 0xBB, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, -/* 00005E00 */ 0x7D, 0x01, 0xDB, 0xFE, 0xC5, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xC8, 0x02, 0xFE, -/* 00005E10 */ 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0x87, 0xFE, -/* 00005E20 */ 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xCE, 0x02, -/* 00005E30 */ 0xF7, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, -/* 00005E40 */ 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, -/* 00005E50 */ 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, -/* 00005E60 */ 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xE1, 0x02, -/* 00005E70 */ 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, -/* 00005E80 */ 0x44, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, -/* 00005E90 */ 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, +/* 00005D50 */ 0x00, 0x23, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, +/* 00005D60 */ 0x03, 0x02, 0xFE, 0x04, 0x02, 0xFE, 0x06, 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, +/* 00005D70 */ 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD6, 0x01, 0xFE, 0x08, 0x02, 0x1B, 0xFE, 0x09, +/* 00005D80 */ 0x02, 0x23, 0xFE, 0x0A, 0x02, 0xFC, 0xFE, 0x0B, 0x02, 0x29, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, +/* 00005D90 */ 0xFE, 0x0E, 0x02, 0xFE, 0x0F, 0x02, 0xFE, 0x10, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, +/* 00005DA0 */ 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x18, 0x02, 0xFE, 0x19, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1D, +/* 00005DB0 */ 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0x1F, 0x02, 0xFE, 0x20, 0x02, 0xFE, 0x21, 0x02, 0xFE, 0x02, 0x02, +/* 00005DC0 */ 0xFE, 0x2F, 0x02, 0xFE, 0x87, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0xAE, 0x02, 0xFE, 0xAD, 0x02, 0xFE, +/* 00005DD0 */ 0xB0, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB8, +/* 00005DE0 */ 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xBC, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0xBF, 0x02, +/* 00005DF0 */ 0xFE, 0xBE, 0x02, 0xFE, 0xC0, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, +/* 00005E00 */ 0x80, 0x01, 0xDB, 0xFE, 0xC8, 0x02, 0xFE, 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, +/* 00005E10 */ 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0xFE, 0xCE, 0x02, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0x87, 0xFE, +/* 00005E20 */ 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD1, 0x02, +/* 00005E30 */ 0xF7, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, +/* 00005E40 */ 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, +/* 00005E50 */ 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, 0x02, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xE1, +/* 00005E60 */ 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, 0xF8, 0x01, 0xFE, 0xE4, 0x02, +/* 00005E70 */ 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, +/* 00005E80 */ 0x47, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, +/* 00005E90 */ 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x02, 0xFE, 0xF3, 0x02, /* 00005EA0 */ 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x10, 0x00, 0x36, /* 00005EB0 */ 0x00, 0x10, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x44, 0x00, 0x10, 0x00, 0x25, 0x00, 0x10, 0x00, 0x23, /* 00005EC0 */ 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x1F, @@ -2955,18 +2955,18 @@ namespace Js /* 00006020 */ 0x00, 0xFE, 0x84, 0xAC, 0x0E, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x84, 0xAC, 0xFE, /* 00006030 */ 0xAF, 0x6D, 0xFE, 0xAF, 0x6D, 0x01, 0x13, 0x2F, 0x3B, 0x09, 0xD9, 0xD9, 0x01, 0x09, 0x11, 0x11, /* 00006040 */ 0x11, 0x11, 0x06, 0x02, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006050 */ 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x5E, -/* 00006060 */ 0x03, 0x02, 0xFE, 0x5F, 0x03, 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, -/* 00006070 */ 0x03, 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, -/* 00006080 */ 0x03, 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, -/* 00006090 */ 0x03, 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, -/* 000060A0 */ 0x03, 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x04, 0x01, -/* 000060B0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x72, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x73, -/* 000060C0 */ 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, 0xFE, -/* 000060D0 */ 0x76, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, -/* 000060E0 */ 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x08, -/* 000060F0 */ 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x23, 0x03, -/* 00006100 */ 0x02, 0xFE, 0xA7, 0x02, 0xFE, 0x7A, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, +/* 00006050 */ 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x61, +/* 00006060 */ 0x03, 0x02, 0xFE, 0x62, 0x03, 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, +/* 00006070 */ 0x03, 0x02, 0xFE, 0x66, 0x03, 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, +/* 00006080 */ 0x03, 0x02, 0xFE, 0x6A, 0x03, 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, +/* 00006090 */ 0x03, 0x02, 0xFE, 0x6E, 0x03, 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x02, 0xFE, 0x71, +/* 000060A0 */ 0x03, 0x02, 0xFE, 0x72, 0x03, 0x02, 0xFE, 0x73, 0x03, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x04, 0x01, +/* 000060B0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x75, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x76, +/* 000060C0 */ 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x77, 0x03, 0x02, 0xFE, 0x78, 0x03, 0x02, 0xFE, +/* 000060D0 */ 0x79, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, +/* 000060E0 */ 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x08, +/* 000060F0 */ 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x26, 0x03, +/* 00006100 */ 0x02, 0xFE, 0xAA, 0x02, 0xFE, 0x7A, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, /* 00006110 */ 0x33, 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 00006120 */ 0x00, 0x00, 0x3D, 0x14, 0x15, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 00006130 */ 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0x3B, 0x04, 0xDE, 0x00, 0x09, @@ -3039,23 +3039,23 @@ namespace Js /* 00006560 */ 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x90, 0x01, 0x00, 0x00, 0x00, /* 00006570 */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, /* 00006580 */ 0x00, 0x06, 0x9C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00006590 */ 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, -/* 000065A0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, -/* 000065B0 */ 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, -/* 000065C0 */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, -/* 000065D0 */ 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, -/* 000065E0 */ 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, -/* 000065F0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, -/* 00006600 */ 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, -/* 00006610 */ 0x00, 0x00, 0x00, 0x00, 0x5F, 0x03, 0x00, 0x00, 0x61, 0x03, 0x00, 0x00, 0x63, 0x03, 0x00, 0x00, -/* 00006620 */ 0x65, 0x03, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x69, 0x03, 0x00, 0x00, 0x6B, 0x03, 0x00, 0x00, -/* 00006630 */ 0x6D, 0x03, 0x00, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x5F, 0x03, 0xFE, 0x61, 0x03, 0xFE, -/* 00006640 */ 0x63, 0x03, 0xFE, 0x65, 0x03, 0xFE, 0x67, 0x03, 0xFE, 0x69, 0x03, 0xFE, 0x6B, 0x03, 0xFE, 0x6D, -/* 00006650 */ 0x03, 0xFE, 0x6F, 0x03, 0xFE, 0xFD, 0x01, 0xFE, 0x5F, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, -/* 00006660 */ 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x77, 0x03, 0x02, -/* 00006670 */ 0x01, 0x07, 0x00, 0xFE, 0x78, 0x03, 0x01, 0xFE, 0x79, 0x03, 0x02, 0xFE, 0x7A, 0x03, 0x03, 0xFE, -/* 00006680 */ 0x7B, 0x03, 0x04, 0xFE, 0x7C, 0x03, 0x05, 0xFE, 0x7D, 0x03, 0x06, 0xFE, 0x7E, 0x03, 0x02, 0x02, -/* 00006690 */ 0x00, 0xFE, 0xE6, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x9D, 0xAC, 0x12, 0x12, 0x00, 0x00, 0x00, +/* 00006590 */ 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, +/* 000065A0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, +/* 000065B0 */ 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, +/* 000065C0 */ 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +/* 000065D0 */ 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, +/* 000065E0 */ 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, +/* 000065F0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, +/* 00006600 */ 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, +/* 00006610 */ 0x00, 0x00, 0x00, 0x00, 0x62, 0x03, 0x00, 0x00, 0x64, 0x03, 0x00, 0x00, 0x66, 0x03, 0x00, 0x00, +/* 00006620 */ 0x68, 0x03, 0x00, 0x00, 0x6A, 0x03, 0x00, 0x00, 0x6C, 0x03, 0x00, 0x00, 0x6E, 0x03, 0x00, 0x00, +/* 00006630 */ 0x70, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x62, 0x03, 0xFE, 0x64, 0x03, 0xFE, +/* 00006640 */ 0x66, 0x03, 0xFE, 0x68, 0x03, 0xFE, 0x6A, 0x03, 0xFE, 0x6C, 0x03, 0xFE, 0x6E, 0x03, 0xFE, 0x70, +/* 00006650 */ 0x03, 0xFE, 0x72, 0x03, 0xFE, 0x00, 0x02, 0xFE, 0x62, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, +/* 00006660 */ 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0x7A, 0x03, 0x02, +/* 00006670 */ 0x01, 0x07, 0x00, 0xFE, 0x7B, 0x03, 0x01, 0xFE, 0x7C, 0x03, 0x02, 0xFE, 0x7D, 0x03, 0x03, 0xFE, +/* 00006680 */ 0x7E, 0x03, 0x04, 0xFE, 0x7F, 0x03, 0x05, 0xFE, 0x80, 0x03, 0x06, 0xFE, 0x81, 0x03, 0x02, 0x02, +/* 00006690 */ 0x00, 0xFE, 0xE9, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x9D, 0xAC, 0x12, 0x12, 0x00, 0x00, 0x00, /* 000066A0 */ 0xB0, 0x00, 0xD0, 0x13, 0x37, 0x00, 0x16, 0x37, 0x44, 0x00, 0x1E, 0x03, 0x44, 0x00, 0x28, 0x03, /* 000066B0 */ 0x44, 0x00, 0x26, 0x03, 0x46, 0x00, 0xA7, 0x05, 0x24, 0x00, 0x29, 0x04, 0x24, 0x00, 0x56, 0x00, /* 000066C0 */ 0x19, 0x00, 0x4A, 0x00, 0x55, 0x00, 0x9E, 0x00, 0x36, 0x00, 0x4B, 0x00, 0x52, 0x00, 0xA4, 0x00, @@ -3064,16 +3064,16 @@ namespace Js /* 000066F0 */ 0x00, 0x53, 0x87, 0x00, 0x00, 0x74, 0x85, 0x00, 0x00, 0x35, 0x81, 0x00, 0x00, 0x35, 0x78, 0x00, /* 00006700 */ 0x00, 0x01, 0x76, 0x00, 0x00, 0xD1, 0x73, 0x00, 0x00, 0xA1, 0x71, 0x00, 0x00, 0x2C, 0x6F, 0x00, /* 00006710 */ 0x00, 0xDE, 0x6C, 0x00, 0x00, 0xB9, 0x6B, 0x00, 0x00, 0x1D, 0x67, 0x00, 0x00, 0xBF, 0x7E, 0x01, -/* 00006720 */ 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x4D, 0x05, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, +/* 00006720 */ 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x4D, 0x05, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, /* 00006730 */ 0x42, 0x00, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006740 */ 0x7D, 0x10, 0x01, 0x00, 0xFE, 0x0D, 0x08, 0xFE, 0x0D, 0x08, 0x03, 0x07, 0x15, 0x19, 0x09, 0x7A, /* 00006750 */ 0x7A, 0x04, 0x09, 0x08, 0x20, 0x20, 0x20, 0x20, 0x01, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, /* 00006760 */ 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006770 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, -/* 00006780 */ 0xF3, 0x02, 0x02, 0xFE, 0xBB, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, -/* 00006790 */ 0xB2, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0xB0, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, -/* 000067A0 */ 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, -/* 000067B0 */ 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x03, 0x04, 0xFE, 0x29, 0x02, 0x5B, 0x15, 0xB3, 0x15, 0x15, +/* 00006770 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBD, 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x02, 0xFE, +/* 00006780 */ 0xF6, 0x02, 0x02, 0xFE, 0xBE, 0x03, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, +/* 00006790 */ 0xB5, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, +/* 000067A0 */ 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, +/* 000067B0 */ 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x03, 0x04, 0xFE, 0x29, 0x02, 0x5B, 0x15, 0xB3, 0x15, 0x15, /* 000067C0 */ 0x2C, 0x19, 0x15, 0x15, 0x03, 0x00, 0x19, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 000067D0 */ 0x07, 0x00, 0x00, 0x00, 0x1A, 0x6C, 0x19, 0x1A, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, /* 000067E0 */ 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x19, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, @@ -3109,17 +3109,17 @@ namespace Js /* 000069C0 */ 0x04, 0x00, 0x00, 0x00, 0x1A, 0x5C, 0x01, 0x1A, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, /* 000069D0 */ 0x00, 0x1A, 0x61, 0x1A, 0x1A, 0x1F, 0x5C, 0x02, 0x1A, 0x1F, 0x03, 0x00, 0x19, 0x09, 0x02, 0x00, /* 000069E0 */ 0xA8, 0x00, 0x24, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, -/* 000069F0 */ 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x5E, 0x02, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x4E, -/* 00006A00 */ 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, -/* 00006A10 */ 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, -/* 00006A20 */ 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, -/* 00006A30 */ 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, -/* 00006A40 */ 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x5B, 0x02, -/* 00006A50 */ 0xFE, 0x50, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, -/* 00006A60 */ 0x52, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, -/* 00006A70 */ 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x57, 0x02, -/* 00006A80 */ 0xFE, 0x4C, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x14, 0x01, 0xFE, 0x5C, 0x03, 0xFE, -/* 00006A90 */ 0xBC, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFF, 0xB3, 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, +/* 000069F0 */ 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x51, +/* 00006A00 */ 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, +/* 00006A10 */ 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, +/* 00006A20 */ 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, +/* 00006A30 */ 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x61, +/* 00006A40 */ 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0x63, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x5E, 0x02, +/* 00006A50 */ 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, +/* 00006A60 */ 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, +/* 00006A70 */ 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x5A, 0x02, +/* 00006A80 */ 0xFE, 0x4F, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x17, 0x01, 0xFE, 0x5F, 0x03, 0xFE, +/* 00006A90 */ 0xBF, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFF, 0xB3, 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, /* 00006AA0 */ 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x92, 0x00, 0x21, 0x00, 0x4C, 0x00, 0x21, 0x00, 0x6C, 0x00, /* 00006AB0 */ 0x1E, 0x00, 0x92, 0x00, 0xF1, 0x00, 0xDE, 0x03, 0x22, 0x00, 0x3F, 0x00, 0x53, 0x00, 0x5B, 0x01, /* 00006AC0 */ 0x33, 0x00, 0x45, 0x00, 0x00, 0xC9, 0x6A, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, @@ -3127,8 +3127,8 @@ namespace Js /* 00006AE0 */ 0xFF, 0x31, 0x17, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFF, 0x31, 0x17, 0x01, /* 00006AF0 */ 0x00, 0xE9, 0xE9, 0x04, 0x05, 0x07, 0x05, 0x1A, 0x1A, 0x05, 0x05, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006B00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006B10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAE, -/* 00006B20 */ 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x04, 0x7C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +/* 00006B10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB1, +/* 00006B20 */ 0x03, 0x02, 0xFE, 0x60, 0x03, 0x04, 0x7C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, /* 00006B30 */ 0x07, 0x97, 0x07, 0x07, 0x05, 0xA8, 0x08, 0x15, 0x0B, 0x00, 0x07, 0x08, 0x09, 0x00, 0x00, 0x14, /* 00006B40 */ 0x03, 0x00, 0x05, 0x02, 0x09, 0x58, 0x00, 0x8E, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, /* 00006B50 */ 0x07, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, 0x8E, 0x05, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, @@ -3143,7 +3143,7 @@ namespace Js /* 00006BE0 */ 0x00, 0xFE, 0x6B, 0x02, 0xFE, 0x6B, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x01, 0x09, /* 00006BF0 */ 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006C00 */ 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006C10 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, +/* 00006C10 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, /* 00006C20 */ 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, /* 00006C30 */ 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, /* 00006C40 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, @@ -3152,17 +3152,17 @@ namespace Js /* 00006C70 */ 0x14, 0x0E, 0x00, 0x06, 0x08, 0x09, 0x00, 0x00, 0x61, 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, /* 00006C80 */ 0x09, 0x00, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, /* 00006C90 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, -/* 00006CA0 */ 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 00006CB0 */ 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0x43, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, +/* 00006CA0 */ 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 00006CB0 */ 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0x46, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, /* 00006CC0 */ 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x8B, 0x00, 0x1E, 0x00, 0x4C, /* 00006CD0 */ 0x00, 0x15, 0x00, 0x6C, 0x00, 0x1E, 0x00, 0x8B, 0x00, 0x09, 0x00, 0x38, 0x00, 0x00, 0x3F, 0x7E, -/* 00006CE0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, +/* 00006CE0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, /* 00006CF0 */ 0x00, 0x40, 0x00, 0xFF, 0xE3, 0x06, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006D00 */ 0xE3, 0x06, 0x01, 0x00, 0xFE, 0xCA, 0x03, 0xFE, 0xCA, 0x03, 0x0A, 0x09, 0x0D, 0x0A, 0x61, 0x60, /* 00006D10 */ 0x04, 0x06, 0x0B, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006D20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006D30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, -/* 00006D40 */ 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, +/* 00006D30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, +/* 00006D40 */ 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, /* 00006D50 */ 0xFE, 0x90, 0x01, 0x5B, 0x09, 0xB3, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0D, 0x09, 0x15, 0x03, 0x00, /* 00006D60 */ 0x0D, 0x03, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x6C, /* 00006D70 */ 0x0D, 0x0E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0E, 0x5C, 0x01, 0x04, 0x5C, 0x02, 0x05, 0x1F, @@ -3188,18 +3188,18 @@ namespace Js /* 00006EB0 */ 0x05, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0F, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, /* 00006EC0 */ 0x10, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x08, 0x1F, 0x01, 0x10, 0x10, 0x5C, 0x01, 0x10, 0x5C, 0x02, /* 00006ED0 */ 0x0A, 0x1F, 0x03, 0x0E, 0x0E, 0x5C, 0x01, 0x0E, 0x1F, 0x02, 0x00, 0x0D, 0x09, 0x02, 0x00, 0xA8, -/* 00006EE0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xF0, 0xFE, -/* 00006EF0 */ 0x24, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, +/* 00006EE0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xF0, 0xFE, +/* 00006EF0 */ 0x27, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, /* 00006F00 */ 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, 0x81, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, /* 00006F10 */ 0x00, 0x68, 0x00, 0x1E, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x36, 0x00, 0x44, 0x00, 0x53, 0x00, 0x18, /* 00006F20 */ 0x00, 0x51, 0x00, 0x57, 0x00, 0x85, 0x00, 0x4E, 0x00, 0x52, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 00006F30 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC4, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, +/* 00006F30 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, /* 00006F40 */ 0x00, 0xFF, 0x1B, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, 0x1B, 0x01, /* 00006F50 */ 0x01, 0x00, 0xFE, 0x69, 0x05, 0xFE, 0x69, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x09, /* 00006F60 */ 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F70 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -/* 00006F90 */ 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, +/* 00006F90 */ 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, /* 00006FA0 */ 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, /* 00006FB0 */ 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, /* 00006FC0 */ 0x08, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, @@ -3224,9 +3224,9 @@ namespace Js /* 000070F0 */ 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, /* 00007100 */ 0x11, 0x5C, 0x01, 0x11, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, /* 00007110 */ 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, -/* 00007120 */ 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, -/* 00007130 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, -/* 00007140 */ 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x43, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, +/* 00007120 */ 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, +/* 00007130 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, +/* 00007140 */ 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x46, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, /* 00007150 */ 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 00007160 */ 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x18, 0x00, 0x44, 0x00, /* 00007170 */ 0x1C, 0x00, 0x5B, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0xA1, 0x00, @@ -3237,9 +3237,9 @@ namespace Js /* 000071C0 */ 0x01, 0x01, 0xFE, 0x21, 0xFE, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, /* 000071D0 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000071E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000071F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007200 */ 0xFE, 0x73, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007210 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x81, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, +/* 000071F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007200 */ 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007210 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x84, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, /* 00007220 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x19, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8E, /* 00007230 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x21, /* 00007240 */ 0x00, 0x10, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x6C, @@ -3263,8 +3263,8 @@ namespace Js /* 00007360 */ 0x11, 0x12, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x12, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, /* 00007370 */ 0x00, 0x00, 0x14, 0x6C, 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, /* 00007380 */ 0x1F, 0x02, 0x13, 0x13, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0x1F, 0x03, 0x11, 0x11, 0x5C, 0x01, -/* 00007390 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 000073A0 */ 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, +/* 00007390 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 000073A0 */ 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, /* 000073B0 */ 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x71, 0x00, 0x3B, 0x00, 0x54, 0x00, 0x3C, 0x00, 0x3D, 0x00, /* 000073C0 */ 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x77, 0x00, 0x55, 0x00, 0x5B, 0x00, /* 000073D0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE8, 0x04, @@ -3272,9 +3272,9 @@ namespace Js /* 000073F0 */ 0x01, 0x01, 0xFE, 0xF9, 0xFA, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, /* 00007400 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007410 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007420 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007430 */ 0xFE, 0x72, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007440 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x7F, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, +/* 00007420 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007430 */ 0xFE, 0x75, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007440 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, /* 00007450 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x19, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8E, /* 00007460 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x21, /* 00007470 */ 0x00, 0x10, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x6C, @@ -3298,8 +3298,8 @@ namespace Js /* 00007590 */ 0x11, 0x12, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x12, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, /* 000075A0 */ 0x00, 0x00, 0x14, 0x6C, 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, /* 000075B0 */ 0x1F, 0x02, 0x13, 0x13, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0x1F, 0x03, 0x11, 0x11, 0x5C, 0x01, -/* 000075C0 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 000075D0 */ 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x18, 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, +/* 000075C0 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 000075D0 */ 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x18, 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, /* 000075E0 */ 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x71, 0x00, 0x3B, 0x00, 0x54, 0x00, 0x3C, 0x00, 0x3D, 0x00, /* 000075F0 */ 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x77, 0x00, 0x55, 0x00, 0x5B, 0x00, /* 00007600 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDB, 0x04, @@ -3307,9 +3307,9 @@ namespace Js /* 00007620 */ 0x01, 0x01, 0xFE, 0xD7, 0xF7, 0xFE, 0xB4, 0x02, 0xFE, 0xB4, 0x02, 0x0A, 0x0C, 0x11, 0x0A, 0x5D, /* 00007630 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007640 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007650 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007660 */ 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007670 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x80, 0x03, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0x7F, +/* 00007650 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007660 */ 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007670 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x85, 0x03, 0xFE, 0x7F, /* 00007680 */ 0x01, 0x5B, 0x0C, 0xB3, 0x0C, 0x0C, 0xAE, 0x0F, 0x2C, 0x11, 0x0C, 0x15, 0x19, 0x00, 0x11, 0x03, /* 00007690 */ 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0xE1, 0x11, 0x0C, /* 000076A0 */ 0x11, 0x00, 0x0F, 0x21, 0x00, 0x11, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, @@ -3334,24 +3334,24 @@ namespace Js /* 000077D0 */ 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x15, 0x6C, 0x14, 0x15, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, /* 000077E0 */ 0x15, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x14, 0x14, 0x5C, 0x01, 0x14, 0x5C, 0x02, 0x0E, 0x1F, 0x03, /* 000077F0 */ 0x12, 0x12, 0x5C, 0x01, 0x12, 0x1F, 0x02, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00007800 */ 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0xF6, 0xF7, 0x09, +/* 00007800 */ 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0xF6, 0xF7, 0x09, /* 00007810 */ 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x6D, 0x00, 0x3B, 0x00, 0x54, 0x00, /* 00007820 */ 0x3C, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x75, 0x00, -/* 00007830 */ 0x55, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFD, 0x07, 0xFE, 0x7E, 0x03, 0xFE, +/* 00007830 */ 0x55, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFD, 0x07, 0xFE, 0x81, 0x03, 0xFE, /* 00007840 */ 0x58, 0x04, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x3B, 0x00, 0xFE, 0x61, 0xDB, 0xFF, 0x00, 0x10, /* 00007850 */ 0x01, 0x00, 0x04, 0x04, 0xFE, 0x61, 0xDB, 0xFE, 0x04, 0x1C, 0xFE, 0x04, 0x1C, 0x1C, 0x29, 0x41, /* 00007860 */ 0x07, 0xFE, 0xAA, 0x01, 0xFE, 0x8A, 0x01, 0x03, 0x0E, 0x45, 0x2B, 0x2B, 0x2B, 0x2B, 0x01, 0x01, /* 00007870 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, -/* 00007880 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, -/* 00007890 */ 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0x08, 0x02, 0xFE, 0x80, 0x03, 0x02, -/* 000078A0 */ 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, -/* 000078B0 */ 0xFE, 0x16, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, -/* 000078C0 */ 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0xB0, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, -/* 000078D0 */ 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, -/* 000078E0 */ 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, -/* 000078F0 */ 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x02, -/* 00007900 */ 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x76, 0x03, -/* 00007910 */ 0x09, 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5D, +/* 00007880 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, +/* 00007890 */ 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0x08, 0x02, 0xFE, 0x83, 0x03, 0x02, +/* 000078A0 */ 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, +/* 000078B0 */ 0xFE, 0x19, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, +/* 000078C0 */ 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, +/* 000078D0 */ 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, +/* 000078E0 */ 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x02, +/* 000078F0 */ 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x02, 0xFE, 0xB7, 0x03, 0x02, +/* 00007900 */ 0xFE, 0xB8, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x79, 0x03, +/* 00007910 */ 0x09, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5D, /* 00007920 */ 0x06, 0xA8, 0x3F, 0x2C, 0x42, 0x29, 0x0D, 0x03, 0x00, 0x42, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x03, /* 00007930 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x6C, 0x42, 0x43, 0x00, 0x07, 0x01, 0x00, 0x5C, /* 00007940 */ 0x00, 0x43, 0x1F, 0x01, 0xFF, 0x42, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x42, @@ -3454,18 +3454,18 @@ namespace Js /* 00007F50 */ 0x26, 0x5C, 0x02, 0x44, 0x1F, 0x03, 0x43, 0x43, 0x76, 0x43, 0x42, 0x27, 0x61, 0x42, 0x29, 0x28, /* 00007F60 */ 0xA8, 0x43, 0x15, 0x03, 0x00, 0x42, 0x43, 0x09, 0x0C, 0x00, 0x61, 0x42, 0x29, 0x29, 0x43, 0x42, /* 00007F70 */ 0x42, 0x20, 0x76, 0x42, 0x29, 0x1D, 0x76, 0x06, 0x29, 0x2A, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x2C, -/* 00007F80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, -/* 00007F90 */ 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, -/* 00007FA0 */ 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, -/* 00007FB0 */ 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x2E, -/* 00007FC0 */ 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x47, 0x02, -/* 00007FD0 */ 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, -/* 00007FE0 */ 0x4F, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x51, -/* 00007FF0 */ 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, -/* 00008000 */ 0xFE, 0x55, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x5C, 0x02, 0xFE, -/* 00008010 */ 0xEE, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xFA, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xF0, 0x01, 0xFE, 0xEF, -/* 00008020 */ 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x56, 0x02, 0xFE, 0xEE, 0x01, -/* 00008030 */ 0xFE, 0x37, 0x02, 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, +/* 00007F80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, +/* 00007F90 */ 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, +/* 00007FA0 */ 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, +/* 00007FB0 */ 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x31, +/* 00007FC0 */ 0x02, 0xFE, 0x2C, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x4A, 0x02, +/* 00007FD0 */ 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, +/* 00007FE0 */ 0x52, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x54, +/* 00007FF0 */ 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, +/* 00008000 */ 0xFE, 0x58, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x5F, 0x02, 0xFE, +/* 00008010 */ 0xF1, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xFD, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF2, +/* 00008020 */ 0x01, 0xFE, 0x60, 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x59, 0x02, 0xFE, 0xF1, 0x01, +/* 00008030 */ 0xFE, 0x3A, 0x02, 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, /* 00008040 */ 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0xA0, 0x00, 0x1E, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6A, 0x00, /* 00008050 */ 0x22, 0x00, 0x48, 0x00, 0x31, 0x00, 0x72, 0x00, 0x2A, 0x00, 0x60, 0x00, 0x0A, 0x00, 0x33, 0x00, /* 00008060 */ 0x1E, 0x00, 0x54, 0x00, 0x0A, 0x00, 0x37, 0x00, 0x1B, 0x00, 0x6D, 0x00, 0x1B, 0x00, 0x73, 0x00, @@ -3481,16 +3481,16 @@ namespace Js /* 00008100 */ 0x23, 0x00, 0x6B, 0x00, 0x04, 0x00, 0x38, 0x00, 0x07, 0x00, 0x5C, 0x00, 0x2E, 0x00, 0xE3, 0x00, /* 00008110 */ 0x24, 0x00, 0x48, 0x00, 0x01, 0x00, 0x4C, 0x00, 0x17, 0x00, 0x7C, 0x01, 0x19, 0x00, 0x7B, 0x00, /* 00008120 */ 0x21, 0x00, 0x68, 0x00, 0x2F, 0x00, 0x83, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x0C, 0x00, 0x6F, 0x00, -/* 00008130 */ 0x06, 0x00, 0x40, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, +/* 00008130 */ 0x06, 0x00, 0x40, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x80, 0x03, 0xFE, /* 00008140 */ 0x1E, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x3A, 0x00, 0xFE, 0xEB, 0xCD, 0xFF, 0x00, 0x10, /* 00008150 */ 0x01, 0x00, 0x03, 0x03, 0xFE, 0xEB, 0xCD, 0xFE, 0x66, 0x0D, 0xFE, 0x66, 0x0D, 0x07, 0x12, 0x16, /* 00008160 */ 0x06, 0xC8, 0xBB, 0x03, 0x07, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008170 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008180 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, -/* 00008190 */ 0x04, 0x02, 0xFE, 0x8E, 0x03, 0x03, 0x02, 0xFE, 0xA9, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 000081A0 */ 0xFE, 0xAA, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0xAB, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, -/* 000081B0 */ 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, -/* 000081C0 */ 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0xFE, 0x06, 0x03, 0xA8, 0x14, 0x61, 0x16, 0x13, 0x00, +/* 00008180 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAB, 0x03, +/* 00008190 */ 0x04, 0x02, 0xFE, 0x91, 0x03, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, +/* 000081A0 */ 0xFE, 0xAD, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, +/* 000081B0 */ 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, +/* 000081C0 */ 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0xFE, 0x06, 0x03, 0xA8, 0x14, 0x61, 0x16, 0x13, 0x00, /* 000081D0 */ 0xA8, 0x17, 0x15, 0x03, 0x00, 0x16, 0x17, 0x09, 0x26, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, /* 000081E0 */ 0x00, 0x00, 0x00, 0x16, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, 0x61, /* 000081F0 */ 0x17, 0x13, 0x00, 0x5C, 0x02, 0x17, 0x5C, 0x03, 0x02, 0x1F, 0x04, 0x16, 0x16, 0x47, 0x12, 0x16, @@ -3539,9 +3539,9 @@ namespace Js /* 000084A0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, /* 000084B0 */ 0x00, 0x03, 0x5C, 0x01, 0x12, 0x61, 0x17, 0x13, 0x09, 0x5C, 0x02, 0x17, 0x5C, 0x03, 0x11, 0x1F, /* 000084C0 */ 0x04, 0x16, 0x16, 0x47, 0x12, 0x16, 0x47, 0x00, 0x12, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 000084D0 */ 0x00, 0x00, 0xFE, 0x51, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x53, -/* 000084E0 */ 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, -/* 000084F0 */ 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, +/* 000084D0 */ 0x00, 0x00, 0xFE, 0x54, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x05, 0x02, 0xFE, 0x56, +/* 000084E0 */ 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, +/* 000084F0 */ 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, /* 00008500 */ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x43, 0x00, 0x26, 0x00, 0x8B, 0x00, 0x0E, 0x00, 0x94, 0x01, 0x0C, /* 00008510 */ 0x00, 0x40, 0x00, 0x24, 0x00, 0x6C, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x2E, 0x00, 0x93, 0x00, 0x34, /* 00008520 */ 0x00, 0x9A, 0x00, 0x0C, 0x00, 0x3D, 0x00, 0x24, 0x00, 0x6C, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x2E, @@ -3549,16 +3549,16 @@ namespace Js /* 00008540 */ 0x00, 0x41, 0x00, 0x26, 0x00, 0x8E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x26, 0x00, 0x8A, 0x00, 0x0E, /* 00008550 */ 0x00, 0x40, 0x00, 0x26, 0x00, 0x8C, 0x00, 0x0E, 0x00, 0x42, 0x00, 0x26, 0x00, 0x90, 0x00, 0x0E, /* 00008560 */ 0x00, 0x42, 0x00, 0x26, 0x00, 0x90, 0x00, 0x0E, 0x00, 0x48, 0x00, 0x26, 0x00, 0x8F, 0x00, 0x08, -/* 00008570 */ 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7C, 0x03, 0xFE, 0x0C, +/* 00008570 */ 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7F, 0x03, 0xFE, 0x0C, /* 00008580 */ 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, 0xFE, 0xF7, 0xC8, 0xFF, 0x00, 0x10, 0x01, /* 00008590 */ 0x00, 0x04, 0x04, 0xFE, 0xF7, 0xC8, 0xFE, 0x81, 0x04, 0xFE, 0x81, 0x04, 0x09, 0x11, 0x16, 0x07, /* 000085A0 */ 0x43, 0x40, 0x03, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000085B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000085C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, -/* 000085D0 */ 0xA3, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, -/* 000085E0 */ 0x02, 0xFE, 0x8E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, -/* 000085F0 */ 0x00, 0x00, 0x02, 0xFE, 0xA5, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA6, 0x03, 0x02, -/* 00008600 */ 0xFE, 0xA7, 0x03, 0xFE, 0x1A, 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, +/* 000085C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, +/* 000085D0 */ 0xA6, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA7, 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, +/* 000085E0 */ 0x02, 0xFE, 0x91, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, +/* 000085F0 */ 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA9, 0x03, 0x02, +/* 00008600 */ 0xFE, 0xAA, 0x03, 0xFE, 0x1A, 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, /* 00008610 */ 0x6C, 0x16, 0x17, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x17, 0x5C, 0x01, 0x11, 0x8E, 0x03, 0x00, /* 00008620 */ 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x18, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x19, 0x02, /* 00008630 */ 0x13, 0x03, 0x5C, 0x01, 0x19, 0x1F, 0x02, 0x18, 0x18, 0x5C, 0x02, 0x18, 0x1F, 0x03, 0x16, 0x16, @@ -3576,19 +3576,19 @@ namespace Js /* 000086F0 */ 0x00, 0x21, 0x00, 0x00, 0x00, 0x17, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x11, 0x97, 0x17, 0x14, 0x0A, /* 00008700 */ 0x5C, 0x03, 0x17, 0x97, 0x17, 0x14, 0x0C, 0xFB, 0x17, 0x0B, 0x17, 0x10, 0x5C, 0x04, 0x17, 0x1F, /* 00008710 */ 0x05, 0x00, 0x16, 0x09, 0x08, 0x00, 0x47, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00008720 */ 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, +/* 00008720 */ 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, /* 00008730 */ 0x90, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x3A, 0x00, 0x01, 0x01, 0x06, 0x00, 0x3C, 0x00, 0x08, 0x00, /* 00008740 */ 0x6E, 0x00, 0x3D, 0x00, 0x82, 0x00, 0x0C, 0x00, 0x33, 0x00, 0x3A, 0x00, 0x8D, 0x00, 0x08, 0x00, -/* 00008750 */ 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, 0xFC, 0x03, +/* 00008750 */ 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7E, 0x03, 0xFE, 0xFC, 0x03, /* 00008760 */ 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x38, 0x00, 0xFE, 0xBE, 0xC3, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 00008770 */ 0x04, 0x04, 0xFE, 0xBE, 0xC3, 0xFE, 0x2B, 0x05, 0xFE, 0x2B, 0x05, 0x09, 0x14, 0x19, 0x07, 0x50, /* 00008780 */ 0x4B, 0x03, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008790 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000087A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0x99, -/* 000087B0 */ 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9A, 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x01, -/* 000087C0 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 000087D0 */ 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x03, 0x02, 0xFE, -/* 000087E0 */ 0xA0, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0xA1, 0x03, 0x02, 0xFE, 0xA2, 0x03, 0xFE, 0x49, +/* 000087A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, +/* 000087B0 */ 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, 0x01, +/* 000087C0 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 000087D0 */ 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA2, 0x03, 0x02, 0xFE, +/* 000087E0 */ 0xA3, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, 0xFE, 0xA5, 0x03, 0xFE, 0x49, /* 000087F0 */ 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0x6C, 0x19, 0x1A, 0x00, 0x07, /* 00008800 */ 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, 0x01, 0x14, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, /* 00008810 */ 0x00, 0x1B, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x1C, 0x02, 0x16, 0x03, 0x5C, 0x01, 0x1C, @@ -3609,30 +3609,30 @@ namespace Js /* 00008900 */ 0x1A, 0x97, 0x1A, 0x17, 0x0E, 0x2F, 0x1A, 0x0D, 0x1A, 0x2F, 0x1A, 0x1A, 0x0F, 0x14, 0x03, 0x00, /* 00008910 */ 0x15, 0x11, 0x09, 0x06, 0x00, 0x47, 0x1B, 0x12, 0x09, 0x03, 0x00, 0x47, 0x1B, 0x13, 0x2F, 0x1A, /* 00008920 */ 0x1A, 0x1B, 0x2F, 0x1A, 0x1A, 0x10, 0x5C, 0x04, 0x1A, 0x1F, 0x05, 0x00, 0x19, 0x09, 0x08, 0x00, -/* 00008930 */ 0x47, 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, +/* 00008930 */ 0x47, 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, /* 00008940 */ 0xFE, 0x96, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x0D, 0x01, 0x08, 0x00, 0x2B, 0x00, /* 00008950 */ 0x3A, 0x00, 0xF6, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x14, 0x00, 0x48, 0x00, 0x48, 0x00, 0x86, 0x00, /* 00008960 */ 0x08, 0x00, 0x31, 0x00, 0x56, 0x00, 0xC6, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x6E, 0x01, -/* 00008970 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x7A, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 00008970 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 00008980 */ 0x37, 0x00, 0xFE, 0x4E, 0xC2, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x4E, 0xC2, 0xEF, /* 00008990 */ 0xEF, 0x03, 0x05, 0x07, 0x0E, 0x0B, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000089A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000089B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, -/* 000089C0 */ 0xB8, 0x02, 0x02, 0xFE, 0x60, 0x03, 0x30, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, +/* 000089B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, +/* 000089C0 */ 0xBB, 0x02, 0x02, 0xFE, 0x63, 0x03, 0x30, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, /* 000089D0 */ 0x06, 0x00, 0x47, 0x00, 0x03, 0x09, 0x1D, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 000089E0 */ 0x00, 0x07, 0x97, 0x07, 0x07, 0x05, 0x47, 0x00, 0x07, 0x0F, 0x03, 0x00, 0x07, 0x47, 0x00, 0x04, /* 000089F0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x8A, 0xC2, 0x04, 0x00, 0x00, /* 00008A00 */ 0x00, 0x00, 0x0B, 0x00, 0x3C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x1D, 0x00, 0x45, 0x00, 0x00, 0xBF, -/* 00008A10 */ 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x79, 0x03, 0xFE, 0xB3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, +/* 00008A10 */ 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x7C, 0x03, 0xFE, 0xB3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, /* 00008A20 */ 0x01, 0x00, 0x35, 0x00, 0xFE, 0x96, 0xB6, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, /* 00008A30 */ 0x96, 0xB6, 0xFE, 0xC7, 0x09, 0xFE, 0xC7, 0x09, 0x02, 0x06, 0x17, 0x1B, 0x05, 0xCC, 0xCA, 0x03, /* 00008A40 */ 0x07, 0x05, 0x05, 0x05, 0x05, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x1A, 0xFF, 0xFF, 0xFF, /* 00008A50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00008A60 */ 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x04, 0x02, 0xFE, 0x8C, 0x03, 0x02, -/* 00008A70 */ 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, -/* 00008A80 */ 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, -/* 00008A90 */ 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, -/* 00008AA0 */ 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x96, 0x03, +/* 00008A60 */ 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x04, 0x02, 0xFE, 0x8F, 0x03, 0x02, +/* 00008A70 */ 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, +/* 00008A80 */ 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, 0x03, 0x02, 0xFE, 0x96, 0x03, 0x02, +/* 00008A90 */ 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x97, 0x03, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, +/* 00008AA0 */ 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x99, 0x03, /* 00008AB0 */ 0xFE, 0xAD, 0x03, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCD, 0x1B, 0x00, 0x96, 0x02, 0x00, 0x00, /* 00008AC0 */ 0x00, 0x1B, 0x92, 0x03, 0x00, 0x00, 0x00, 0x1B, 0x61, 0x1B, 0x1B, 0x00, 0x0F, 0x03, 0x00, 0x1B, /* 00008AD0 */ 0x09, 0x93, 0x00, 0x92, 0x03, 0x00, 0x00, 0x00, 0x1B, 0x61, 0x1B, 0x1B, 0x00, 0x14, 0x15, 0x00, @@ -3692,8 +3692,8 @@ namespace Js /* 00008E30 */ 0x05, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1C, 0x5C, 0x01, 0x1C, 0x92, 0x02, /* 00008E40 */ 0x00, 0x00, 0x00, 0x1C, 0x5C, 0x02, 0x1C, 0x5C, 0x03, 0x16, 0x1F, 0x04, 0x1B, 0x1B, 0x47, 0x00, /* 00008E50 */ 0x1B, 0x09, 0x05, 0x00, 0xA8, 0x1B, 0x47, 0x00, 0x1B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00008E60 */ 0x00, 0x00, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4F, -/* 00008E70 */ 0x02, 0xFE, 0x97, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFE, 0xD8, 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, +/* 00008E60 */ 0x00, 0x00, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x52, +/* 00008E70 */ 0x02, 0xFE, 0x9A, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFE, 0xD8, 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, /* 00008E80 */ 0x09, 0x00, 0x26, 0x00, 0x11, 0x00, 0x2C, 0x00, 0x24, 0x00, 0x5C, 0x00, 0x30, 0x00, 0x64, 0x00, /* 00008E90 */ 0x12, 0x00, 0x3B, 0x00, 0x2D, 0x00, 0xAA, 0x00, 0x11, 0x00, 0x29, 0x00, 0x12, 0x00, 0x3B, 0x00, /* 00008EA0 */ 0x30, 0x00, 0x5F, 0x00, 0x12, 0x00, 0x3B, 0x00, 0x2D, 0x00, 0x79, 0x00, 0x11, 0x00, 0x2A, 0x00, @@ -3712,16 +3712,16 @@ namespace Js /* 00008F70 */ 0x00, 0x06, 0x5C, 0x01, 0x06, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x5C, /* 00008F80 */ 0x02, 0x06, 0x5C, 0x03, 0x03, 0x1F, 0x04, 0xFF, 0x05, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, /* 00008F90 */ 0xFE, 0x12, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x5C, 0x00, -/* 00008FA0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x78, 0x03, 0xFE, 0x82, 0x03, 0x0C, 0xFF, +/* 00008FA0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, 0x82, 0x03, 0x0C, 0xFF, /* 00008FB0 */ 0xA3, 0x41, 0x01, 0x00, 0x34, 0x00, 0xFE, 0xDC, 0xAC, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, /* 00008FC0 */ 0xFE, 0xDC, 0xAC, 0xFE, 0x1F, 0x09, 0xFE, 0x1F, 0x09, 0x07, 0x15, 0x1A, 0x05, 0x93, 0x8D, 0x03, /* 00008FD0 */ 0x03, 0x01, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008FE0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008FF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, 0x02, 0xFE, 0x7F, 0x03, 0x02, -/* 00009000 */ 0xFE, 0x80, 0x03, 0x09, 0x02, 0xFE, 0x81, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x83, 0x03, -/* 00009010 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, 0x02, -/* 00009020 */ 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, -/* 00009030 */ 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0xFE, 0x69, 0x02, 0xA8, 0x1A, 0x14, 0x03, 0x00, +/* 00008FF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, 0x02, 0xFE, 0x82, 0x03, 0x02, +/* 00009000 */ 0xFE, 0x83, 0x03, 0x09, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, +/* 00009010 */ 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, +/* 00009020 */ 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, +/* 00009030 */ 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0xFE, 0x69, 0x02, 0xA8, 0x1A, 0x14, 0x03, 0x00, /* 00009040 */ 0x15, 0x1A, 0x09, 0x22, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1A, 0x07, /* 00009050 */ 0x03, 0x00, 0x5C, 0x00, 0x03, 0xCB, 0x1B, 0x5C, 0x01, 0x1B, 0x5C, 0x02, 0x02, 0x1F, 0x03, 0x1A, /* 00009060 */ 0x1A, 0x47, 0x15, 0x1A, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, @@ -3761,19 +3761,19 @@ namespace Js /* 00009280 */ 0x00, 0x00, 0x00, 0x7A, 0x0C, 0x1B, 0x08, 0x7A, 0x04, 0x1B, 0x09, 0x7A, 0x04, 0x1B, 0x0A, 0x7A, /* 00009290 */ 0x04, 0x1B, 0x0B, 0x5C, 0x03, 0x1B, 0x1F, 0x04, 0xFF, 0x1A, 0x47, 0x00, 0x15, 0x09, 0x02, 0x00, /* 000092A0 */ 0xA8, 0x00, 0x24, 0x00, 0x06, 0x90, 0x00, 0x78, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 000092B0 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 000092C0 */ 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 000092D0 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x48, -/* 000092E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, -/* 000092F0 */ 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, -/* 00009300 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, -/* 00009310 */ 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 00009320 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 00009330 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 00009340 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, -/* 00009350 */ 0xFE, 0xFE, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, -/* 00009360 */ 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, -/* 00009370 */ 0x01, 0xFE, 0x7D, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, +/* 000092B0 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 000092C0 */ 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 000092D0 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x48, +/* 000092E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, +/* 000092F0 */ 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, +/* 00009300 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, +/* 00009310 */ 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, +/* 00009320 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 00009330 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 00009340 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +/* 00009350 */ 0xFE, 0x01, 0x03, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, +/* 00009360 */ 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, +/* 00009370 */ 0x01, 0xFE, 0x80, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, /* 00009380 */ 0x00, 0x22, 0x00, 0x51, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x03, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x46, /* 00009390 */ 0x00, 0x38, 0x00, 0x96, 0x00, 0x03, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x46, 0x00, 0x2A, 0x00, 0x79, /* 000093A0 */ 0x00, 0x03, 0x00, 0x3C, 0x00, 0x17, 0x00, 0x58, 0x00, 0x3A, 0x00, 0xCF, 0x00, 0x3A, 0x00, 0xD0, @@ -3783,14 +3783,14 @@ namespace Js /* 000093E0 */ 0x00, 0xFE, 0x40, 0x7A, 0x06, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x40, 0x7A, 0xFE, /* 000093F0 */ 0xA1, 0x31, 0xFE, 0xA1, 0x31, 0x01, 0x0D, 0x22, 0x28, 0x09, 0xA6, 0xA6, 0x01, 0x09, 0x07, 0x07, /* 00009400 */ 0x07, 0x07, 0x05, 0x02, 0x25, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009410 */ 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x43, -/* 00009420 */ 0x03, 0x02, 0xFE, 0x44, 0x03, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x45, 0x03, 0x02, -/* 00009430 */ 0xFE, 0x46, 0x03, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, -/* 00009440 */ 0x02, 0xFE, 0xC2, 0x02, 0x03, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x48, -/* 00009450 */ 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, -/* 00009460 */ 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, -/* 00009470 */ 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, -/* 00009480 */ 0x23, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0xFE, 0x59, +/* 00009410 */ 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x46, +/* 00009420 */ 0x03, 0x02, 0xFE, 0x47, 0x03, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x48, 0x03, 0x02, +/* 00009430 */ 0xFE, 0x49, 0x03, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, +/* 00009440 */ 0x02, 0xFE, 0xC5, 0x02, 0x03, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, +/* 00009450 */ 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, +/* 00009460 */ 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, +/* 00009470 */ 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, +/* 00009480 */ 0x26, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0xFE, 0x59, /* 00009490 */ 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, /* 000094A0 */ 0x2A, 0x14, 0x15, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 000094B0 */ 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x26, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, @@ -3845,17 +3845,17 @@ namespace Js /* 000097C0 */ 0x2C, 0x7A, 0x2C, 0x2B, 0x06, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, 0x5C, 0x03, 0x2B, /* 000097D0 */ 0x1F, 0x04, 0xFF, 0x2A, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, /* 000097E0 */ 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, 0x00, -/* 000097F0 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, -/* 00009800 */ 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00009810 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00009820 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00009830 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, -/* 00009840 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, -/* 00009850 */ 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00009860 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00009870 */ 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, -/* 00009880 */ 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0xC6, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x53, -/* 00009890 */ 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE5, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x59, 0x7A, 0x0F, 0x06, +/* 000097F0 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, +/* 00009800 */ 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00009810 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00009820 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00009830 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, +/* 00009840 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, +/* 00009850 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, +/* 00009860 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00009870 */ 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, +/* 00009880 */ 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0xC9, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x56, +/* 00009890 */ 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE8, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x59, 0x7A, 0x0F, 0x06, /* 000098A0 */ 0x00, 0x00, 0x00, 0x3E, 0x00, 0x87, 0x19, 0x44, 0x00, 0xDF, 0x02, 0x46, 0x00, 0xA2, 0x05, 0x24, /* 000098B0 */ 0x00, 0x4C, 0x03, 0x24, 0x00, 0x54, 0x00, 0x4A, 0x00, 0x9D, 0x00, 0x35, 0x00, 0x23, 0x01, 0x55, /* 000098C0 */ 0x00, 0x9A, 0x00, 0x36, 0x00, 0x49, 0x00, 0x52, 0x00, 0xA0, 0x00, 0x60, 0x00, 0xD8, 0x04, 0x71, @@ -3866,8 +3866,8 @@ namespace Js /* 00009910 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x8F, 0xA8, 0xFE, 0x61, 0x02, 0xFE, 0x61, 0x02, 0x05, 0x05, /* 00009920 */ 0x08, 0x04, 0x25, 0x24, 0x04, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009940 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, -/* 00009950 */ 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, +/* 00009940 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, +/* 00009950 */ 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, /* 00009960 */ 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, /* 00009970 */ 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, /* 00009980 */ 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, @@ -3876,15 +3876,15 @@ namespace Js /* 000099B0 */ 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, 0x09, 0x00, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, /* 000099C0 */ 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, /* 000099D0 */ 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, -/* 000099E0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x43, +/* 000099E0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x46, /* 000099F0 */ 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, /* 00009A00 */ 0x87, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x6A, 0x00, 0x1E, 0x00, 0x87, 0x00, 0x09, 0x00, -/* 00009A10 */ 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x53, 0x03, +/* 00009A10 */ 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x53, 0x03, /* 00009A20 */ 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x30, 0x00, 0xFE, 0xA2, 0xA3, 0x01, 0xFF, 0x00, 0x10, 0x01, /* 00009A30 */ 0x00, 0x01, 0x01, 0xFE, 0xA2, 0xA3, 0xFE, 0x1A, 0x04, 0xFE, 0x1A, 0x04, 0x02, 0x06, 0x07, 0x0B, /* 00009A40 */ 0x05, 0x40, 0x40, 0x04, 0x07, 0x08, 0x03, 0x03, 0x03, 0x03, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009A50 */ 0x09, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009A60 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x03, +/* 00009A60 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x03, /* 00009A70 */ 0x04, 0xFE, 0x10, 0x01, 0x5B, 0x07, 0xB3, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, 0x03, 0x00, 0x0B, /* 00009A80 */ 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, /* 00009A90 */ 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, @@ -3902,8 +3902,8 @@ namespace Js /* 00009B50 */ 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x03, 0x0C, 0x1F, 0x04, 0xFF, 0x0B, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 00009B60 */ 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x06, 0x92, 0x03, 0x00, 0x00, 0x00, /* 00009B70 */ 0x0C, 0x5C, 0x01, 0x0C, 0xCB, 0x0C, 0x5C, 0x02, 0x0C, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, -/* 00009B80 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, -/* 00009B90 */ 0x5C, 0x03, 0xFE, 0xE8, 0x01, 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 00009B80 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, +/* 00009B90 */ 0x5F, 0x03, 0xFE, 0xEB, 0x01, 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 00009BA0 */ 0x3D, 0x00, 0x1E, 0x00, 0x8E, 0x00, 0x21, 0x00, 0x4C, 0x00, 0x21, 0x00, 0x6A, 0x00, 0x1E, 0x00, /* 00009BB0 */ 0x90, 0x00, 0x22, 0x00, 0x49, 0x00, 0x37, 0x00, 0x4A, 0x01, 0x27, 0x00, 0x3F, 0x00, 0x00, 0xC3, /* 00009BC0 */ 0x9B, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, @@ -3911,18 +3911,18 @@ namespace Js /* 00009BE0 */ 0x01, 0x00, 0x02, 0x02, 0xFE, 0x62, 0xA6, 0xFC, 0xFC, 0x05, 0x04, 0x06, 0x0D, 0x0D, 0x05, 0x02, /* 00009BF0 */ 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009C00 */ 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009C10 */ 0x00, 0x00, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0x0A, 0x03, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, +/* 00009C10 */ 0x00, 0x00, 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x0D, 0x03, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 00009C20 */ 0x02, 0x00, 0x00, 0x00, 0x06, 0x2F, 0x07, 0x02, 0x04, 0x2D, 0x06, 0x06, 0x07, 0x15, 0x03, 0x00, /* 00009C30 */ 0x06, 0x03, 0x09, 0x20, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x8E, /* 00009C40 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x2F, 0x08, 0x02, 0x04, 0x97, 0x07, 0x07, /* 00009C50 */ 0x08, 0x9C, 0x07, 0x06, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x93, 0xA6, 0x03, /* 00009C60 */ 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x5B, 0x00, 0x22, 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 00009C70 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x37, 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 00009C70 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x37, 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 00009C80 */ 0x2F, 0x00, 0xFE, 0xAA, 0x9C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAA, 0x9C, 0xFE, /* 00009C90 */ 0xF1, 0x02, 0xFE, 0xF1, 0x02, 0x08, 0x07, 0x0B, 0x07, 0x3D, 0x39, 0x04, 0x03, 0x09, 0x05, 0x05, /* 00009CA0 */ 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009CB0 */ 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009CC0 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x01, +/* 00009CC0 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x01, /* 00009CD0 */ 0x00, 0x00, 0x00, 0x00, 0x04, 0xED, 0x5B, 0x08, 0xB3, 0x08, 0x08, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 00009CE0 */ 0x2D, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, /* 00009CF0 */ 0x01, 0x07, 0x1F, 0x02, 0x0B, 0x0B, 0x47, 0x07, 0x0B, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, @@ -3938,17 +3938,17 @@ namespace Js /* 00009D90 */ 0x04, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0D, 0x2A, 0x0E, 0x05, 0x14, 0x03, 0x00, 0x07, 0x0E, 0x09, /* 00009DA0 */ 0x06, 0x00, 0x47, 0x0E, 0x05, 0x09, 0x03, 0x00, 0x47, 0x0E, 0x07, 0x5C, 0x01, 0x0E, 0x5C, 0x02, /* 00009DB0 */ 0x09, 0x1F, 0x03, 0x0C, 0x0C, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, -/* 00009DC0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, -/* 00009DD0 */ 0x02, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x31, +/* 00009DC0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, +/* 00009DD0 */ 0x02, 0xFE, 0xFB, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x31, /* 00009DE0 */ 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, 0x7F, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, 0x00, 0x66, /* 00009DF0 */ 0x00, 0x1E, 0x00, 0xD8, 0x00, 0x4E, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, -/* 00009E00 */ 0x07, 0xFE, 0xC3, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, +/* 00009E00 */ 0x07, 0xFE, 0xC6, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, /* 00009E10 */ 0xEB, 0x96, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xEB, 0x96, 0xFE, 0x64, 0x05, 0xFE, /* 00009E20 */ 0x64, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, /* 00009E30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, /* 00009E40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, /* 00009E50 */ 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, -/* 00009E60 */ 0x04, 0x02, 0xFE, 0xC3, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, +/* 00009E60 */ 0x04, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, /* 00009E70 */ 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, /* 00009E80 */ 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, 0x08, 0x0F, 0x61, 0x0F, 0x0A, 0x00, /* 00009E90 */ 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x03, 0x47, 0x09, 0x0F, 0x6A, @@ -3972,10 +3972,10 @@ namespace Js /* 00009FB0 */ 0x0D, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, /* 00009FC0 */ 0x06, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x01, 0x11, 0x8E, 0x01, /* 00009FD0 */ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, -/* 00009FE0 */ 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, +/* 00009FE0 */ 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, /* 00009FF0 */ 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, -/* 0000A000 */ 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, -/* 0000A010 */ 0x43, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, +/* 0000A000 */ 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, +/* 0000A010 */ 0x46, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, /* 0000A020 */ 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 0000A030 */ 0x07, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x1C, 0x00, 0x59, 0x00, 0x1E, 0x00, 0x3A, 0x00, /* 0000A040 */ 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0x9F, 0x00, 0x1E, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, 0x00, @@ -3986,7 +3986,7 @@ namespace Js /* 0000A090 */ 0xFE, 0x73, 0x02, 0x09, 0x09, 0x0E, 0x07, 0x40, 0x3C, 0x03, 0x06, 0x0B, 0x03, 0x03, 0x03, 0x03, /* 0000A0A0 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A0B0 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A0C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0x43, 0x03, 0x04, +/* 0000A0C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x46, 0x03, 0x04, /* 0000A0D0 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFA, 0x5B, 0x09, 0xB3, 0x09, 0x09, /* 0000A0E0 */ 0xAE, 0x0B, 0x2C, 0x0E, 0x09, 0x15, 0x03, 0x00, 0x0E, 0x03, 0x09, 0x34, 0x00, 0x8E, 0x03, 0x00, /* 0000A0F0 */ 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0xE1, 0x0E, 0x09, 0x0E, 0x00, 0x0F, 0x21, 0x00, 0x0E, @@ -4003,23 +4003,23 @@ namespace Js /* 0000A1A0 */ 0x0F, 0x10, 0x02, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x10, 0x2A, 0x11, 0x07, 0x14, 0x03, 0x00, 0x0C, /* 0000A1B0 */ 0x11, 0x09, 0x06, 0x00, 0x47, 0x11, 0x07, 0x09, 0x03, 0x00, 0x47, 0x11, 0x0C, 0x5C, 0x01, 0x11, /* 0000A1C0 */ 0x5C, 0x02, 0x0A, 0x1F, 0x03, 0x0F, 0x0F, 0x5C, 0x01, 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, -/* 0000A1D0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0xF8, 0x01, +/* 0000A1D0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0xFB, 0x01, /* 0000A1E0 */ 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x58, 0x00, 0x1E, 0x00, 0x7B, /* 0000A1F0 */ 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x27, 0x00, 0x58, 0x00, 0x1E, 0x00, 0x8F, 0x00, 0x4E, 0x00, 0x56, -/* 0000A200 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x07, 0xFE, 0x53, 0x03, 0xFE, 0x94, 0x02, 0x0C, +/* 0000A200 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x07, 0xFE, 0x56, 0x03, 0xFE, 0x94, 0x02, 0x0C, /* 0000A210 */ 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x2C, 0x00, 0xFE, 0x9C, 0x7A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, /* 0000A220 */ 0x04, 0xFE, 0x9C, 0x7A, 0xFE, 0x34, 0x19, 0xFE, 0x34, 0x19, 0x18, 0x23, 0x37, 0x07, 0xFE, 0x83, /* 0000A230 */ 0x01, 0xFE, 0x5E, 0x01, 0x03, 0x10, 0x45, 0x1E, 0x1E, 0x1E, 0x1E, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A250 */ 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, -/* 0000A260 */ 0x03, 0x04, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, -/* 0000A270 */ 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0x48, 0x03, -/* 0000A280 */ 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 0000A290 */ 0x00, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x56, 0x03, 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0xA5, -/* 0000A2A0 */ 0x02, 0x02, 0xFE, 0x4B, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, -/* 0000A2B0 */ 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, -/* 0000A2C0 */ 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, -/* 0000A2D0 */ 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xE0, 0x05, 0x2C, 0x38, 0x23, +/* 0000A250 */ 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, +/* 0000A260 */ 0x03, 0x04, 0x02, 0xFE, 0xC6, 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, +/* 0000A270 */ 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0x4B, 0x03, +/* 0000A280 */ 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 0000A290 */ 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x59, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xA8, +/* 0000A2A0 */ 0x02, 0x02, 0xFE, 0x4E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, +/* 0000A2B0 */ 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, +/* 0000A2C0 */ 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, +/* 0000A2D0 */ 0x00, 0x02, 0xFE, 0x50, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xE0, 0x05, 0x2C, 0x38, 0x23, /* 0000A2E0 */ 0x0D, 0x03, 0x00, 0x38, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, /* 0000A2F0 */ 0x00, 0x39, 0x6C, 0x38, 0x39, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x39, 0x1F, 0x01, 0xFF, 0x38, /* 0000A300 */ 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x38, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, @@ -4114,12 +4114,12 @@ namespace Js /* 0000A890 */ 0x00, 0x00, 0x39, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, /* 0000A8A0 */ 0x00, 0x00, 0x3A, 0x5C, 0x01, 0x3A, 0x61, 0x3A, 0x23, 0x1B, 0x5C, 0x02, 0x3A, 0x1F, 0x03, 0x39, /* 0000A8B0 */ 0x39, 0x76, 0x39, 0x38, 0x1C, 0x76, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000A8C0 */ 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xD9, -/* 0000A8D0 */ 0x01, 0xFE, 0xDA, 0x01, 0xFE, 0x33, 0x02, 0xFE, 0x34, 0x02, 0xFE, 0xFB, 0x01, 0xF9, 0xFE, 0x59, -/* 0000A8E0 */ 0x03, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x45, 0x02, 0xFE, 0xDF, 0x01, 0xFE, 0xE0, 0x01, -/* 0000A8F0 */ 0xFE, 0xE1, 0x01, 0xFE, 0xD6, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x01, 0xFE, 0xD7, 0x01, 0xFE, -/* 0000A900 */ 0xD8, 0x01, 0xFE, 0xDE, 0x01, 0xFE, 0xDC, 0x01, 0xFE, 0xF9, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0xDD, -/* 0000A910 */ 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x36, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, +/* 0000A8C0 */ 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xDC, +/* 0000A8D0 */ 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x37, 0x02, 0xFE, 0xFE, 0x01, 0xFC, 0xFE, 0x5C, +/* 0000A8E0 */ 0x03, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x48, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xE3, 0x01, +/* 0000A8F0 */ 0xFE, 0xE4, 0x01, 0xFE, 0xD9, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, 0xFE, 0xDA, 0x01, 0xFE, +/* 0000A900 */ 0xDB, 0x01, 0xFE, 0xE1, 0x01, 0xFE, 0xDF, 0x01, 0xFE, 0xFC, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0xE0, +/* 0000A910 */ 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x39, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, /* 0000A920 */ 0x0B, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0x9C, 0x00, 0x1E, 0x00, 0x6E, 0x00, /* 0000A930 */ 0x04, 0x00, 0x64, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x22, 0x00, 0x51, 0x00, 0x1E, 0x00, 0x4C, 0x00, /* 0000A940 */ 0x31, 0x00, 0x72, 0x00, 0x35, 0x00, 0x73, 0x00, 0x03, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x60, 0x00, @@ -4143,11 +4143,11 @@ namespace Js /* 0000AA60 */ 0x00, 0x01, 0x01, 0xFE, 0xA2, 0x49, 0xFE, 0x43, 0x30, 0xFE, 0x43, 0x30, 0x0B, 0x17, 0x1B, 0x09, /* 0000AA70 */ 0x99, 0x99, 0x01, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000AA80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, -/* 0000AA90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x1D, 0x03, 0x02, -/* 0000AAA0 */ 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1F, 0x03, 0x02, 0xFE, 0x20, -/* 0000AAB0 */ 0x03, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, -/* 0000AAC0 */ 0xC2, 0x02, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, -/* 0000AAD0 */ 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, +/* 0000AA90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x20, 0x03, 0x02, +/* 0000AAA0 */ 0xFE, 0x21, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, +/* 0000AAB0 */ 0x03, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, +/* 0000AAC0 */ 0xC5, 0x02, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, +/* 0000AAD0 */ 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x27, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x29, 0x03, /* 0000AAE0 */ 0xFE, 0x24, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 0000AAF0 */ 0x00, 0x00, 0x1D, 0x14, 0x15, 0x00, 0x1D, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000AB00 */ 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x03, 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, @@ -4199,17 +4199,17 @@ namespace Js /* 0000ADE0 */ 0x1E, 0x06, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0x1F, 0x04, 0xFF, /* 0000ADF0 */ 0x1D, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, /* 0000AE00 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, -/* 0000AE10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 0000AE20 */ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 0000AE30 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x2C, 0x00, -/* 0000AE40 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 0000AE50 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 0000AE60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 0000AE70 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, -/* 0000AE80 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, -/* 0000AE90 */ 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x14, -/* 0000AEA0 */ 0x01, 0xFE, 0x80, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x27, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE4, -/* 0000AEB0 */ 0x01, 0x01, 0xFE, 0xE9, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x09, +/* 0000AE10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 0000AE20 */ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 0000AE30 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x2C, 0x00, +/* 0000AE40 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 0000AE50 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 0000AE60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 0000AE70 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, +/* 0000AE80 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, +/* 0000AE90 */ 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x17, +/* 0000AEA0 */ 0x01, 0xFE, 0x83, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x2A, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE7, +/* 0000AEB0 */ 0x01, 0x01, 0xFE, 0xEC, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x09, /* 0000AEC0 */ 0x17, 0x44, 0x00, 0x48, 0x04, 0x46, 0x00, 0xC4, 0x05, 0x24, 0x00, 0x41, 0x00, 0x24, 0x00, 0x67, /* 0000AED0 */ 0x03, 0x4A, 0x00, 0x95, 0x00, 0x55, 0x00, 0x92, 0x00, 0x36, 0x00, 0x47, 0x00, 0x52, 0x00, 0x98, /* 0000AEE0 */ 0x00, 0x60, 0x00, 0xBD, 0x05, 0x71, 0x00, 0x12, 0x03, 0x0D, 0x00, 0x80, 0x00, 0x07, 0x00, 0x17, @@ -4220,7 +4220,7 @@ namespace Js /* 0000AF30 */ 0x02, 0xFE, 0x50, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, /* 0000AF40 */ 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000AF50 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000AF60 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x8A, 0x5B, +/* 0000AF60 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x8A, 0x5B, /* 0000AF70 */ 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x1E, 0x00, 0x8E, /* 0000AF80 */ 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, /* 0000AF90 */ 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x8E, 0x03, 0x00, @@ -4229,18 +4229,18 @@ namespace Js /* 0000AFC0 */ 0x06, 0x08, 0x09, 0x00, 0x00, 0x61, 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, 0x09, 0x00, 0x00, /* 0000AFD0 */ 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, /* 0000AFE0 */ 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x61, 0x00, -/* 0000AFF0 */ 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, -/* 0000B000 */ 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0xD3, 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, +/* 0000AFF0 */ 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, +/* 0000B000 */ 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x45, 0x02, 0x00, 0xFE, 0xD3, 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, /* 0000B010 */ 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, /* 0000B020 */ 0x1E, 0x00, 0x80, 0x00, 0x09, 0x00, 0x39, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, -/* 0000B030 */ 0xFE, 0x23, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, +/* 0000B030 */ 0xFE, 0x26, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, /* 0000B040 */ 0x70, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xD8, 0x70, 0xFE, 0x03, 0x05, 0xFE, 0x03, /* 0000B050 */ 0x05, 0x05, 0x0D, 0x10, 0x04, 0x33, 0x32, 0x03, 0x01, 0x09, 0x11, 0x11, 0x11, 0x11, 0x01, 0xFF, /* 0000B060 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, /* 0000B070 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000B080 */ 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x42, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xF3, 0x02, -/* 0000B090 */ 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x3B, 0x03, -/* 0000B0A0 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, 0xCB, 0x5B, 0x0D, 0xB3, 0x0D, 0x0D, 0x2C, +/* 0000B080 */ 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x45, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xF6, 0x02, +/* 0000B090 */ 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x3E, 0x03, +/* 0000B0A0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, 0xCB, 0x5B, 0x0D, 0xB3, 0x0D, 0x0D, 0x2C, /* 0000B0B0 */ 0x10, 0x0D, 0x15, 0x03, 0x00, 0x10, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, /* 0000B0C0 */ 0x00, 0x00, 0x00, 0x11, 0x6C, 0x10, 0x11, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x11, 0x5C, 0x01, /* 0000B0D0 */ 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x10, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, @@ -4254,20 +4254,20 @@ namespace Js /* 0000B150 */ 0x0E, 0x09, 0x7A, 0x10, 0x00, 0x0A, 0x61, 0x10, 0x0E, 0x0B, 0x7A, 0x10, 0x00, 0x0C, 0x61, 0x10, /* 0000B160 */ 0x0E, 0x0D, 0x7A, 0x10, 0x00, 0x0E, 0x61, 0x10, 0x0E, 0x0F, 0x7A, 0x10, 0x00, 0x10, 0x09, 0x02, /* 0000B170 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, -/* 0000B180 */ 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0xEB, 0x01, 0x00, 0x00, -/* 0000B190 */ 0xED, 0x01, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0xEC, 0x01, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, -/* 0000B1A0 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, -/* 0000B1B0 */ 0xFE, 0x3B, 0x02, 0xFE, 0x29, 0x03, 0xFE, 0x3C, 0x02, 0xFE, 0xEB, 0x01, 0xFE, 0x3D, 0x02, 0xFE, -/* 0000B1C0 */ 0xED, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0x3B, 0x03, 0xFE, 0x3F, 0x02, 0xFE, 0xEC, 0x01, 0xFE, 0x3E, -/* 0000B1D0 */ 0x02, 0xFE, 0x32, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, +/* 0000B180 */ 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0xEE, 0x01, 0x00, 0x00, +/* 0000B190 */ 0xF0, 0x01, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, +/* 0000B1A0 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, +/* 0000B1B0 */ 0xFE, 0x3E, 0x02, 0xFE, 0x2C, 0x03, 0xFE, 0x3F, 0x02, 0xFE, 0xEE, 0x01, 0xFE, 0x40, 0x02, 0xFE, +/* 0000B1C0 */ 0xF0, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x3E, 0x03, 0xFE, 0x42, 0x02, 0xFE, 0xEF, 0x01, 0xFE, 0x41, +/* 0000B1D0 */ 0x02, 0xFE, 0x35, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, /* 0000B1E0 */ 0x00, 0x1E, 0x00, 0x86, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, 0x1E, 0x00, 0x88, -/* 0000B1F0 */ 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x24, 0x03, +/* 0000B1F0 */ 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x27, 0x03, /* 0000B200 */ 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x28, 0x00, 0xFE, 0x63, 0x6B, 0xFF, 0x00, /* 0000B210 */ 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x63, 0x6B, 0xFE, 0x01, 0x03, 0xFE, 0x01, 0x03, 0x09, 0x06, /* 0000B220 */ 0x0B, 0x0B, 0x44, 0x41, 0x03, 0x03, 0x09, 0x08, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B230 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, -/* 0000B250 */ 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x04, 0xFE, 0x0B, 0x01, 0x5B, 0x08, 0xB3, 0x08, +/* 0000B240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, +/* 0000B250 */ 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x04, 0xFE, 0x0B, 0x01, 0x5B, 0x08, 0xB3, 0x08, /* 0000B260 */ 0x08, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, /* 0000B270 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, /* 0000B280 */ 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x0B, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, @@ -4284,18 +4284,18 @@ namespace Js /* 0000B330 */ 0x5C, 0x00, 0x0D, 0x5C, 0x01, 0x06, 0x5C, 0x02, 0x07, 0x61, 0x0E, 0x09, 0x04, 0x5C, 0x03, 0x0E, /* 0000B340 */ 0x61, 0x0E, 0x09, 0x05, 0x5C, 0x04, 0x0E, 0x61, 0x0E, 0x09, 0x06, 0x5C, 0x05, 0x0E, 0x61, 0x0E, /* 0000B350 */ 0x09, 0x07, 0x5C, 0x06, 0x0E, 0x1F, 0x07, 0x0C, 0x0C, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x00, 0x0B, -/* 0000B360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, -/* 0000B370 */ 0x41, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, +/* 0000B360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, +/* 0000B370 */ 0x44, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, /* 0000B380 */ 0x02, 0x00, 0xFE, 0x91, 0x6B, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, /* 0000B390 */ 0x78, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, 0x00, 0x62, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x1A, 0x00, /* 0000B3A0 */ 0x24, 0x00, 0x1A, 0x00, 0x26, 0x00, 0x56, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, -/* 0000B3B0 */ 0xFC, 0x07, 0xFE, 0xBF, 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, +/* 0000B3B0 */ 0xFC, 0x07, 0xFE, 0xC2, 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, /* 0000B3C0 */ 0xFE, 0x3A, 0x65, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x3A, 0x65, 0xFE, 0x84, 0x05, /* 0000B3D0 */ 0xFE, 0x84, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x03, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, /* 0000B3E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, /* 0000B3F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, /* 0000B400 */ 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, -/* 0000B410 */ 0x00, 0x04, 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, +/* 0000B410 */ 0x00, 0x04, 0x02, 0xFE, 0xC2, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, /* 0000B420 */ 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, /* 0000B430 */ 0x00, 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, 0x08, 0x0F, 0x61, 0x0F, 0x0A, /* 0000B440 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x03, 0x47, 0x09, 0x0F, @@ -4320,9 +4320,9 @@ namespace Js /* 0000B570 */ 0x00, 0x06, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x01, 0x11, 0x8E, /* 0000B580 */ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, /* 0000B590 */ 0x0C, 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, -/* 0000B5A0 */ 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000B5B0 */ 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x42, 0x02, -/* 0000B5C0 */ 0xFE, 0x42, 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, +/* 0000B5A0 */ 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, +/* 0000B5B0 */ 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x45, 0x02, +/* 0000B5C0 */ 0xFE, 0x45, 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, /* 0000B5D0 */ 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, /* 0000B5E0 */ 0x00, 0x07, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x1C, 0x00, 0x55, 0x00, 0x1E, 0x00, 0x38, /* 0000B5F0 */ 0x00, 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0x9B, 0x00, 0x1E, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, @@ -4333,7 +4333,7 @@ namespace Js /* 0000B640 */ 0x03, 0xFE, 0xDD, 0x03, 0x0A, 0x08, 0x0E, 0x0B, 0x4F, 0x4B, 0x02, 0x05, 0x0B, 0x07, 0x07, 0x07, /* 0000B650 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B660 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B670 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x01, 0x00, +/* 0000B670 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x21, 0x03, 0x04, 0x01, 0x01, 0x00, /* 0000B680 */ 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x01, 0x5B, 0x0A, 0xB3, 0x0A, 0x0A, 0xAE, /* 0000B690 */ 0x08, 0xA8, 0x0C, 0x97, 0x0E, 0x08, 0x03, 0x47, 0x09, 0x0E, 0xA8, 0x0E, 0x14, 0x0B, 0x00, 0x0A, /* 0000B6A0 */ 0x0E, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x0A, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x02, 0x00, 0x00, @@ -4353,24 +4353,24 @@ namespace Js /* 0000B780 */ 0x10, 0x02, 0x07, 0x07, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0B, 0x5C, 0x02, 0x09, 0x61, 0x11, /* 0000B790 */ 0x0C, 0x03, 0x5C, 0x03, 0x11, 0x61, 0x11, 0x0C, 0x04, 0x5C, 0x04, 0x11, 0x61, 0x11, 0x0C, 0x05, /* 0000B7A0 */ 0x5C, 0x05, 0x11, 0x61, 0x11, 0x0C, 0x06, 0x5C, 0x06, 0x11, 0x1F, 0x07, 0x0F, 0x0F, 0x5C, 0x01, -/* 0000B7B0 */ 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x22, -/* 0000B7C0 */ 0x02, 0xFE, 0x20, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, -/* 0000B7D0 */ 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2E, 0x00, +/* 0000B7B0 */ 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x25, +/* 0000B7C0 */ 0x02, 0xFE, 0x23, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, +/* 0000B7D0 */ 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2E, 0x00, /* 0000B7E0 */ 0x12, 0x00, 0x44, 0x00, 0x1E, 0x00, 0x77, 0x00, 0x08, 0x00, 0x2E, 0x00, 0x18, 0x00, 0xF1, 0x00, /* 0000B7F0 */ 0x1A, 0x00, 0x31, 0x00, 0x1A, 0x00, 0x2E, 0x00, 0x1F, 0x00, 0x46, 0x00, 0x27, 0x00, 0x52, 0x00, -/* 0000B800 */ 0x56, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x0F, 0xFE, 0x27, 0x03, 0xFE, +/* 0000B800 */ 0x56, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x0F, 0xFE, 0x2A, 0x03, 0xFE, /* 0000B810 */ 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, 0x49, 0x01, 0xFF, 0x00, /* 0000B820 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xFE, 0x49, 0xFE, 0xB6, 0x16, 0xFE, 0xB6, 0x16, 0x03, 0x15, /* 0000B830 */ 0x24, 0x35, 0x08, 0xFE, 0x0B, 0x01, 0xFA, 0x02, 0x0F, 0x44, 0x14, 0x14, 0x14, 0x14, 0x01, 0x32, /* 0000B840 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, -/* 0000B850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xBF, -/* 0000B860 */ 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, -/* 0000B870 */ 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, -/* 0000B880 */ 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, -/* 0000B890 */ 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x09, -/* 0000B8A0 */ 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, -/* 0000B8B0 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x38, 0x03, -/* 0000B8C0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, +/* 0000B850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC2, +/* 0000B860 */ 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, +/* 0000B870 */ 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, +/* 0000B880 */ 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, +/* 0000B890 */ 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x09, +/* 0000B8A0 */ 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, +/* 0000B8B0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3B, 0x03, +/* 0000B8C0 */ 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, /* 0000B8D0 */ 0xFF, 0xFF, 0xFE, 0x20, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0x2C, 0x36, 0x24, 0x0D, 0x03, /* 0000B8E0 */ 0x00, 0x36, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, /* 0000B8F0 */ 0x6C, 0x36, 0x37, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x37, 0x1F, 0x01, 0xFF, 0x36, 0x8E, 0x02, @@ -4437,11 +4437,11 @@ namespace Js /* 0000BCC0 */ 0x2E, 0x24, 0x0C, 0x76, 0x29, 0x24, 0x0D, 0x76, 0x2A, 0x24, 0x0E, 0x76, 0x2B, 0x24, 0x0F, 0x92, /* 0000BCD0 */ 0x02, 0x00, 0x00, 0x00, 0x36, 0x76, 0x36, 0x24, 0x10, 0x92, 0x03, 0x00, 0x00, 0x00, 0x36, 0x76, /* 0000BCE0 */ 0x36, 0x24, 0x11, 0x92, 0x04, 0x00, 0x00, 0x00, 0x36, 0x76, 0x36, 0x24, 0x12, 0x76, 0x06, 0x24, -/* 0000BCF0 */ 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, -/* 0000BD00 */ 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x38, 0x02, 0xFE, 0x04, 0x02, 0xFE, -/* 0000BD10 */ 0xF3, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3B, -/* 0000BD20 */ 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, -/* 0000BD30 */ 0xFE, 0x41, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0xEC, 0x01, 0xFE, 0x3B, 0x03, 0x00, 0xFE, 0x4C, 0x4A, +/* 0000BCF0 */ 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, +/* 0000BD00 */ 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xF7, 0x01, 0xFE, 0x3B, 0x02, 0xFE, 0x07, 0x02, 0xFE, +/* 0000BD10 */ 0xF6, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, +/* 0000BD20 */ 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0xFE, 0x43, 0x02, +/* 0000BD30 */ 0xFE, 0x44, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0xEF, 0x01, 0xFE, 0x3E, 0x03, 0x00, 0xFE, 0x4C, 0x4A, /* 0000BD40 */ 0x35, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0x94, /* 0000BD50 */ 0x00, 0x1E, 0x00, 0x68, 0x00, 0x04, 0x00, 0x60, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x22, 0x00, 0x51, /* 0000BD60 */ 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x31, 0x00, 0x72, 0x00, 0x31, 0x00, 0x60, 0x00, 0x3B, 0x00, 0x82, @@ -4462,10 +4462,10 @@ namespace Js /* 0000BE50 */ 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BE60 */ 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BE70 */ 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 0000BE80 */ 0xB8, 0x02, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, 0x04, 0x02, 0xFE, 0x05, 0x03, -/* 0000BE90 */ 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x3D, 0x03, -/* 0000BEA0 */ 0x02, 0xFE, 0x3E, 0x03, 0x08, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x2B, -/* 0000BEB0 */ 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x40, 0x03, 0xFE, 0x94, 0x01, 0x8E, 0x03, 0x00, 0x00, +/* 0000BE80 */ 0xBB, 0x02, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, 0x04, 0x02, 0xFE, 0x08, 0x03, +/* 0000BE90 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x40, 0x03, +/* 0000BEA0 */ 0x02, 0xFE, 0x41, 0x03, 0x08, 0x02, 0xFE, 0x42, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0x2E, +/* 0000BEB0 */ 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x43, 0x03, 0xFE, 0x94, 0x01, 0x8E, 0x03, 0x00, 0x00, /* 0000BEC0 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x1B, 0x6C, 0x1A, 0x1B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1B, /* 0000BED0 */ 0x5C, 0x01, 0x15, 0xE0, 0x1C, 0x00, 0x5C, 0x02, 0x1C, 0x1F, 0x03, 0x1A, 0x1A, 0x47, 0x16, 0x1A, /* 0000BEE0 */ 0x97, 0x1A, 0x16, 0x02, 0x47, 0x17, 0x1A, 0x97, 0x1A, 0x16, 0x03, 0x14, 0x03, 0x00, 0x1A, 0x04, @@ -4491,18 +4491,18 @@ namespace Js /* 0000C020 */ 0x2A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x11, 0x09, 0x22, 0x00, 0x15, 0x03, 0x00, 0x18, 0x12, 0x09, /* 0000C030 */ 0x1A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x13, 0x09, 0x12, 0x00, 0x15, 0x03, 0x00, 0x18, 0x14, 0x09, /* 0000C040 */ 0x0A, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x00, 0x24, 0x00, -/* 0000C050 */ 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, -/* 0000C060 */ 0x03, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0x25, 0x02, 0x00, 0x0E, 0xFE, -/* 0000C070 */ 0xFB, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x83, 0x00, 0x07, +/* 0000C050 */ 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, +/* 0000C060 */ 0x03, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0x28, 0x02, 0x00, 0x0E, 0xFE, +/* 0000C070 */ 0xFE, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x83, 0x00, 0x07, /* 0000C080 */ 0x00, 0x2D, 0x00, 0x1E, 0x00, 0x4D, 0x00, 0x1C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0xA0, 0x00, 0x1C, /* 0000C090 */ 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x3C, 0x00, 0x50, 0x00, 0xAB, 0x00, 0x0D, 0x00, 0x4F, 0x00, 0x32, /* 0000C0A0 */ 0x00, 0x01, 0x01, 0x0C, 0x00, 0x43, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, -/* 0000C0B0 */ 0xEF, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, +/* 0000C0B0 */ 0xF2, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, /* 0000C0C0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x41, 0x47, 0xFE, 0x12, 0x02, 0xFE, 0x12, 0x02, /* 0000C0D0 */ 0x0A, 0x05, 0x0B, 0x06, 0x29, 0x22, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, /* 0000C0E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, /* 0000C0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, -/* 0000C100 */ 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1B, 0x03, 0x98, 0x8E, 0x01, +/* 0000C100 */ 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x98, 0x8E, 0x01, /* 0000C110 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, /* 0000C120 */ 0x00, 0x0C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x6C, 0x0D, 0x0E, 0x01, /* 0000C130 */ 0x07, 0x01, 0x00, 0x5C, 0x00, 0x0E, 0x1F, 0x01, 0x0D, 0x0D, 0x5C, 0x01, 0x0D, 0xE0, 0x0D, 0x00, @@ -4512,8 +4512,8 @@ namespace Js /* 0000C170 */ 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x08, 0x0B, 0x09, 0x06, 0x00, 0x47, 0x00, 0x06, /* 0000C180 */ 0x09, 0x21, 0x00, 0x97, 0x0B, 0x08, 0x07, 0x47, 0x09, 0x0B, 0xA8, 0x0B, 0x15, 0x03, 0x00, 0x09, /* 0000C190 */ 0x0B, 0x09, 0x08, 0x00, 0xFB, 0x00, 0x06, 0x04, 0x09, 0x09, 0x08, 0x00, 0x47, 0x00, 0x06, 0x09, -/* 0000C1A0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0xF6, 0x01, 0x00, 0x0E, -/* 0000C1B0 */ 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x60, 0x00, +/* 0000C1A0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0xF9, 0x01, 0x00, 0x0E, +/* 0000C1B0 */ 0xFE, 0x1F, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x60, 0x00, /* 0000C1C0 */ 0x07, 0x00, 0x20, 0x00, 0x07, 0x00, 0x23, 0x00, 0x11, 0x00, 0x51, 0x00, 0x14, 0x00, 0x41, 0x00, /* 0000C1D0 */ 0x06, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x33, 0x00, 0x0A, 0x00, 0x29, 0x00, 0x08, 0x00, 0x39, 0x00, /* 0000C1E0 */ 0x08, 0x00, 0x14, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4529,7 +4529,7 @@ namespace Js /* 0000C280 */ 0x00, 0x5C, 0x00, 0x03, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x01, /* 0000C290 */ 0x09, 0x1F, 0x02, 0x08, 0x08, 0x5C, 0x02, 0x08, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5C, 0x03, /* 0000C2A0 */ 0x08, 0x1F, 0x04, 0xFF, 0x07, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 0000C2B0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x19, 0x03, 0x00, 0xFE, 0x7A, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, +/* 0000C2B0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x7A, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, /* 0000C2C0 */ 0x22, 0x00, 0x30, 0x00, 0x4E, 0x00, 0x5A, 0x02, 0x0B, 0x00, 0x16, 0x00, 0x00, 0xD1, 0xC2, 0x00, /* 0000C2D0 */ 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8A, 0x01, /* 0000C2E0 */ 0x6B, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x20, 0x00, 0xFE, 0x0D, 0x45, 0x01, 0xFF, 0x00, 0x10, 0x01, @@ -4545,15 +4545,15 @@ namespace Js /* 0000C380 */ 0x02, 0x00, 0x5C, 0x00, 0x03, 0x92, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x5C, 0x01, 0x0A, 0x1F, 0x02, /* 0000C390 */ 0x09, 0x09, 0x5C, 0x02, 0x09, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x03, 0x09, 0x1F, 0x04, /* 0000C3A0 */ 0xFF, 0x08, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0x03, 0x00, 0x00, -/* 0000C3B0 */ 0x00, 0x09, 0x9C, 0x09, 0x08, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x74, 0x01, 0xFE, -/* 0000C3C0 */ 0x1A, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x43, 0x00, 0x22, +/* 0000C3B0 */ 0x00, 0x09, 0x9C, 0x09, 0x08, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x77, 0x01, 0xFE, +/* 0000C3C0 */ 0x1D, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x43, 0x00, 0x22, /* 0000C3D0 */ 0x00, 0x37, 0x00, 0x4A, 0x00, 0x28, 0x01, 0x16, 0x00, 0x27, 0x00, 0x00, 0xE0, 0xC3, 0x00, 0x00, /* 0000C3E0 */ 0x3F, 0x6E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8E, 0x01, 0x56, /* 0000C3F0 */ 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x21, 0x00, 0xFE, 0xF2, 0x45, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, /* 0000C400 */ 0x02, 0xFE, 0xF2, 0x45, 0xCC, 0xCC, 0x04, 0x03, 0x06, 0x0A, 0x09, 0x03, 0x02, 0x41, 0xFF, 0xFF, /* 0000C410 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, /* 0000C420 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, -/* 0000C430 */ 0xFE, 0xB8, 0x02, 0x2B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x97, 0x06, +/* 0000C430 */ 0xFE, 0xBB, 0x02, 0x2B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x97, 0x06, /* 0000C440 */ 0x06, 0x03, 0x47, 0x04, 0x06, 0x15, 0x03, 0x00, 0x04, 0x02, 0x09, 0x0E, 0x00, 0x8E, 0x01, 0x00, /* 0000C450 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x9C, 0x03, 0x06, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, /* 0000C460 */ 0x00, 0x00, 0xFE, 0x19, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x34, 0x00, 0x08, 0x00, @@ -4596,13 +4596,13 @@ namespace Js /* 0000C6B0 */ 0x00, 0x0C, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x06, 0x5C, 0x04, 0x08, 0x1F, 0x05, 0x00, 0x0B, 0x09, /* 0000C6C0 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFE, 0xDE, 0x34, 0x03, 0x07, 0x00, /* 0000C6D0 */ 0x00, 0x00, 0x1E, 0x00, 0x4A, 0x00, 0x2F, 0x00, 0x61, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, -/* 0000C6E0 */ 0xFC, 0x07, 0xFE, 0xA7, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, 0x00, +/* 0000C6E0 */ 0xFC, 0x07, 0xFE, 0xAA, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1B, 0x00, /* 0000C6F0 */ 0xFE, 0x5D, 0x2F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x5D, 0x2F, 0xFE, 0x7E, 0x03, /* 0000C700 */ 0xFE, 0x7E, 0x03, 0x08, 0x08, 0x0C, 0x0A, 0x51, 0x4E, 0x01, 0x07, 0x01, 0x05, 0x05, 0x05, 0x05, /* 0000C710 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, /* 0000C720 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000C730 */ 0x00, 0x04, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, -/* 0000C740 */ 0x17, 0x03, 0x02, 0xFE, 0x18, 0x03, 0xFE, 0x54, 0x01, 0xA8, 0x0A, 0x8E, 0x01, 0x00, 0x00, 0x00, +/* 0000C730 */ 0x00, 0x04, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, +/* 0000C740 */ 0x1A, 0x03, 0x02, 0xFE, 0x1B, 0x03, 0xFE, 0x54, 0x01, 0xA8, 0x0A, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000C750 */ 0x05, 0x00, 0x00, 0x00, 0x0C, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x08, 0x1F, 0x02, /* 0000C760 */ 0x0C, 0x0C, 0x47, 0x08, 0x0C, 0x2C, 0x0C, 0x09, 0x15, 0x03, 0x00, 0x0C, 0x03, 0x09, 0x78, 0x00, /* 0000C770 */ 0x61, 0x0C, 0x09, 0x00, 0x47, 0x0A, 0x0C, 0x2C, 0x0C, 0x0A, 0x15, 0x03, 0x00, 0x0C, 0x03, 0x09, @@ -4624,16 +4624,16 @@ namespace Js /* 0000C870 */ 0x00, 0x00, 0x00, 0x0D, 0x61, 0x0D, 0x0D, 0x04, 0x5C, 0x02, 0x0D, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000C880 */ 0x2C, 0x00, 0x00, 0x00, 0x0D, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x02, 0x1F, 0x01, 0x0D, 0x0D, 0x5C, /* 0000C890 */ 0x03, 0x0D, 0x1F, 0x04, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000C8A0 */ 0x2D, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x28, 0x02, 0xFE, 0xF2, 0x01, 0xFE, 0xF4, 0x01, 0x00, 0xFE, +/* 0000C8A0 */ 0x30, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2B, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xF7, 0x01, 0x00, 0xFE, /* 0000C8B0 */ 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x36, 0x00, 0x0B, 0x00, 0x33, 0x00, 0x07, /* 0000C8C0 */ 0x00, 0x30, 0x00, 0x0B, 0x00, 0x37, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x10, 0x00, 0x4B, 0x00, 0x38, /* 0000C8D0 */ 0x00, 0x9B, 0x00, 0x13, 0x00, 0x4D, 0x00, 0x5C, 0x00, 0x95, 0x00, 0x44, 0x00, 0x6F, 0x00, 0x00, -/* 0000C8E0 */ 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE6, 0x02, 0xFE, 0x25, 0x01, 0x24, 0xFF, 0xA2, +/* 0000C8E0 */ 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE9, 0x02, 0xFE, 0x25, 0x01, 0x24, 0xFF, 0xA2, /* 0000C8F0 */ 0x41, 0x01, 0x00, 0x1A, 0x00, 0xFE, 0x60, 0x2D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, /* 0000C900 */ 0x60, 0x2D, 0xFE, 0xB2, 0x01, 0xFE, 0xB2, 0x01, 0x08, 0x05, 0x0B, 0x04, 0x28, 0x27, 0x01, 0x02, /* 0000C910 */ 0x01, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000C930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0xA3, 0x02, 0x04, 0x9D, 0x14, 0x0D, 0x00, +/* 0000C930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x04, 0x9D, 0x14, 0x0D, 0x00, /* 0000C940 */ 0x05, 0x02, 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x05, 0x0B, 0x09, 0x1B, 0x00, 0x8E, /* 0000C950 */ 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, /* 0000C960 */ 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x06, 0x1F, 0x02, 0xFF, 0x0B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, @@ -4643,16 +4643,16 @@ namespace Js /* 0000C9A0 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, /* 0000C9B0 */ 0x00, 0x0C, 0x5C, 0x01, 0x06, 0x1F, 0x02, 0xFF, 0x0B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, /* 0000C9C0 */ 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x07, 0x5C, 0x02, 0x08, 0x1F, -/* 0000C9D0 */ 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, -/* 0000C9E0 */ 0xFE, 0x01, 0xFE, 0x2C, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, +/* 0000C9D0 */ 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, +/* 0000C9E0 */ 0x01, 0x02, 0xFE, 0x2F, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, /* 0000C9F0 */ 0x38, 0x00, 0x1B, 0x00, 0x43, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x16, 0x00, 0x4D, 0x00, 0x1B, 0x00, -/* 0000CA00 */ 0x43, 0x00, 0x1F, 0x00, 0x32, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x4F, 0xFC, 0x0F, 0xFE, 0xC9, +/* 0000CA00 */ 0x43, 0x00, 0x1F, 0x00, 0x32, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x4F, 0xFC, 0x0F, 0xFE, 0xCC, /* 0000CA10 */ 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x18, 0x00, 0xFE, 0xB8, 0x29, 0x01, /* 0000CA20 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xB8, 0x29, 0xFE, 0x80, 0x03, 0xFE, 0x80, 0x03, /* 0000CA30 */ 0x04, 0x09, 0x0A, 0x10, 0x05, 0x20, 0x20, 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, 0x01, 0x0D, 0xFF, /* 0000CA40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000CA50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x11, -/* 0000CA60 */ 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, 0x02, 0x03, 0x97, +/* 0000CA50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x14, +/* 0000CA60 */ 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, 0x02, 0x03, 0x97, /* 0000CA70 */ 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xCD, 0x10, 0x00, 0x96, /* 0000CA80 */ 0x02, 0x00, 0x00, 0x00, 0x10, 0x96, 0x03, 0x00, 0x00, 0x00, 0x02, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000CA90 */ 0x0A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8E, 0x01, 0x00, 0x00, 0x00, @@ -4663,9 +4663,9 @@ namespace Js /* 0000CAE0 */ 0x00, 0x92, 0x03, 0x00, 0x00, 0x00, 0x12, 0x7A, 0x12, 0x11, 0x00, 0x7A, 0x07, 0x11, 0x01, 0x7A, /* 0000CAF0 */ 0x07, 0x11, 0x02, 0x5C, 0x03, 0x11, 0x1F, 0x04, 0xFF, 0x10, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, /* 0000CB00 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, -/* 0000CB10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 0000CB20 */ 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x12, 0x03, 0xFE, -/* 0000CB30 */ 0x13, 0x03, 0xFE, 0x14, 0x03, 0xFE, 0x15, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, +/* 0000CB10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 0000CB20 */ 0x00, 0x00, 0x00, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x15, 0x03, 0xFE, +/* 0000CB30 */ 0x16, 0x03, 0xFE, 0x17, 0x03, 0xFE, 0x18, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, 0x0C, 0x00, 0x00, /* 0000CB40 */ 0x00, 0x09, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x18, 0x00, 0x2D, 0x00, 0x7C, 0x02, 0x42, 0x00, 0x69, /* 0000CB50 */ 0x00, 0x0B, 0x00, 0x14, 0x00, 0x00, 0x5A, 0xCB, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFD, /* 0000CB60 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x15, 0x01, 0x41, 0xFF, 0xB2, 0x41, 0x11, 0x00, 0x19, @@ -4673,8 +4673,8 @@ namespace Js /* 0000CB80 */ 0x02, 0xFE, 0x37, 0x02, 0x08, 0x0B, 0x0F, 0x06, 0x30, 0x2F, 0x02, 0x07, 0x45, 0x05, 0x05, 0x05, /* 0000CB90 */ 0x05, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CBA0 */ 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000CBB0 */ 0x04, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, -/* 0000CBC0 */ 0xC1, 0x02, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xD6, 0xA8, 0x0D, 0xE5, 0xB2, 0x00, 0x8E, +/* 0000CBB0 */ 0x04, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, +/* 0000CBC0 */ 0xC4, 0x02, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xD6, 0xA8, 0x0D, 0xE5, 0xB2, 0x00, 0x8E, /* 0000CBD0 */ 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x05, 0x00, 0x5C, 0x00, 0x02, 0x5C, /* 0000CBE0 */ 0x01, 0x0B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x02, 0x11, 0xA8, /* 0000CBF0 */ 0x11, 0x5C, 0x03, 0x11, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x04, @@ -4688,17 +4688,17 @@ namespace Js /* 0000CC70 */ 0x10, 0x10, 0x0A, 0x94, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0xE9, 0x09, 0x1B, /* 0000CC80 */ 0x00, 0xE7, 0x0C, 0x06, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x02, /* 0000CC90 */ 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0xFF, 0x10, 0xE9, 0xA8, 0x00, 0x24, 0x00, -/* 0000CCA0 */ 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 0000CCB0 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x00, -/* 0000CCC0 */ 0xFE, 0xEA, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, 0x01, 0x00, +/* 0000CCA0 */ 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 0000CCB0 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x00, +/* 0000CCC0 */ 0xFE, 0xED, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, 0x01, 0x00, /* 0000CCD0 */ 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x39, 0x00, 0x5F, 0x00, 0x0B, 0x00, 0x2C, 0x00, /* 0000CCE0 */ 0x52, 0x00, 0x8E, 0x00, 0x1E, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x1A, 0x00, 0x92, 0x00, -/* 0000CCF0 */ 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xC8, 0x02, 0xED, 0x04, 0xFF, 0xA3, 0x41, +/* 0000CCF0 */ 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xCB, 0x02, 0xED, 0x04, 0xFF, 0xA3, 0x41, /* 0000CD00 */ 0x01, 0x00, 0x16, 0x00, 0xFE, 0x5B, 0x25, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, /* 0000CD10 */ 0x5B, 0x25, 0xFE, 0x55, 0x04, 0xFE, 0x55, 0x04, 0x01, 0x08, 0x05, 0x0A, 0x05, 0x29, 0x26, 0x01, /* 0000CD20 */ 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x09, 0xFF, 0xFF, 0xFF, /* 0000CD30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 0000CD40 */ 0x0A, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x04, 0x9F, 0x2C, 0x0A, 0x05, 0x14, 0x03, 0x00, 0x0A, 0x02, +/* 0000CD40 */ 0x0D, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x04, 0x9F, 0x2C, 0x0A, 0x05, 0x14, 0x03, 0x00, 0x0A, 0x02, /* 0000CD50 */ 0x09, 0x06, 0x00, 0xCD, 0x00, 0x00, 0x09, 0x8C, 0x00, 0x2C, 0x0A, 0x05, 0x14, 0x03, 0x00, 0x0A, /* 0000CD60 */ 0x03, 0x09, 0x0A, 0x00, 0xCD, 0x0A, 0x01, 0xA1, 0x00, 0x05, 0x0A, 0x47, 0x05, 0x0A, 0x8E, 0x01, /* 0000CD70 */ 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0B, 0x6C, 0x0A, 0x0B, 0x00, 0x07, 0x02, 0x00, 0x5C, @@ -4708,8 +4708,8 @@ namespace Js /* 0000CDB0 */ 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, /* 0000CDC0 */ 0x0A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x05, 0x5C, 0x02, 0x06, 0xD4, 0x00, 0x00, /* 0000CDD0 */ 0x00, 0x00, 0x0B, 0x5C, 0x03, 0x0B, 0x1F, 0x04, 0xFF, 0x0A, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000CDE0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x2A, 0x02, 0xF0, -/* 0000CDF0 */ 0xFE, 0x0E, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x33, 0x00, +/* 0000CDE0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x2D, 0x02, 0xF0, +/* 0000CDF0 */ 0xFE, 0x11, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x33, 0x00, /* 0000CE00 */ 0x06, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x30, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x1E, 0x00, 0x2F, 0x00, /* 0000CE10 */ 0x22, 0x00, 0x71, 0x00, 0x09, 0x00, 0x1A, 0x00, 0x23, 0x00, 0xA5, 0x02, 0x0B, 0x00, 0x12, 0x00, /* 0000CE20 */ 0x00, 0x25, 0xCE, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4717,8 +4717,8 @@ namespace Js /* 0000CE40 */ 0x01, 0x00, 0x02, 0x02, 0xFE, 0x12, 0x27, 0xFE, 0x7C, 0x02, 0xFE, 0x7C, 0x02, 0x06, 0x08, 0x0B, /* 0000CE50 */ 0x06, 0x49, 0x47, 0x02, 0x07, 0x41, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CE60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000CE70 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x05, 0x03, 0x02, -/* 0000CE80 */ 0xFE, 0x0F, 0x03, 0x03, 0x02, 0xFE, 0x10, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x41, +/* 0000CE70 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x08, 0x03, 0x02, +/* 0000CE80 */ 0xFE, 0x12, 0x03, 0x03, 0x02, 0xFE, 0x13, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x41, /* 0000CE90 */ 0x01, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x0B, 0x00, 0x2C, 0x0B, 0x08, 0x15, /* 0000CEA0 */ 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x08, 0x04, 0x09, 0x1B, 0x00, 0x8E, /* 0000CEB0 */ 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, @@ -4739,11 +4739,11 @@ namespace Js /* 0000CFA0 */ 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8E, 0x02, 0x00, /* 0000CFB0 */ 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x01, 0x0C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, /* 0000CFC0 */ 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x09, 0x1F, 0x04, 0xFF, 0x0B, 0xA8, 0x00, -/* 0000CFD0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x21, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0xF1, 0x01, 0xFE, 0x2B, 0x02, -/* 0000CFE0 */ 0xFE, 0xF2, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x66, 0x00, +/* 0000CFD0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x24, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x2E, 0x02, +/* 0000CFE0 */ 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x66, 0x00, /* 0000CFF0 */ 0x1B, 0x00, 0x4A, 0x00, 0x1E, 0x00, 0x34, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x32, 0x00, 0x4E, 0x00, /* 0000D000 */ 0x1E, 0x00, 0x39, 0x00, 0x43, 0x00, 0x66, 0x00, 0x33, 0x00, 0x4A, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 0000D010 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, 0x00, +/* 0000D010 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xCA, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x15, 0x00, /* 0000D020 */ 0xFE, 0x35, 0x24, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x24, 0xA6, 0xA6, 0x05, /* 0000D030 */ 0x03, 0x05, 0x04, 0x14, 0x13, 0x01, 0x03, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4753,14 +4753,14 @@ namespace Js /* 0000D080 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x6C, 0x05, 0x06, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 0000D090 */ 0x06, 0x5C, 0x01, 0x03, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x07, 0x5C, 0x02, /* 0000D0A0 */ 0x07, 0x1F, 0x03, 0x05, 0x05, 0x44, 0x00, 0x05, 0x02, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000D0B0 */ 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, 0x00, 0x00, 0x00, +/* 0000D0B0 */ 0x00, 0x00, 0xFE, 0x29, 0x02, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, 0x00, 0x00, 0x00, /* 0000D0C0 */ 0x00, 0x1E, 0x00, 0x2B, 0x00, 0x31, 0x00, 0x47, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, -/* 0000D0D0 */ 0x07, 0xFE, 0xC6, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, 0xFE, 0xDE, 0x21, +/* 0000D0D0 */ 0x07, 0xFE, 0xC9, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, 0xFE, 0xDE, 0x21, /* 0000D0E0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xDE, 0x21, 0xFE, 0x4F, 0x02, 0xFE, 0x4F, 0x02, /* 0000D0F0 */ 0x0B, 0x07, 0x0F, 0x08, 0x3B, 0x38, 0x01, 0x05, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, /* 0000D100 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, /* 0000D110 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 0000D120 */ 0x0A, 0x03, 0x04, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0x02, 0xFE, 0x0D, 0x03, 0xEA, +/* 0000D120 */ 0x0D, 0x03, 0x04, 0x02, 0xFE, 0x0E, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x10, 0x03, 0xEA, /* 0000D130 */ 0xA8, 0x0D, 0x97, 0x0F, 0x07, 0x08, 0x47, 0x0C, 0x0F, 0x2C, 0x0F, 0x0C, 0x15, 0x03, 0x00, 0x0F, /* 0000D140 */ 0x02, 0x09, 0xCC, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x10, 0x6C, 0x0F, /* 0000D150 */ 0x10, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x0F, 0x0F, 0x47, @@ -4775,17 +4775,17 @@ namespace Js /* 0000D1E0 */ 0x2F, 0x11, 0x11, 0x0A, 0x2F, 0x11, 0x11, 0x06, 0x5C, 0x03, 0x11, 0x1F, 0x04, 0xFF, 0x0F, 0x8E, /* 0000D1F0 */ 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x6C, 0x0F, 0x10, 0x02, 0x07, 0x02, 0x00, /* 0000D200 */ 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0D, 0x1F, 0x02, 0x00, 0x0F, 0x09, 0x0B, 0x00, 0x09, 0x06, 0x00, -/* 0000D210 */ 0x47, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, -/* 0000D220 */ 0x28, 0x02, 0x23, 0x00, 0xFE, 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2D, 0x00, +/* 0000D210 */ 0x47, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, +/* 0000D220 */ 0x2B, 0x02, 0x23, 0x00, 0xFE, 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2D, 0x00, /* 0000D230 */ 0x0B, 0x00, 0x34, 0x00, 0x1E, 0x00, 0x41, 0x00, 0x2E, 0x00, 0x66, 0x00, 0x5F, 0x00, 0x90, 0x00, /* 0000D240 */ 0x21, 0x00, 0x42, 0x00, 0x08, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, -/* 0000D250 */ 0xFE, 0xC5, 0x02, 0xBC, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, 0xA7, 0x1E, 0xFF, +/* 0000D250 */ 0xFE, 0xC8, 0x02, 0xBC, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, 0xA7, 0x1E, 0xFF, /* 0000D260 */ 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xA7, 0x1E, 0xFE, 0x2F, 0x03, 0xFE, 0x2F, 0x03, 0x0B, /* 0000D270 */ 0x0A, 0x11, 0x0A, 0x50, 0x4A, 0x01, 0x06, 0x01, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D280 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D290 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x04, -/* 0000D2A0 */ 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, -/* 0000D2B0 */ 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0xFE, 0x4A, 0x01, 0x97, 0x11, +/* 0000D290 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x07, +/* 0000D2A0 */ 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, +/* 0000D2B0 */ 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0xFE, 0x4A, 0x01, 0x97, 0x11, /* 0000D2C0 */ 0x0A, 0x0B, 0x47, 0x0F, 0x11, 0xA8, 0x11, 0x15, 0x03, 0x00, 0x0F, 0x11, 0x09, 0x2F, 0x01, 0x0C, /* 0000D2D0 */ 0x03, 0x00, 0x0C, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, /* 0000D2E0 */ 0x12, 0x6C, 0x11, 0x12, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x12, 0x5C, 0x01, 0x0F, 0x1F, 0x02, @@ -4806,8 +4806,8 @@ namespace Js /* 0000D3D0 */ 0x00, 0x05, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x14, 0x5C, 0x01, 0x14, 0x5C, /* 0000D3E0 */ 0x02, 0x0D, 0x5C, 0x03, 0x08, 0x1F, 0x04, 0x13, 0x13, 0x2F, 0x13, 0x07, 0x13, 0x2F, 0x13, 0x13, /* 0000D3F0 */ 0x09, 0x5C, 0x03, 0x13, 0x1F, 0x04, 0xFF, 0x11, 0x47, 0x00, 0x0F, 0x09, 0x08, 0x00, 0x47, 0x00, -/* 0000D400 */ 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x25, 0x02, 0xFE, 0x26, 0x02, -/* 0000D410 */ 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x07, +/* 0000D400 */ 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x28, 0x02, 0xFE, 0x29, 0x02, +/* 0000D410 */ 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x07, /* 0000D420 */ 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x08, /* 0000D430 */ 0x00, 0x29, 0x00, 0x1E, 0x00, 0x40, 0x00, 0x08, 0x00, 0x29, 0x00, 0x1E, 0x00, 0x40, 0x00, 0x39, /* 0000D440 */ 0x00, 0x6C, 0x00, 0x7E, 0x00, 0xA9, 0x00, 0x06, 0x00, 0x24, 0x00, 0x08, 0x00, 0x16, 0x00, 0x00, @@ -4816,8 +4816,8 @@ namespace Js /* 0000D470 */ 0xFE, 0x1B, 0x19, 0xFE, 0x0A, 0x05, 0xFE, 0x0A, 0x05, 0x04, 0x0A, 0x0B, 0x04, 0x1D, 0x1D, 0x01, /* 0000D480 */ 0x01, 0x06, 0x06, 0x06, 0x06, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D490 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D4A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0xFE, 0xFF, 0x02, 0x02, -/* 0000D4B0 */ 0xFE, 0x00, 0x03, 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, 0x02, 0x03, 0x02, 0xFE, 0x03, 0x03, 0x03, +/* 0000D4A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, 0x02, 0x03, 0x02, +/* 0000D4B0 */ 0xFE, 0x03, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x03, /* 0000D4C0 */ 0x04, 0x88, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, /* 0000D4D0 */ 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, /* 0000D4E0 */ 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, @@ -4827,13 +4827,13 @@ namespace Js /* 0000D520 */ 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, /* 0000D530 */ 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x08, 0x1F, /* 0000D540 */ 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, -/* 0000D550 */ 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, 0x26, 0x02, 0x00, -/* 0000D560 */ 0x00, 0x27, 0x02, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 0000D570 */ 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x25, 0x02, 0xFE, 0x2A, -/* 0000D580 */ 0x02, 0xFE, 0x03, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0xF2, +/* 0000D550 */ 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x29, 0x02, 0x00, +/* 0000D560 */ 0x00, 0x2A, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x06, 0x03, 0x00, +/* 0000D570 */ 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x28, 0x02, 0xFE, 0x2D, +/* 0000D580 */ 0x02, 0xFE, 0x06, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0xF2, /* 0000D590 */ 0x04, 0x00, 0x5B, 0xD9, 0x00, 0x00, 0xCA, 0xD8, 0x00, 0x00, 0x39, 0xD8, 0x00, 0x00, 0xA8, 0xD7, /* 0000D5A0 */ 0x00, 0x00, 0x7B, 0xD6, 0x00, 0x00, 0xAA, 0xD5, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0E, 0x00, 0xFC, -/* 0000D5B0 */ 0x07, 0xFE, 0x03, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, 0xFE, 0xCF, 0x1C, +/* 0000D5B0 */ 0x07, 0xFE, 0x06, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, 0xFE, 0xCF, 0x1C, /* 0000D5C0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xCF, 0x1C, 0xFE, 0x3D, 0x01, 0xFE, 0x3D, 0x01, /* 0000D5D0 */ 0x05, 0x04, 0x07, 0x05, 0x19, 0x17, 0x16, 0x01, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D5E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4846,7 +4846,7 @@ namespace Js /* 0000D650 */ 0x04, 0x1F, 0x02, 0x07, 0x07, 0x47, 0x04, 0x07, 0x09, 0xA6, 0xFF, 0xA8, 0x00, 0x24, 0x00, 0x00, /* 0000D660 */ 0x00, 0x00, 0xFE, 0x26, 0x1D, 0x05, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1A, 0x00, 0x2E, 0x00, /* 0000D670 */ 0x55, 0x00, 0x06, 0x00, 0x39, 0x00, 0x1F, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, -/* 0000D680 */ 0xFC, 0x07, 0xFE, 0x02, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, +/* 0000D680 */ 0xFC, 0x07, 0xFE, 0x05, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, 0x00, 0xFE, 0xAF, /* 0000D690 */ 0x1B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAF, 0x1B, 0xFE, 0x02, 0x01, 0xFE, 0x02, /* 0000D6A0 */ 0x01, 0x09, 0x06, 0x0A, 0x07, 0x2A, 0x25, 0x01, 0x04, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, /* 0000D6B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0xFF, 0xFF, @@ -4865,7 +4865,7 @@ namespace Js /* 0000D780 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1B, 0x29, 0x00, 0xFE, 0xCF, 0x1B, 0x06, 0x00, /* 0000D790 */ 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2A, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x3C, 0x00, 0x39, 0x00, 0x43, /* 0000D7A0 */ 0x00, 0x4B, 0x00, 0x08, 0x00, 0x19, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFE, -/* 0000D7B0 */ 0x01, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, 0x1B, 0xFF, 0x00, +/* 0000D7B0 */ 0x04, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, 0x1B, 0xFF, 0x00, /* 0000D7C0 */ 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x1B, 0x5F, 0x5F, 0x03, 0x03, 0x05, 0x03, 0x10, 0x0E, /* 0000D7D0 */ 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D7E0 */ 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4874,7 +4874,7 @@ namespace Js /* 0000D810 */ 0x5C, 0x01, 0x03, 0x1F, 0x02, 0x05, 0x05, 0x47, 0x00, 0x05, 0x09, 0x05, 0x00, 0xA8, 0x05, 0x47, /* 0000D820 */ 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x55, 0x1B, 0x02, /* 0000D830 */ 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, -/* 0000D840 */ 0xFE, 0x00, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0F, 0x00, 0xFE, 0xBA, 0x1A, 0xFF, +/* 0000D840 */ 0xFE, 0x03, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0F, 0x00, 0xFE, 0xBA, 0x1A, 0xFF, /* 0000D850 */ 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xBA, 0x1A, 0x58, 0x58, 0x03, 0x03, 0x05, 0x03, 0x10, /* 0000D860 */ 0x0E, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D870 */ 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4883,7 +4883,7 @@ namespace Js /* 0000D8A0 */ 0x00, 0x00, 0x05, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0x1F, 0x02, 0x05, 0x05, /* 0000D8B0 */ 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDA, 0x1A, /* 0000D8C0 */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x37, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, -/* 0000D8D0 */ 0x07, 0xFE, 0xFF, 0x02, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, 0xFE, 0x3F, 0x1A, +/* 0000D8D0 */ 0x07, 0xFE, 0x02, 0x03, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, 0xFE, 0x3F, 0x1A, /* 0000D8E0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x3F, 0x1A, 0x5E, 0x5E, 0x03, 0x03, 0x05, 0x03, /* 0000D8F0 */ 0x10, 0x0E, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4892,7 +4892,7 @@ namespace Js /* 0000D930 */ 0x00, 0x02, 0x5C, 0x01, 0x03, 0x1F, 0x02, 0x05, 0x05, 0x47, 0x00, 0x05, 0x09, 0x05, 0x00, 0xA8, /* 0000D940 */ 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5F, /* 0000D950 */ 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, -/* 0000D960 */ 0xFC, 0x07, 0xFE, 0xFE, 0x02, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, 0x00, 0xFE, 0x5F, +/* 0000D960 */ 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, 0x00, 0xFE, 0x5F, /* 0000D970 */ 0x19, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x5F, 0x19, 0xC5, 0xC5, 0x04, 0x04, 0x06, /* 0000D980 */ 0x03, 0x17, 0x15, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D990 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4902,9 +4902,9 @@ namespace Js /* 0000D9D0 */ 0x15, 0x03, 0x00, 0x04, 0x06, 0x09, 0x1D, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, /* 0000D9E0 */ 0x00, 0x06, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x04, 0x1F, 0x02, 0x06, 0x06, 0x47, /* 0000D9F0 */ 0x00, 0x06, 0x09, 0x05, 0x00, 0xA8, 0x06, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000DA00 */ 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, +/* 0000DA00 */ 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, /* 0000DA10 */ 0x00, 0x27, 0x00, 0x18, 0x00, 0x40, 0x00, 0x31, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 0000DA20 */ 0x8F, 0xFC, 0x07, 0xFE, 0xE3, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, +/* 0000DA20 */ 0x8F, 0xFC, 0x07, 0xFE, 0xE6, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x0B, 0x00, 0xFE, /* 0000DA30 */ 0x95, 0x18, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x95, 0x18, 0x6D, 0x6D, 0x05, 0x03, /* 0000DA40 */ 0x04, 0x06, 0x12, 0x12, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DA50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4913,14 +4913,14 @@ namespace Js /* 0000DA80 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 0000DA90 */ 0x07, 0x6C, 0x06, 0x07, 0x01, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x07, 0x1F, 0x01, 0x06, 0x06, 0x5C, /* 0000DAA0 */ 0x01, 0x06, 0xE0, 0x06, 0x00, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0x04, 0x04, 0x97, 0x00, 0x04, 0x02, -/* 0000DAB0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0xF6, 0x01, 0x00, -/* 0000DAC0 */ 0x09, 0xFE, 0xFD, 0x02, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x55, -/* 0000DAD0 */ 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x79, 0x19, 0xFF, 0xA2, +/* 0000DAB0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0xF9, 0x01, 0x00, +/* 0000DAC0 */ 0x09, 0xFE, 0x00, 0x03, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x55, +/* 0000DAD0 */ 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE5, 0x02, 0x79, 0x19, 0xFF, 0xA2, /* 0000DAE0 */ 0x41, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xC9, 0x15, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, /* 0000DAF0 */ 0xC9, 0x15, 0xFE, 0xA8, 0x02, 0xFE, 0xA8, 0x02, 0x0C, 0x06, 0x10, 0x06, 0x3F, 0x34, 0x15, 0x01, /* 0000DB00 */ 0x04, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DB10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000DB20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x70, 0xBB, 0x00, 0x02, 0xFE, 0xFC, 0x02, 0x04, 0x01, +/* 0000DB20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x70, 0xBB, 0x00, 0x02, 0xFE, 0xFF, 0x02, 0x04, 0x01, /* 0000DB30 */ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xE4, 0xA8, 0x0D, 0xA8, 0x0E, 0x14, 0x03, /* 0000DB40 */ 0x00, 0x07, 0x02, 0x09, 0x14, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, /* 0000DB50 */ 0x61, 0x11, 0x11, 0x00, 0x47, 0x10, 0x11, 0x09, 0x0D, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x29, @@ -4936,17 +4936,17 @@ namespace Js /* 0000DBF0 */ 0x0D, 0x0D, 0x09, 0xB5, 0xFF, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x07, /* 0000DC00 */ 0x05, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x0A, 0xA8, 0x11, 0x5C, 0x03, 0x11, /* 0000DC10 */ 0x5C, 0x04, 0x0C, 0x1F, 0x05, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000DC20 */ 0xFE, 0xF4, 0x01, 0xFE, 0xEA, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x2C, +/* 0000DC20 */ 0xFE, 0xF7, 0x01, 0xFE, 0xED, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x2C, /* 0000DC30 */ 0x00, 0x62, 0x00, 0x1A, 0x00, 0x36, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x16, 0x00, 0x3A, 0x00, 0x05, /* 0000DC40 */ 0x00, 0x0B, 0x00, 0x08, 0x00, 0x20, 0x00, 0x27, 0x00, 0x6A, 0x00, 0x0E, 0x00, 0x36, 0x00, 0x06, /* 0000DC50 */ 0x00, 0x4C, 0xFF, 0x06, 0x00, 0xE8, 0x00, 0x27, 0x00, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, -/* 0000DC60 */ 0xCF, 0xFD, 0x0F, 0xFE, 0xE1, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, 0x00, 0xFE, +/* 0000DC60 */ 0xCF, 0xFD, 0x0F, 0xFE, 0xE4, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x07, 0x00, 0xFE, /* 0000DC70 */ 0xD8, 0x0E, 0x02, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0xD8, 0x0E, 0xFE, 0xD4, 0x06, /* 0000DC80 */ 0xFE, 0xD4, 0x06, 0x03, 0x10, 0x0C, 0x15, 0x09, 0x62, 0x5B, 0x01, 0x09, 0x05, 0x05, 0x05, 0x05, /* 0000DC90 */ 0x01, 0x01, 0x01, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DCA0 */ 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 0000DCB0 */ 0xF3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF4, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, -/* 0000DCC0 */ 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xF7, 0x02, 0x03, 0xFE, 0xA7, 0x01, 0x96, +/* 0000DCB0 */ 0xF6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF7, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, +/* 0000DCC0 */ 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xF9, 0x02, 0x02, 0xFE, 0xFA, 0x02, 0x03, 0xFE, 0xA7, 0x01, 0x96, /* 0000DCD0 */ 0x03, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000DCE0 */ 0x07, 0x00, 0x00, 0x00, 0x17, 0x6C, 0x16, 0x17, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x17, 0x92, /* 0000DCF0 */ 0x03, 0x00, 0x00, 0x00, 0x18, 0x5C, 0x01, 0x18, 0x1F, 0x02, 0x16, 0x16, 0x47, 0x10, 0x16, 0x0F, @@ -4974,9 +4974,9 @@ namespace Js /* 0000DE50 */ 0x19, 0x09, 0x05, 0x00, 0xA8, 0x19, 0x47, 0x18, 0x19, 0x7A, 0x18, 0x17, 0x02, 0x7A, 0x10, 0x17, /* 0000DE60 */ 0x03, 0x7A, 0x11, 0x17, 0x04, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x0B, 0x1F, 0x03, 0x00, 0x16, 0x09, /* 0000DE70 */ 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 0000DE80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, -/* 0000DE90 */ 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0x02, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0x04, 0x02, 0xFE, 0x38, -/* 0000DEA0 */ 0x02, 0xFE, 0xF8, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xF9, 0x02, 0x00, 0x0D, 0xFE, 0xFA, 0x02, 0x00, +/* 0000DE80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x3B, 0x02, 0x00, +/* 0000DE90 */ 0x00, 0x00, 0xFE, 0xFA, 0x01, 0xFE, 0x05, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x07, 0x02, 0xFE, 0x3B, +/* 0000DEA0 */ 0x02, 0xFE, 0xFB, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xFC, 0x02, 0x00, 0x0D, 0xFE, 0xFD, 0x02, 0x00, /* 0000DEB0 */ 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x24, 0x00, 0x37, 0x00, 0x07, 0x00, 0x1C, 0x00, /* 0000DEC0 */ 0x2D, 0x00, 0x3F, 0x02, 0x31, 0x00, 0x4A, 0x00, 0x19, 0x00, 0x39, 0x00, 0x10, 0x00, 0x51, 0x00, /* 0000DED0 */ 0x09, 0x00, 0x20, 0x00, 0x2D, 0x00, 0xBF, 0x01, 0x09, 0x00, 0x2A, 0x00, 0xA8, 0x00, 0x1F, 0x01, @@ -4996,20 +4996,20 @@ namespace Js /* 0000DFB0 */ 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x09, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, /* 0000DFC0 */ 0x8E, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0A, 0x5C, 0x01, 0x0A, 0x8E, 0x01, 0x00, /* 0000DFD0 */ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x5C, 0x02, 0x0A, 0x5C, 0x03, 0x05, 0x1F, 0x04, 0xFF, -/* 0000DFE0 */ 0x09, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0x0E, 0xFE, 0xFB, 0x02, 0x00, +/* 0000DFE0 */ 0x09, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0x0E, 0xFE, 0xFE, 0x02, 0x00, /* 0000DFF0 */ 0xFE, 0xF9, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7B, 0x00, 0x07, 0x00, 0x25, 0x00, /* 0000E000 */ 0x39, 0x00, 0x60, 0x00, 0x33, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, /* 0000E010 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x3D, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x08, 0x00, 0xFE, 0xA1, /* 0000E020 */ 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xA1, 0x0F, 0x61, 0x61, 0x04, 0x05, 0x07, /* 0000E030 */ 0x06, 0x0F, 0x0F, 0x02, 0x03, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000E050 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x04, +/* 0000E050 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x04, /* 0000E060 */ 0x46, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x07, 0x05, 0x00, 0x5C, 0x00, /* 0000E070 */ 0x04, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x08, 0x5C, 0x01, 0x08, 0x8E, 0x01, /* 0000E080 */ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x5C, 0x02, 0x08, 0x2F, 0x08, 0x02, 0x05, 0x5C, /* 0000E090 */ 0x03, 0x08, 0x5C, 0x04, 0x03, 0x1F, 0x05, 0x07, 0x07, 0x94, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 0000E0A0 */ 0x00, 0x00, 0x07, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xB5, 0x0F, 0x02, 0x00, 0x00, -/* 0000E0B0 */ 0x00, 0x00, 0x44, 0x00, 0x4C, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF2, +/* 0000E0B0 */ 0x00, 0x00, 0x44, 0x00, 0x4C, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xF5, /* 0000E0C0 */ 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x06, 0x00, 0xFE, 0xA2, 0x0D, 0xFF, 0x00, 0x10, /* 0000E0D0 */ 0x01, 0x00, 0x03, 0x03, 0xFE, 0xA2, 0x0D, 0xFE, 0x14, 0x01, 0xFE, 0x14, 0x01, 0x06, 0x02, 0x06, /* 0000E0E0 */ 0x03, 0x15, 0x12, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5019,18 +5019,18 @@ namespace Js /* 0000E120 */ 0x5C, 0x01, 0x02, 0x1F, 0x02, 0x06, 0x06, 0x47, 0x04, 0x06, 0x14, 0x03, 0x00, 0x03, 0x02, 0x09, /* 0000E130 */ 0x09, 0x00, 0x47, 0x00, 0x04, 0x09, 0x18, 0x00, 0x09, 0x0D, 0x00, 0x14, 0x03, 0x00, 0x03, 0x04, /* 0000E140 */ 0x09, 0x05, 0x00, 0xA8, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x04, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 0000E150 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, 0x00, 0x00, 0x00, +/* 0000E150 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, 0x00, 0x00, 0x00, /* 0000E160 */ 0x1E, 0x00, 0x47, 0x00, 0x08, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x25, 0x00, 0x08, 0x00, 0x26, 0x00, /* 0000E170 */ 0x05, 0x00, 0x1B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, -/* 0000E180 */ 0xFE, 0xE0, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, 0x2B, 0x0D, 0xFF, +/* 0000E180 */ 0xFE, 0xE3, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, 0x2B, 0x0D, 0xFF, /* 0000E190 */ 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x2B, 0x0D, 0x53, 0x53, 0x05, 0x02, 0x05, 0x04, 0x0B, /* 0000E1A0 */ 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E1B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E1C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, /* 0000E1D0 */ 0x00, 0x00, 0x00, 0x06, 0x6C, 0x05, 0x06, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x06, 0x5C, 0x01, /* 0000E1E0 */ 0x03, 0x5C, 0x02, 0x02, 0x1F, 0x03, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, -/* 0000E1F0 */ 0x00, 0xFE, 0x70, 0x02, 0x00, 0xFE, 0x49, 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x34, -/* 0000E200 */ 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xDF, 0x02, 0x48, 0x1C, 0xFF, 0xA2, +/* 0000E1F0 */ 0x00, 0xFE, 0x73, 0x02, 0x00, 0xFE, 0x49, 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x34, +/* 0000E200 */ 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x48, 0x1C, 0xFF, 0xA2, /* 0000E210 */ 0x41, 0x01, 0x00, 0x04, 0x00, 0xFE, 0x8B, 0x0C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, /* 0000E220 */ 0x8B, 0x0C, 0x7F, 0x7F, 0x02, 0x04, 0x05, 0x0A, 0x0A, 0x01, 0x41, 0x01, 0x01, 0x01, 0x01, 0xFF, /* 0000E230 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5038,9 +5038,9 @@ namespace Js /* 0000E250 */ 0xFF, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xF9, 0x7F, 0xFD, 0xDF, 0xC1, 0x05, 0x00, 0x00, /* 0000E260 */ 0x40, 0xFE, 0x7F, 0xFD, 0xDF, 0xC1, 0x1E, 0x61, 0x05, 0x04, 0x00, 0x14, 0x0F, 0x00, 0x05, 0x02, /* 0000E270 */ 0x09, 0x00, 0x00, 0x61, 0x05, 0x04, 0x00, 0x14, 0x03, 0x00, 0x05, 0x03, 0x09, 0x02, 0x00, 0x23, -/* 0000E280 */ 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x08, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, +/* 0000E280 */ 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x0B, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, /* 0000E290 */ 0x00, 0x00, 0x00, 0x18, 0x00, 0x4B, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0C, -/* 0000E2A0 */ 0x00, 0xFC, 0x07, 0xFE, 0xF1, 0x02, 0x3E, 0x12, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x03, 0x00, 0xFE, +/* 0000E2A0 */ 0x00, 0xFC, 0x07, 0xFE, 0xF4, 0x02, 0x3E, 0x12, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x03, 0x00, 0xFE, /* 0000E2B0 */ 0x5B, 0x0B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x5B, 0x0B, 0xA9, 0xA9, 0x06, 0x05, /* 0000E2C0 */ 0x09, 0x03, 0x0F, 0x0D, 0x0B, 0x01, 0x01, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E2D0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5050,7 +5050,7 @@ namespace Js /* 0000E310 */ 0x03, 0x97, 0x0A, 0x05, 0x08, 0x5C, 0x01, 0x0A, 0x1F, 0x02, 0xFF, 0x09, 0x28, 0x08, 0x08, 0x09, /* 0000E320 */ 0xDC, 0xFF, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x0B, 0x05, 0x00, 0x00, 0x00, /* 0000E330 */ 0x00, 0x05, 0x00, 0x23, 0x00, 0x08, 0x00, 0x21, 0x00, 0x14, 0x00, 0x21, 0x00, 0x08, 0x00, 0x1B, -/* 0000E340 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD4, 0x02, 0x28, 0x1F, 0xFF, 0xA2, +/* 0000E340 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD7, 0x02, 0x28, 0x1F, 0xFF, 0xA2, /* 0000E350 */ 0x41, 0x01, 0x00, 0x02, 0x00, 0xFE, 0x22, 0x07, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, /* 0000E360 */ 0x22, 0x07, 0x73, 0x73, 0x06, 0x04, 0x08, 0x09, 0x10, 0x10, 0x01, 0x02, 0x41, 0xFF, 0xFF, 0xFF, /* 0000E370 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h index 4c796a77ae5..eda5d6364d6 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h @@ -1415,7 +1415,7 @@ namespace Js { const char Library_Bytecode_intl[] = { /* 00000000 */ 0x43, 0x68, 0x42, 0x63, 0xD7, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFE, 0x9A, 0x02, 0x00, 0xFF, +/* 00000010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFE, 0x9D, 0x02, 0x00, 0xFF, /* 00000020 */ 0x24, 0x1C, 0x01, 0x00, 0xFF, 0x24, 0x1C, 0x01, 0x00, 0x39, 0x00, 0x00, 0x00, 0x6A, 0x26, 0x00, /* 00000030 */ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x52, 0x00, 0x00, 0xFE, 0x23, 0x01, 0xF0, 0x05, 0x00, 0x00, /* 00000040 */ 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x00, @@ -2733,11 +2733,11 @@ namespace Js /* 00005240 */ 0x00, 0x8D, 0x1A, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x0A, 0x1B, 0x01, 0x00, 0x8F, 0x1B, 0x01, /* 00005250 */ 0x00, 0x8F, 0x1B, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x18, 0x1C, 0x01, 0x00, 0x1F, 0x1C, 0x01, /* 00005260 */ 0x00, 0x1F, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x24, 0x1C, 0x01, 0x00, 0x44, 0x39, 0x6E, -/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9A, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, +/* 00005270 */ 0x00, 0x08, 0x00, 0xFC, 0x09, 0xFE, 0x9D, 0x02, 0xFE, 0xA8, 0x41, 0x00, 0x00, 0xFE, 0x75, 0x01, /* 00005280 */ 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0xFE, 0x75, 0x01, 0xFF, 0xAF, 0x1A, 0x01, 0x00, 0xFF, 0xAF, /* 00005290 */ 0x1A, 0x01, 0x00, 0x01, 0x04, 0x04, 0x05, 0x05, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000052A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x02, 0x07, 0x0C, +/* 000052B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x02, 0x07, 0x0C, /* 000052C0 */ 0xA8, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFA, 0x04, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, /* 000052D0 */ 0x01, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x52, 0x00, 0x00, 0xBF, 0x7E, 0x00, 0x0A, 0x4F, 0xFC, /* 000052E0 */ 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x01, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x01, 0x00, 0xFE, @@ -2745,17 +2745,17 @@ namespace Js /* 00005300 */ 0x01, 0x00, 0xFF, 0x89, 0x1A, 0x01, 0x00, 0x39, 0x13, 0x2F, 0x3E, 0x09, 0xFE, 0xAC, 0x01, 0xFE, /* 00005310 */ 0xA7, 0x01, 0x10, 0x40, 0x3D, 0x3C, 0x3D, 0x3D, 0x12, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, /* 00005320 */ 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00005330 */ 0x00, 0x00, 0x02, 0xFE, 0x9C, 0x02, 0x02, 0xFE, 0x9D, 0x02, 0x02, 0xFE, 0x9E, 0x02, 0x02, 0xFE, -/* 00005340 */ 0x9F, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, 0xA2, 0x02, -/* 00005350 */ 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, 0x02, 0xFE, 0xA6, 0x02, -/* 00005360 */ 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xAA, 0x02, -/* 00005370 */ 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, 0x02, 0xFE, 0xAE, 0x02, -/* 00005380 */ 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, 0x02, 0xFE, 0xB2, 0x02, -/* 00005390 */ 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, 0x02, 0xFE, 0xB6, 0x02, -/* 000053A0 */ 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, 0x02, 0xFE, 0xBA, 0x02, -/* 000053B0 */ 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, 0x02, 0xFE, 0xBE, 0x02, -/* 000053C0 */ 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, 0xC1, 0x02, 0x09, 0x02, 0xFE, -/* 000053D0 */ 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0xF3, 0x07, 0x96, 0x3A, 0x00, +/* 00005330 */ 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x02, 0x02, 0xFE, 0xA0, 0x02, 0x02, 0xFE, 0xA1, 0x02, 0x02, 0xFE, +/* 00005340 */ 0xA2, 0x02, 0x03, 0x04, 0x02, 0xFE, 0xA3, 0x02, 0x02, 0xFE, 0xA4, 0x02, 0x02, 0xFE, 0xA5, 0x02, +/* 00005350 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA8, 0x02, 0x02, 0xFE, 0xA9, 0x02, +/* 00005360 */ 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xAB, 0x02, 0x02, 0xFE, 0xAC, 0x02, 0x02, 0xFE, 0xAD, 0x02, +/* 00005370 */ 0x02, 0xFE, 0xAE, 0x02, 0x02, 0xFE, 0xAF, 0x02, 0x02, 0xFE, 0xB0, 0x02, 0x02, 0xFE, 0xB1, 0x02, +/* 00005380 */ 0x02, 0xFE, 0xB2, 0x02, 0x02, 0xFE, 0xB3, 0x02, 0x02, 0xFE, 0xB4, 0x02, 0x02, 0xFE, 0xB5, 0x02, +/* 00005390 */ 0x02, 0xFE, 0xB6, 0x02, 0x02, 0xFE, 0xB7, 0x02, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0xB9, 0x02, +/* 000053A0 */ 0x02, 0xFE, 0xBA, 0x02, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0xBC, 0x02, 0x02, 0xFE, 0xBD, 0x02, +/* 000053B0 */ 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, 0x02, +/* 000053C0 */ 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0xC4, 0x02, 0x09, 0x02, 0xFE, +/* 000053D0 */ 0xC5, 0x02, 0x02, 0xFE, 0xC6, 0x02, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xF3, 0x07, 0x96, 0x3A, 0x00, /* 000053E0 */ 0x00, 0x00, 0x30, 0xD4, 0x09, 0x00, 0x00, 0x00, 0x31, 0x96, 0x02, 0x00, 0x00, 0x00, 0x31, 0xD4, /* 000053F0 */ 0x0A, 0x00, 0x00, 0x00, 0x32, 0x96, 0x03, 0x00, 0x00, 0x00, 0x32, 0xD4, 0x0B, 0x00, 0x00, 0x00, /* 00005400 */ 0x33, 0x96, 0x04, 0x00, 0x00, 0x00, 0x33, 0xD4, 0x0C, 0x00, 0x00, 0x00, 0x34, 0x96, 0x05, 0x00, @@ -2884,50 +2884,50 @@ namespace Js /* 00005BB0 */ 0x00, 0x3F, 0x00, 0x00, 0x00, 0x7A, 0x3A, 0x3F, 0x38, 0x7A, 0x29, 0x3F, 0x39, 0x7A, 0x2B, 0x3F, /* 00005BC0 */ 0x3A, 0x7A, 0x29, 0x3F, 0x3B, 0x5C, 0x03, 0x3F, 0x1F, 0x04, 0xFF, 0x3E, 0xA8, 0x00, 0x24, 0x00, /* 00005BD0 */ 0x12, 0xFE, 0x40, 0x01, 0x00, 0x28, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00005BE0 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00005BF0 */ 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005C00 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, -/* 00005C10 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, -/* 00005C20 */ 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, -/* 00005C30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, -/* 00005C40 */ 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xBC, 0x02, 0x00, -/* 00005C50 */ 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, -/* 00005C60 */ 0x00, 0xB7, 0x02, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00005C70 */ 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00005C80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xB2, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, -/* 00005C90 */ 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, -/* 00005CA0 */ 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x02, 0x00, -/* 00005CB0 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, -/* 00005CC0 */ 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x02, 0x00, -/* 00005CD0 */ 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x02, 0x00, -/* 00005CE0 */ 0x00, 0xAD, 0x02, 0x00, 0x00, 0xAE, 0x02, 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, -/* 00005CF0 */ 0x00, 0xB9, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBB, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, -/* 00005D00 */ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D10 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00005D30 */ 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, +/* 00005BE0 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00005BF0 */ 0x00, 0x10, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005C00 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xF8, 0x00, 0x00, +/* 00005C10 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, +/* 00005C20 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, +/* 00005C30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, 0x00, 0xD8, 0x00, 0x00, +/* 00005C40 */ 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xBF, 0x02, 0x00, +/* 00005C50 */ 0x00, 0xC8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, +/* 00005C60 */ 0x00, 0xBA, 0x02, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00005C70 */ 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, 0x00, 0xA4, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, +/* 00005C80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x02, 0x00, 0x00, 0xB5, 0x02, 0x00, 0x00, 0xBA, 0x02, 0x00, +/* 00005C90 */ 0x00, 0x98, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0x02, 0x00, +/* 00005CA0 */ 0x00, 0x8C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x02, 0x00, +/* 00005CB0 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, +/* 00005CC0 */ 0x00, 0x74, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x02, 0x00, +/* 00005CD0 */ 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x02, 0x00, +/* 00005CE0 */ 0x00, 0xB0, 0x02, 0x00, 0x00, 0xB1, 0x02, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0xB7, 0x02, 0x00, +/* 00005CF0 */ 0x00, 0xBC, 0x02, 0x00, 0x00, 0xBD, 0x02, 0x00, 0x00, 0xBE, 0x02, 0x00, 0x00, 0xC0, 0x02, 0x00, +/* 00005D00 */ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D10 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D20 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00005D30 */ 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x02, 0x00, /* 00005D40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, -/* 00005D50 */ 0x00, 0x23, 0x00, 0x00, 0x00, 0xF9, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, -/* 00005D60 */ 0x00, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x03, 0x02, 0x87, 0xFE, 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, -/* 00005D70 */ 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xD3, 0x01, 0xFE, 0x05, 0x02, 0x1B, 0xFE, 0x06, -/* 00005D80 */ 0x02, 0x23, 0xFE, 0x07, 0x02, 0xF9, 0xFE, 0x08, 0x02, 0x29, 0xFE, 0x09, 0x02, 0xFE, 0x0A, 0x02, -/* 00005D90 */ 0xFE, 0x0B, 0x02, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, 0xFE, 0x11, 0x02, 0xFE, 0x12, 0x02, 0xFE, -/* 00005DA0 */ 0x13, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x1A, -/* 00005DB0 */ 0x02, 0xFE, 0x1B, 0x02, 0xFE, 0x1C, 0x02, 0xFE, 0x1D, 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0xFF, 0x01, -/* 00005DC0 */ 0xFE, 0x2C, 0x02, 0xFE, 0x84, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0xAB, 0x02, 0xFE, 0xAA, 0x02, 0xFE, -/* 00005DD0 */ 0xAD, 0x02, 0xFE, 0xAF, 0x02, 0xFE, 0xAE, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, -/* 00005DE0 */ 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB9, 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xBC, 0x02, -/* 00005DF0 */ 0xFE, 0xBB, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, 0x01, 0xFE, -/* 00005E00 */ 0x7D, 0x01, 0xDB, 0xFE, 0xC5, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0xC8, 0x02, 0xFE, -/* 00005E10 */ 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0x87, 0xFE, -/* 00005E20 */ 0x0B, 0x01, 0xFE, 0x27, 0x01, 0xFE, 0x07, 0x01, 0xFE, 0x48, 0x01, 0x97, 0xA9, 0xFE, 0xCE, 0x02, -/* 00005E30 */ 0xF7, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0xFE, 0xD1, 0x02, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, -/* 00005E40 */ 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, -/* 00005E50 */ 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, -/* 00005E60 */ 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xE1, 0x02, -/* 00005E70 */ 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, 0xE4, 0x02, 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, -/* 00005E80 */ 0x44, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, -/* 00005E90 */ 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, +/* 00005D50 */ 0x00, 0x23, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0xDB, 0xFE, +/* 00005D60 */ 0x03, 0x02, 0xFE, 0x04, 0x02, 0xFE, 0x06, 0x02, 0x87, 0xFE, 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, +/* 00005D70 */ 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD6, 0x01, 0xFE, 0x08, 0x02, 0x1B, 0xFE, 0x09, +/* 00005D80 */ 0x02, 0x23, 0xFE, 0x0A, 0x02, 0xFC, 0xFE, 0x0B, 0x02, 0x29, 0xFE, 0x0C, 0x02, 0xFE, 0x0D, 0x02, +/* 00005D90 */ 0xFE, 0x0E, 0x02, 0xFE, 0x0F, 0x02, 0xFE, 0x10, 0x02, 0xFE, 0x14, 0x02, 0xFE, 0x15, 0x02, 0xFE, +/* 00005DA0 */ 0x16, 0x02, 0xFE, 0x17, 0x02, 0xFE, 0x18, 0x02, 0xFE, 0x19, 0x02, 0xFE, 0x1A, 0x02, 0xFE, 0x1D, +/* 00005DB0 */ 0x02, 0xFE, 0x1E, 0x02, 0xFE, 0x1F, 0x02, 0xFE, 0x20, 0x02, 0xFE, 0x21, 0x02, 0xFE, 0x02, 0x02, +/* 00005DC0 */ 0xFE, 0x2F, 0x02, 0xFE, 0x87, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0xAE, 0x02, 0xFE, 0xAD, 0x02, 0xFE, +/* 00005DD0 */ 0xB0, 0x02, 0xFE, 0xB2, 0x02, 0xFE, 0xB1, 0x02, 0xFE, 0xB5, 0x02, 0xFE, 0xB4, 0x02, 0xFE, 0xB8, +/* 00005DE0 */ 0x02, 0xFE, 0xBA, 0x02, 0xFE, 0xB7, 0x02, 0xFE, 0xBC, 0x02, 0xFE, 0xBD, 0x02, 0xFE, 0xBF, 0x02, +/* 00005DF0 */ 0xFE, 0xBE, 0x02, 0xFE, 0xC0, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, 0x01, 0xFE, +/* 00005E00 */ 0x80, 0x01, 0xDB, 0xFE, 0xC8, 0x02, 0xFE, 0xC9, 0x02, 0xFE, 0xCA, 0x02, 0xFE, 0xCB, 0x02, 0xFE, +/* 00005E10 */ 0xCC, 0x02, 0xFE, 0xCD, 0x02, 0xFE, 0xCE, 0x02, 0xFE, 0xCF, 0x02, 0xFE, 0xD0, 0x02, 0x87, 0xFE, +/* 00005E20 */ 0x0E, 0x01, 0xFE, 0x2A, 0x01, 0xFE, 0x0A, 0x01, 0xFE, 0x4B, 0x01, 0x97, 0xA9, 0xFE, 0xD1, 0x02, +/* 00005E30 */ 0xF7, 0xFE, 0xD2, 0x02, 0xFE, 0xD3, 0x02, 0xFE, 0xD4, 0x02, 0xFE, 0xD5, 0x02, 0xFE, 0xD6, 0x02, +/* 00005E40 */ 0xFE, 0xD7, 0x02, 0xFE, 0xD8, 0x02, 0xFE, 0xD9, 0x02, 0xFE, 0xDA, 0x02, 0xFE, 0xDB, 0x02, 0xFE, +/* 00005E50 */ 0xDC, 0x02, 0xFE, 0xDD, 0x02, 0xFE, 0xDE, 0x02, 0xFE, 0xDF, 0x02, 0xFE, 0xE0, 0x02, 0xFE, 0xE1, +/* 00005E60 */ 0x02, 0xE0, 0xE3, 0xB7, 0xFE, 0xE2, 0x02, 0xFE, 0xE3, 0x02, 0xFE, 0xF8, 0x01, 0xFE, 0xE4, 0x02, +/* 00005E70 */ 0xFE, 0xE5, 0x02, 0xFE, 0xE6, 0x02, 0xFE, 0xE7, 0x02, 0xFE, 0xE8, 0x02, 0xFE, 0xE9, 0x02, 0xFE, +/* 00005E80 */ 0x47, 0x02, 0xFE, 0xEA, 0x02, 0xFE, 0xEB, 0x02, 0xFE, 0xEC, 0x02, 0xFE, 0xED, 0x02, 0xFE, 0xEE, +/* 00005E90 */ 0x02, 0xFE, 0xEF, 0x02, 0xFE, 0xF0, 0x02, 0xFE, 0xF1, 0x02, 0xFE, 0xF2, 0x02, 0xFE, 0xF3, 0x02, /* 00005EA0 */ 0x00, 0xFE, 0xC3, 0x01, 0x41, 0x42, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x3E, 0x00, 0x10, 0x00, 0x36, /* 00005EB0 */ 0x00, 0x10, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x44, 0x00, 0x10, 0x00, 0x25, 0x00, 0x10, 0x00, 0x23, /* 00005EC0 */ 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x23, 0x00, 0x10, 0x00, 0x1F, @@ -2955,18 +2955,18 @@ namespace Js /* 00006020 */ 0x00, 0xFE, 0x84, 0xAC, 0x0E, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x84, 0xAC, 0xFE, /* 00006030 */ 0xAF, 0x6D, 0xFE, 0xAF, 0x6D, 0x01, 0x13, 0x2F, 0x3B, 0x09, 0xD9, 0xD9, 0x01, 0x09, 0x11, 0x11, /* 00006040 */ 0x11, 0x11, 0x06, 0x02, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006050 */ 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x5E, -/* 00006060 */ 0x03, 0x02, 0xFE, 0x5F, 0x03, 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x02, 0xFE, 0x62, -/* 00006070 */ 0x03, 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, 0x03, 0x02, 0xFE, 0x66, -/* 00006080 */ 0x03, 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, 0x03, 0x02, 0xFE, 0x6A, -/* 00006090 */ 0x03, 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, 0x03, 0x02, 0xFE, 0x6E, -/* 000060A0 */ 0x03, 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x03, 0x02, 0xFE, 0x71, 0x03, 0x04, 0x01, -/* 000060B0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x72, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x73, -/* 000060C0 */ 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x75, 0x03, 0x02, 0xFE, -/* 000060D0 */ 0x76, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, -/* 000060E0 */ 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x08, -/* 000060F0 */ 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x23, 0x03, -/* 00006100 */ 0x02, 0xFE, 0xA7, 0x02, 0xFE, 0x7A, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, +/* 00006050 */ 0xFF, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x61, +/* 00006060 */ 0x03, 0x02, 0xFE, 0x62, 0x03, 0x02, 0xFE, 0x63, 0x03, 0x02, 0xFE, 0x64, 0x03, 0x02, 0xFE, 0x65, +/* 00006070 */ 0x03, 0x02, 0xFE, 0x66, 0x03, 0x02, 0xFE, 0x67, 0x03, 0x02, 0xFE, 0x68, 0x03, 0x02, 0xFE, 0x69, +/* 00006080 */ 0x03, 0x02, 0xFE, 0x6A, 0x03, 0x02, 0xFE, 0x6B, 0x03, 0x02, 0xFE, 0x6C, 0x03, 0x02, 0xFE, 0x6D, +/* 00006090 */ 0x03, 0x02, 0xFE, 0x6E, 0x03, 0x02, 0xFE, 0x6F, 0x03, 0x02, 0xFE, 0x70, 0x03, 0x02, 0xFE, 0x71, +/* 000060A0 */ 0x03, 0x02, 0xFE, 0x72, 0x03, 0x02, 0xFE, 0x73, 0x03, 0x03, 0x02, 0xFE, 0x74, 0x03, 0x04, 0x01, +/* 000060B0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x75, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x76, +/* 000060C0 */ 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x77, 0x03, 0x02, 0xFE, 0x78, 0x03, 0x02, 0xFE, +/* 000060D0 */ 0x79, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, +/* 000060E0 */ 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x08, +/* 000060F0 */ 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x26, 0x03, +/* 00006100 */ 0x02, 0xFE, 0xAA, 0x02, 0xFE, 0x7A, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0xA8, 0x32, 0xA8, /* 00006110 */ 0x33, 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 00006120 */ 0x00, 0x00, 0x3D, 0x14, 0x15, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 00006130 */ 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0x3B, 0x04, 0xDE, 0x00, 0x09, @@ -3039,23 +3039,23 @@ namespace Js /* 00006560 */ 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x90, 0x01, 0x00, 0x00, 0x00, /* 00006570 */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, /* 00006580 */ 0x00, 0x06, 0x9C, 0x00, 0x88, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00006590 */ 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, -/* 000065A0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, -/* 000065B0 */ 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, -/* 000065C0 */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, -/* 000065D0 */ 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, -/* 000065E0 */ 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, -/* 000065F0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, -/* 00006600 */ 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, -/* 00006610 */ 0x00, 0x00, 0x00, 0x00, 0x5F, 0x03, 0x00, 0x00, 0x61, 0x03, 0x00, 0x00, 0x63, 0x03, 0x00, 0x00, -/* 00006620 */ 0x65, 0x03, 0x00, 0x00, 0x67, 0x03, 0x00, 0x00, 0x69, 0x03, 0x00, 0x00, 0x6B, 0x03, 0x00, 0x00, -/* 00006630 */ 0x6D, 0x03, 0x00, 0x00, 0x6F, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x5F, 0x03, 0xFE, 0x61, 0x03, 0xFE, -/* 00006640 */ 0x63, 0x03, 0xFE, 0x65, 0x03, 0xFE, 0x67, 0x03, 0xFE, 0x69, 0x03, 0xFE, 0x6B, 0x03, 0xFE, 0x6D, -/* 00006650 */ 0x03, 0xFE, 0x6F, 0x03, 0xFE, 0xFD, 0x01, 0xFE, 0x5F, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, -/* 00006660 */ 0xFE, 0x7C, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x77, 0x03, 0x02, -/* 00006670 */ 0x01, 0x07, 0x00, 0xFE, 0x78, 0x03, 0x01, 0xFE, 0x79, 0x03, 0x02, 0xFE, 0x7A, 0x03, 0x03, 0xFE, -/* 00006680 */ 0x7B, 0x03, 0x04, 0xFE, 0x7C, 0x03, 0x05, 0xFE, 0x7D, 0x03, 0x06, 0xFE, 0x7E, 0x03, 0x02, 0x02, -/* 00006690 */ 0x00, 0xFE, 0xE6, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x9D, 0xAC, 0x12, 0x12, 0x00, 0x00, 0x00, +/* 00006590 */ 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, +/* 000065A0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, +/* 000065B0 */ 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, +/* 000065C0 */ 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, +/* 000065D0 */ 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, +/* 000065E0 */ 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, +/* 000065F0 */ 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, +/* 00006600 */ 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, +/* 00006610 */ 0x00, 0x00, 0x00, 0x00, 0x62, 0x03, 0x00, 0x00, 0x64, 0x03, 0x00, 0x00, 0x66, 0x03, 0x00, 0x00, +/* 00006620 */ 0x68, 0x03, 0x00, 0x00, 0x6A, 0x03, 0x00, 0x00, 0x6C, 0x03, 0x00, 0x00, 0x6E, 0x03, 0x00, 0x00, +/* 00006630 */ 0x70, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x62, 0x03, 0xFE, 0x64, 0x03, 0xFE, +/* 00006640 */ 0x66, 0x03, 0xFE, 0x68, 0x03, 0xFE, 0x6A, 0x03, 0xFE, 0x6C, 0x03, 0xFE, 0x6E, 0x03, 0xFE, 0x70, +/* 00006650 */ 0x03, 0xFE, 0x72, 0x03, 0xFE, 0x00, 0x02, 0xFE, 0x62, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, +/* 00006660 */ 0xFE, 0x7F, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0x7A, 0x03, 0x02, +/* 00006670 */ 0x01, 0x07, 0x00, 0xFE, 0x7B, 0x03, 0x01, 0xFE, 0x7C, 0x03, 0x02, 0xFE, 0x7D, 0x03, 0x03, 0xFE, +/* 00006680 */ 0x7E, 0x03, 0x04, 0xFE, 0x7F, 0x03, 0x05, 0xFE, 0x80, 0x03, 0x06, 0xFE, 0x81, 0x03, 0x02, 0x02, +/* 00006690 */ 0x00, 0xFE, 0xE9, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x9D, 0xAC, 0x12, 0x12, 0x00, 0x00, 0x00, /* 000066A0 */ 0xB0, 0x00, 0xD0, 0x13, 0x37, 0x00, 0x16, 0x37, 0x44, 0x00, 0x1E, 0x03, 0x44, 0x00, 0x28, 0x03, /* 000066B0 */ 0x44, 0x00, 0x26, 0x03, 0x46, 0x00, 0xA7, 0x05, 0x24, 0x00, 0x29, 0x04, 0x24, 0x00, 0x56, 0x00, /* 000066C0 */ 0x19, 0x00, 0x4A, 0x00, 0x55, 0x00, 0x9E, 0x00, 0x36, 0x00, 0x4B, 0x00, 0x52, 0x00, 0xA4, 0x00, @@ -3064,16 +3064,16 @@ namespace Js /* 000066F0 */ 0x00, 0x53, 0x87, 0x00, 0x00, 0x74, 0x85, 0x00, 0x00, 0x35, 0x81, 0x00, 0x00, 0x35, 0x78, 0x00, /* 00006700 */ 0x00, 0x01, 0x76, 0x00, 0x00, 0xD1, 0x73, 0x00, 0x00, 0xA1, 0x71, 0x00, 0x00, 0x2C, 0x6F, 0x00, /* 00006710 */ 0x00, 0xDE, 0x6C, 0x00, 0x00, 0xB9, 0x6B, 0x00, 0x00, 0x1D, 0x67, 0x00, 0x00, 0xBF, 0x7E, 0x01, -/* 00006720 */ 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x4D, 0x05, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, +/* 00006720 */ 0x0A, 0x4F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x4D, 0x05, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, /* 00006730 */ 0x42, 0x00, 0xFF, 0x7D, 0x10, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006740 */ 0x7D, 0x10, 0x01, 0x00, 0xFE, 0x0D, 0x08, 0xFE, 0x0D, 0x08, 0x03, 0x07, 0x15, 0x19, 0x09, 0x7A, /* 00006750 */ 0x7A, 0x04, 0x09, 0x08, 0x20, 0x20, 0x20, 0x20, 0x01, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, /* 00006760 */ 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006770 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, -/* 00006780 */ 0xF3, 0x02, 0x02, 0xFE, 0xBB, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, -/* 00006790 */ 0xB2, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0xB0, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, -/* 000067A0 */ 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, -/* 000067B0 */ 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x03, 0x04, 0xFE, 0x29, 0x02, 0x5B, 0x15, 0xB3, 0x15, 0x15, +/* 00006770 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBD, 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x02, 0xFE, +/* 00006780 */ 0xF6, 0x02, 0x02, 0xFE, 0xBE, 0x03, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, +/* 00006790 */ 0xB5, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, +/* 000067A0 */ 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, +/* 000067B0 */ 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x03, 0x04, 0xFE, 0x29, 0x02, 0x5B, 0x15, 0xB3, 0x15, 0x15, /* 000067C0 */ 0x2C, 0x19, 0x15, 0x15, 0x03, 0x00, 0x19, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 000067D0 */ 0x07, 0x00, 0x00, 0x00, 0x1A, 0x6C, 0x19, 0x1A, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, /* 000067E0 */ 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x19, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, @@ -3109,17 +3109,17 @@ namespace Js /* 000069C0 */ 0x04, 0x00, 0x00, 0x00, 0x1A, 0x5C, 0x01, 0x1A, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, /* 000069D0 */ 0x00, 0x1A, 0x61, 0x1A, 0x1A, 0x1F, 0x5C, 0x02, 0x1A, 0x1F, 0x03, 0x00, 0x19, 0x09, 0x02, 0x00, /* 000069E0 */ 0xA8, 0x00, 0x24, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x00, -/* 000069F0 */ 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x5E, 0x02, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x4E, -/* 00006A00 */ 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, -/* 00006A10 */ 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, -/* 00006A20 */ 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, -/* 00006A30 */ 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, -/* 00006A40 */ 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x5B, 0x02, -/* 00006A50 */ 0xFE, 0x50, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, -/* 00006A60 */ 0x52, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, -/* 00006A70 */ 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x57, 0x02, -/* 00006A80 */ 0xFE, 0x4C, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x14, 0x01, 0xFE, 0x5C, 0x03, 0xFE, -/* 00006A90 */ 0xBC, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFF, 0xB3, 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, +/* 000069F0 */ 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x61, 0x02, 0x00, 0x00, 0x63, 0x02, 0x00, 0x00, 0x51, +/* 00006A00 */ 0x02, 0x00, 0x00, 0x53, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, +/* 00006A10 */ 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, +/* 00006A20 */ 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, +/* 00006A30 */ 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, 0xFE, 0x60, 0x02, 0xFE, 0x61, +/* 00006A40 */ 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0x63, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0x51, 0x02, 0xFE, 0x5E, 0x02, +/* 00006A50 */ 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x50, 0x02, 0xFE, +/* 00006A60 */ 0x55, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x4C, +/* 00006A70 */ 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x5A, 0x02, +/* 00006A80 */ 0xFE, 0x4F, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x17, 0x01, 0xFE, 0x5F, 0x03, 0xFE, +/* 00006A90 */ 0xBF, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFF, 0xB3, 0x10, 0x01, 0x00, 0x0A, 0x05, 0x00, 0x00, 0x00, /* 00006AA0 */ 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x92, 0x00, 0x21, 0x00, 0x4C, 0x00, 0x21, 0x00, 0x6C, 0x00, /* 00006AB0 */ 0x1E, 0x00, 0x92, 0x00, 0xF1, 0x00, 0xDE, 0x03, 0x22, 0x00, 0x3F, 0x00, 0x53, 0x00, 0x5B, 0x01, /* 00006AC0 */ 0x33, 0x00, 0x45, 0x00, 0x00, 0xC9, 0x6A, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x07, @@ -3127,8 +3127,8 @@ namespace Js /* 00006AE0 */ 0xFF, 0x31, 0x17, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFF, 0x31, 0x17, 0x01, /* 00006AF0 */ 0x00, 0xE9, 0xE9, 0x04, 0x05, 0x07, 0x05, 0x1A, 0x1A, 0x05, 0x05, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006B00 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006B10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAE, -/* 00006B20 */ 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x04, 0x7C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +/* 00006B10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xB1, +/* 00006B20 */ 0x03, 0x02, 0xFE, 0x60, 0x03, 0x04, 0x7C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, /* 00006B30 */ 0x07, 0x97, 0x07, 0x07, 0x05, 0xA8, 0x08, 0x15, 0x0B, 0x00, 0x07, 0x08, 0x09, 0x00, 0x00, 0x14, /* 00006B40 */ 0x03, 0x00, 0x05, 0x02, 0x09, 0x58, 0x00, 0x8E, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, /* 00006B50 */ 0x07, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, 0x8E, 0x05, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, @@ -3143,7 +3143,7 @@ namespace Js /* 00006BE0 */ 0x00, 0xFE, 0x6B, 0x02, 0xFE, 0x6B, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x04, 0x01, 0x09, /* 00006BF0 */ 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006C00 */ 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006C10 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x02, 0xFE, 0xC4, +/* 00006C10 */ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, 0x03, 0x02, 0xFE, 0xC7, /* 00006C20 */ 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, /* 00006C30 */ 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, /* 00006C40 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, @@ -3152,17 +3152,17 @@ namespace Js /* 00006C70 */ 0x14, 0x0E, 0x00, 0x06, 0x08, 0x09, 0x00, 0x00, 0x61, 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, /* 00006C80 */ 0x09, 0x00, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, /* 00006C90 */ 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, -/* 00006CA0 */ 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 00006CB0 */ 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xFE, 0x43, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, +/* 00006CA0 */ 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 00006CB0 */ 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xFE, 0x46, 0x02, 0x00, 0xFF, 0x88, 0x0D, 0x01, 0x00, /* 00006CC0 */ 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x8B, 0x00, 0x1E, 0x00, 0x4C, /* 00006CD0 */ 0x00, 0x15, 0x00, 0x6C, 0x00, 0x1E, 0x00, 0x8B, 0x00, 0x09, 0x00, 0x38, 0x00, 0x00, 0x3F, 0x7E, -/* 00006CE0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, +/* 00006CE0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x22, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, /* 00006CF0 */ 0x00, 0x40, 0x00, 0xFF, 0xE3, 0x06, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, /* 00006D00 */ 0xE3, 0x06, 0x01, 0x00, 0xFE, 0xCA, 0x03, 0xFE, 0xCA, 0x03, 0x0A, 0x09, 0x0D, 0x0A, 0x61, 0x60, /* 00006D10 */ 0x04, 0x06, 0x0B, 0x07, 0x07, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006D20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00006D30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0xB9, -/* 00006D40 */ 0x03, 0x02, 0xFE, 0xC4, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, +/* 00006D30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0xBC, +/* 00006D40 */ 0x03, 0x02, 0xFE, 0xC7, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, /* 00006D50 */ 0xFE, 0x90, 0x01, 0x5B, 0x09, 0xB3, 0x09, 0x09, 0xAE, 0x0B, 0x2C, 0x0D, 0x09, 0x15, 0x03, 0x00, /* 00006D60 */ 0x0D, 0x03, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x6C, /* 00006D70 */ 0x0D, 0x0E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0E, 0x5C, 0x01, 0x04, 0x5C, 0x02, 0x05, 0x1F, @@ -3188,18 +3188,18 @@ namespace Js /* 00006EB0 */ 0x05, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0F, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, /* 00006EC0 */ 0x10, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x08, 0x1F, 0x01, 0x10, 0x10, 0x5C, 0x01, 0x10, 0x5C, 0x02, /* 00006ED0 */ 0x0A, 0x1F, 0x03, 0x0E, 0x0E, 0x5C, 0x01, 0x0E, 0x1F, 0x02, 0x00, 0x0D, 0x09, 0x02, 0x00, 0xA8, -/* 00006EE0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x37, 0x02, 0xF0, 0xFE, -/* 00006EF0 */ 0x24, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, +/* 00006EE0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x3A, 0x02, 0xF0, 0xFE, +/* 00006EF0 */ 0x27, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFF, 0x0E, 0x07, 0x01, 0x00, 0x0B, 0x07, /* 00006F00 */ 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, 0x81, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, /* 00006F10 */ 0x00, 0x68, 0x00, 0x1E, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x36, 0x00, 0x44, 0x00, 0x53, 0x00, 0x18, /* 00006F20 */ 0x00, 0x51, 0x00, 0x57, 0x00, 0x85, 0x00, 0x4E, 0x00, 0x52, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 00006F30 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC4, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, +/* 00006F30 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xFE, 0x02, 0x05, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x3F, /* 00006F40 */ 0x00, 0xFF, 0x1B, 0x01, 0x01, 0x00, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFF, 0x1B, 0x01, /* 00006F50 */ 0x01, 0x00, 0xFE, 0x69, 0x05, 0xFE, 0x69, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x09, /* 00006F60 */ 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F70 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00006F80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -/* 00006F90 */ 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, +/* 00006F90 */ 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, /* 00006FA0 */ 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, /* 00006FB0 */ 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, /* 00006FC0 */ 0x08, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, @@ -3224,9 +3224,9 @@ namespace Js /* 000070F0 */ 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, /* 00007100 */ 0x11, 0x5C, 0x01, 0x11, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, /* 00007110 */ 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, -/* 00007120 */ 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, -/* 00007130 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, -/* 00007140 */ 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x43, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, +/* 00007120 */ 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, +/* 00007130 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, +/* 00007140 */ 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x46, 0x02, 0xDB, 0x00, 0xFF, 0xB3, 0x01, 0x01, 0x00, 0x14, /* 00007150 */ 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 00007160 */ 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x18, 0x00, 0x44, 0x00, /* 00007170 */ 0x1C, 0x00, 0x5B, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0xA1, 0x00, @@ -3237,9 +3237,9 @@ namespace Js /* 000071C0 */ 0x01, 0x01, 0xFE, 0x21, 0xFE, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, /* 000071D0 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000071E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000071F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007200 */ 0xFE, 0x73, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007210 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x81, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, +/* 000071F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007200 */ 0xFE, 0x76, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007210 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x84, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, /* 00007220 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x19, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8E, /* 00007230 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x21, /* 00007240 */ 0x00, 0x10, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x6C, @@ -3263,8 +3263,8 @@ namespace Js /* 00007360 */ 0x11, 0x12, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x12, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, /* 00007370 */ 0x00, 0x00, 0x14, 0x6C, 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, /* 00007380 */ 0x1F, 0x02, 0x13, 0x13, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0x1F, 0x03, 0x11, 0x11, 0x5C, 0x01, -/* 00007390 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 000073A0 */ 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, +/* 00007390 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 000073A0 */ 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x40, 0xFE, 0x09, 0x07, 0x00, 0x00, 0x00, /* 000073B0 */ 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x71, 0x00, 0x3B, 0x00, 0x54, 0x00, 0x3C, 0x00, 0x3D, 0x00, /* 000073C0 */ 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x77, 0x00, 0x55, 0x00, 0x5B, 0x00, /* 000073D0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE8, 0x04, @@ -3272,9 +3272,9 @@ namespace Js /* 000073F0 */ 0x01, 0x01, 0xFE, 0xF9, 0xFA, 0xFE, 0xBA, 0x02, 0xFE, 0xBA, 0x02, 0x0A, 0x0B, 0x10, 0x0A, 0x5D, /* 00007400 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007410 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007420 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007430 */ 0xFE, 0x72, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007440 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x7F, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, +/* 00007420 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007430 */ 0xFE, 0x75, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007440 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0x7F, 0x01, 0x5B, 0x0B, 0xB3, /* 00007450 */ 0x0B, 0x0B, 0xAE, 0x0E, 0x2C, 0x10, 0x0B, 0x15, 0x19, 0x00, 0x10, 0x03, 0x09, 0x00, 0x00, 0x8E, /* 00007460 */ 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0xE1, 0x10, 0x0B, 0x10, 0x00, 0x0F, 0x21, /* 00007470 */ 0x00, 0x10, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x6C, @@ -3298,8 +3298,8 @@ namespace Js /* 00007590 */ 0x11, 0x12, 0x01, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x12, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, /* 000075A0 */ 0x00, 0x00, 0x14, 0x6C, 0x13, 0x14, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x14, 0x5C, 0x01, 0x0B, /* 000075B0 */ 0x1F, 0x02, 0x13, 0x13, 0x5C, 0x01, 0x13, 0x5C, 0x02, 0x0D, 0x1F, 0x03, 0x11, 0x11, 0x5C, 0x01, -/* 000075C0 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, -/* 000075D0 */ 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0x18, 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, +/* 000075C0 */ 0x11, 0x1F, 0x02, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, +/* 000075D0 */ 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0x18, 0xFB, 0x09, 0x07, 0x00, 0x00, 0x00, /* 000075E0 */ 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x71, 0x00, 0x3B, 0x00, 0x54, 0x00, 0x3C, 0x00, 0x3D, 0x00, /* 000075F0 */ 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x77, 0x00, 0x55, 0x00, 0x5B, 0x00, /* 00007600 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x1F, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xDB, 0x04, @@ -3307,9 +3307,9 @@ namespace Js /* 00007620 */ 0x01, 0x01, 0xFE, 0xD7, 0xF7, 0xFE, 0xB4, 0x02, 0xFE, 0xB4, 0x02, 0x0A, 0x0C, 0x11, 0x0A, 0x5D, /* 00007630 */ 0x5A, 0x03, 0x0B, 0x0B, 0x03, 0x03, 0x03, 0x03, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00007640 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00007650 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, -/* 00007660 */ 0xFE, 0x71, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x04, 0x02, 0xFE, 0xB8, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 00007670 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x80, 0x03, 0x02, 0xFE, 0x82, 0x03, 0xFE, 0x7F, +/* 00007650 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x02, +/* 00007660 */ 0xFE, 0x74, 0x03, 0x02, 0xFE, 0x61, 0x03, 0x04, 0x02, 0xFE, 0xBB, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 00007670 */ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x83, 0x03, 0x02, 0xFE, 0x85, 0x03, 0xFE, 0x7F, /* 00007680 */ 0x01, 0x5B, 0x0C, 0xB3, 0x0C, 0x0C, 0xAE, 0x0F, 0x2C, 0x11, 0x0C, 0x15, 0x19, 0x00, 0x11, 0x03, /* 00007690 */ 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0xE1, 0x11, 0x0C, /* 000076A0 */ 0x11, 0x00, 0x0F, 0x21, 0x00, 0x11, 0x09, 0x00, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, @@ -3334,24 +3334,24 @@ namespace Js /* 000077D0 */ 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x15, 0x6C, 0x14, 0x15, 0x02, 0x07, 0x02, 0x00, 0x5C, 0x00, /* 000077E0 */ 0x15, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x14, 0x14, 0x5C, 0x01, 0x14, 0x5C, 0x02, 0x0E, 0x1F, 0x03, /* 000077F0 */ 0x12, 0x12, 0x5C, 0x01, 0x12, 0x1F, 0x02, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00007800 */ 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFC, 0x01, 0xFE, 0x27, 0x02, 0x00, 0xFE, 0xF6, 0xF7, 0x09, +/* 00007800 */ 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0xFF, 0x01, 0xFE, 0x2A, 0x02, 0x00, 0xFE, 0xF6, 0xF7, 0x09, /* 00007810 */ 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x50, 0x00, 0x1E, 0x00, 0x6D, 0x00, 0x3B, 0x00, 0x54, 0x00, /* 00007820 */ 0x3C, 0x00, 0x3D, 0x00, 0x06, 0x00, 0x3B, 0x00, 0x1F, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x75, 0x00, -/* 00007830 */ 0x55, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFD, 0x07, 0xFE, 0x7E, 0x03, 0xFE, +/* 00007830 */ 0x55, 0x00, 0x5B, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFD, 0x07, 0xFE, 0x81, 0x03, 0xFE, /* 00007840 */ 0x58, 0x04, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x3B, 0x00, 0xFE, 0x61, 0xDB, 0xFF, 0x00, 0x10, /* 00007850 */ 0x01, 0x00, 0x04, 0x04, 0xFE, 0x61, 0xDB, 0xFE, 0x04, 0x1C, 0xFE, 0x04, 0x1C, 0x1C, 0x29, 0x41, /* 00007860 */ 0x07, 0xFE, 0xAA, 0x01, 0xFE, 0x8A, 0x01, 0x03, 0x0E, 0x45, 0x2B, 0x2B, 0x2B, 0x2B, 0x01, 0x01, /* 00007870 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, -/* 00007880 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, -/* 00007890 */ 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xC4, 0x02, 0x08, 0x02, 0xFE, 0x80, 0x03, 0x02, -/* 000078A0 */ 0xFE, 0x7F, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, -/* 000078B0 */ 0xFE, 0x16, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, -/* 000078C0 */ 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, 0xFE, 0xB0, 0x03, 0x02, 0xFE, 0x83, 0x03, 0x02, -/* 000078D0 */ 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, -/* 000078E0 */ 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, -/* 000078F0 */ 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x02, -/* 00007900 */ 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x76, 0x03, -/* 00007910 */ 0x09, 0x02, 0xFE, 0xB7, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5D, +/* 00007880 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, +/* 00007890 */ 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC7, 0x02, 0x08, 0x02, 0xFE, 0x83, 0x03, 0x02, +/* 000078A0 */ 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, +/* 000078B0 */ 0xFE, 0x19, 0x03, 0x02, 0xFE, 0xB1, 0x03, 0x02, 0xFE, 0xB2, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x02, +/* 000078C0 */ 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0xB3, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, +/* 000078D0 */ 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, +/* 000078E0 */ 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xB4, 0x03, 0x02, +/* 000078F0 */ 0xFE, 0xB5, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0xB6, 0x03, 0x02, 0xFE, 0xB7, 0x03, 0x02, +/* 00007900 */ 0xFE, 0xB8, 0x03, 0x02, 0xFE, 0xB9, 0x03, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x79, 0x03, +/* 00007910 */ 0x09, 0x02, 0xFE, 0xBA, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5D, /* 00007920 */ 0x06, 0xA8, 0x3F, 0x2C, 0x42, 0x29, 0x0D, 0x03, 0x00, 0x42, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x03, /* 00007930 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x6C, 0x42, 0x43, 0x00, 0x07, 0x01, 0x00, 0x5C, /* 00007940 */ 0x00, 0x43, 0x1F, 0x01, 0xFF, 0x42, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x42, @@ -3454,18 +3454,18 @@ namespace Js /* 00007F50 */ 0x26, 0x5C, 0x02, 0x44, 0x1F, 0x03, 0x43, 0x43, 0x76, 0x43, 0x42, 0x27, 0x61, 0x42, 0x29, 0x28, /* 00007F60 */ 0xA8, 0x43, 0x15, 0x03, 0x00, 0x42, 0x43, 0x09, 0x0C, 0x00, 0x61, 0x42, 0x29, 0x29, 0x43, 0x42, /* 00007F70 */ 0x42, 0x20, 0x76, 0x42, 0x29, 0x1D, 0x76, 0x06, 0x29, 0x2A, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x2C, -/* 00007F80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x00, -/* 00007F90 */ 0x00, 0x4D, 0x02, 0x00, 0x00, 0x47, 0x02, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x49, 0x02, 0x00, -/* 00007FA0 */ 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, -/* 00007FB0 */ 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x2E, -/* 00007FC0 */ 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2F, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x47, 0x02, -/* 00007FD0 */ 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, -/* 00007FE0 */ 0x4F, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x51, -/* 00007FF0 */ 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x53, 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, -/* 00008000 */ 0xFE, 0x55, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x5C, 0x02, 0xFE, -/* 00008010 */ 0xEE, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xFA, 0x01, 0xFE, 0xE3, 0x01, 0xFE, 0xF0, 0x01, 0xFE, 0xEF, -/* 00008020 */ 0x01, 0xFE, 0x5D, 0x02, 0xFE, 0xDD, 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x56, 0x02, 0xFE, 0xEE, 0x01, -/* 00008030 */ 0xFE, 0x37, 0x02, 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, +/* 00007F80 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, 0x00, +/* 00007F90 */ 0x00, 0x50, 0x02, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x4B, 0x02, 0x00, 0x00, 0x4C, 0x02, 0x00, +/* 00007FA0 */ 0x00, 0x4E, 0x02, 0x00, 0x00, 0x4D, 0x02, 0x00, 0x00, 0x4F, 0x02, 0x00, 0x00, 0x52, 0x02, 0x00, +/* 00007FB0 */ 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x31, +/* 00007FC0 */ 0x02, 0xFE, 0x2C, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x50, 0x02, 0xFE, 0x4A, 0x02, +/* 00007FD0 */ 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, +/* 00007FE0 */ 0x52, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x5C, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x54, +/* 00007FF0 */ 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, +/* 00008000 */ 0xFE, 0x58, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, 0xFE, 0x5E, 0x02, 0xFE, 0x5F, 0x02, 0xFE, +/* 00008010 */ 0xF1, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xFD, 0x01, 0xFE, 0xE6, 0x01, 0xFE, 0xF3, 0x01, 0xFE, 0xF2, +/* 00008020 */ 0x01, 0xFE, 0x60, 0x02, 0xFE, 0xE0, 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x59, 0x02, 0xFE, 0xF1, 0x01, +/* 00008030 */ 0xFE, 0x3A, 0x02, 0x00, 0xFE, 0xBB, 0xDB, 0x3F, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3E, 0x00, /* 00008040 */ 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0xA0, 0x00, 0x1E, 0x00, 0x74, 0x00, 0x04, 0x00, 0x6A, 0x00, /* 00008050 */ 0x22, 0x00, 0x48, 0x00, 0x31, 0x00, 0x72, 0x00, 0x2A, 0x00, 0x60, 0x00, 0x0A, 0x00, 0x33, 0x00, /* 00008060 */ 0x1E, 0x00, 0x54, 0x00, 0x0A, 0x00, 0x37, 0x00, 0x1B, 0x00, 0x6D, 0x00, 0x1B, 0x00, 0x73, 0x00, @@ -3481,16 +3481,16 @@ namespace Js /* 00008100 */ 0x23, 0x00, 0x6B, 0x00, 0x04, 0x00, 0x38, 0x00, 0x07, 0x00, 0x5C, 0x00, 0x2E, 0x00, 0xE3, 0x00, /* 00008110 */ 0x24, 0x00, 0x48, 0x00, 0x01, 0x00, 0x4C, 0x00, 0x17, 0x00, 0x7C, 0x01, 0x19, 0x00, 0x7B, 0x00, /* 00008120 */ 0x21, 0x00, 0x68, 0x00, 0x2F, 0x00, 0x83, 0x00, 0x0E, 0x00, 0x40, 0x00, 0x0C, 0x00, 0x6F, 0x00, -/* 00008130 */ 0x06, 0x00, 0x40, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, +/* 00008130 */ 0x06, 0x00, 0x40, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0x80, 0x03, 0xFE, /* 00008140 */ 0x1E, 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x3A, 0x00, 0xFE, 0xEB, 0xCD, 0xFF, 0x00, 0x10, /* 00008150 */ 0x01, 0x00, 0x03, 0x03, 0xFE, 0xEB, 0xCD, 0xFE, 0x66, 0x0D, 0xFE, 0x66, 0x0D, 0x07, 0x12, 0x16, /* 00008160 */ 0x06, 0xC8, 0xBB, 0x03, 0x07, 0x01, 0x0A, 0x0A, 0x0A, 0x0A, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008170 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008180 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, -/* 00008190 */ 0x04, 0x02, 0xFE, 0x8E, 0x03, 0x03, 0x02, 0xFE, 0xA9, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, -/* 000081A0 */ 0xFE, 0xAA, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0xAB, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, -/* 000081B0 */ 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, 0xFE, 0x87, 0x03, 0x02, -/* 000081C0 */ 0xFE, 0x88, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0xFE, 0x06, 0x03, 0xA8, 0x14, 0x61, 0x16, 0x13, 0x00, +/* 00008180 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xAB, 0x03, +/* 00008190 */ 0x04, 0x02, 0xFE, 0x91, 0x03, 0x03, 0x02, 0xFE, 0xAC, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, +/* 000081A0 */ 0xFE, 0xAD, 0x03, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0xAE, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, +/* 000081B0 */ 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, +/* 000081C0 */ 0xFE, 0x8B, 0x03, 0x02, 0xFE, 0xAF, 0x03, 0xFE, 0x06, 0x03, 0xA8, 0x14, 0x61, 0x16, 0x13, 0x00, /* 000081D0 */ 0xA8, 0x17, 0x15, 0x03, 0x00, 0x16, 0x17, 0x09, 0x26, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, /* 000081E0 */ 0x00, 0x00, 0x00, 0x16, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x12, 0x61, /* 000081F0 */ 0x17, 0x13, 0x00, 0x5C, 0x02, 0x17, 0x5C, 0x03, 0x02, 0x1F, 0x04, 0x16, 0x16, 0x47, 0x12, 0x16, @@ -3539,9 +3539,9 @@ namespace Js /* 000084A0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0x4B, 0x16, 0x07, 0x04, 0x00, 0x5C, /* 000084B0 */ 0x00, 0x03, 0x5C, 0x01, 0x12, 0x61, 0x17, 0x13, 0x09, 0x5C, 0x02, 0x17, 0x5C, 0x03, 0x11, 0x1F, /* 000084C0 */ 0x04, 0x16, 0x16, 0x47, 0x12, 0x16, 0x47, 0x00, 0x12, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 000084D0 */ 0x00, 0x00, 0xFE, 0x51, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x52, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x53, -/* 000084E0 */ 0x02, 0xFE, 0x54, 0x02, 0xFE, 0x56, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x5A, 0x02, -/* 000084F0 */ 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0x1C, 0xFE, 0xAD, 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, +/* 000084D0 */ 0x00, 0x00, 0xFE, 0x54, 0x02, 0xFE, 0x5B, 0x02, 0xFE, 0x55, 0x02, 0xFE, 0x05, 0x02, 0xFE, 0x56, +/* 000084E0 */ 0x02, 0xFE, 0x57, 0x02, 0xFE, 0x59, 0x02, 0xFE, 0x58, 0x02, 0xFE, 0x5A, 0x02, 0xFE, 0x5D, 0x02, +/* 000084F0 */ 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0x1C, 0xFE, 0xB0, 0x03, 0x00, 0xFE, 0x3D, 0xCE, 0x1D, 0x02, /* 00008500 */ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x43, 0x00, 0x26, 0x00, 0x8B, 0x00, 0x0E, 0x00, 0x94, 0x01, 0x0C, /* 00008510 */ 0x00, 0x40, 0x00, 0x24, 0x00, 0x6C, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x2E, 0x00, 0x93, 0x00, 0x34, /* 00008520 */ 0x00, 0x9A, 0x00, 0x0C, 0x00, 0x3D, 0x00, 0x24, 0x00, 0x6C, 0x00, 0x08, 0x00, 0x2F, 0x00, 0x2E, @@ -3549,16 +3549,16 @@ namespace Js /* 00008540 */ 0x00, 0x41, 0x00, 0x26, 0x00, 0x8E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x26, 0x00, 0x8A, 0x00, 0x0E, /* 00008550 */ 0x00, 0x40, 0x00, 0x26, 0x00, 0x8C, 0x00, 0x0E, 0x00, 0x42, 0x00, 0x26, 0x00, 0x90, 0x00, 0x0E, /* 00008560 */ 0x00, 0x42, 0x00, 0x26, 0x00, 0x90, 0x00, 0x0E, 0x00, 0x48, 0x00, 0x26, 0x00, 0x8F, 0x00, 0x08, -/* 00008570 */ 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7C, 0x03, 0xFE, 0x0C, +/* 00008570 */ 0x00, 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7F, 0x03, 0xFE, 0x0C, /* 00008580 */ 0x04, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x39, 0x00, 0xFE, 0xF7, 0xC8, 0xFF, 0x00, 0x10, 0x01, /* 00008590 */ 0x00, 0x04, 0x04, 0xFE, 0xF7, 0xC8, 0xFE, 0x81, 0x04, 0xFE, 0x81, 0x04, 0x09, 0x11, 0x16, 0x07, /* 000085A0 */ 0x43, 0x40, 0x03, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000085B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000085C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, -/* 000085D0 */ 0xA3, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, -/* 000085E0 */ 0x02, 0xFE, 0x8E, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, -/* 000085F0 */ 0x00, 0x00, 0x02, 0xFE, 0xA5, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA6, 0x03, 0x02, -/* 00008600 */ 0xFE, 0xA7, 0x03, 0xFE, 0x1A, 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, +/* 000085C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, +/* 000085D0 */ 0xA6, 0x03, 0x04, 0x03, 0x02, 0xFE, 0xA7, 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, +/* 000085E0 */ 0x02, 0xFE, 0x91, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, +/* 000085F0 */ 0x00, 0x00, 0x02, 0xFE, 0xA8, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA9, 0x03, 0x02, +/* 00008600 */ 0xFE, 0xAA, 0x03, 0xFE, 0x1A, 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, /* 00008610 */ 0x6C, 0x16, 0x17, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x17, 0x5C, 0x01, 0x11, 0x8E, 0x03, 0x00, /* 00008620 */ 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x18, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x19, 0x02, /* 00008630 */ 0x13, 0x03, 0x5C, 0x01, 0x19, 0x1F, 0x02, 0x18, 0x18, 0x5C, 0x02, 0x18, 0x1F, 0x03, 0x16, 0x16, @@ -3576,19 +3576,19 @@ namespace Js /* 000086F0 */ 0x00, 0x21, 0x00, 0x00, 0x00, 0x17, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x11, 0x97, 0x17, 0x14, 0x0A, /* 00008700 */ 0x5C, 0x03, 0x17, 0x97, 0x17, 0x14, 0x0C, 0xFB, 0x17, 0x0B, 0x17, 0x10, 0x5C, 0x04, 0x17, 0x1F, /* 00008710 */ 0x05, 0x00, 0x16, 0x09, 0x08, 0x00, 0x47, 0x00, 0x11, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00008720 */ 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, +/* 00008720 */ 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0xAC, 0xC9, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, /* 00008730 */ 0x90, 0x00, 0x08, 0x00, 0x2B, 0x00, 0x3A, 0x00, 0x01, 0x01, 0x06, 0x00, 0x3C, 0x00, 0x08, 0x00, /* 00008740 */ 0x6E, 0x00, 0x3D, 0x00, 0x82, 0x00, 0x0C, 0x00, 0x33, 0x00, 0x3A, 0x00, 0x8D, 0x00, 0x08, 0x00, -/* 00008750 */ 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, 0xFC, 0x03, +/* 00008750 */ 0x23, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x7E, 0x03, 0xFE, 0xFC, 0x03, /* 00008760 */ 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x38, 0x00, 0xFE, 0xBE, 0xC3, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 00008770 */ 0x04, 0x04, 0xFE, 0xBE, 0xC3, 0xFE, 0x2B, 0x05, 0xFE, 0x2B, 0x05, 0x09, 0x14, 0x19, 0x07, 0x50, /* 00008780 */ 0x4B, 0x03, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008790 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000087A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0x99, -/* 000087B0 */ 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9A, 0x03, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, 0x03, 0x01, -/* 000087C0 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x8C, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 000087D0 */ 0x00, 0x02, 0xFE, 0x9E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x9F, 0x03, 0x02, 0xFE, -/* 000087E0 */ 0xA0, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0xA1, 0x03, 0x02, 0xFE, 0xA2, 0x03, 0xFE, 0x49, +/* 000087A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x9B, 0x03, 0x02, 0xFE, 0x9C, +/* 000087B0 */ 0x03, 0x04, 0x03, 0x02, 0xFE, 0x9D, 0x03, 0x02, 0xFE, 0x9E, 0x03, 0x02, 0xFE, 0x9F, 0x03, 0x01, +/* 000087C0 */ 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA0, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 000087D0 */ 0x00, 0x02, 0xFE, 0xA1, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xA2, 0x03, 0x02, 0xFE, +/* 000087E0 */ 0xA3, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0xA4, 0x03, 0x02, 0xFE, 0xA5, 0x03, 0xFE, 0x49, /* 000087F0 */ 0x01, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0x6C, 0x19, 0x1A, 0x00, 0x07, /* 00008800 */ 0x03, 0x00, 0x5C, 0x00, 0x1A, 0x5C, 0x01, 0x14, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, /* 00008810 */ 0x00, 0x1B, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x04, 0xFB, 0x1C, 0x02, 0x16, 0x03, 0x5C, 0x01, 0x1C, @@ -3609,30 +3609,30 @@ namespace Js /* 00008900 */ 0x1A, 0x97, 0x1A, 0x17, 0x0E, 0x2F, 0x1A, 0x0D, 0x1A, 0x2F, 0x1A, 0x1A, 0x0F, 0x14, 0x03, 0x00, /* 00008910 */ 0x15, 0x11, 0x09, 0x06, 0x00, 0x47, 0x1B, 0x12, 0x09, 0x03, 0x00, 0x47, 0x1B, 0x13, 0x2F, 0x1A, /* 00008920 */ 0x1A, 0x1B, 0x2F, 0x1A, 0x1A, 0x10, 0x5C, 0x04, 0x1A, 0x1F, 0x05, 0x00, 0x19, 0x09, 0x08, 0x00, -/* 00008930 */ 0x47, 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, +/* 00008930 */ 0x47, 0x00, 0x14, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, /* 00008940 */ 0xFE, 0x96, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x0D, 0x01, 0x08, 0x00, 0x2B, 0x00, /* 00008950 */ 0x3A, 0x00, 0xF6, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x14, 0x00, 0x48, 0x00, 0x48, 0x00, 0x86, 0x00, /* 00008960 */ 0x08, 0x00, 0x31, 0x00, 0x56, 0x00, 0xC6, 0x00, 0x08, 0x00, 0x23, 0x00, 0x00, 0x3F, 0x6E, 0x01, -/* 00008970 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x7A, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 00008970 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x7D, 0x03, 0xFE, 0xF3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 00008980 */ 0x37, 0x00, 0xFE, 0x4E, 0xC2, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x4E, 0xC2, 0xEF, /* 00008990 */ 0xEF, 0x03, 0x05, 0x07, 0x0E, 0x0B, 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 000089A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 000089B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, -/* 000089C0 */ 0xB8, 0x02, 0x02, 0xFE, 0x60, 0x03, 0x30, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, +/* 000089B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, +/* 000089C0 */ 0xBB, 0x02, 0x02, 0xFE, 0x63, 0x03, 0x30, 0x2C, 0x07, 0x05, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, /* 000089D0 */ 0x06, 0x00, 0x47, 0x00, 0x03, 0x09, 0x1D, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 000089E0 */ 0x00, 0x07, 0x97, 0x07, 0x07, 0x05, 0x47, 0x00, 0x07, 0x0F, 0x03, 0x00, 0x07, 0x47, 0x00, 0x04, /* 000089F0 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x8A, 0xC2, 0x04, 0x00, 0x00, /* 00008A00 */ 0x00, 0x00, 0x0B, 0x00, 0x3C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x1D, 0x00, 0x45, 0x00, 0x00, 0xBF, -/* 00008A10 */ 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x79, 0x03, 0xFE, 0xB3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, +/* 00008A10 */ 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0x7C, 0x03, 0xFE, 0xB3, 0x03, 0x0C, 0xFF, 0xA3, 0x41, /* 00008A20 */ 0x01, 0x00, 0x35, 0x00, 0xFE, 0x96, 0xB6, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, /* 00008A30 */ 0x96, 0xB6, 0xFE, 0xC7, 0x09, 0xFE, 0xC7, 0x09, 0x02, 0x06, 0x17, 0x1B, 0x05, 0xCC, 0xCA, 0x03, /* 00008A40 */ 0x07, 0x05, 0x05, 0x05, 0x05, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x1A, 0xFF, 0xFF, 0xFF, /* 00008A50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 00008A60 */ 0x89, 0x03, 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x04, 0x02, 0xFE, 0x8C, 0x03, 0x02, -/* 00008A70 */ 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x02, 0xFE, 0x8F, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, -/* 00008A80 */ 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, 0x03, 0x02, 0xFE, 0x93, 0x03, 0x02, -/* 00008A90 */ 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, 0x03, 0x02, 0xFE, 0x86, 0x03, 0x02, -/* 00008AA0 */ 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x96, 0x03, +/* 00008A60 */ 0x8C, 0x03, 0x02, 0xFE, 0x8D, 0x03, 0x02, 0xFE, 0x8E, 0x03, 0x04, 0x02, 0xFE, 0x8F, 0x03, 0x02, +/* 00008A70 */ 0xFE, 0x90, 0x03, 0x02, 0xFE, 0x91, 0x03, 0x02, 0xFE, 0x92, 0x03, 0x02, 0xFE, 0x39, 0x03, 0x02, +/* 00008A80 */ 0xFE, 0x93, 0x03, 0x02, 0xFE, 0x94, 0x03, 0x02, 0xFE, 0x95, 0x03, 0x02, 0xFE, 0x96, 0x03, 0x02, +/* 00008A90 */ 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x97, 0x03, 0x02, 0xFE, 0x98, 0x03, 0x02, 0xFE, 0x89, 0x03, 0x02, +/* 00008AA0 */ 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x99, 0x03, /* 00008AB0 */ 0xFE, 0xAD, 0x03, 0x96, 0x03, 0x00, 0x00, 0x00, 0x17, 0xCD, 0x1B, 0x00, 0x96, 0x02, 0x00, 0x00, /* 00008AC0 */ 0x00, 0x1B, 0x92, 0x03, 0x00, 0x00, 0x00, 0x1B, 0x61, 0x1B, 0x1B, 0x00, 0x0F, 0x03, 0x00, 0x1B, /* 00008AD0 */ 0x09, 0x93, 0x00, 0x92, 0x03, 0x00, 0x00, 0x00, 0x1B, 0x61, 0x1B, 0x1B, 0x00, 0x14, 0x15, 0x00, @@ -3692,8 +3692,8 @@ namespace Js /* 00008E30 */ 0x05, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1C, 0x5C, 0x01, 0x1C, 0x92, 0x02, /* 00008E40 */ 0x00, 0x00, 0x00, 0x1C, 0x5C, 0x02, 0x1C, 0x5C, 0x03, 0x16, 0x1F, 0x04, 0x1B, 0x1B, 0x47, 0x00, /* 00008E50 */ 0x1B, 0x09, 0x05, 0x00, 0xA8, 0x1B, 0x47, 0x00, 0x1B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 00008E60 */ 0x00, 0x00, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, 0x4F, -/* 00008E70 */ 0x02, 0xFE, 0x97, 0x03, 0xFE, 0xC6, 0x01, 0x00, 0xFE, 0xD8, 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, +/* 00008E60 */ 0x00, 0x00, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x52, +/* 00008E70 */ 0x02, 0xFE, 0x9A, 0x03, 0xFE, 0xC9, 0x01, 0x00, 0xFE, 0xD8, 0xB6, 0x1C, 0x06, 0x00, 0x00, 0x00, /* 00008E80 */ 0x09, 0x00, 0x26, 0x00, 0x11, 0x00, 0x2C, 0x00, 0x24, 0x00, 0x5C, 0x00, 0x30, 0x00, 0x64, 0x00, /* 00008E90 */ 0x12, 0x00, 0x3B, 0x00, 0x2D, 0x00, 0xAA, 0x00, 0x11, 0x00, 0x29, 0x00, 0x12, 0x00, 0x3B, 0x00, /* 00008EA0 */ 0x30, 0x00, 0x5F, 0x00, 0x12, 0x00, 0x3B, 0x00, 0x2D, 0x00, 0x79, 0x00, 0x11, 0x00, 0x2A, 0x00, @@ -3712,16 +3712,16 @@ namespace Js /* 00008F70 */ 0x00, 0x06, 0x5C, 0x01, 0x06, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x5C, /* 00008F80 */ 0x02, 0x06, 0x5C, 0x03, 0x03, 0x1F, 0x04, 0xFF, 0x05, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, /* 00008F90 */ 0xFE, 0x12, 0xBF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x2D, 0x00, 0x33, 0x00, 0x5C, 0x00, -/* 00008FA0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x78, 0x03, 0xFE, 0x82, 0x03, 0x0C, 0xFF, +/* 00008FA0 */ 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, 0xFE, 0x7B, 0x03, 0xFE, 0x82, 0x03, 0x0C, 0xFF, /* 00008FB0 */ 0xA3, 0x41, 0x01, 0x00, 0x34, 0x00, 0xFE, 0xDC, 0xAC, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, /* 00008FC0 */ 0xFE, 0xDC, 0xAC, 0xFE, 0x1F, 0x09, 0xFE, 0x1F, 0x09, 0x07, 0x15, 0x1A, 0x05, 0x93, 0x8D, 0x03, /* 00008FD0 */ 0x03, 0x01, 0x0C, 0x0C, 0x0C, 0x0C, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00008FE0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00008FF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, 0x02, 0xFE, 0x7F, 0x03, 0x02, -/* 00009000 */ 0xFE, 0x80, 0x03, 0x09, 0x02, 0xFE, 0x81, 0x03, 0x02, 0xFE, 0x82, 0x03, 0x02, 0xFE, 0x83, 0x03, -/* 00009010 */ 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0xC0, 0x02, 0x02, 0xFE, 0xC1, 0x02, -/* 00009020 */ 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, -/* 00009030 */ 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0xFE, 0x69, 0x02, 0xA8, 0x1A, 0x14, 0x03, 0x00, +/* 00008FF0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x04, 0x08, 0x02, 0xFE, 0x82, 0x03, 0x02, +/* 00009000 */ 0xFE, 0x83, 0x03, 0x09, 0x02, 0xFE, 0x84, 0x03, 0x02, 0xFE, 0x85, 0x03, 0x02, 0xFE, 0x86, 0x03, +/* 00009010 */ 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x02, 0xFE, 0xC4, 0x02, +/* 00009020 */ 0x02, 0xFE, 0xC5, 0x02, 0x02, 0xFE, 0x87, 0x03, 0x02, 0xFE, 0x88, 0x03, 0x02, 0xFE, 0x89, 0x03, +/* 00009030 */ 0x02, 0xFE, 0x8A, 0x03, 0x02, 0xFE, 0x8B, 0x03, 0xFE, 0x69, 0x02, 0xA8, 0x1A, 0x14, 0x03, 0x00, /* 00009040 */ 0x15, 0x1A, 0x09, 0x22, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1A, 0x07, /* 00009050 */ 0x03, 0x00, 0x5C, 0x00, 0x03, 0xCB, 0x1B, 0x5C, 0x01, 0x1B, 0x5C, 0x02, 0x02, 0x1F, 0x03, 0x1A, /* 00009060 */ 0x1A, 0x47, 0x15, 0x1A, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, @@ -3761,19 +3761,19 @@ namespace Js /* 00009280 */ 0x00, 0x00, 0x00, 0x7A, 0x0C, 0x1B, 0x08, 0x7A, 0x04, 0x1B, 0x09, 0x7A, 0x04, 0x1B, 0x0A, 0x7A, /* 00009290 */ 0x04, 0x1B, 0x0B, 0x5C, 0x03, 0x1B, 0x1F, 0x04, 0xFF, 0x1A, 0x47, 0x00, 0x15, 0x09, 0x02, 0x00, /* 000092A0 */ 0xA8, 0x00, 0x24, 0x00, 0x06, 0x90, 0x00, 0x78, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 000092B0 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 000092C0 */ 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 000092D0 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x48, -/* 000092E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, -/* 000092F0 */ 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, -/* 00009300 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, -/* 00009310 */ 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, -/* 00009320 */ 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, -/* 00009330 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -/* 00009340 */ 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, -/* 00009350 */ 0xFE, 0xFE, 0x02, 0xFE, 0x46, 0x02, 0xFE, 0x47, 0x02, 0xFE, 0x48, 0x02, 0xFE, 0x49, 0x02, 0xFE, -/* 00009360 */ 0x4B, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4C, 0x02, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7C, -/* 00009370 */ 0x01, 0xFE, 0x7D, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, +/* 000092B0 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 000092C0 */ 0x01, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 000092D0 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x48, +/* 000092E0 */ 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, +/* 000092F0 */ 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, +/* 00009300 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, +/* 00009310 */ 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, +/* 00009320 */ 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, +/* 00009330 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, +/* 00009340 */ 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, +/* 00009350 */ 0xFE, 0x01, 0x03, 0xFE, 0x49, 0x02, 0xFE, 0x4A, 0x02, 0xFE, 0x4B, 0x02, 0xFE, 0x4C, 0x02, 0xFE, +/* 00009360 */ 0x4E, 0x02, 0xFE, 0x4D, 0x02, 0xFE, 0x4F, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x7F, +/* 00009370 */ 0x01, 0xFE, 0x80, 0x01, 0x00, 0xFE, 0x27, 0xAD, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x32, /* 00009380 */ 0x00, 0x22, 0x00, 0x51, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x03, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x46, /* 00009390 */ 0x00, 0x38, 0x00, 0x96, 0x00, 0x03, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x46, 0x00, 0x2A, 0x00, 0x79, /* 000093A0 */ 0x00, 0x03, 0x00, 0x3C, 0x00, 0x17, 0x00, 0x58, 0x00, 0x3A, 0x00, 0xCF, 0x00, 0x3A, 0x00, 0xD0, @@ -3783,14 +3783,14 @@ namespace Js /* 000093E0 */ 0x00, 0xFE, 0x40, 0x7A, 0x06, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x40, 0x7A, 0xFE, /* 000093F0 */ 0xA1, 0x31, 0xFE, 0xA1, 0x31, 0x01, 0x0D, 0x22, 0x28, 0x09, 0xA6, 0xA6, 0x01, 0x09, 0x07, 0x07, /* 00009400 */ 0x07, 0x07, 0x05, 0x02, 0x25, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009410 */ 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x43, -/* 00009420 */ 0x03, 0x02, 0xFE, 0x44, 0x03, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x45, 0x03, 0x02, -/* 00009430 */ 0xFE, 0x46, 0x03, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, -/* 00009440 */ 0x02, 0xFE, 0xC2, 0x02, 0x03, 0x02, 0xFE, 0xF3, 0x02, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x48, -/* 00009450 */ 0x03, 0x02, 0xFE, 0x49, 0x03, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, 0x03, 0x02, 0xFE, 0x4C, -/* 00009460 */ 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, -/* 00009470 */ 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, -/* 00009480 */ 0x23, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x52, 0x03, 0xFE, 0x59, +/* 00009410 */ 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x46, +/* 00009420 */ 0x03, 0x02, 0xFE, 0x47, 0x03, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x48, 0x03, 0x02, +/* 00009430 */ 0xFE, 0x49, 0x03, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, +/* 00009440 */ 0x02, 0xFE, 0xC5, 0x02, 0x03, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x4B, +/* 00009450 */ 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, +/* 00009460 */ 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, +/* 00009470 */ 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, +/* 00009480 */ 0x26, 0x03, 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x55, 0x03, 0xFE, 0x59, /* 00009490 */ 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, /* 000094A0 */ 0x2A, 0x14, 0x15, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 000094B0 */ 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x26, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, @@ -3845,17 +3845,17 @@ namespace Js /* 000097C0 */ 0x2C, 0x7A, 0x2C, 0x2B, 0x06, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, 0x5C, 0x03, 0x2B, /* 000097D0 */ 0x1F, 0x04, 0xFF, 0x2A, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, /* 000097E0 */ 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, 0x00, -/* 000097F0 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, -/* 00009800 */ 0x00, 0x7D, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 00009810 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00009820 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, -/* 00009830 */ 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, -/* 00009840 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, -/* 00009850 */ 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, -/* 00009860 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, -/* 00009870 */ 0x00, 0x00, 0xFE, 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, -/* 00009880 */ 0x01, 0xFE, 0x14, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0xC6, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x53, -/* 00009890 */ 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE5, 0x01, 0x01, 0xFE, 0xE7, 0x01, 0xFE, 0x59, 0x7A, 0x0F, 0x06, +/* 000097F0 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, +/* 00009800 */ 0x00, 0x80, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, +/* 00009810 */ 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00009820 */ 0x00, 0x2C, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, +/* 00009830 */ 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, +/* 00009840 */ 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, +/* 00009850 */ 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, +/* 00009860 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, +/* 00009870 */ 0x00, 0x00, 0xFE, 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, +/* 00009880 */ 0x01, 0xFE, 0x17, 0x01, 0xFE, 0x83, 0x01, 0xFE, 0xC9, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x56, +/* 00009890 */ 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE8, 0x01, 0x01, 0xFE, 0xEA, 0x01, 0xFE, 0x59, 0x7A, 0x0F, 0x06, /* 000098A0 */ 0x00, 0x00, 0x00, 0x3E, 0x00, 0x87, 0x19, 0x44, 0x00, 0xDF, 0x02, 0x46, 0x00, 0xA2, 0x05, 0x24, /* 000098B0 */ 0x00, 0x4C, 0x03, 0x24, 0x00, 0x54, 0x00, 0x4A, 0x00, 0x9D, 0x00, 0x35, 0x00, 0x23, 0x01, 0x55, /* 000098C0 */ 0x00, 0x9A, 0x00, 0x36, 0x00, 0x49, 0x00, 0x52, 0x00, 0xA0, 0x00, 0x60, 0x00, 0xD8, 0x04, 0x71, @@ -3866,8 +3866,8 @@ namespace Js /* 00009910 */ 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x8F, 0xA8, 0xFE, 0x61, 0x02, 0xFE, 0x61, 0x02, 0x05, 0x05, /* 00009920 */ 0x08, 0x04, 0x25, 0x24, 0x04, 0x01, 0x09, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009940 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, -/* 00009950 */ 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, +/* 00009940 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, +/* 00009950 */ 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x8A, 0x5B, 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, /* 00009960 */ 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, /* 00009970 */ 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, /* 00009980 */ 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, @@ -3876,15 +3876,15 @@ namespace Js /* 000099B0 */ 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, 0x09, 0x00, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, /* 000099C0 */ 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, /* 000099D0 */ 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x61, 0x00, 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, -/* 000099E0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x43, +/* 000099E0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0x46, /* 000099F0 */ 0x02, 0x00, 0xFE, 0xB6, 0xA8, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, /* 00009A00 */ 0x87, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x6A, 0x00, 0x1E, 0x00, 0x87, 0x00, 0x09, 0x00, -/* 00009A10 */ 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x23, 0x03, 0xFE, 0x53, 0x03, +/* 00009A10 */ 0x38, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x0F, 0xFE, 0x26, 0x03, 0xFE, 0x53, 0x03, /* 00009A20 */ 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x30, 0x00, 0xFE, 0xA2, 0xA3, 0x01, 0xFF, 0x00, 0x10, 0x01, /* 00009A30 */ 0x00, 0x01, 0x01, 0xFE, 0xA2, 0xA3, 0xFE, 0x1A, 0x04, 0xFE, 0x1A, 0x04, 0x02, 0x06, 0x07, 0x0B, /* 00009A40 */ 0x05, 0x40, 0x40, 0x04, 0x07, 0x08, 0x03, 0x03, 0x03, 0x03, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009A50 */ 0x09, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009A60 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x03, +/* 00009A60 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5E, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x03, /* 00009A70 */ 0x04, 0xFE, 0x10, 0x01, 0x5B, 0x07, 0xB3, 0x07, 0x07, 0x2C, 0x0B, 0x07, 0x15, 0x03, 0x00, 0x0B, /* 00009A80 */ 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, /* 00009A90 */ 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, @@ -3902,8 +3902,8 @@ namespace Js /* 00009B50 */ 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x03, 0x0C, 0x1F, 0x04, 0xFF, 0x0B, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 00009B60 */ 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x06, 0x92, 0x03, 0x00, 0x00, 0x00, /* 00009B70 */ 0x0C, 0x5C, 0x01, 0x0C, 0xCB, 0x0C, 0x5C, 0x02, 0x0C, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, -/* 00009B80 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, 0x02, 0xFE, -/* 00009B90 */ 0x5C, 0x03, 0xFE, 0xE8, 0x01, 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, +/* 00009B80 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, 0x02, 0xFE, +/* 00009B90 */ 0x5F, 0x03, 0xFE, 0xEB, 0x01, 0x00, 0xFE, 0xD8, 0xA3, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, /* 00009BA0 */ 0x3D, 0x00, 0x1E, 0x00, 0x8E, 0x00, 0x21, 0x00, 0x4C, 0x00, 0x21, 0x00, 0x6A, 0x00, 0x1E, 0x00, /* 00009BB0 */ 0x90, 0x00, 0x22, 0x00, 0x49, 0x00, 0x37, 0x00, 0x4A, 0x01, 0x27, 0x00, 0x3F, 0x00, 0x00, 0xC3, /* 00009BC0 */ 0x9B, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, @@ -3911,18 +3911,18 @@ namespace Js /* 00009BE0 */ 0x01, 0x00, 0x02, 0x02, 0xFE, 0x62, 0xA6, 0xFC, 0xFC, 0x05, 0x04, 0x06, 0x0D, 0x0D, 0x05, 0x02, /* 00009BF0 */ 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009C00 */ 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009C10 */ 0x00, 0x00, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0x0A, 0x03, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, +/* 00009C10 */ 0x00, 0x00, 0x02, 0xFE, 0x60, 0x03, 0x02, 0xFE, 0x0D, 0x03, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 00009C20 */ 0x02, 0x00, 0x00, 0x00, 0x06, 0x2F, 0x07, 0x02, 0x04, 0x2D, 0x06, 0x06, 0x07, 0x15, 0x03, 0x00, /* 00009C30 */ 0x06, 0x03, 0x09, 0x20, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x8E, /* 00009C40 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x2F, 0x08, 0x02, 0x04, 0x97, 0x07, 0x07, /* 00009C50 */ 0x08, 0x9C, 0x07, 0x06, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x93, 0xA6, 0x03, /* 00009C60 */ 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x5B, 0x00, 0x22, 0x00, 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 00009C70 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x51, 0x03, 0xFE, 0x37, 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, +/* 00009C70 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x54, 0x03, 0xFE, 0x37, 0x03, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, /* 00009C80 */ 0x2F, 0x00, 0xFE, 0xAA, 0x9C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAA, 0x9C, 0xFE, /* 00009C90 */ 0xF1, 0x02, 0xFE, 0xF1, 0x02, 0x08, 0x07, 0x0B, 0x07, 0x3D, 0x39, 0x04, 0x03, 0x09, 0x05, 0x05, /* 00009CA0 */ 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 00009CB0 */ 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 00009CC0 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xC3, 0x02, 0x01, +/* 00009CC0 */ 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x5D, 0x03, 0x02, 0xFE, 0xC6, 0x02, 0x01, /* 00009CD0 */ 0x00, 0x00, 0x00, 0x00, 0x04, 0xED, 0x5B, 0x08, 0xB3, 0x08, 0x08, 0x8E, 0x04, 0x00, 0x00, 0x00, /* 00009CE0 */ 0x2D, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, /* 00009CF0 */ 0x01, 0x07, 0x1F, 0x02, 0x0B, 0x0B, 0x47, 0x07, 0x0B, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, @@ -3938,17 +3938,17 @@ namespace Js /* 00009D90 */ 0x04, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0D, 0x2A, 0x0E, 0x05, 0x14, 0x03, 0x00, 0x07, 0x0E, 0x09, /* 00009DA0 */ 0x06, 0x00, 0x47, 0x0E, 0x05, 0x09, 0x03, 0x00, 0x47, 0x0E, 0x07, 0x5C, 0x01, 0x0E, 0x5C, 0x02, /* 00009DB0 */ 0x09, 0x1F, 0x03, 0x0C, 0x0C, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, -/* 00009DC0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x27, 0x02, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x36, -/* 00009DD0 */ 0x02, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x31, +/* 00009DC0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x2A, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x39, +/* 00009DD0 */ 0x02, 0xFE, 0xFB, 0x01, 0x00, 0xFE, 0xD4, 0x9C, 0x08, 0x05, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x31, /* 00009DE0 */ 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, 0x7F, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, 0x00, 0x66, /* 00009DF0 */ 0x00, 0x1E, 0x00, 0xD8, 0x00, 0x4E, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, -/* 00009E00 */ 0x07, 0xFE, 0xC3, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, +/* 00009E00 */ 0x07, 0xFE, 0xC6, 0x02, 0xFE, 0x15, 0x03, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x2E, 0x00, 0xFE, /* 00009E10 */ 0xEB, 0x96, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xEB, 0x96, 0xFE, 0x64, 0x05, 0xFE, /* 00009E20 */ 0x64, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x04, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, 0xFF, /* 00009E30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, /* 00009E40 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, /* 00009E50 */ 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, -/* 00009E60 */ 0x04, 0x02, 0xFE, 0xC3, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, +/* 00009E60 */ 0x04, 0x02, 0xFE, 0xC6, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, 0xA8, /* 00009E70 */ 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, 0x00, /* 00009E80 */ 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, 0x08, 0x0F, 0x61, 0x0F, 0x0A, 0x00, /* 00009E90 */ 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x03, 0x47, 0x09, 0x0F, 0x6A, @@ -3972,10 +3972,10 @@ namespace Js /* 00009FB0 */ 0x0D, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, /* 00009FC0 */ 0x06, 0x8E, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x01, 0x11, 0x8E, 0x01, /* 00009FD0 */ 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, 0x0C, -/* 00009FE0 */ 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x03, +/* 00009FE0 */ 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, 0x06, /* 00009FF0 */ 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, -/* 0000A000 */ 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x43, 0x02, 0xFE, -/* 0000A010 */ 0x43, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, +/* 0000A000 */ 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x46, 0x02, 0xFE, +/* 0000A010 */ 0x46, 0x02, 0xDB, 0x00, 0xFE, 0x81, 0x97, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, 0x00, /* 0000A020 */ 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, 0x00, /* 0000A030 */ 0x07, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x1C, 0x00, 0x59, 0x00, 0x1E, 0x00, 0x3A, 0x00, /* 0000A040 */ 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0x9F, 0x00, 0x1E, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, 0x00, @@ -3986,7 +3986,7 @@ namespace Js /* 0000A090 */ 0xFE, 0x73, 0x02, 0x09, 0x09, 0x0E, 0x07, 0x40, 0x3C, 0x03, 0x06, 0x0B, 0x03, 0x03, 0x03, 0x03, /* 0000A0A0 */ 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A0B0 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A0C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0x43, 0x03, 0x04, +/* 0000A0C0 */ 0x00, 0x00, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x02, 0xFE, 0x47, 0x03, 0x02, 0xFE, 0x46, 0x03, 0x04, /* 0000A0D0 */ 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xFA, 0x5B, 0x09, 0xB3, 0x09, 0x09, /* 0000A0E0 */ 0xAE, 0x0B, 0x2C, 0x0E, 0x09, 0x15, 0x03, 0x00, 0x0E, 0x03, 0x09, 0x34, 0x00, 0x8E, 0x03, 0x00, /* 0000A0F0 */ 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0xE1, 0x0E, 0x09, 0x0E, 0x00, 0x0F, 0x21, 0x00, 0x0E, @@ -4003,23 +4003,23 @@ namespace Js /* 0000A1A0 */ 0x0F, 0x10, 0x02, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x10, 0x2A, 0x11, 0x07, 0x14, 0x03, 0x00, 0x0C, /* 0000A1B0 */ 0x11, 0x09, 0x06, 0x00, 0x47, 0x11, 0x07, 0x09, 0x03, 0x00, 0x47, 0x11, 0x0C, 0x5C, 0x01, 0x11, /* 0000A1C0 */ 0x5C, 0x02, 0x0A, 0x1F, 0x03, 0x0F, 0x0F, 0x5C, 0x01, 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, -/* 0000A1D0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0xF8, 0x01, +/* 0000A1D0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0xFB, 0x01, /* 0000A1E0 */ 0x00, 0xFE, 0x59, 0x94, 0x07, 0x07, 0x00, 0x00, 0x00, 0x21, 0x00, 0x58, 0x00, 0x1E, 0x00, 0x7B, /* 0000A1F0 */ 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x27, 0x00, 0x58, 0x00, 0x1E, 0x00, 0x8F, 0x00, 0x4E, 0x00, 0x56, -/* 0000A200 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x07, 0xFE, 0x53, 0x03, 0xFE, 0x94, 0x02, 0x0C, +/* 0000A200 */ 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x07, 0xFE, 0x56, 0x03, 0xFE, 0x94, 0x02, 0x0C, /* 0000A210 */ 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x2C, 0x00, 0xFE, 0x9C, 0x7A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, /* 0000A220 */ 0x04, 0xFE, 0x9C, 0x7A, 0xFE, 0x34, 0x19, 0xFE, 0x34, 0x19, 0x18, 0x23, 0x37, 0x07, 0xFE, 0x83, /* 0000A230 */ 0x01, 0xFE, 0x5E, 0x01, 0x03, 0x10, 0x45, 0x1E, 0x1E, 0x1E, 0x1E, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000A240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000A250 */ 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, -/* 0000A260 */ 0x03, 0x04, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, -/* 0000A270 */ 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0x48, 0x03, -/* 0000A280 */ 0x02, 0xFE, 0x54, 0x03, 0x02, 0xFE, 0x55, 0x03, 0x02, 0xFE, 0x49, 0x03, 0x01, 0x00, 0x00, 0x00, -/* 0000A290 */ 0x00, 0x02, 0xFE, 0x4A, 0x03, 0x02, 0xFE, 0x56, 0x03, 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0xA5, -/* 0000A2A0 */ 0x02, 0x02, 0xFE, 0x4B, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, -/* 0000A2B0 */ 0xFE, 0x4E, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x02, 0xFE, 0x50, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, -/* 0000A2C0 */ 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, -/* 0000A2D0 */ 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xE0, 0x05, 0x2C, 0x38, 0x23, +/* 0000A250 */ 0xFF, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, +/* 0000A260 */ 0x03, 0x04, 0x02, 0xFE, 0xC6, 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, +/* 0000A270 */ 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0x4B, 0x03, +/* 0000A280 */ 0x02, 0xFE, 0x57, 0x03, 0x02, 0xFE, 0x58, 0x03, 0x02, 0xFE, 0x4C, 0x03, 0x01, 0x00, 0x00, 0x00, +/* 0000A290 */ 0x00, 0x02, 0xFE, 0x4D, 0x03, 0x02, 0xFE, 0x59, 0x03, 0x02, 0xFE, 0x5A, 0x03, 0x02, 0xFE, 0xA8, +/* 0000A2A0 */ 0x02, 0x02, 0xFE, 0x4E, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x00, 0x02, +/* 0000A2B0 */ 0xFE, 0x51, 0x03, 0x02, 0xFE, 0x52, 0x03, 0x02, 0xFE, 0x53, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x02, +/* 0000A2C0 */ 0xFE, 0x5B, 0x03, 0x02, 0xFE, 0x4F, 0x03, 0x01, 0x14, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, +/* 0000A2D0 */ 0x00, 0x02, 0xFE, 0x50, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xE0, 0x05, 0x2C, 0x38, 0x23, /* 0000A2E0 */ 0x0D, 0x03, 0x00, 0x38, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, /* 0000A2F0 */ 0x00, 0x39, 0x6C, 0x38, 0x39, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x39, 0x1F, 0x01, 0xFF, 0x38, /* 0000A300 */ 0x8E, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x38, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, @@ -4114,12 +4114,12 @@ namespace Js /* 0000A890 */ 0x00, 0x00, 0x39, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, /* 0000A8A0 */ 0x00, 0x00, 0x3A, 0x5C, 0x01, 0x3A, 0x61, 0x3A, 0x23, 0x1B, 0x5C, 0x02, 0x3A, 0x1F, 0x03, 0x39, /* 0000A8B0 */ 0x39, 0x76, 0x39, 0x38, 0x1C, 0x76, 0x06, 0x23, 0x1D, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000A8C0 */ 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xD9, -/* 0000A8D0 */ 0x01, 0xFE, 0xDA, 0x01, 0xFE, 0x33, 0x02, 0xFE, 0x34, 0x02, 0xFE, 0xFB, 0x01, 0xF9, 0xFE, 0x59, -/* 0000A8E0 */ 0x03, 0xFE, 0xEA, 0x01, 0xFE, 0xE2, 0x01, 0xFE, 0x45, 0x02, 0xFE, 0xDF, 0x01, 0xFE, 0xE0, 0x01, -/* 0000A8F0 */ 0xFE, 0xE1, 0x01, 0xFE, 0xD6, 0x01, 0xFE, 0xD4, 0x01, 0xFE, 0xD5, 0x01, 0xFE, 0xD7, 0x01, 0xFE, -/* 0000A900 */ 0xD8, 0x01, 0xFE, 0xDE, 0x01, 0xFE, 0xDC, 0x01, 0xFE, 0xF9, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0xDD, -/* 0000A910 */ 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x36, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, +/* 0000A8C0 */ 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xDC, +/* 0000A8D0 */ 0x01, 0xFE, 0xDD, 0x01, 0xFE, 0x36, 0x02, 0xFE, 0x37, 0x02, 0xFE, 0xFE, 0x01, 0xFC, 0xFE, 0x5C, +/* 0000A8E0 */ 0x03, 0xFE, 0xED, 0x01, 0xFE, 0xE5, 0x01, 0xFE, 0x48, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xE3, 0x01, +/* 0000A8F0 */ 0xFE, 0xE4, 0x01, 0xFE, 0xD9, 0x01, 0xFE, 0xD7, 0x01, 0xFE, 0xD8, 0x01, 0xFE, 0xDA, 0x01, 0xFE, +/* 0000A900 */ 0xDB, 0x01, 0xFE, 0xE1, 0x01, 0xFE, 0xDF, 0x01, 0xFE, 0xFC, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0xE0, +/* 0000A910 */ 0x01, 0xFE, 0xE0, 0x01, 0xFE, 0x39, 0x02, 0x00, 0xFE, 0xF4, 0x7A, 0x49, 0x00, 0x00, 0x00, 0x00, /* 0000A920 */ 0x0B, 0x00, 0x3C, 0x00, 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0x9C, 0x00, 0x1E, 0x00, 0x6E, 0x00, /* 0000A930 */ 0x04, 0x00, 0x64, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x22, 0x00, 0x51, 0x00, 0x1E, 0x00, 0x4C, 0x00, /* 0000A940 */ 0x31, 0x00, 0x72, 0x00, 0x35, 0x00, 0x73, 0x00, 0x03, 0x00, 0x2B, 0x00, 0x2A, 0x00, 0x60, 0x00, @@ -4143,11 +4143,11 @@ namespace Js /* 0000AA60 */ 0x00, 0x01, 0x01, 0xFE, 0xA2, 0x49, 0xFE, 0x43, 0x30, 0xFE, 0x43, 0x30, 0x0B, 0x17, 0x1B, 0x09, /* 0000AA70 */ 0x99, 0x99, 0x01, 0x09, 0x07, 0x07, 0x07, 0x07, 0x05, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000AA80 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, -/* 0000AA90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xBE, 0x02, 0x02, 0xFE, 0x1D, 0x03, 0x02, -/* 0000AAA0 */ 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1F, 0x03, 0x02, 0xFE, 0x20, -/* 0000AAB0 */ 0x03, 0x02, 0xFE, 0xA7, 0x02, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x08, 0x02, 0xFE, -/* 0000AAC0 */ 0xC2, 0x02, 0x03, 0x02, 0xFE, 0x21, 0x03, 0x09, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x22, 0x03, -/* 0000AAD0 */ 0x02, 0xFE, 0x23, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x02, 0xFE, 0x25, 0x03, 0x02, 0xFE, 0x26, 0x03, +/* 0000AA90 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xC1, 0x02, 0x02, 0xFE, 0x20, 0x03, 0x02, +/* 0000AAA0 */ 0xFE, 0x21, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x22, 0x03, 0x02, 0xFE, 0x23, +/* 0000AAB0 */ 0x03, 0x02, 0xFE, 0xAA, 0x02, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x08, 0x02, 0xFE, +/* 0000AAC0 */ 0xC5, 0x02, 0x03, 0x02, 0xFE, 0x24, 0x03, 0x09, 0x02, 0xFE, 0xC4, 0x02, 0x02, 0xFE, 0x25, 0x03, +/* 0000AAD0 */ 0x02, 0xFE, 0x26, 0x03, 0x02, 0xFE, 0x27, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x02, 0xFE, 0x29, 0x03, /* 0000AAE0 */ 0xFE, 0x24, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, /* 0000AAF0 */ 0x00, 0x00, 0x1D, 0x14, 0x15, 0x00, 0x1D, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000AB00 */ 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x03, 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, @@ -4199,17 +4199,17 @@ namespace Js /* 0000ADE0 */ 0x1E, 0x06, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0x1F, 0x04, 0xFF, /* 0000ADF0 */ 0x1D, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, /* 0000AE00 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x03, -/* 0000AE10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, -/* 0000AE20 */ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, -/* 0000AE30 */ 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x2C, 0x00, -/* 0000AE40 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, -/* 0000AE50 */ 0x00, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x04, -/* 0000AE60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 0000AE70 */ 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, -/* 0000AE80 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, -/* 0000AE90 */ 0xFD, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, 0x7C, 0x01, 0xFE, 0x14, -/* 0000AEA0 */ 0x01, 0xFE, 0x80, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x27, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE4, -/* 0000AEB0 */ 0x01, 0x01, 0xFE, 0xE9, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x09, +/* 0000AE10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, +/* 0000AE20 */ 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, +/* 0000AE30 */ 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x2C, 0x00, +/* 0000AE40 */ 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, +/* 0000AE50 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x04, +/* 0000AE60 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 0000AE70 */ 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, +/* 0000AE80 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, +/* 0000AE90 */ 0x00, 0x02, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x17, +/* 0000AEA0 */ 0x01, 0xFE, 0x83, 0x01, 0x02, 0x01, 0x01, 0x00, 0xFE, 0x2A, 0x03, 0x02, 0x02, 0x00, 0xFE, 0xE7, +/* 0000AEB0 */ 0x01, 0x01, 0xFE, 0xEC, 0x01, 0xFE, 0xBB, 0x49, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x09, /* 0000AEC0 */ 0x17, 0x44, 0x00, 0x48, 0x04, 0x46, 0x00, 0xC4, 0x05, 0x24, 0x00, 0x41, 0x00, 0x24, 0x00, 0x67, /* 0000AED0 */ 0x03, 0x4A, 0x00, 0x95, 0x00, 0x55, 0x00, 0x92, 0x00, 0x36, 0x00, 0x47, 0x00, 0x52, 0x00, 0x98, /* 0000AEE0 */ 0x00, 0x60, 0x00, 0xBD, 0x05, 0x71, 0x00, 0x12, 0x03, 0x0D, 0x00, 0x80, 0x00, 0x07, 0x00, 0x17, @@ -4220,7 +4220,7 @@ namespace Js /* 0000AF30 */ 0x02, 0xFE, 0x50, 0x02, 0x05, 0x05, 0x08, 0x04, 0x25, 0x24, 0x03, 0x01, 0x09, 0x04, 0x04, 0x04, /* 0000AF40 */ 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000AF50 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000AF60 */ 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x8A, 0x5B, +/* 0000AF60 */ 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x8A, 0x5B, /* 0000AF70 */ 0x05, 0xB3, 0x05, 0x05, 0x2C, 0x08, 0x05, 0x15, 0x03, 0x00, 0x08, 0x02, 0x09, 0x1E, 0x00, 0x8E, /* 0000AF80 */ 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, 0x00, /* 0000AF90 */ 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x8E, 0x03, 0x00, @@ -4229,18 +4229,18 @@ namespace Js /* 0000AFC0 */ 0x06, 0x08, 0x09, 0x00, 0x00, 0x61, 0x08, 0x06, 0x02, 0x0F, 0x21, 0x00, 0x08, 0x09, 0x00, 0x00, /* 0000AFD0 */ 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x6C, 0x08, 0x09, 0x00, 0x07, 0x03, /* 0000AFE0 */ 0x00, 0x5C, 0x00, 0x09, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x08, 0x61, 0x00, -/* 0000AFF0 */ 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, -/* 0000B000 */ 0x01, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0x00, 0xFE, 0xD3, 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, +/* 0000AFF0 */ 0x06, 0x03, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, +/* 0000B000 */ 0x02, 0xFE, 0x44, 0x02, 0xFE, 0x45, 0x02, 0x00, 0xFE, 0xD3, 0x76, 0x07, 0x05, 0x00, 0x00, 0x00, /* 0000B010 */ 0x0B, 0x00, 0x3D, 0x00, 0x1E, 0x00, 0x80, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, /* 0000B020 */ 0x1E, 0x00, 0x80, 0x00, 0x09, 0x00, 0x39, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x4F, 0xFC, 0x07, -/* 0000B030 */ 0xFE, 0x23, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, +/* 0000B030 */ 0xFE, 0x26, 0x03, 0xFE, 0x64, 0x02, 0x1B, 0xFF, 0xA0, 0x41, 0x03, 0x00, 0x29, 0x00, 0xFE, 0xD8, /* 0000B040 */ 0x70, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0xD8, 0x70, 0xFE, 0x03, 0x05, 0xFE, 0x03, /* 0000B050 */ 0x05, 0x05, 0x0D, 0x10, 0x04, 0x33, 0x32, 0x03, 0x01, 0x09, 0x11, 0x11, 0x11, 0x11, 0x01, 0xFF, /* 0000B060 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, /* 0000B070 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000B080 */ 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x42, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x02, 0xFE, 0xF3, 0x02, -/* 0000B090 */ 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x3B, 0x03, -/* 0000B0A0 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, 0xCB, 0x5B, 0x0D, 0xB3, 0x0D, 0x0D, 0x2C, +/* 0000B080 */ 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x45, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x02, 0xFE, 0xF6, 0x02, +/* 0000B090 */ 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x3E, 0x03, +/* 0000B0A0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, 0xCB, 0x5B, 0x0D, 0xB3, 0x0D, 0x0D, 0x2C, /* 0000B0B0 */ 0x10, 0x0D, 0x15, 0x03, 0x00, 0x10, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, /* 0000B0C0 */ 0x00, 0x00, 0x00, 0x11, 0x6C, 0x10, 0x11, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x11, 0x5C, 0x01, /* 0000B0D0 */ 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x10, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, @@ -4254,20 +4254,20 @@ namespace Js /* 0000B150 */ 0x0E, 0x09, 0x7A, 0x10, 0x00, 0x0A, 0x61, 0x10, 0x0E, 0x0B, 0x7A, 0x10, 0x00, 0x0C, 0x61, 0x10, /* 0000B160 */ 0x0E, 0x0D, 0x7A, 0x10, 0x00, 0x0E, 0x61, 0x10, 0x0E, 0x0F, 0x7A, 0x10, 0x00, 0x10, 0x09, 0x02, /* 0000B170 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, -/* 0000B180 */ 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0xEB, 0x01, 0x00, 0x00, -/* 0000B190 */ 0xED, 0x01, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0xEC, 0x01, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, -/* 0000B1A0 */ 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x41, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0xEA, 0x01, -/* 0000B1B0 */ 0xFE, 0x3B, 0x02, 0xFE, 0x29, 0x03, 0xFE, 0x3C, 0x02, 0xFE, 0xEB, 0x01, 0xFE, 0x3D, 0x02, 0xFE, -/* 0000B1C0 */ 0xED, 0x01, 0xFE, 0x40, 0x02, 0xFE, 0x3B, 0x03, 0xFE, 0x3F, 0x02, 0xFE, 0xEC, 0x01, 0xFE, 0x3E, -/* 0000B1D0 */ 0x02, 0xFE, 0x32, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, +/* 0000B180 */ 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0xEE, 0x01, 0x00, 0x00, +/* 0000B190 */ 0xF0, 0x01, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00, 0x35, 0x03, 0x00, 0x00, +/* 0000B1A0 */ 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x44, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0xED, 0x01, +/* 0000B1B0 */ 0xFE, 0x3E, 0x02, 0xFE, 0x2C, 0x03, 0xFE, 0x3F, 0x02, 0xFE, 0xEE, 0x01, 0xFE, 0x40, 0x02, 0xFE, +/* 0000B1C0 */ 0xF0, 0x01, 0xFE, 0x43, 0x02, 0xFE, 0x3E, 0x03, 0xFE, 0x42, 0x02, 0xFE, 0xEF, 0x01, 0xFE, 0x41, +/* 0000B1D0 */ 0x02, 0xFE, 0x35, 0x03, 0x00, 0xFE, 0x0E, 0x71, 0x07, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x3D, /* 0000B1E0 */ 0x00, 0x1E, 0x00, 0x86, 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x15, 0x00, 0x66, 0x00, 0x1E, 0x00, 0x88, -/* 0000B1F0 */ 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x24, 0x03, +/* 0000B1F0 */ 0x00, 0x4A, 0x00, 0xCF, 0x02, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x27, 0x03, /* 0000B200 */ 0xFE, 0x4C, 0x02, 0x10, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x28, 0x00, 0xFE, 0x63, 0x6B, 0xFF, 0x00, /* 0000B210 */ 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x63, 0x6B, 0xFE, 0x01, 0x03, 0xFE, 0x01, 0x03, 0x09, 0x06, /* 0000B220 */ 0x0B, 0x0B, 0x44, 0x41, 0x03, 0x03, 0x09, 0x08, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B230 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, -/* 0000B250 */ 0x02, 0xFE, 0x41, 0x03, 0x02, 0xFE, 0xBF, 0x02, 0x04, 0xFE, 0x0B, 0x01, 0x5B, 0x08, 0xB3, 0x08, +/* 0000B240 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, +/* 0000B250 */ 0x02, 0xFE, 0x44, 0x03, 0x02, 0xFE, 0xC2, 0x02, 0x04, 0xFE, 0x0B, 0x01, 0x5B, 0x08, 0xB3, 0x08, /* 0000B260 */ 0x08, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x03, 0x00, 0x00, /* 0000B270 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x0C, /* 0000B280 */ 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x04, 0x1F, 0x03, 0xFF, 0x0B, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x07, @@ -4284,18 +4284,18 @@ namespace Js /* 0000B330 */ 0x5C, 0x00, 0x0D, 0x5C, 0x01, 0x06, 0x5C, 0x02, 0x07, 0x61, 0x0E, 0x09, 0x04, 0x5C, 0x03, 0x0E, /* 0000B340 */ 0x61, 0x0E, 0x09, 0x05, 0x5C, 0x04, 0x0E, 0x61, 0x0E, 0x09, 0x06, 0x5C, 0x05, 0x0E, 0x61, 0x0E, /* 0000B350 */ 0x09, 0x07, 0x5C, 0x06, 0x0E, 0x1F, 0x07, 0x0C, 0x0C, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0x00, 0x0B, -/* 0000B360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x02, 0xFE, 0xFE, 0x01, 0xFE, -/* 0000B370 */ 0x41, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, +/* 0000B360 */ 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x35, 0x02, 0xFE, 0x01, 0x02, 0xFE, +/* 0000B370 */ 0x44, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x42, /* 0000B380 */ 0x02, 0x00, 0xFE, 0x91, 0x6B, 0x09, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x39, 0x00, 0x1E, 0x00, /* 0000B390 */ 0x78, 0x00, 0x1E, 0x00, 0x48, 0x00, 0x15, 0x00, 0x62, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x1A, 0x00, /* 0000B3A0 */ 0x24, 0x00, 0x1A, 0x00, 0x26, 0x00, 0x56, 0x00, 0xB5, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, -/* 0000B3B0 */ 0xFC, 0x07, 0xFE, 0xBF, 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, +/* 0000B3B0 */ 0xFC, 0x07, 0xFE, 0xC2, 0x02, 0xFE, 0x28, 0x02, 0x10, 0xFF, 0xA1, 0x41, 0x21, 0x00, 0x27, 0x00, /* 0000B3C0 */ 0xFE, 0x3A, 0x65, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x3A, 0x65, 0xFE, 0x84, 0x05, /* 0000B3D0 */ 0xFE, 0x84, 0x05, 0x0A, 0x08, 0x0F, 0x05, 0x67, 0x5E, 0x03, 0x09, 0x0B, 0x08, 0x07, 0x08, 0x08, /* 0000B3E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, /* 0000B3F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, /* 0000B400 */ 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, -/* 0000B410 */ 0x00, 0x04, 0x02, 0xFE, 0xBF, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, +/* 0000B410 */ 0x00, 0x04, 0x02, 0xFE, 0xC2, 0x02, 0xFE, 0x95, 0x01, 0x5B, 0x0B, 0xB3, 0x0B, 0x0B, 0xAE, 0x0A, /* 0000B420 */ 0xA8, 0x0F, 0x47, 0x08, 0x0F, 0xA8, 0x0F, 0x47, 0x09, 0x0F, 0x61, 0x0F, 0x0A, 0x00, 0x10, 0x03, /* 0000B430 */ 0x00, 0x0F, 0x03, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x04, 0x47, 0x08, 0x0F, 0x61, 0x0F, 0x0A, /* 0000B440 */ 0x00, 0x10, 0x03, 0x00, 0x0F, 0x05, 0x09, 0x07, 0x00, 0x97, 0x0F, 0x0A, 0x03, 0x47, 0x09, 0x0F, @@ -4320,9 +4320,9 @@ namespace Js /* 0000B570 */ 0x00, 0x06, 0x8E, 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x11, 0x5C, 0x01, 0x11, 0x8E, /* 0000B580 */ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x11, 0x4B, 0x11, 0x5C, 0x02, 0x11, 0x5C, 0x03, /* 0000B590 */ 0x0C, 0x1F, 0x04, 0x10, 0x10, 0x76, 0x10, 0x0F, 0x05, 0x61, 0x0F, 0x0D, 0x06, 0x82, 0x0F, 0x0F, -/* 0000B5A0 */ 0x03, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, -/* 0000B5B0 */ 0xF0, 0xFE, 0xFE, 0x02, 0xFE, 0x31, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0xFF, 0x01, 0xFE, 0x42, 0x02, -/* 0000B5C0 */ 0xFE, 0x42, 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, +/* 0000B5A0 */ 0x06, 0x01, 0xFA, 0x0F, 0x47, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, +/* 0000B5B0 */ 0xF0, 0xFE, 0x01, 0x03, 0xFE, 0x34, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x02, 0x02, 0xFE, 0x45, 0x02, +/* 0000B5C0 */ 0xFE, 0x45, 0x02, 0xDB, 0x00, 0xFE, 0xCC, 0x65, 0x14, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x2E, /* 0000B5D0 */ 0x00, 0x05, 0x00, 0x2E, 0x00, 0x0C, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x0C, 0x00, 0x1B, /* 0000B5E0 */ 0x00, 0x07, 0x00, 0x2F, 0x00, 0x18, 0x00, 0x44, 0x00, 0x1C, 0x00, 0x55, 0x00, 0x1E, 0x00, 0x38, /* 0000B5F0 */ 0x00, 0x1E, 0x00, 0x39, 0x00, 0x1B, 0x00, 0x9B, 0x00, 0x1E, 0x00, 0x49, 0x00, 0x0A, 0x00, 0x3B, @@ -4333,7 +4333,7 @@ namespace Js /* 0000B640 */ 0x03, 0xFE, 0xDD, 0x03, 0x0A, 0x08, 0x0E, 0x0B, 0x4F, 0x4B, 0x02, 0x05, 0x0B, 0x07, 0x07, 0x07, /* 0000B650 */ 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000B660 */ 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000B670 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x04, 0x01, 0x01, 0x00, +/* 0000B670 */ 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x21, 0x03, 0x04, 0x01, 0x01, 0x00, /* 0000B680 */ 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x32, 0x01, 0x5B, 0x0A, 0xB3, 0x0A, 0x0A, 0xAE, /* 0000B690 */ 0x08, 0xA8, 0x0C, 0x97, 0x0E, 0x08, 0x03, 0x47, 0x09, 0x0E, 0xA8, 0x0E, 0x14, 0x0B, 0x00, 0x0A, /* 0000B6A0 */ 0x0E, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x0A, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x02, 0x00, 0x00, @@ -4353,24 +4353,24 @@ namespace Js /* 0000B780 */ 0x10, 0x02, 0x07, 0x07, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0B, 0x5C, 0x02, 0x09, 0x61, 0x11, /* 0000B790 */ 0x0C, 0x03, 0x5C, 0x03, 0x11, 0x61, 0x11, 0x0C, 0x04, 0x5C, 0x04, 0x11, 0x61, 0x11, 0x0C, 0x05, /* 0000B7A0 */ 0x5C, 0x05, 0x11, 0x61, 0x11, 0x0C, 0x06, 0x5C, 0x06, 0x11, 0x1F, 0x07, 0x0F, 0x0F, 0x5C, 0x01, -/* 0000B7B0 */ 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x22, -/* 0000B7C0 */ 0x02, 0xFE, 0x20, 0x02, 0xFE, 0xF3, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, -/* 0000B7D0 */ 0xFE, 0x3F, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2E, 0x00, +/* 0000B7B0 */ 0x0F, 0x1F, 0x02, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x25, +/* 0000B7C0 */ 0x02, 0xFE, 0x23, 0x02, 0xFE, 0xF6, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, +/* 0000B7D0 */ 0xFE, 0x42, 0x02, 0x00, 0xFE, 0x3C, 0x61, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x2E, 0x00, /* 0000B7E0 */ 0x12, 0x00, 0x44, 0x00, 0x1E, 0x00, 0x77, 0x00, 0x08, 0x00, 0x2E, 0x00, 0x18, 0x00, 0xF1, 0x00, /* 0000B7F0 */ 0x1A, 0x00, 0x31, 0x00, 0x1A, 0x00, 0x2E, 0x00, 0x1F, 0x00, 0x46, 0x00, 0x27, 0x00, 0x52, 0x00, -/* 0000B800 */ 0x56, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x0F, 0xFE, 0x27, 0x03, 0xFE, +/* 0000B800 */ 0x56, 0x00, 0xBA, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x0F, 0xFD, 0x0F, 0xFE, 0x2A, 0x03, 0xFE, /* 0000B810 */ 0xAF, 0x01, 0x0C, 0xFF, 0xB3, 0x41, 0x01, 0x00, 0x24, 0x00, 0xFE, 0xFE, 0x49, 0x01, 0xFF, 0x00, /* 0000B820 */ 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xFE, 0x49, 0xFE, 0xB6, 0x16, 0xFE, 0xB6, 0x16, 0x03, 0x15, /* 0000B830 */ 0x24, 0x35, 0x08, 0xFE, 0x0B, 0x01, 0xFA, 0x02, 0x0F, 0x44, 0x14, 0x14, 0x14, 0x14, 0x01, 0x32, /* 0000B840 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0xFF, -/* 0000B850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, 0x28, 0x03, 0x04, 0x02, 0xFE, 0xBF, -/* 0000B860 */ 0x02, 0x08, 0x02, 0xFE, 0x0A, 0x03, 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, -/* 0000B870 */ 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, 0x03, 0x02, 0xFE, 0x29, 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, -/* 0000B880 */ 0xFE, 0x2B, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x2E, 0x03, 0x02, -/* 0000B890 */ 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x09, -/* 0000B8A0 */ 0x02, 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, -/* 0000B8B0 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0xB8, 0x02, 0x02, 0xFE, 0x38, 0x03, -/* 0000B8C0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, +/* 0000B850 */ 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x12, 0x03, 0x02, 0xFE, 0x2B, 0x03, 0x04, 0x02, 0xFE, 0xC2, +/* 0000B860 */ 0x02, 0x08, 0x02, 0xFE, 0x0D, 0x03, 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, +/* 0000B870 */ 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, 0x03, 0x02, 0xFE, 0x2C, 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, +/* 0000B880 */ 0xFE, 0x2E, 0x03, 0x02, 0xFE, 0x2F, 0x03, 0x02, 0xFE, 0x30, 0x03, 0x02, 0xFE, 0x31, 0x03, 0x02, +/* 0000B890 */ 0xFE, 0x32, 0x03, 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x07, 0x03, 0x09, +/* 0000B8A0 */ 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, +/* 0000B8B0 */ 0x02, 0xFE, 0x39, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0xBB, 0x02, 0x02, 0xFE, 0x3B, 0x03, +/* 0000B8C0 */ 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x3D, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, /* 0000B8D0 */ 0xFF, 0xFF, 0xFE, 0x20, 0x04, 0xA8, 0x2F, 0xA8, 0x30, 0xA8, 0x31, 0x2C, 0x36, 0x24, 0x0D, 0x03, /* 0000B8E0 */ 0x00, 0x36, 0x02, 0x09, 0x18, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x37, /* 0000B8F0 */ 0x6C, 0x36, 0x37, 0x00, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x37, 0x1F, 0x01, 0xFF, 0x36, 0x8E, 0x02, @@ -4437,11 +4437,11 @@ namespace Js /* 0000BCC0 */ 0x2E, 0x24, 0x0C, 0x76, 0x29, 0x24, 0x0D, 0x76, 0x2A, 0x24, 0x0E, 0x76, 0x2B, 0x24, 0x0F, 0x92, /* 0000BCD0 */ 0x02, 0x00, 0x00, 0x00, 0x36, 0x76, 0x36, 0x24, 0x10, 0x92, 0x03, 0x00, 0x00, 0x00, 0x36, 0x76, /* 0000BCE0 */ 0x36, 0x24, 0x11, 0x92, 0x04, 0x00, 0x00, 0x00, 0x36, 0x76, 0x36, 0x24, 0x12, 0x76, 0x06, 0x24, -/* 0000BCF0 */ 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0xFE, 0x35, 0x02, 0xFE, 0x30, 0x02, -/* 0000BD00 */ 0xFE, 0x35, 0x02, 0xFE, 0xFE, 0x02, 0xFE, 0xF4, 0x01, 0xFE, 0x38, 0x02, 0xFE, 0x04, 0x02, 0xFE, -/* 0000BD10 */ 0xF3, 0x01, 0xFE, 0x29, 0x02, 0xFE, 0x39, 0x02, 0xFE, 0xE2, 0x01, 0xFE, 0x3A, 0x02, 0xFE, 0x3B, -/* 0000BD20 */ 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, -/* 0000BD30 */ 0xFE, 0x41, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0xEC, 0x01, 0xFE, 0x3B, 0x03, 0x00, 0xFE, 0x4C, 0x4A, +/* 0000BCF0 */ 0x13, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0xFE, 0x38, 0x02, 0xFE, 0x33, 0x02, +/* 0000BD00 */ 0xFE, 0x38, 0x02, 0xFE, 0x01, 0x03, 0xFE, 0xF7, 0x01, 0xFE, 0x3B, 0x02, 0xFE, 0x07, 0x02, 0xFE, +/* 0000BD10 */ 0xF6, 0x01, 0xFE, 0x2C, 0x02, 0xFE, 0x3C, 0x02, 0xFE, 0xE5, 0x01, 0xFE, 0x3D, 0x02, 0xFE, 0x3E, +/* 0000BD20 */ 0x02, 0xFE, 0x3F, 0x02, 0xFE, 0x40, 0x02, 0xFE, 0x41, 0x02, 0xFE, 0x42, 0x02, 0xFE, 0x43, 0x02, +/* 0000BD30 */ 0xFE, 0x44, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0xEF, 0x01, 0xFE, 0x3E, 0x03, 0x00, 0xFE, 0x4C, 0x4A, /* 0000BD40 */ 0x35, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x38, 0x00, 0x18, 0x00, 0x42, 0x00, 0x39, 0x00, 0x94, /* 0000BD50 */ 0x00, 0x1E, 0x00, 0x68, 0x00, 0x04, 0x00, 0x60, 0x00, 0x0B, 0x00, 0x3B, 0x00, 0x22, 0x00, 0x51, /* 0000BD60 */ 0x00, 0x1E, 0x00, 0x4C, 0x00, 0x31, 0x00, 0x72, 0x00, 0x31, 0x00, 0x60, 0x00, 0x3B, 0x00, 0x82, @@ -4462,10 +4462,10 @@ namespace Js /* 0000BE50 */ 0x03, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BE60 */ 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000BE70 */ 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, -/* 0000BE80 */ 0xB8, 0x02, 0x02, 0xFE, 0x3C, 0x03, 0x02, 0xFE, 0x32, 0x03, 0x03, 0x04, 0x02, 0xFE, 0x05, 0x03, -/* 0000BE90 */ 0x02, 0xFE, 0x33, 0x03, 0x02, 0xFE, 0x34, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x02, 0xFE, 0x3D, 0x03, -/* 0000BEA0 */ 0x02, 0xFE, 0x3E, 0x03, 0x08, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x2B, -/* 0000BEB0 */ 0x03, 0x02, 0xFE, 0x2A, 0x03, 0x02, 0xFE, 0x40, 0x03, 0xFE, 0x94, 0x01, 0x8E, 0x03, 0x00, 0x00, +/* 0000BE80 */ 0xBB, 0x02, 0x02, 0xFE, 0x3F, 0x03, 0x02, 0xFE, 0x35, 0x03, 0x03, 0x04, 0x02, 0xFE, 0x08, 0x03, +/* 0000BE90 */ 0x02, 0xFE, 0x36, 0x03, 0x02, 0xFE, 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0x02, 0xFE, 0x40, 0x03, +/* 0000BEA0 */ 0x02, 0xFE, 0x41, 0x03, 0x08, 0x02, 0xFE, 0x42, 0x03, 0x02, 0xFE, 0x3A, 0x03, 0x02, 0xFE, 0x2E, +/* 0000BEB0 */ 0x03, 0x02, 0xFE, 0x2D, 0x03, 0x02, 0xFE, 0x43, 0x03, 0xFE, 0x94, 0x01, 0x8E, 0x03, 0x00, 0x00, /* 0000BEC0 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x1B, 0x6C, 0x1A, 0x1B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1B, /* 0000BED0 */ 0x5C, 0x01, 0x15, 0xE0, 0x1C, 0x00, 0x5C, 0x02, 0x1C, 0x1F, 0x03, 0x1A, 0x1A, 0x47, 0x16, 0x1A, /* 0000BEE0 */ 0x97, 0x1A, 0x16, 0x02, 0x47, 0x17, 0x1A, 0x97, 0x1A, 0x16, 0x03, 0x14, 0x03, 0x00, 0x1A, 0x04, @@ -4491,18 +4491,18 @@ namespace Js /* 0000C020 */ 0x2A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x11, 0x09, 0x22, 0x00, 0x15, 0x03, 0x00, 0x18, 0x12, 0x09, /* 0000C030 */ 0x1A, 0x00, 0x15, 0x03, 0x00, 0x18, 0x13, 0x09, 0x12, 0x00, 0x15, 0x03, 0x00, 0x18, 0x14, 0x09, /* 0000C040 */ 0x0A, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0xA8, 0x00, 0x24, 0x00, -/* 0000C050 */ 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, -/* 0000C060 */ 0x03, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0x32, 0x03, 0xFE, 0x25, 0x02, 0x00, 0x0E, 0xFE, -/* 0000C070 */ 0xFB, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x83, 0x00, 0x07, +/* 0000C050 */ 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, +/* 0000C060 */ 0x03, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0x35, 0x03, 0xFE, 0x28, 0x02, 0x00, 0x0E, 0xFE, +/* 0000C070 */ 0xFE, 0x02, 0x00, 0xFE, 0x10, 0x52, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x83, 0x00, 0x07, /* 0000C080 */ 0x00, 0x2D, 0x00, 0x1E, 0x00, 0x4D, 0x00, 0x1C, 0x00, 0x4C, 0x00, 0x6C, 0x00, 0xA0, 0x00, 0x1C, /* 0000C090 */ 0x00, 0x4A, 0x00, 0x0A, 0x00, 0x3C, 0x00, 0x50, 0x00, 0xAB, 0x00, 0x0D, 0x00, 0x4F, 0x00, 0x32, /* 0000C0A0 */ 0x00, 0x01, 0x01, 0x0C, 0x00, 0x43, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, -/* 0000C0B0 */ 0xEF, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, +/* 0000C0B0 */ 0xF2, 0x02, 0xFE, 0x9A, 0x01, 0x1E, 0xFF, 0xA0, 0x41, 0x01, 0x00, 0x22, 0x00, 0xFE, 0x41, 0x47, /* 0000C0C0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x41, 0x47, 0xFE, 0x12, 0x02, 0xFE, 0x12, 0x02, /* 0000C0D0 */ 0x0A, 0x05, 0x0B, 0x06, 0x2A, 0x23, 0x01, 0x02, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, 0xFF, /* 0000C0E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, /* 0000C0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, -/* 0000C100 */ 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1B, 0x03, 0x9B, 0x8E, 0x01, +/* 0000C100 */ 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x1E, 0x03, 0x9B, 0x8E, 0x01, /* 0000C110 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, 0x07, 0x03, 0x00, 0x5C, /* 0000C120 */ 0x00, 0x0C, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x6C, 0x0D, 0x0E, 0x01, /* 0000C130 */ 0x07, 0x01, 0x00, 0x5C, 0x00, 0x0E, 0x1F, 0x01, 0x0D, 0x0D, 0x5C, 0x01, 0x0D, 0xE0, 0x0D, 0x00, @@ -4512,8 +4512,8 @@ namespace Js /* 0000C170 */ 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x08, 0x0B, 0x09, 0x06, 0x00, 0x47, 0x00, 0x06, /* 0000C180 */ 0x09, 0x24, 0x00, 0x97, 0x0B, 0x08, 0x07, 0x47, 0x09, 0x0B, 0xA8, 0x0B, 0x15, 0x03, 0x00, 0x09, /* 0000C190 */ 0x0B, 0x09, 0x0B, 0x00, 0x2F, 0x00, 0x06, 0x04, 0x2F, 0x00, 0x00, 0x09, 0x09, 0x08, 0x00, 0x47, -/* 0000C1A0 */ 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, 0xF6, -/* 0000C1B0 */ 0x01, 0x00, 0x0E, 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x3C, +/* 0000C1A0 */ 0x00, 0x06, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, 0xF9, +/* 0000C1B0 */ 0x01, 0x00, 0x0E, 0xFE, 0x1F, 0x03, 0x00, 0xFE, 0x58, 0x47, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x3C, /* 0000C1C0 */ 0x00, 0x60, 0x00, 0x07, 0x00, 0x20, 0x00, 0x07, 0x00, 0x23, 0x00, 0x11, 0x00, 0x51, 0x00, 0x14, /* 0000C1D0 */ 0x00, 0x41, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x33, 0x00, 0x0A, 0x00, 0x29, 0x00, 0x0B, /* 0000C1E0 */ 0x00, 0x39, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x00, 0xFC, 0x0F, 0xFF, @@ -4529,7 +4529,7 @@ namespace Js /* 0000C280 */ 0x08, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x03, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, /* 0000C290 */ 0x09, 0x5C, 0x01, 0x09, 0x1F, 0x02, 0x08, 0x08, 0x5C, 0x02, 0x08, 0xD4, 0x00, 0x00, 0x00, 0x00, /* 0000C2A0 */ 0x08, 0x5C, 0x03, 0x08, 0x1F, 0x04, 0xFF, 0x07, 0x92, 0x02, 0x00, 0x00, 0x00, 0x00, 0x09, 0x02, -/* 0000C2B0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x19, 0x03, 0x00, 0xFE, 0x7A, 0x44, 0x04, 0x00, +/* 0000C2B0 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x1C, 0x03, 0x00, 0xFE, 0x7A, 0x44, 0x04, 0x00, /* 0000C2C0 */ 0x00, 0x00, 0x00, 0x22, 0x00, 0x30, 0x00, 0x4E, 0x00, 0x5A, 0x02, 0x0B, 0x00, 0x16, 0x00, 0x00, /* 0000C2D0 */ 0xD4, 0xC2, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x0A, 0x00, 0xFC, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C2E0 */ 0xFE, 0x8A, 0x01, 0x6B, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x20, 0x00, 0xFE, 0x0D, 0x45, 0x01, 0xFF, @@ -4546,14 +4546,14 @@ namespace Js /* 0000C390 */ 0x0A, 0x1F, 0x02, 0x09, 0x09, 0x5C, 0x02, 0x09, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5C, 0x03, /* 0000C3A0 */ 0x09, 0x1F, 0x04, 0xFF, 0x08, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, /* 0000C3B0 */ 0x03, 0x00, 0x00, 0x00, 0x09, 0x9C, 0x09, 0x08, 0x04, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000C3C0 */ 0x74, 0x01, 0xFE, 0x1A, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, +/* 0000C3C0 */ 0x77, 0x01, 0xFE, 0x1D, 0x03, 0x00, 0xFE, 0x2E, 0x45, 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, /* 0000C3D0 */ 0x43, 0x00, 0x22, 0x00, 0x37, 0x00, 0x4A, 0x00, 0x28, 0x01, 0x16, 0x00, 0x27, 0x00, 0x00, 0xE3, /* 0000C3E0 */ 0xC3, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x0A, 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, /* 0000C3F0 */ 0x8E, 0x01, 0x56, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x21, 0x00, 0xFE, 0xF2, 0x45, 0xFF, 0x00, 0x10, /* 0000C400 */ 0x01, 0x00, 0x02, 0x02, 0xFE, 0xF2, 0x45, 0xCC, 0xCC, 0x04, 0x03, 0x06, 0x0A, 0x09, 0x03, 0x02, /* 0000C410 */ 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C420 */ 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000C430 */ 0x00, 0x00, 0x02, 0xFE, 0xB8, 0x02, 0x2B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +/* 0000C430 */ 0x00, 0x00, 0x02, 0xFE, 0xBB, 0x02, 0x2B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 0000C440 */ 0x06, 0x97, 0x06, 0x06, 0x03, 0x47, 0x04, 0x06, 0x15, 0x03, 0x00, 0x04, 0x02, 0x09, 0x0E, 0x00, /* 0000C450 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x9C, 0x03, 0x06, 0x04, 0xA8, 0x00, /* 0000C460 */ 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x19, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x34, @@ -4596,13 +4596,13 @@ namespace Js /* 0000C6B0 */ 0x31, 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x06, 0x5C, 0x04, 0x08, 0x1F, 0x05, /* 0000C6C0 */ 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xF0, 0x00, 0xFE, 0xDE, 0x34, /* 0000C6D0 */ 0x03, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x4A, 0x00, 0x2F, 0x00, 0x61, 0x00, 0x00, 0x3F, 0x7E, -/* 0000C6E0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xA7, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, +/* 0000C6E0 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xAA, 0x02, 0xFE, 0x33, 0x01, 0x1D, 0xFF, 0xA2, 0x41, 0x01, /* 0000C6F0 */ 0x00, 0x1B, 0x00, 0xFE, 0x5D, 0x2F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x5D, 0x2F, /* 0000C700 */ 0xFE, 0x7E, 0x03, 0xFE, 0x7E, 0x03, 0x08, 0x08, 0x0C, 0x0A, 0x51, 0x4E, 0x01, 0x07, 0x01, 0x05, /* 0000C710 */ 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C720 */ 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000C730 */ 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0xFC, 0x02, 0x02, 0xFE, 0x16, -/* 0000C740 */ 0x03, 0x02, 0xFE, 0x17, 0x03, 0x02, 0xFE, 0x18, 0x03, 0xFE, 0x54, 0x01, 0xA8, 0x0A, 0x8E, 0x01, +/* 0000C730 */ 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0xFF, 0x02, 0x02, 0xFE, 0x19, +/* 0000C740 */ 0x03, 0x02, 0xFE, 0x1A, 0x03, 0x02, 0xFE, 0x1B, 0x03, 0xFE, 0x54, 0x01, 0xA8, 0x0A, 0x8E, 0x01, /* 0000C750 */ 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, /* 0000C760 */ 0x08, 0x1F, 0x02, 0x0C, 0x0C, 0x47, 0x08, 0x0C, 0x2C, 0x0C, 0x09, 0x15, 0x03, 0x00, 0x0C, 0x03, /* 0000C770 */ 0x09, 0x78, 0x00, 0x61, 0x0C, 0x09, 0x00, 0x47, 0x0A, 0x0C, 0x2C, 0x0C, 0x0A, 0x15, 0x03, 0x00, @@ -4624,16 +4624,16 @@ namespace Js /* 0000C870 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x61, 0x0D, 0x0D, 0x04, 0x5C, 0x02, 0x0D, 0x8E, 0x01, /* 0000C880 */ 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x0D, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x02, 0x1F, 0x01, /* 0000C890 */ 0x0D, 0x0D, 0x5C, 0x03, 0x0D, 0x1F, 0x04, 0x00, 0x0C, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, -/* 0000C8A0 */ 0x00, 0x00, 0xFE, 0x2D, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x28, 0x02, 0xFE, 0xF2, 0x01, 0xFE, 0xF4, +/* 0000C8A0 */ 0x00, 0x00, 0xFE, 0x30, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0x2B, 0x02, 0xFE, 0xF5, 0x01, 0xFE, 0xF7, /* 0000C8B0 */ 0x01, 0x00, 0xFE, 0x9A, 0x2F, 0x0B, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x36, 0x00, 0x0B, 0x00, /* 0000C8C0 */ 0x33, 0x00, 0x07, 0x00, 0x30, 0x00, 0x0B, 0x00, 0x37, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x10, 0x00, /* 0000C8D0 */ 0x4B, 0x00, 0x38, 0x00, 0x9B, 0x00, 0x13, 0x00, 0x4D, 0x00, 0x5C, 0x00, 0x95, 0x00, 0x44, 0x00, -/* 0000C8E0 */ 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE6, 0x02, 0xFE, 0x25, 0x01, +/* 0000C8E0 */ 0x6F, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xE9, 0x02, 0xFE, 0x25, 0x01, /* 0000C8F0 */ 0x24, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x1A, 0x00, 0xFE, 0x60, 0x2D, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000C900 */ 0x05, 0x05, 0xFE, 0x60, 0x2D, 0xFE, 0xB2, 0x01, 0xFE, 0xB2, 0x01, 0x08, 0x05, 0x0B, 0x04, 0x28, /* 0000C910 */ 0x27, 0x01, 0x02, 0x01, 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000C920 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000C930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0xA3, 0x02, 0x04, 0x9D, +/* 0000C930 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x04, 0x9D, /* 0000C940 */ 0x14, 0x0D, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0xA8, 0x0B, 0x14, 0x03, 0x00, 0x05, 0x0B, 0x09, /* 0000C950 */ 0x1B, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, /* 0000C960 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x06, 0x1F, 0x02, 0xFF, 0x0B, 0x8E, 0x01, 0x00, @@ -4644,15 +4644,15 @@ namespace Js /* 0000C9B0 */ 0x02, 0x00, 0x5C, 0x00, 0x0C, 0x5C, 0x01, 0x06, 0x1F, 0x02, 0xFF, 0x0B, 0x8E, 0x01, 0x00, 0x00, /* 0000C9C0 */ 0x00, 0x30, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x07, 0x5C, /* 0000C9D0 */ 0x02, 0x08, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000C9E0 */ 0x23, 0x02, 0xFE, 0xFE, 0x01, 0xFE, 0x2C, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, 0x00, +/* 0000C9E0 */ 0x26, 0x02, 0xFE, 0x01, 0x02, 0xFE, 0x2F, 0x02, 0x00, 0xFE, 0x9B, 0x2D, 0x07, 0x00, 0x00, 0x00, /* 0000C9F0 */ 0x00, 0x12, 0x00, 0x38, 0x00, 0x1B, 0x00, 0x43, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x16, 0x00, 0x4D, /* 0000CA00 */ 0x00, 0x1B, 0x00, 0x43, 0x00, 0x1F, 0x00, 0x32, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x4F, 0xFC, -/* 0000CA10 */ 0x0F, 0xFE, 0xC9, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x18, 0x00, 0xFE, +/* 0000CA10 */ 0x0F, 0xFE, 0xCC, 0x02, 0xFE, 0x12, 0x01, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x18, 0x00, 0xFE, /* 0000CA20 */ 0xB8, 0x29, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0xB8, 0x29, 0xFE, 0x80, 0x03, /* 0000CA30 */ 0xFE, 0x80, 0x03, 0x04, 0x09, 0x0A, 0x10, 0x05, 0x20, 0x20, 0x01, 0x05, 0x03, 0x03, 0x03, 0x03, /* 0000CA40 */ 0x01, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CA50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, -/* 0000CA60 */ 0x02, 0xFE, 0x11, 0x03, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, +/* 0000CA60 */ 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, /* 0000CA70 */ 0x02, 0x03, 0x97, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0B, 0x96, 0x05, 0x00, 0x00, 0x00, 0x0C, 0xCD, /* 0000CA80 */ 0x10, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x10, 0x96, 0x03, 0x00, 0x00, 0x00, 0x02, 0x8E, 0x01, /* 0000CA90 */ 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x03, 0x8E, 0x01, @@ -4663,9 +4663,9 @@ namespace Js /* 0000CAE0 */ 0x11, 0x00, 0x00, 0x00, 0x92, 0x03, 0x00, 0x00, 0x00, 0x12, 0x7A, 0x12, 0x11, 0x00, 0x7A, 0x07, /* 0000CAF0 */ 0x11, 0x01, 0x7A, 0x07, 0x11, 0x02, 0x5C, 0x03, 0x11, 0x1F, 0x04, 0xFF, 0x10, 0x92, 0x02, 0x00, /* 0000CB00 */ 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, -/* 0000CB10 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, -/* 0000CB20 */ 0x00, 0x7D, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, -/* 0000CB30 */ 0x12, 0x03, 0xFE, 0x13, 0x03, 0xFE, 0x14, 0x03, 0xFE, 0x15, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, +/* 0000CB10 */ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, +/* 0000CB20 */ 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, +/* 0000CB30 */ 0x15, 0x03, 0xFE, 0x16, 0x03, 0xFE, 0x17, 0x03, 0xFE, 0x18, 0x03, 0x00, 0xFE, 0x0C, 0x2A, 0x06, /* 0000CB40 */ 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x18, 0x00, 0x2D, 0x00, 0x7C, 0x02, /* 0000CB50 */ 0x42, 0x00, 0x69, 0x00, 0x0B, 0x00, 0x14, 0x00, 0x00, 0x5D, 0xCB, 0x00, 0x00, 0x3F, 0x7E, 0x01, /* 0000CB60 */ 0x0A, 0x4F, 0xFD, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x15, 0x01, 0x41, 0xFF, 0xB2, 0x41, @@ -4673,8 +4673,8 @@ namespace Js /* 0000CB80 */ 0x2A, 0xFE, 0x37, 0x02, 0xFE, 0x37, 0x02, 0x08, 0x0B, 0x0F, 0x06, 0x30, 0x2F, 0x02, 0x07, 0x45, /* 0000CB90 */ 0x05, 0x05, 0x05, 0x05, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000CBA0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000CBB0 */ 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xA6, 0x02, 0x02, 0xFE, 0xC0, 0x02, 0x09, 0x02, 0xFE, 0xC2, -/* 0000CBC0 */ 0x02, 0x02, 0xFE, 0xC1, 0x02, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xD6, 0xA8, 0x0D, 0xE5, +/* 0000CBB0 */ 0xFF, 0x00, 0x00, 0x04, 0x02, 0xFE, 0xA9, 0x02, 0x02, 0xFE, 0xC3, 0x02, 0x09, 0x02, 0xFE, 0xC5, +/* 0000CBC0 */ 0x02, 0x02, 0xFE, 0xC4, 0x02, 0x08, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0xD6, 0xA8, 0x0D, 0xE5, /* 0000CBD0 */ 0xB2, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x10, 0x07, 0x05, 0x00, 0x5C, /* 0000CBE0 */ 0x00, 0x02, 0x5C, 0x01, 0x0B, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x5C, /* 0000CBF0 */ 0x02, 0x11, 0xA8, 0x11, 0x5C, 0x03, 0x11, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -4689,16 +4689,16 @@ namespace Js /* 0000CC80 */ 0xE9, 0x09, 0x1B, 0x00, 0xE7, 0x0C, 0x06, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, /* 0000CC90 */ 0x10, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x0C, 0x1F, 0x02, 0xFF, 0x10, 0xE9, 0xA8, /* 0000CCA0 */ 0x00, 0x24, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, -/* 0000CCB0 */ 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x7C, 0x01, -/* 0000CCC0 */ 0x00, 0x00, 0x00, 0xFE, 0xEA, 0x01, 0xFE, 0x7F, 0x01, 0xFE, 0x7E, 0x01, 0xFE, 0x7D, 0x01, 0xFE, -/* 0000CCD0 */ 0x7C, 0x01, 0x00, 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x39, 0x00, 0x5F, 0x00, 0x0B, +/* 0000CCB0 */ 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x7F, 0x01, +/* 0000CCC0 */ 0x00, 0x00, 0x00, 0xFE, 0xED, 0x01, 0xFE, 0x82, 0x01, 0xFE, 0x81, 0x01, 0xFE, 0x80, 0x01, 0xFE, +/* 0000CCD0 */ 0x7F, 0x01, 0x00, 0xFE, 0xAF, 0x2A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x39, 0x00, 0x5F, 0x00, 0x0B, /* 0000CCE0 */ 0x00, 0x2C, 0x00, 0x52, 0x00, 0x8E, 0x00, 0x1E, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x1A, -/* 0000CCF0 */ 0x00, 0x92, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xC8, 0x02, 0xED, 0x04, +/* 0000CCF0 */ 0x00, 0x92, 0x00, 0x00, 0xBF, 0x7E, 0x01, 0x02, 0x0F, 0xFC, 0x0F, 0xFE, 0xCB, 0x02, 0xED, 0x04, /* 0000CD00 */ 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x16, 0x00, 0xFE, 0x5B, 0x25, 0x01, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000CD10 */ 0x02, 0x02, 0xFE, 0x5B, 0x25, 0xFE, 0x55, 0x04, 0xFE, 0x55, 0x04, 0x01, 0x08, 0x05, 0x0A, 0x05, /* 0000CD20 */ 0x29, 0x26, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x09, /* 0000CD30 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000CD40 */ 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x04, 0x9F, 0x2C, 0x0A, 0x05, 0x14, 0x03, +/* 0000CD40 */ 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x04, 0x9F, 0x2C, 0x0A, 0x05, 0x14, 0x03, /* 0000CD50 */ 0x00, 0x0A, 0x02, 0x09, 0x06, 0x00, 0xCD, 0x00, 0x00, 0x09, 0x8C, 0x00, 0x2C, 0x0A, 0x05, 0x14, /* 0000CD60 */ 0x03, 0x00, 0x0A, 0x03, 0x09, 0x0A, 0x00, 0xCD, 0x0A, 0x01, 0xA1, 0x00, 0x05, 0x0A, 0x47, 0x05, /* 0000CD70 */ 0x0A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0B, 0x6C, 0x0A, 0x0B, 0x00, 0x07, @@ -4708,8 +4708,8 @@ namespace Js /* 0000CDB0 */ 0x0A, 0xCD, 0x0A, 0x00, 0x96, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x26, /* 0000CDC0 */ 0x00, 0x00, 0x00, 0x0A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x04, 0x5C, 0x01, 0x05, 0x5C, 0x02, 0x06, /* 0000CDD0 */ 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x5C, 0x03, 0x0B, 0x1F, 0x04, 0xFF, 0x0A, 0x92, 0x02, 0x00, -/* 0000CDE0 */ 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, -/* 0000CDF0 */ 0x2A, 0x02, 0xF0, 0xFE, 0x0E, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, +/* 0000CDE0 */ 0x00, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, +/* 0000CDF0 */ 0x2D, 0x02, 0xF0, 0xFE, 0x11, 0x03, 0x00, 0xFE, 0x8F, 0x25, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0B, /* 0000CE00 */ 0x00, 0x33, 0x00, 0x06, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x30, 0x00, 0x0A, 0x00, 0x2B, 0x00, 0x1E, /* 0000CE10 */ 0x00, 0x2F, 0x00, 0x22, 0x00, 0x71, 0x00, 0x09, 0x00, 0x1A, 0x00, 0x23, 0x00, 0xA5, 0x02, 0x0B, /* 0000CE20 */ 0x00, 0x12, 0x00, 0x00, 0x28, 0xCE, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFF, @@ -4718,7 +4718,7 @@ namespace Js /* 0000CE50 */ 0x06, 0x08, 0x0B, 0x06, 0x49, 0x47, 0x02, 0x07, 0x41, 0x05, 0x05, 0x05, 0x05, 0xFF, 0xFF, 0xFF, /* 0000CE60 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, /* 0000CE70 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, -/* 0000CE80 */ 0x05, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x03, 0x02, 0xFE, 0x10, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, +/* 0000CE80 */ 0x08, 0x03, 0x02, 0xFE, 0x12, 0x03, 0x03, 0x02, 0xFE, 0x13, 0x03, 0x04, 0x01, 0xFF, 0xFF, 0xFF, /* 0000CE90 */ 0xFF, 0xFE, 0x41, 0x01, 0x2C, 0x0B, 0x08, 0x15, 0x03, 0x00, 0x0B, 0x02, 0x09, 0x0B, 0x00, 0x2C, /* 0000CEA0 */ 0x0B, 0x08, 0x15, 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x00, 0x14, 0x03, 0x00, 0x08, 0x04, 0x09, /* 0000CEB0 */ 0x1B, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x6C, 0x0B, 0x0C, 0x00, @@ -4739,11 +4739,11 @@ namespace Js /* 0000CFA0 */ 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x06, /* 0000CFB0 */ 0x8E, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x01, 0x0C, 0x8E, 0x01, 0x00, /* 0000CFC0 */ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0C, 0x5C, 0x02, 0x0C, 0x5C, 0x03, 0x09, 0x1F, 0x04, 0xFF, -/* 0000CFD0 */ 0x0B, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x21, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0xF1, 0x01, -/* 0000CFE0 */ 0xFE, 0x2B, 0x02, 0xFE, 0xF2, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, +/* 0000CFD0 */ 0x0B, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x24, 0x02, 0xFE, 0x29, 0x02, 0xFE, 0xF4, 0x01, +/* 0000CFE0 */ 0xFE, 0x2E, 0x02, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0x33, 0x27, 0x09, 0x00, 0x00, 0x00, 0x00, 0x1E, /* 0000CFF0 */ 0x00, 0x66, 0x00, 0x1B, 0x00, 0x4A, 0x00, 0x1E, 0x00, 0x34, 0x00, 0x22, 0x00, 0x3F, 0x00, 0x32, /* 0000D000 */ 0x00, 0x4E, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x43, 0x00, 0x66, 0x00, 0x33, 0x00, 0x4A, 0x00, 0x00, -/* 0000D010 */ 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC7, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, +/* 0000D010 */ 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xCA, 0x02, 0xE6, 0x04, 0xFF, 0xA3, 0x41, 0x01, /* 0000D020 */ 0x00, 0x15, 0x00, 0xFE, 0x35, 0x24, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x24, /* 0000D030 */ 0xA6, 0xA6, 0x05, 0x03, 0x05, 0x04, 0x14, 0x13, 0x01, 0x03, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, /* 0000D040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, @@ -4753,15 +4753,15 @@ namespace Js /* 0000D080 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x6C, 0x05, 0x06, 0x01, 0x07, 0x03, /* 0000D090 */ 0x00, 0x5C, 0x00, 0x06, 0x5C, 0x01, 0x03, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, /* 0000D0A0 */ 0x07, 0x5C, 0x02, 0x07, 0x1F, 0x03, 0x05, 0x05, 0x44, 0x00, 0x05, 0x02, 0x09, 0x02, 0x00, 0xA8, -/* 0000D0B0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x26, 0x02, 0xFE, 0x02, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, +/* 0000D0B0 */ 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x29, 0x02, 0xFE, 0x05, 0x02, 0x00, 0xFE, 0x68, 0x24, 0x03, /* 0000D0C0 */ 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x2B, 0x00, 0x31, 0x00, 0x47, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 0000D0D0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC6, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, +/* 0000D0D0 */ 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xC9, 0x02, 0xD6, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x14, 0x00, /* 0000D0E0 */ 0xFE, 0xDE, 0x21, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xDE, 0x21, 0xFE, 0x4F, 0x02, /* 0000D0F0 */ 0xFE, 0x4F, 0x02, 0x0B, 0x07, 0x0F, 0x08, 0x3B, 0x38, 0x01, 0x05, 0x01, 0x03, 0x03, 0x03, 0x03, /* 0000D100 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, /* 0000D110 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -/* 0000D120 */ 0x00, 0x02, 0xFE, 0x0A, 0x03, 0x04, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0x02, 0xFE, -/* 0000D130 */ 0x0D, 0x03, 0xEA, 0xA8, 0x0D, 0x97, 0x0F, 0x07, 0x08, 0x47, 0x0C, 0x0F, 0x2C, 0x0F, 0x0C, 0x15, +/* 0000D120 */ 0x00, 0x02, 0xFE, 0x0D, 0x03, 0x04, 0x02, 0xFE, 0x0E, 0x03, 0x02, 0xFE, 0x0F, 0x03, 0x02, 0xFE, +/* 0000D130 */ 0x10, 0x03, 0xEA, 0xA8, 0x0D, 0x97, 0x0F, 0x07, 0x08, 0x47, 0x0C, 0x0F, 0x2C, 0x0F, 0x0C, 0x15, /* 0000D140 */ 0x03, 0x00, 0x0F, 0x02, 0x09, 0xCC, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, /* 0000D150 */ 0x10, 0x6C, 0x0F, 0x10, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0C, 0x1F, 0x02, /* 0000D160 */ 0x0F, 0x0F, 0x47, 0x0D, 0x0F, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x0F, 0x07, @@ -4776,16 +4776,16 @@ namespace Js /* 0000D1F0 */ 0xFF, 0x0F, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, 0x6C, 0x0F, 0x10, 0x02, /* 0000D200 */ 0x07, 0x02, 0x00, 0x5C, 0x00, 0x10, 0x5C, 0x01, 0x0D, 0x1F, 0x02, 0x00, 0x0F, 0x09, 0x0B, 0x00, /* 0000D210 */ 0x09, 0x06, 0x00, 0x47, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, -/* 0000D220 */ 0x27, 0x02, 0xFE, 0x28, 0x02, 0x23, 0x00, 0xFE, 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x07, +/* 0000D220 */ 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x23, 0x00, 0xFE, 0x31, 0x22, 0x08, 0x02, 0x00, 0x00, 0x00, 0x07, /* 0000D230 */ 0x00, 0x2D, 0x00, 0x0B, 0x00, 0x34, 0x00, 0x1E, 0x00, 0x41, 0x00, 0x2E, 0x00, 0x66, 0x00, 0x5F, /* 0000D240 */ 0x00, 0x90, 0x00, 0x21, 0x00, 0x42, 0x00, 0x08, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 0000D250 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC5, 0x02, 0xBC, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, +/* 0000D250 */ 0x0F, 0xFC, 0x07, 0xFE, 0xC8, 0x02, 0xBC, 0x04, 0xFF, 0xA3, 0x41, 0x01, 0x00, 0x13, 0x00, 0xFE, /* 0000D260 */ 0xA7, 0x1E, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x06, 0x06, 0xFE, 0xA7, 0x1E, 0xFE, 0x2F, 0x03, 0xFE, /* 0000D270 */ 0x2F, 0x03, 0x0B, 0x0A, 0x11, 0x0A, 0x50, 0x4A, 0x01, 0x06, 0x01, 0x04, 0x04, 0x04, 0x04, 0xFF, /* 0000D280 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xFF, /* 0000D290 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, -/* 0000D2A0 */ 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, 0x06, 0x03, 0x04, 0x01, 0xFF, 0xFF, -/* 0000D2B0 */ 0xFF, 0xFF, 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0xFE, 0x4A, +/* 0000D2A0 */ 0x02, 0xFE, 0x07, 0x03, 0x02, 0xFE, 0x08, 0x03, 0x02, 0xFE, 0x09, 0x03, 0x04, 0x01, 0xFF, 0xFF, +/* 0000D2B0 */ 0xFF, 0xFF, 0x02, 0xFE, 0x0A, 0x03, 0x02, 0xFE, 0x0B, 0x03, 0x02, 0xFE, 0x0C, 0x03, 0xFE, 0x4A, /* 0000D2C0 */ 0x01, 0x97, 0x11, 0x0A, 0x0B, 0x47, 0x0F, 0x11, 0xA8, 0x11, 0x15, 0x03, 0x00, 0x0F, 0x11, 0x09, /* 0000D2D0 */ 0x2F, 0x01, 0x0C, 0x03, 0x00, 0x0C, 0x02, 0x09, 0x1E, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2D, /* 0000D2E0 */ 0x00, 0x00, 0x00, 0x12, 0x6C, 0x11, 0x12, 0x00, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x12, 0x5C, 0x01, @@ -4806,8 +4806,8 @@ namespace Js /* 0000D3D0 */ 0x04, 0x00, 0x5C, 0x00, 0x05, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x14, 0x5C, /* 0000D3E0 */ 0x01, 0x14, 0x5C, 0x02, 0x0D, 0x5C, 0x03, 0x08, 0x1F, 0x04, 0x13, 0x13, 0x2F, 0x13, 0x07, 0x13, /* 0000D3F0 */ 0x2F, 0x13, 0x13, 0x09, 0x5C, 0x03, 0x13, 0x1F, 0x04, 0xFF, 0x11, 0x47, 0x00, 0x0F, 0x09, 0x08, -/* 0000D400 */ 0x00, 0x47, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x25, 0x02, -/* 0000D410 */ 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x28, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, 0x00, 0x00, +/* 0000D400 */ 0x00, 0x47, 0x00, 0x0E, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x28, 0x02, +/* 0000D410 */ 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x2B, 0x02, 0x00, 0xFE, 0xF0, 0x1E, 0x0D, 0x00, 0x00, /* 0000D420 */ 0x00, 0x00, 0x07, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x1E, 0x00, /* 0000D430 */ 0x48, 0x00, 0x08, 0x00, 0x29, 0x00, 0x1E, 0x00, 0x40, 0x00, 0x08, 0x00, 0x29, 0x00, 0x1E, 0x00, /* 0000D440 */ 0x40, 0x00, 0x39, 0x00, 0x6C, 0x00, 0x7E, 0x00, 0xA9, 0x00, 0x06, 0x00, 0x24, 0x00, 0x08, 0x00, @@ -4816,9 +4816,9 @@ namespace Js /* 0000D470 */ 0x00, 0x01, 0x01, 0xFE, 0x1B, 0x19, 0xFE, 0x0A, 0x05, 0xFE, 0x0A, 0x05, 0x04, 0x0A, 0x0B, 0x04, /* 0000D480 */ 0x1D, 0x1D, 0x01, 0x01, 0x06, 0x06, 0x06, 0x06, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D490 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000D4A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xFE, 0x02, 0x02, 0xFE, -/* 0000D4B0 */ 0xFF, 0x02, 0x02, 0xFE, 0x00, 0x03, 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, 0x02, 0x03, 0x02, 0xFE, -/* 0000D4C0 */ 0x03, 0x03, 0x03, 0x04, 0x88, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, +/* 0000D4A0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0x01, 0x03, 0x02, 0xFE, +/* 0000D4B0 */ 0x02, 0x03, 0x02, 0xFE, 0x03, 0x03, 0x02, 0xFE, 0x04, 0x03, 0x02, 0xFE, 0x05, 0x03, 0x02, 0xFE, +/* 0000D4C0 */ 0x06, 0x03, 0x03, 0x04, 0x88, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, /* 0000D4D0 */ 0x03, 0x00, 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, /* 0000D4E0 */ 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, /* 0000D4F0 */ 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x01, 0x01, 0x5F, 0x01, 0x0D, 0x0C, @@ -4827,13 +4827,13 @@ namespace Js /* 0000D520 */ 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, /* 0000D530 */ 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5C, /* 0000D540 */ 0x02, 0x08, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, -/* 0000D550 */ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x00, 0x00, -/* 0000D560 */ 0x26, 0x02, 0x00, 0x00, 0x27, 0x02, 0x00, 0x00, 0x25, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, -/* 0000D570 */ 0x03, 0x03, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x02, 0xFE, 0x26, 0x02, 0xFE, 0x27, 0x02, 0xFE, 0x25, -/* 0000D580 */ 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x03, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, +/* 0000D550 */ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, +/* 0000D560 */ 0x29, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x00, +/* 0000D570 */ 0x06, 0x03, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x03, 0xFE, 0x29, 0x02, 0xFE, 0x2A, 0x02, 0xFE, 0x28, +/* 0000D580 */ 0x02, 0xFE, 0x2D, 0x02, 0xFE, 0x06, 0x03, 0x00, 0xFE, 0x32, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, /* 0000D590 */ 0x86, 0x00, 0xF2, 0x04, 0x00, 0x5E, 0xD9, 0x00, 0x00, 0xCD, 0xD8, 0x00, 0x00, 0x3C, 0xD8, 0x00, /* 0000D5A0 */ 0x00, 0xAB, 0xD7, 0x00, 0x00, 0x7E, 0xD6, 0x00, 0x00, 0xAD, 0xD5, 0x00, 0x00, 0x3F, 0xFE, 0x01, -/* 0000D5B0 */ 0x0E, 0x00, 0xFC, 0x07, 0xFE, 0x03, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, +/* 0000D5B0 */ 0x0E, 0x00, 0xFC, 0x07, 0xFE, 0x06, 0x03, 0xAC, 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x12, 0x00, /* 0000D5C0 */ 0xFE, 0xCF, 0x1C, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xCF, 0x1C, 0xFE, 0x3D, 0x01, /* 0000D5D0 */ 0xFE, 0x3D, 0x01, 0x05, 0x04, 0x07, 0x05, 0x19, 0x17, 0x16, 0x01, 0x03, 0x01, 0x01, 0xFF, 0xFF, /* 0000D5E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, @@ -4846,7 +4846,7 @@ namespace Js /* 0000D650 */ 0x02, 0x5C, 0x01, 0x04, 0x1F, 0x02, 0x07, 0x07, 0x47, 0x04, 0x07, 0x09, 0xA6, 0xFF, 0xA8, 0x00, /* 0000D660 */ 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x26, 0x1D, 0x05, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1A, /* 0000D670 */ 0x00, 0x2E, 0x00, 0x55, 0x00, 0x06, 0x00, 0x39, 0x00, 0x1F, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, -/* 0000D680 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x02, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, +/* 0000D680 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x05, 0x03, 0xA3, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x11, /* 0000D690 */ 0x00, 0xFE, 0xAF, 0x1B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xAF, 0x1B, 0xFE, 0x02, /* 0000D6A0 */ 0x01, 0xFE, 0x02, 0x01, 0x09, 0x06, 0x0A, 0x07, 0x2A, 0x25, 0x01, 0x04, 0x01, 0x02, 0x02, 0x02, /* 0000D6B0 */ 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4865,7 +4865,7 @@ namespace Js /* 0000D780 */ 0x00, 0x08, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1B, 0x29, 0x00, 0xFE, 0xCF, /* 0000D790 */ 0x1B, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x2A, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x3C, 0x00, /* 0000D7A0 */ 0x39, 0x00, 0x43, 0x00, 0x4B, 0x00, 0x08, 0x00, 0x19, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x00, -/* 0000D7B0 */ 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, +/* 0000D7B0 */ 0xFC, 0x07, 0xFE, 0x04, 0x03, 0x9F, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x10, 0x00, 0xFE, 0x35, /* 0000D7C0 */ 0x1B, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x35, 0x1B, 0x5F, 0x5F, 0x03, 0x03, 0x05, /* 0000D7D0 */ 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D7E0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4874,7 +4874,7 @@ namespace Js /* 0000D810 */ 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0x1F, 0x02, 0x05, 0x05, 0x47, 0x00, 0x05, 0x09, 0x05, 0x00, /* 0000D820 */ 0xA8, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, /* 0000D830 */ 0x55, 0x1B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x3E, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 0000D840 */ 0x00, 0xFC, 0x07, 0xFE, 0x00, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0F, 0x00, 0xFE, +/* 0000D840 */ 0x00, 0xFC, 0x07, 0xFE, 0x03, 0x03, 0x9B, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0F, 0x00, 0xFE, /* 0000D850 */ 0xBA, 0x1A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xBA, 0x1A, 0x58, 0x58, 0x03, 0x03, /* 0000D860 */ 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D870 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4883,7 +4883,7 @@ namespace Js /* 0000D8A0 */ 0x00, 0x0E, 0x00, 0x00, 0x00, 0x05, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0x1F, /* 0000D8B0 */ 0x02, 0x05, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, /* 0000D8C0 */ 0xFE, 0xDA, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x37, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 0000D8D0 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xFF, 0x02, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, +/* 0000D8D0 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0x02, 0x03, 0x96, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0E, 0x00, /* 0000D8E0 */ 0xFE, 0x3F, 0x1A, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x3F, 0x1A, 0x5E, 0x5E, 0x03, /* 0000D8F0 */ 0x03, 0x05, 0x03, 0x10, 0x0E, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000D900 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -4892,7 +4892,7 @@ namespace Js /* 0000D930 */ 0x02, 0x00, 0x5C, 0x00, 0x02, 0x5C, 0x01, 0x03, 0x1F, 0x02, 0x05, 0x05, 0x47, 0x00, 0x05, 0x09, /* 0000D940 */ 0x05, 0x00, 0xA8, 0x05, 0x47, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, /* 0000D950 */ 0x00, 0xFE, 0x5F, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x3D, 0x00, 0x00, 0x3F, 0x7E, -/* 0000D960 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0xFE, 0x02, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, +/* 0000D960 */ 0x01, 0x0A, 0x0F, 0xFC, 0x07, 0xFE, 0x01, 0x03, 0x8F, 0x16, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0D, /* 0000D970 */ 0x00, 0xFE, 0x5F, 0x19, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0x5F, 0x19, 0xC5, 0xC5, /* 0000D980 */ 0x04, 0x04, 0x06, 0x03, 0x17, 0x15, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, /* 0000D990 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, @@ -4902,9 +4902,9 @@ namespace Js /* 0000D9D0 */ 0x06, 0xA8, 0x06, 0x15, 0x03, 0x00, 0x04, 0x06, 0x09, 0x1D, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000D9E0 */ 0x0C, 0x00, 0x00, 0x00, 0x06, 0x07, 0x02, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x04, 0x1F, 0x02, /* 0000D9F0 */ 0x06, 0x06, 0x47, 0x00, 0x06, 0x09, 0x05, 0x00, 0xA8, 0x06, 0x47, 0x00, 0x06, 0x09, 0x02, 0x00, -/* 0000DA00 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x20, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, +/* 0000DA00 */ 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x23, 0x02, 0x00, 0xFE, 0x7F, 0x19, 0x04, 0x00, 0x00, /* 0000DA10 */ 0x00, 0x00, 0x08, 0x00, 0x27, 0x00, 0x18, 0x00, 0x40, 0x00, 0x31, 0x00, 0x3D, 0x00, 0x00, 0x3F, -/* 0000DA20 */ 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xE3, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, +/* 0000DA20 */ 0x7E, 0x01, 0x0A, 0x8F, 0xFC, 0x07, 0xFE, 0xE6, 0x02, 0x89, 0x20, 0xFF, 0xA0, 0x41, 0x01, 0x00, /* 0000DA30 */ 0x0B, 0x00, 0xFE, 0x95, 0x18, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x01, 0x01, 0xFE, 0x95, 0x18, 0x6D, /* 0000DA40 */ 0x6D, 0x05, 0x03, 0x04, 0x06, 0x12, 0x12, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0xFF, /* 0000DA50 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, @@ -4913,14 +4913,14 @@ namespace Js /* 0000DA80 */ 0x6C, 0x04, 0x05, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, /* 0000DA90 */ 0x00, 0x00, 0x00, 0x07, 0x6C, 0x06, 0x07, 0x01, 0x07, 0x01, 0x00, 0x5C, 0x00, 0x07, 0x1F, 0x01, /* 0000DAA0 */ 0x06, 0x06, 0x5C, 0x01, 0x06, 0xE0, 0x06, 0x00, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0x04, 0x04, 0x97, -/* 0000DAB0 */ 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0xFE, -/* 0000DAC0 */ 0xF6, 0x01, 0x00, 0x09, 0xFE, 0xFD, 0x02, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000DAD0 */ 0x42, 0x00, 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x79, +/* 0000DAB0 */ 0x00, 0x04, 0x02, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0xFE, +/* 0000DAC0 */ 0xF9, 0x01, 0x00, 0x09, 0xFE, 0x00, 0x03, 0x00, 0xFE, 0xAC, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, +/* 0000DAD0 */ 0x42, 0x00, 0x55, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0E, 0x0F, 0xFC, 0x07, 0xFE, 0xE5, 0x02, 0x79, /* 0000DAE0 */ 0x19, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xC9, 0x15, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000DAF0 */ 0x05, 0x05, 0xFE, 0xC9, 0x15, 0xFE, 0xA8, 0x02, 0xFE, 0xA8, 0x02, 0x0C, 0x06, 0x10, 0x06, 0x3F, /* 0000DB00 */ 0x34, 0x15, 0x01, 0x04, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000DB10 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000DB20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x70, 0xBB, 0x00, 0x02, 0xFE, 0xFC, +/* 0000DB20 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x70, 0xBB, 0x00, 0x02, 0xFE, 0xFF, /* 0000DB30 */ 0x02, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0xE4, 0xA8, 0x0D, 0xA8, /* 0000DB40 */ 0x0E, 0x14, 0x03, 0x00, 0x07, 0x02, 0x09, 0x14, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, /* 0000DB50 */ 0x00, 0x00, 0x11, 0x61, 0x11, 0x11, 0x00, 0x47, 0x10, 0x11, 0x09, 0x0D, 0x00, 0x8E, 0x01, 0x00, @@ -4936,17 +4936,17 @@ namespace Js /* 0000DBF0 */ 0x2D, 0x00, 0x28, 0x0D, 0x0D, 0x09, 0xB5, 0xFF, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, /* 0000DC00 */ 0x00, 0x10, 0x07, 0x05, 0x00, 0x5C, 0x00, 0x03, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x0A, 0xA8, 0x11, /* 0000DC10 */ 0x5C, 0x03, 0x11, 0x5C, 0x04, 0x0C, 0x1F, 0x05, 0x00, 0x10, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, -/* 0000DC20 */ 0x00, 0x00, 0x00, 0xFE, 0xF4, 0x01, 0xFE, 0xEA, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, +/* 0000DC20 */ 0x00, 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0xED, 0x01, 0x00, 0xFE, 0x19, 0x16, 0x0C, 0x04, 0x00, /* 0000DC30 */ 0x00, 0x00, 0x2C, 0x00, 0x62, 0x00, 0x1A, 0x00, 0x36, 0x00, 0x0D, 0x00, 0x34, 0x00, 0x16, 0x00, /* 0000DC40 */ 0x3A, 0x00, 0x05, 0x00, 0x0B, 0x00, 0x08, 0x00, 0x20, 0x00, 0x27, 0x00, 0x6A, 0x00, 0x0E, 0x00, /* 0000DC50 */ 0x36, 0x00, 0x06, 0x00, 0x4C, 0xFF, 0x06, 0x00, 0xE8, 0x00, 0x27, 0x00, 0x52, 0x00, 0x00, 0xBF, -/* 0000DC60 */ 0x7E, 0x01, 0x02, 0xCF, 0xFD, 0x0F, 0xFE, 0xE1, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, +/* 0000DC60 */ 0x7E, 0x01, 0x02, 0xCF, 0xFD, 0x0F, 0xFE, 0xE4, 0x02, 0x5A, 0x1E, 0xFF, 0xA2, 0x41, 0x01, 0x00, /* 0000DC70 */ 0x07, 0x00, 0xFE, 0xD8, 0x0E, 0x02, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x05, 0x05, 0xFE, 0xD8, 0x0E, /* 0000DC80 */ 0xFE, 0xD4, 0x06, 0xFE, 0xD4, 0x06, 0x03, 0x10, 0x0C, 0x15, 0x09, 0x62, 0x5B, 0x01, 0x09, 0x05, /* 0000DC90 */ 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x14, 0xFF, 0xFF, /* 0000DCA0 */ 0xFF, 0xFF, 0xFF, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00, -/* 0000DCB0 */ 0x00, 0x02, 0xFE, 0xF3, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF4, 0x02, 0x02, 0xFE, -/* 0000DCC0 */ 0xB8, 0x02, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, 0xF6, 0x02, 0x02, 0xFE, 0xF7, 0x02, 0x03, 0xFE, +/* 0000DCB0 */ 0x00, 0x02, 0xFE, 0xF6, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0xF7, 0x02, 0x02, 0xFE, +/* 0000DCC0 */ 0xBB, 0x02, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, 0xF9, 0x02, 0x02, 0xFE, 0xFA, 0x02, 0x03, 0xFE, /* 0000DCD0 */ 0xA7, 0x01, 0x96, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x96, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x8E, 0x01, /* 0000DCE0 */ 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x17, 0x6C, 0x16, 0x17, 0x00, 0x07, 0x02, 0x00, 0x5C, /* 0000DCF0 */ 0x00, 0x17, 0x92, 0x03, 0x00, 0x00, 0x00, 0x18, 0x5C, 0x01, 0x18, 0x1F, 0x02, 0x16, 0x16, 0x47, @@ -4974,10 +4974,10 @@ namespace Js /* 0000DE50 */ 0x1A, 0x47, 0x18, 0x19, 0x09, 0x05, 0x00, 0xA8, 0x19, 0x47, 0x18, 0x19, 0x7A, 0x18, 0x17, 0x02, /* 0000DE60 */ 0x7A, 0x10, 0x17, 0x03, 0x7A, 0x11, 0x17, 0x04, 0x5C, 0x01, 0x17, 0x5C, 0x02, 0x0B, 0x1F, 0x03, /* 0000DE70 */ 0x00, 0x16, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, -/* 0000DE80 */ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, -/* 0000DE90 */ 0x38, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xF7, 0x01, 0xFE, 0x02, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0x04, -/* 0000DEA0 */ 0x02, 0xFE, 0x38, 0x02, 0xFE, 0xF8, 0x02, 0xFE, 0xEA, 0x01, 0xFE, 0xF9, 0x02, 0x00, 0x0D, 0xFE, -/* 0000DEB0 */ 0xFA, 0x02, 0x00, 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x24, 0x00, 0x37, 0x00, 0x07, +/* 0000DE80 */ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, +/* 0000DE90 */ 0x3B, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFA, 0x01, 0xFE, 0x05, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0x07, +/* 0000DEA0 */ 0x02, 0xFE, 0x3B, 0x02, 0xFE, 0xFB, 0x02, 0xFE, 0xED, 0x01, 0xFE, 0xFC, 0x02, 0x00, 0x0D, 0xFE, +/* 0000DEB0 */ 0xFD, 0x02, 0x00, 0xFE, 0x1D, 0x0F, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x24, 0x00, 0x37, 0x00, 0x07, /* 0000DEC0 */ 0x00, 0x1C, 0x00, 0x2D, 0x00, 0x3F, 0x02, 0x31, 0x00, 0x4A, 0x00, 0x19, 0x00, 0x39, 0x00, 0x10, /* 0000DED0 */ 0x00, 0x51, 0x00, 0x09, 0x00, 0x20, 0x00, 0x2D, 0x00, 0xBF, 0x01, 0x09, 0x00, 0x2A, 0x00, 0xA8, /* 0000DEE0 */ 0x00, 0x1F, 0x01, 0x00, 0x0C, 0xE0, 0x00, 0x00, 0xEC, 0xDE, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, @@ -4996,21 +4996,21 @@ namespace Js /* 0000DFB0 */ 0x09, 0x31, 0x00, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x09, 0x07, 0x04, 0x00, /* 0000DFC0 */ 0x5C, 0x00, 0x03, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0A, 0x5C, 0x01, 0x0A, /* 0000DFD0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x5C, 0x02, 0x0A, 0x5C, 0x03, 0x05, -/* 0000DFE0 */ 0x1F, 0x04, 0xFF, 0x09, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x00, 0x0E, 0xFE, -/* 0000DFF0 */ 0xFB, 0x02, 0x00, 0xFE, 0xF9, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7B, 0x00, 0x07, +/* 0000DFE0 */ 0x1F, 0x04, 0xFF, 0x09, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0x05, 0x02, 0x00, 0x0E, 0xFE, +/* 0000DFF0 */ 0xFE, 0x02, 0x00, 0xFE, 0xF9, 0x12, 0x05, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x7B, 0x00, 0x07, /* 0000E000 */ 0x00, 0x25, 0x00, 0x39, 0x00, 0x60, 0x00, 0x33, 0x00, 0x57, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, /* 0000E010 */ 0x00, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x3D, 0xFF, 0xA2, 0x41, 0x11, 0x00, 0x08, /* 0000E020 */ 0x00, 0xFE, 0xA1, 0x0F, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x02, 0x02, 0xFE, 0xA1, 0x0F, 0x61, 0x61, /* 0000E030 */ 0x04, 0x05, 0x07, 0x06, 0x0F, 0x0F, 0x02, 0x03, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E040 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -/* 0000E050 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF5, 0x02, 0x02, 0xFE, -/* 0000E060 */ 0xB8, 0x02, 0x04, 0x46, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x07, 0x05, +/* 0000E050 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x02, 0xFE, 0xF8, 0x02, 0x02, 0xFE, +/* 0000E060 */ 0xBB, 0x02, 0x04, 0x46, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x07, 0x05, /* 0000E070 */ 0x00, 0x5C, 0x00, 0x04, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x08, 0x5C, 0x01, /* 0000E080 */ 0x08, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x5C, 0x02, 0x08, 0x2F, 0x08, /* 0000E090 */ 0x02, 0x05, 0x5C, 0x03, 0x08, 0x5C, 0x04, 0x03, 0x1F, 0x05, 0x07, 0x07, 0x94, 0x01, 0x00, 0x00, /* 0000E0A0 */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xB5, 0x0F, /* 0000E0B0 */ 0x02, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x4C, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, 0x0F, 0xFC, -/* 0000E0C0 */ 0x07, 0xFE, 0xF2, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x06, 0x00, 0xFE, 0xA2, 0x0D, +/* 0000E0C0 */ 0x07, 0xFE, 0xF5, 0x02, 0x52, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x06, 0x00, 0xFE, 0xA2, 0x0D, /* 0000E0D0 */ 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0xA2, 0x0D, 0xFE, 0x14, 0x01, 0xFE, 0x14, 0x01, /* 0000E0E0 */ 0x06, 0x02, 0x06, 0x03, 0x15, 0x12, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, /* 0000E0F0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF, 0xFF, @@ -5019,18 +5019,18 @@ namespace Js /* 0000E120 */ 0x5C, 0x00, 0x07, 0x5C, 0x01, 0x02, 0x1F, 0x02, 0x06, 0x06, 0x47, 0x04, 0x06, 0x14, 0x03, 0x00, /* 0000E130 */ 0x03, 0x02, 0x09, 0x09, 0x00, 0x47, 0x00, 0x04, 0x09, 0x18, 0x00, 0x09, 0x0D, 0x00, 0x14, 0x03, /* 0000E140 */ 0x00, 0x03, 0x04, 0x09, 0x05, 0x00, 0xA8, 0x00, 0x09, 0x08, 0x00, 0x47, 0x00, 0x04, 0x09, 0x02, -/* 0000E150 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF5, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, +/* 0000E150 */ 0x00, 0xA8, 0x00, 0x24, 0x00, 0x00, 0x00, 0xFE, 0xF8, 0x01, 0x00, 0xFE, 0xCE, 0x0D, 0x07, 0x00, /* 0000E160 */ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x47, 0x00, 0x08, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x25, 0x00, 0x08, /* 0000E170 */ 0x00, 0x26, 0x00, 0x05, 0x00, 0x1B, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x00, 0x3F, 0x7E, 0x01, 0x0A, -/* 0000E180 */ 0x0F, 0xFC, 0x07, 0xFE, 0xE0, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, +/* 0000E180 */ 0x0F, 0xFC, 0x07, 0xFE, 0xE3, 0x02, 0x4E, 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x05, 0x00, 0xFE, /* 0000E190 */ 0x2B, 0x0D, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x03, 0x03, 0xFE, 0x2B, 0x0D, 0x53, 0x53, 0x05, 0x02, /* 0000E1A0 */ 0x05, 0x04, 0x0B, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E1B0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E1C0 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x25, 0x8E, 0x01, 0x00, /* 0000E1D0 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x6C, 0x05, 0x06, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 0000E1E0 */ 0x06, 0x5C, 0x01, 0x03, 0x5C, 0x02, 0x02, 0x1F, 0x03, 0x00, 0x05, 0x09, 0x02, 0x00, 0xA8, 0x00, -/* 0000E1F0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x70, 0x02, 0x00, 0xFE, 0x49, 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, -/* 0000E200 */ 0x23, 0x00, 0x34, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xDF, 0x02, 0x48, +/* 0000E1F0 */ 0x24, 0x00, 0x00, 0x00, 0xFE, 0x73, 0x02, 0x00, 0xFE, 0x49, 0x0D, 0x02, 0x00, 0x00, 0x00, 0x00, +/* 0000E200 */ 0x23, 0x00, 0x34, 0x00, 0x00, 0x3F, 0x6E, 0x01, 0x08, 0x0F, 0xFC, 0x07, 0xFE, 0xE2, 0x02, 0x48, /* 0000E210 */ 0x1C, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x04, 0x00, 0xFE, 0x8B, 0x0C, 0xFF, 0x00, 0x10, 0x01, 0x00, /* 0000E220 */ 0x02, 0x02, 0xFE, 0x8B, 0x0C, 0x7F, 0x7F, 0x02, 0x04, 0x05, 0x0A, 0x0A, 0x01, 0x41, 0x01, 0x01, /* 0000E230 */ 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5038,8 +5038,8 @@ namespace Js /* 0000E250 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x1C, 0x00, 0x0A, 0x80, 0x01, 0x07, 0x00, 0x0A, /* 0000E260 */ 0x80, 0x1E, 0x61, 0x05, 0x04, 0x00, 0x14, 0x0F, 0x00, 0x05, 0x02, 0x09, 0x00, 0x00, 0x61, 0x05, /* 0000E270 */ 0x04, 0x00, 0x14, 0x03, 0x00, 0x05, 0x03, 0x09, 0x02, 0x00, 0x23, 0x04, 0xA8, 0x00, 0x24, 0x00, -/* 0000E280 */ 0x00, 0x00, 0xFE, 0x08, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, -/* 0000E290 */ 0x4B, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF1, +/* 0000E280 */ 0x00, 0x00, 0xFE, 0x0B, 0x01, 0x00, 0xFE, 0xA4, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, +/* 0000E290 */ 0x4B, 0x00, 0x04, 0x00, 0x1A, 0x00, 0x00, 0x3F, 0xFE, 0x01, 0x0C, 0x00, 0xFC, 0x07, 0xFE, 0xF4, /* 0000E2A0 */ 0x02, 0x3E, 0x12, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x03, 0x00, 0xFE, 0x5B, 0x0B, 0xFF, 0x00, 0x10, /* 0000E2B0 */ 0x01, 0x00, 0x04, 0x04, 0xFE, 0x5B, 0x0B, 0xA9, 0xA9, 0x06, 0x05, 0x09, 0x03, 0x0F, 0x0D, 0x0B, /* 0000E2C0 */ 0x01, 0x01, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -5050,7 +5050,7 @@ namespace Js /* 0000E310 */ 0x5C, 0x01, 0x0A, 0x1F, 0x02, 0xFF, 0x09, 0x28, 0x08, 0x08, 0x09, 0xDC, 0xFF, 0xA8, 0x00, 0x24, /* 0000E320 */ 0x00, 0x00, 0x00, 0x00, 0xFE, 0x83, 0x0B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x23, 0x00, /* 0000E330 */ 0x08, 0x00, 0x21, 0x00, 0x14, 0x00, 0x21, 0x00, 0x08, 0x00, 0x1B, 0x00, 0x00, 0x3F, 0x7E, 0x01, -/* 0000E340 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD4, 0x02, 0x28, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x02, 0x00, +/* 0000E340 */ 0x0A, 0x00, 0xFC, 0x07, 0xFE, 0xD7, 0x02, 0x28, 0x1F, 0xFF, 0xA2, 0x41, 0x01, 0x00, 0x02, 0x00, /* 0000E350 */ 0xFE, 0x22, 0x07, 0xFF, 0x00, 0x10, 0x01, 0x00, 0x04, 0x04, 0xFE, 0x22, 0x07, 0x73, 0x73, 0x06, /* 0000E360 */ 0x04, 0x08, 0x09, 0x10, 0x10, 0x01, 0x02, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0000E370 */ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, diff --git a/lib/Runtime/Library/JavascriptArray.cpp b/lib/Runtime/Library/JavascriptArray.cpp index a30968d653d..91b0d6a7760 100644 --- a/lib/Runtime/Library/JavascriptArray.cpp +++ b/lib/Runtime/Library/JavascriptArray.cpp @@ -14,11 +14,49 @@ namespace Js static const char EmptySegmentData[sizeof(SparseArraySegmentBase)] = {0}; const SparseArraySegmentBase *JavascriptArray::EmptySegment = (SparseArraySegmentBase *)&EmptySegmentData; + // col0 : allocation bucket + // col1 : No. of missing items to set during initialization depending on bucket. + // col2 : allocation size for elements in given bucket. + // col1 and col2 is calculated at runtime + uint JavascriptNativeFloatArray::allocationBuckets[][AllocationBucketsInfoSize] = + { + { 3, 0, 0 }, // allocate space for 3 elements for array of length 0,1,2,3 + { 5, 0, 0 }, // allocate space for 5 elements for array of length 4,5 + { 8, 0, 0 }, // allocate space for 8 elements for array of length 6,7,8 + }; #if defined(_M_X64_OR_ARM64) const Var JavascriptArray::MissingItem = (Var)0x8000000280000002; + uint JavascriptNativeIntArray::allocationBuckets[][AllocationBucketsInfoSize] = + { + // See comments above on how to read this + {2, 0, 0}, + {6, 0, 0}, + {8, 0, 0}, + }; + uint JavascriptArray::allocationBuckets[][AllocationBucketsInfoSize] = + { + // See comments above on how to read this + {4, 0, 0}, + {6, 0, 0}, + {8, 0, 0}, + }; #else const Var JavascriptArray::MissingItem = (Var)0x80000002; + uint JavascriptNativeIntArray::allocationBuckets[][AllocationBucketsInfoSize] = + { + // See comments above on how to read this + { 3, 0, 0 }, + { 7, 0, 0 }, + { 8, 0, 0 }, + }; + uint JavascriptArray::allocationBuckets[][AllocationBucketsInfoSize] = + { + // See comments above on how to read this + { 4, 0, 0 }, + { 8, 0, 0 }, + }; #endif + const int32 JavascriptNativeIntArray::MissingItem = 0x80000002; static const uint64 FloatMissingItemPattern = 0x8000000280000002ull; const double JavascriptNativeFloatArray::MissingItem = *(double*)&FloatMissingItemPattern; @@ -3763,13 +3801,13 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(RecyclableObject * obj, uint32 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(RecyclableObject * obj, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // Note: Sometime cross site array go down this path to get the marshalling Assert(!VirtualTableInfo::HasVirtualTable(obj) && !VirtualTableInfo::HasVirtualTable(obj) && !VirtualTableInfo::HasVirtualTable(obj)); - if (!JavascriptOperators::HasItem(obj, index)) + if (checkHasItem && !JavascriptOperators::HasItem(obj, index)) { return FALSE; } @@ -3777,7 +3815,7 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(RecyclableObject * obj, uint64 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(RecyclableObject * obj, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // Note: Sometime cross site array go down this path to get the marshalling Assert(!VirtualTableInfo::HasVirtualTable(obj) @@ -3785,7 +3823,7 @@ namespace Js && !VirtualTableInfo::HasVirtualTable(obj)); PropertyRecord const * propertyRecord; JavascriptOperators::GetPropertyIdForInt(index, scriptContext, &propertyRecord); - if (!JavascriptOperators::HasProperty(obj, propertyRecord->GetPropertyId())) + if (checkHasItem && !JavascriptOperators::HasProperty(obj, propertyRecord->GetPropertyId())) { return FALSE; } @@ -3795,14 +3833,14 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { Assert(VirtualTableInfo::HasVirtualTable(pArr) || VirtualTableInfo>::HasVirtualTable(pArr)); return pArr->JavascriptArray::DirectGetItemAtFull(index, element); } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // This should never get called. Assert(false); @@ -3810,7 +3848,7 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeIntArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeIntArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { Assert(VirtualTableInfo::HasVirtualTable(pArr) || VirtualTableInfo>::HasVirtualTable(pArr)); @@ -3818,7 +3856,7 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeIntArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeIntArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // This should never get called. Assert(false); @@ -3826,7 +3864,7 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeFloatArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeFloatArray *pArr, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { Assert(VirtualTableInfo::HasVirtualTable(pArr) || VirtualTableInfo>::HasVirtualTable(pArr)); @@ -3834,7 +3872,7 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeFloatArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(JavascriptNativeFloatArray *pArr, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // This should never get called. Assert(false); @@ -3842,13 +3880,13 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(TypedArrayBase * typedArrayBase, uint32 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(TypedArrayBase * typedArrayBase, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // We need to do explicit check for items since length value may not actually match the actual TypedArray length. // User could add a length property to a TypedArray instance which lies and returns a different value from the underlying length. // Since this method can be called via Array.prototype.indexOf with .apply or .call passing a TypedArray as this parameter // we don't know whether or not length == typedArrayBase->GetLength(). - if (!typedArrayBase->HasItem(index)) + if (checkHasItem && !typedArrayBase->HasItem(index)) { return false; } @@ -3858,14 +3896,13 @@ namespace Js } template <> - BOOL JavascriptArray::TemplatedGetItem(TypedArrayBase * typedArrayBase, uint64 index, Var * element, ScriptContext * scriptContext) + BOOL JavascriptArray::TemplatedGetItem(TypedArrayBase * typedArrayBase, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem) { // This should never get called. Assert(false); Throw::InternalError(); } - template Var JavascriptArray::TemplatedIndexOfHelper(T * pArr, Var search, P fromIndex, P toIndex, ScriptContext * scriptContext) { @@ -3879,7 +3916,7 @@ namespace Js //Consider: enumerating instead of walking all indices for (P i = fromIndex; i < toIndex; i++) { - if (!TemplatedGetItem(pArr, i, &element, scriptContext)) + if (!TryTemplatedGetItem(pArr, i, &element, scriptContext, !includesAlgorithm)) { if (doUndefinedSearch) { @@ -4300,7 +4337,8 @@ namespace Js { cs->Append(separator); } - if (TemplatedGetItem(arr, i, &item, scriptContext)) + + if (TryTemplatedGetItem(arr, i, &item, scriptContext)) { cs->Append(JavascriptArray::JoinToString(item, scriptContext)); } @@ -4318,19 +4356,23 @@ namespace Js JavascriptString *res = nullptr; Var item; + if (TemplatedGetItem(arr, 0u, &item, scriptContext)) { res = JavascriptArray::JoinToString(item, scriptContext); } - if (TemplatedGetItem(arr, 1u, &item, scriptContext)) + + if (TryTemplatedGetItem(arr, 1u, &item, scriptContext)) { JavascriptString *const itemString = JavascriptArray::JoinToString(item, scriptContext); return res ? ConcatString::New(res, itemString) : itemString; } + if(res) { return res; } + goto Case0; } @@ -4566,7 +4608,7 @@ namespace Js { uint32 index = end - i; - if (!TemplatedGetItem(pArr, index, &element, scriptContext)) + if (!TryTemplatedGetItem(pArr, index, &element, scriptContext)) { continue; } @@ -9032,7 +9074,7 @@ namespace Js JavascriptNumber::ToVar(k, scriptContext), obj); - if (newArr) + if (newArr && isBuiltinArrayCtor) { newArr->SetItem(k, mappedValue, PropertyOperation_None); } @@ -10013,59 +10055,6 @@ namespace Js } #endif - template - void JavascriptArray::ForEachOwnArrayIndexOfObject(RecyclableObject* obj, uint32 startIndex, uint32 limitIndex, Fn fn) - { - Assert(DynamicObject::IsAnyArray(obj) || JavascriptOperators::IsObject(obj)); - - JavascriptArray* arr = nullptr; - if (DynamicObject::IsAnyArray(obj)) - { - arr = JavascriptArray::FromAnyArray(obj); - } - else if (DynamicType::Is(obj->GetTypeId())) - { - DynamicObject* dynobj = DynamicObject::FromVar(obj); - arr = dynobj->GetObjectArray(); - } - - if (arr != nullptr) - { - if (JavascriptArray::Is(arr)) - { - ArrayElementEnumerator e(arr, startIndex, limitIndex); - - while(e.MoveNext()) - { - fn(e.GetIndex(), e.GetItem()); - } - } - else - { - ScriptContext* scriptContext = obj->GetScriptContext(); - - Assert(ES5Array::Is(arr)); - - ES5Array* es5Array = ES5Array::FromVar(arr); - ES5ArrayIndexEnumerator e(es5Array); - - while (e.MoveNext()) - { - uint32 index = e.GetIndex(); - - if (index < startIndex) continue; - else if (index >= limitIndex) break; - - Var value = nullptr; - if (JavascriptOperators::GetOwnItem(es5Array, index, &value, scriptContext)) - { - fn(index, value); - } - } - } - } - } - template void JavascriptArray::ForEachOwnMissingArrayIndexOfObject(JavascriptArray *baseArray, JavascriptArray *destArray, RecyclableObject* obj, uint32 startIndex, uint32 limitIndex, T destIndex, Fn fn) { @@ -10124,7 +10113,7 @@ namespace Js if (destArray == nullptr || !destArray->DirectGetItemAt(n, &oldValue)) { Var value = nullptr; - if (JavascriptOperators::GetOwnItem(es5Array, index, &value, scriptContext)) + if (JavascriptOperators::GetOwnItem(obj, index, &value, scriptContext)) { fn(index, value); } diff --git a/lib/Runtime/Library/JavascriptArray.h b/lib/Runtime/Library/JavascriptArray.h index b4876532618..ee027786bbe 100644 --- a/lib/Runtime/Library/JavascriptArray.h +++ b/lib/Runtime/Library/JavascriptArray.h @@ -118,6 +118,19 @@ namespace Js static ushort const MergeSegmentsLengthHeuristics = 128; // If the length is less than MergeSegmentsLengthHeuristics then try to merge the segments static uint64 const FiftyThirdPowerOfTwoMinusOne = 0x1FFFFFFFFFFFFF; // 2^53-1 + static const uint8 AllocationBucketsInfoSize = 3; + // 0th colum in allocationBuckets + static const uint8 AllocationBucketIndex = 0; + // 1st column in allocationBuckets that stores no. of missing elements to initialize for given bucket + static const uint8 MissingElementsCountIndex = 1; + // 2nd column in allocationBuckets that stores allocation size for given bucket + static const uint8 AllocationSizeIndex = 2; +#if defined(_M_X64_OR_ARM64) + static const uint8 AllocationBucketsCount = 3; +#else + static const uint8 AllocationBucketsCount = 2; +#endif + static uint allocationBuckets[AllocationBucketsCount][AllocationBucketsInfoSize]; static const Var MissingItem; template static T GetMissingItem(); @@ -455,9 +468,9 @@ namespace Js template static Var LastIndexOfHelper(T* pArr, Var search, int64 fromIndex, ScriptContext * scriptContext); template - static BOOL TemplatedGetItem(T *pArr, uint32 index, Var * element, ScriptContext * scriptContext); + static BOOL TemplatedGetItem(T *pArr, uint32 index, Var * element, ScriptContext * scriptContext, bool checkHasItem = true); template - static BOOL TemplatedGetItem(T *pArr, uint64 index, Var * element, ScriptContext * scriptContext); + static BOOL TemplatedGetItem(T *pArr, uint64 index, Var * element, ScriptContext * scriptContext, bool checkHasItem = true); template static Var ReverseHelper(JavascriptArray* pArr, Js::TypedArrayBase* typedArrayBase, RecyclableObject* obj, T length, ScriptContext* scriptContext); template @@ -559,22 +572,26 @@ namespace Js static int __cdecl CompareElements(void* context, const void* elem1, const void* elem2); void SortElements(Element* elements, uint32 left, uint32 right); - template - static void ForEachOwnArrayIndexOfObject(RecyclableObject* obj, uint32 startIndex, uint32 limitIndex, Fn fn); - template static void ForEachOwnMissingArrayIndexOfObject(JavascriptArray *baseArr, JavascriptArray *destArray, RecyclableObject* obj, uint32 startIndex, uint32 limitIndex, T destIndex, Fn fn); // NativeArrays may change it's content type, but not others template static bool MayChangeType() { return false; } + template + static BOOL TryTemplatedGetItem(T *arr, P index, Var *element, ScriptContext *scriptContext, bool checkHasItem = true) + { + return T::Is(arr) ? JavascriptArray::TemplatedGetItem(arr, index, element, scriptContext, checkHasItem) : + JavascriptOperators::GetItem(arr, index, element, scriptContext); + } + template static void TemplatedForEachItemInRange(T * arr, uint32 startIndex, uint32 limitIndex, Var missingItem, ScriptContext * scriptContext, Fn fn) { for (uint32 i = startIndex; i < limitIndex; i++) { Var element; - fn(i, TemplatedGetItem(arr, i, &element, scriptContext) ? element : missingItem); + fn(i, TryTemplatedGetItem(arr, i, &element, scriptContext) ? element : missingItem); if (hasSideEffect && MayChangeType() && !T::Is(arr)) { @@ -591,7 +608,7 @@ namespace Js for (P i = startIndex; i < limitIndex; i++) { Var element; - if (TemplatedGetItem(arr, i, &element, scriptContext)) + if (TryTemplatedGetItem(arr, i, &element, scriptContext)) { fn(i, element); @@ -804,6 +821,8 @@ namespace Js public: template static size_t DetermineAllocationSize(const uint inlineElementSlots, size_t *const allocationPlusSizeRef = nullptr, uint *const alignedInlineElementSlotsRef = nullptr); + template static size_t DetermineAllocationSizeForArrayObjects(const uint inlineElementSlots, size_t *const allocationPlusSizeRef = nullptr, uint *const alignedInlineElementSlotsRef = nullptr); + template static void EnsureCalculationOfAllocationBuckets(); template static uint DetermineAvailableInlineElementSlots(const size_t allocationSize, bool *const isSufficientSpaceForInlinePropertySlotsRef); template static SparseArraySegment *DetermineInlineHeadSegmentPointer(T *const array); @@ -922,6 +941,8 @@ namespace Js typedef int32 TElement; + static const uint8 AllocationBucketsCount = 3; + static uint allocationBuckets[AllocationBucketsCount][AllocationBucketsInfoSize]; static const int32 MissingItem; virtual BOOL HasItem(uint32 index) override; @@ -1059,6 +1080,8 @@ namespace Js typedef double TElement; + static const uint8 AllocationBucketsCount = 3; + static uint allocationBuckets[AllocationBucketsCount][AllocationBucketsInfoSize]; static const double MissingItem; virtual BOOL HasItem(uint32 index) override; diff --git a/lib/Runtime/Library/JavascriptArray.inl b/lib/Runtime/Library/JavascriptArray.inl index 9668db1b838..8502ee3a564 100644 --- a/lib/Runtime/Library/JavascriptArray.inl +++ b/lib/Runtime/Library/JavascriptArray.inl @@ -157,8 +157,8 @@ namespace Js { size_t allocationPlusSize; uint alignedInlineElementSlots; - DetermineAllocationSize( - SparseArraySegmentBase::SMALL_CHUNK_SIZE, + DetermineAllocationSizeForArrayObjects( + 0, &allocationPlusSize, &alignedInlineElementSlots); return RecyclerNewPlusZ(recycler, allocationPlusSize, className, type, alignedInlineElementSlots); @@ -180,18 +180,8 @@ namespace Js size_t allocationPlusSize; uint alignedInlineElementSlots; className* array; - if (!length) // zero length - use default head chunk size - { - DetermineAllocationSize( - SparseArraySegmentBase::HEAD_CHUNK_SIZE, - &allocationPlusSize, - &alignedInlineElementSlots); - } - else //Small array - { - Assert(length <= SparseArraySegmentBase::HEAD_CHUNK_SIZE); - DetermineAllocationSize(length, &allocationPlusSize, &alignedInlineElementSlots); - } + + DetermineAllocationSizeForArrayObjects(length, &allocationPlusSize, &alignedInlineElementSlots); array = RecyclerNewPlusZ(recycler, allocationPlusSize, className, length, arrayType); SparseArraySegment *head = @@ -1677,6 +1667,63 @@ SECOND_PASS: return totalSize; } + template + void JavascriptArray::EnsureCalculationOfAllocationBuckets() + { + // If allocation size for current ArrayType has already calculated, no need to recalculate it. + bool determineAllocationSize = ArrayType::allocationBuckets[0][MissingElementsCountIndex] == 0; + if (determineAllocationSize) + { + uint temp; + for (uint8 i = 0;i < ArrayType::AllocationBucketsCount;i++) + { + ArrayType::allocationBuckets[i][AllocationSizeIndex] = (uint)DetermineAllocationSize(ArrayType::allocationBuckets[i][AllocationBucketIndex], nullptr, &temp); + ArrayType::allocationBuckets[i][MissingElementsCountIndex] = temp; + } + } + return; + } + + template + inline size_t JavascriptArray::DetermineAllocationSizeForArrayObjects( + const uint inlineElementSlots, + size_t *const allocationPlusSizeRef, + uint *const alignedInlineElementSlotsRef) + { + uint8 bucketsCount = ArrayType::AllocationBucketsCount; + + EnsureCalculationOfAllocationBuckets(); + + if (inlineElementSlots >= 0 && inlineElementSlots <= ArrayType::allocationBuckets[bucketsCount - 1][AllocationBucketIndex]) + { + for (uint8 i = 0;i < bucketsCount;i++) + { + uint elementsCountToInitialize = ArrayType::allocationBuckets[i][MissingElementsCountIndex]; + uint allocationSize = ArrayType::allocationBuckets[i][AllocationSizeIndex]; + + // Ensure we already have allocation size calculated and within range + Assert(elementsCountToInitialize > 0 && elementsCountToInitialize <= ArrayType::allocationBuckets[bucketsCount - 1][MissingElementsCountIndex]); + Assert(allocationSize > 0 && allocationSize <= ArrayType::allocationBuckets[bucketsCount - 1][AllocationSizeIndex]); + + if (inlineElementSlots <= ArrayType::allocationBuckets[i][AllocationBucketIndex]) + { + if (alignedInlineElementSlotsRef) + { + *alignedInlineElementSlotsRef = elementsCountToInitialize; + } + if (allocationPlusSizeRef) + { + *allocationPlusSizeRef = allocationSize - sizeof(ArrayType); + } + return allocationSize; + } + } + } + + return DetermineAllocationSize(inlineElementSlots, allocationPlusSizeRef, alignedInlineElementSlotsRef); + } + + template inline uint JavascriptArray::DetermineAvailableInlineElementSlots( const size_t allocationSize, diff --git a/lib/Runtime/Library/JavascriptBuiltInFunctionList.h b/lib/Runtime/Library/JavascriptBuiltInFunctionList.h index 2fa438240e7..01896f51f53 100644 --- a/lib/Runtime/Library/JavascriptBuiltInFunctionList.h +++ b/lib/Runtime/Library/JavascriptBuiltInFunctionList.h @@ -299,6 +299,11 @@ BUILTIN(Math, Cbrt, Cbrt, FunctionInfo::ErrorOnNew) BUILTIN(Math, Imul, Imul, FunctionInfo::ErrorOnNew) BUILTIN(Math, Clz32, Clz32, FunctionInfo::ErrorOnNew) +// Wasm entry points +#ifdef ENABLE_WASM +BUILTIN(WasmLibrary, instantiateModule, instantiateModule, FunctionInfo::ErrorOnNew) +#endif + // SIMDFloat32x4Lib entry points #ifdef ENABLE_SIMDJS BUILTIN(SIMDFloat32x4Lib, Float32x4, EntryFloat32x4, FunctionInfo::ErrorOnNew) diff --git a/lib/Runtime/Library/JavascriptError.cpp b/lib/Runtime/Library/JavascriptError.cpp index 3435a527fcf..5371881328e 100644 --- a/lib/Runtime/Library/JavascriptError.cpp +++ b/lib/Runtime/Library/JavascriptError.cpp @@ -357,6 +357,7 @@ namespace Js THROW_ERROR_IMPL(ThrowURIError, CreateURIError, GetURIErrorType, kjstURIError) #undef THROW_ERROR_IMPL + void __declspec(noreturn) JavascriptError::ThrowUnreachable(ScriptContext* scriptContext) { ThrowError(scriptContext, WASMERR_Unreachable); } JavascriptError* JavascriptError::MapError(ScriptContext* scriptContext, ErrorTypeEnum errorType) { switch (errorType) diff --git a/lib/Runtime/Library/JavascriptError.h b/lib/Runtime/Library/JavascriptError.h index 0997e6b2919..bd7c4d5d0b5 100644 --- a/lib/Runtime/Library/JavascriptError.h +++ b/lib/Runtime/Library/JavascriptError.h @@ -84,6 +84,9 @@ namespace Js static void __declspec(noreturn) SetMessageAndThrowError(ScriptContext* scriptContext, JavascriptError *pError, int32 hCode, EXCEPINFO* pei); static JavascriptError* MapError(ScriptContext* scriptContext, ErrorTypeEnum errorType); + //HELPERCALL needs a non-overloaded function pointer + static void __declspec(noreturn) ThrowUnreachable(ScriptContext* scriptContext); + #define THROW_ERROR_DECL(err_method) \ static void __declspec(noreturn) err_method(ScriptContext* scriptContext, int32 hCode, EXCEPINFO* ei); \ static void __declspec(noreturn) err_method(ScriptContext* scriptContext, int32 hCode, PCWSTR varName = nullptr); \ diff --git a/lib/Runtime/Library/JavascriptExternalFunction.cpp b/lib/Runtime/Library/JavascriptExternalFunction.cpp index ad7bb999cd5..5a3bb9f9205 100644 --- a/lib/Runtime/Library/JavascriptExternalFunction.cpp +++ b/lib/Runtime/Library/JavascriptExternalFunction.cpp @@ -176,7 +176,7 @@ namespace Js Var JavascriptExternalFunction::ExternalFunctionThunk(RecyclableObject* function, CallInfo callInfo, ...) { - RUNTIME_ARGUMENTS(args, callInfo); + ARGUMENTS(args, callInfo); JavascriptExternalFunction* externalFunction = static_cast(function); ScriptContext * scriptContext = externalFunction->type->GetScriptContext(); @@ -261,7 +261,7 @@ namespace Js Var JavascriptExternalFunction::WrappedFunctionThunk(RecyclableObject* function, CallInfo callInfo, ...) { - RUNTIME_ARGUMENTS(args, callInfo); + ARGUMENTS(args, callInfo); JavascriptExternalFunction* externalFunction = static_cast(function); ScriptContext* scriptContext = externalFunction->type->GetScriptContext(); Assert(!scriptContext->GetThreadContext()->IsDisableImplicitException()); @@ -285,7 +285,7 @@ namespace Js Var JavascriptExternalFunction::StdCallExternalFunctionThunk(RecyclableObject* function, CallInfo callInfo, ...) { - RUNTIME_ARGUMENTS(args, callInfo); + ARGUMENTS(args, callInfo); JavascriptExternalFunction* externalFunction = static_cast(function); externalFunction->PrepareExternalCall(&args); diff --git a/lib/Runtime/Library/JavascriptLibrary.cpp b/lib/Runtime/Library/JavascriptLibrary.cpp index 1efce42f9d7..ccc898ff9f6 100644 --- a/lib/Runtime/Library/JavascriptLibrary.cpp +++ b/lib/Runtime/Library/JavascriptLibrary.cpp @@ -1505,6 +1505,16 @@ namespace Js DeferredTypeHandler::GetDefaultInstance(), nativeErrorPrototype); AddFunction(globalObject, PropertyIds::URIError, uriErrorConstructor); + +#ifdef ENABLE_WASM + if (PHASE_ON1(WasmPhase)) + { + wasmObject = DynamicObject::New(recycler, + DynamicType::New(scriptContext, TypeIds_Object, objectPrototype, nullptr, + DeferredTypeHandler::GetDefaultInstance())); + AddMember(globalObject, PropertyIds::Wasm, wasmObject); + } +#endif } void JavascriptLibrary::EnsureDebugObject(DynamicObject* newDebugObject) @@ -2662,6 +2672,16 @@ namespace Js mathObject->SetHasNoEnumerableProperties(true); } +#ifdef ENABLE_WASM + void __cdecl JavascriptLibrary::InitializeWasmObject(DynamicObject* WasmObject, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode) + { + typeHandler->Convert(WasmObject, mode, 1); + JavascriptLibrary* library = WasmObject->GetLibrary(); + library->AddFunctionToLibraryObject(WasmObject, PropertyIds::instantiateModule, &WasmLibrary::EntryInfo::instantiateModule, 2); + library->AddMember(WasmObject, PropertyIds::experimentalVersion, JavascriptNumber::New(WasmLibrary::experimentalVersion, library->scriptContext), PropertyNone); + } +#endif + // SIMD_JS #ifdef ENABLE_SIMDJS void JavascriptLibrary::InitializeSIMDObject(DynamicObject* simdObject, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode) diff --git a/lib/Runtime/Library/JavascriptLibrary.h b/lib/Runtime/Library/JavascriptLibrary.h index 26719d4cde0..5875aacb27e 100644 --- a/lib/Runtime/Library/JavascriptLibrary.h +++ b/lib/Runtime/Library/JavascriptLibrary.h @@ -378,6 +378,9 @@ namespace Js JavascriptFunction* objectValueOfFunction; JavascriptFunction* objectToStringFunction; +#ifdef ENABLE_WASM + DynamicObject* wasmObject; +#endif // SIMD_JS JavascriptFunction* simdFloat32x4ToStringFunction; @@ -1201,6 +1204,9 @@ namespace Js void InitializeComplexThings(); void InitializeStaticValues(); static void __cdecl InitializeMathObject(DynamicObject* mathObject, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode); +#ifdef ENABLE_WASM + static void __cdecl InitializeWasmObject(DynamicObject* WasmObject, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode); +#endif // SIMD_JS static void __cdecl InitializeSIMDObject(DynamicObject* simdObject, DeferredTypeHandlerBase * typeHandler, DeferredInitializeMode mode); static void __cdecl InitializeSIMDOpCodeMaps(); diff --git a/lib/Runtime/Library/JavascriptNumber.h b/lib/Runtime/Library/JavascriptNumber.h index 4c675330248..1df7d2f962e 100644 --- a/lib/Runtime/Library/JavascriptNumber.h +++ b/lib/Runtime/Library/JavascriptNumber.h @@ -54,7 +54,7 @@ namespace Js static bool TryToVarFast(int32 nValue, Var* result); static bool TryToVarFastWithCheck(double value, Var* result); - inline static bool IsNan(double value) { return NumberUtilities::IsNan(value); } + inline static BOOL IsNan(double value) { return NumberUtilities::IsNan(value); } static bool IsZero(double value); static BOOL IsNegZero(double value); static bool IsPosInf(double value); diff --git a/lib/Runtime/Library/JavascriptPromise.cpp b/lib/Runtime/Library/JavascriptPromise.cpp index 3597d374fff..3f05e801f4e 100644 --- a/lib/Runtime/Library/JavascriptPromise.cpp +++ b/lib/Runtime/Library/JavascriptPromise.cpp @@ -451,13 +451,9 @@ namespace Js } // 3. Let promiseCapability be NewPromiseCapability(C). - JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(constructor, scriptContext); - // 4. Perform ? Call(promiseCapability.[[Reject]], undefined, << r >>). - TryCallResolveOrRejectHandler(promiseCapability->GetReject(), r, scriptContext); - // 5. Return promiseCapability.[[Promise]]. - return promiseCapability->GetPromise(); + return CreateRejectedPromise(r, scriptContext, constructor); } // Promise.resolve as described in ES 2015 Section 25.4.4.5 @@ -505,13 +501,9 @@ namespace Js } // 4. Let promiseCapability be NewPromiseCapability(C). - JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(constructor, scriptContext); - // 5. Perform ? Call(promiseCapability.[[Resolve]], undefined, << x >>). - TryCallResolveOrRejectHandler(promiseCapability->GetResolve(), x, scriptContext); - // 6. Return promiseCapability.[[Promise]]. - return promiseCapability->GetPromise(); + return CreateResolvedPromise(x, scriptContext, constructor); } // Promise.prototype.then as described in ES 2015 Section 25.4.5.3 @@ -525,18 +517,13 @@ namespace Js AUTO_TAG_NATIVE_LIBRARY_ENTRY(function, callInfo, _u("Promise.prototype.then")); - JavascriptPromise* promise; - if (args.Info.Count < 1 || !JavascriptPromise::Is(args[0])) { JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedPromise, _u("Promise.prototype.then")); } - promise = JavascriptPromise::FromVar(args[0]); - JavascriptLibrary* library = scriptContext->GetLibrary(); - Var constructor = JavascriptOperators::SpeciesConstructor(promise, scriptContext->GetLibrary()->GetPromiseConstructor(), scriptContext); - JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(constructor, scriptContext); + JavascriptPromise* promise = JavascriptPromise::FromVar(args[0]); RecyclableObject* rejectionHandler; RecyclableObject* fulfillmentHandler; @@ -558,27 +545,7 @@ namespace Js rejectionHandler = library->GetThrowerFunction(); } - JavascriptPromiseReaction* resolveReaction = JavascriptPromiseReaction::New(promiseCapability, fulfillmentHandler, scriptContext); - JavascriptPromiseReaction* rejectReaction = JavascriptPromiseReaction::New(promiseCapability, rejectionHandler, scriptContext); - - switch (promise->status) - { - case PromiseStatusCode_Unresolved: - promise->resolveReactions->Add(resolveReaction); - promise->rejectReactions->Add(rejectReaction); - break; - case PromiseStatusCode_HasResolution: - EnqueuePromiseReactionTask(resolveReaction, promise->result, scriptContext); - break; - case PromiseStatusCode_HasRejection: - EnqueuePromiseReactionTask(rejectReaction, promise->result, scriptContext); - break; - default: - AssertMsg(false, "Promise status is in an invalid state"); - break; - } - - return promiseCapability->GetPromise(); + return CreateThenPromise(promise, fulfillmentHandler, rejectionHandler, scriptContext); } // Promise Reject and Resolve Functions as described in ES 2015 Section 25.4.1.4.1 and 25.4.1.4.2 @@ -615,16 +582,34 @@ namespace Js JavascriptPromise* promise = resolveOrRejectFunction->GetPromise(); + return promise->ResolveHelper(resolution, rejecting, scriptContext); + } + + Var JavascriptPromise::Resolve(Var resolution, ScriptContext* scriptContext) + { + return this->ResolveHelper(resolution, false, scriptContext); + } + + Var JavascriptPromise::Reject(Var resolution, ScriptContext* scriptContext) + { + return this->ResolveHelper(resolution, true, scriptContext); + } + + Var JavascriptPromise::ResolveHelper(Var resolution, bool isRejecting, ScriptContext* scriptContext) + { + JavascriptLibrary* library = scriptContext->GetLibrary(); + Var undefinedVar = library->GetUndefined(); + // We only need to check SameValue and check for thenable resolution in the Resolve function case (not Reject) - if (!rejecting) + if (!isRejecting) { - if (JavascriptConversion::SameValue(resolution, promise)) + if (JavascriptConversion::SameValue(resolution, this)) { JavascriptError* selfResolutionError = scriptContext->GetLibrary()->CreateTypeError(); JavascriptError::SetErrorMessage(selfResolutionError, JSERR_PromiseSelfResolution, _u(""), scriptContext); resolution = selfResolutionError; - rejecting = true; + isRejecting = true; } else if (RecyclableObject::Is(resolution)) { @@ -635,7 +620,7 @@ namespace Js if (JavascriptConversion::IsCallable(then)) { - JavascriptPromiseResolveThenableTaskFunction* resolveThenableTaskFunction = library->CreatePromiseResolveThenableTaskFunction(EntryResolveThenableTaskFunction, promise, thenable, RecyclableObject::FromVar(then)); + JavascriptPromiseResolveThenableTaskFunction* resolveThenableTaskFunction = library->CreatePromiseResolveThenableTaskFunction(EntryResolveThenableTaskFunction, this, thenable, RecyclableObject::FromVar(then)); library->EnqueueTask(resolveThenableTaskFunction); @@ -651,7 +636,7 @@ namespace Js resolution = undefinedVar; } - rejecting = true; + isRejecting = true; } } } @@ -660,23 +645,23 @@ namespace Js PromiseStatus newStatus; // Need to check rejecting state again as it might have changed due to failures - if (rejecting) + if (isRejecting) { - reactions = promise->GetRejectReactions(); + reactions = this->GetRejectReactions(); newStatus = PromiseStatusCode_HasRejection; } else { - reactions = promise->GetResolveReactions(); + reactions = this->GetResolveReactions(); newStatus = PromiseStatusCode_HasResolution; } Assert(resolution != nullptr); - promise->result = resolution; - promise->resolveReactions = nullptr; - promise->rejectReactions = nullptr; - promise->status = newStatus; + this->result = resolution; + this->resolveReactions = nullptr; + this->rejectReactions = nullptr; + this->status = newStatus; return TriggerPromiseReactions(reactions, resolution, scriptContext); } @@ -736,7 +721,7 @@ namespace Js JavascriptExceptionObject* exception = nullptr; { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, false); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); try { handlerResult = CALL_FUNCTION(handler, Js::CallInfo(Js::CallFlags::CallFlags_Value, 2), @@ -787,6 +772,69 @@ namespace Js return TryCallResolveOrRejectHandler(handler, thrownObject, scriptContext); } + Var JavascriptPromise::CreateRejectedPromise(Var resolution, ScriptContext* scriptContext, Var promiseConstructor) + { + if (promiseConstructor == nullptr) + { + promiseConstructor = scriptContext->GetLibrary()->GetPromiseConstructor(); + } + + JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(promiseConstructor, scriptContext); + + TryCallResolveOrRejectHandler(promiseCapability->GetReject(), resolution, scriptContext); + + return promiseCapability->GetPromise(); + } + + Var JavascriptPromise::CreateResolvedPromise(Var resolution, ScriptContext* scriptContext, Var promiseConstructor) + { + if (promiseConstructor == nullptr) + { + promiseConstructor = scriptContext->GetLibrary()->GetPromiseConstructor(); + } + + JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(promiseConstructor, scriptContext); + + TryCallResolveOrRejectHandler(promiseCapability->GetResolve(), resolution, scriptContext); + + return promiseCapability->GetPromise(); + } + + Var JavascriptPromise::CreatePassThroughPromise(JavascriptPromise* sourcePromise, ScriptContext* scriptContext) + { + JavascriptLibrary* library = scriptContext->GetLibrary(); + + return CreateThenPromise(sourcePromise, library->GetIdentityFunction(), library->GetThrowerFunction(), scriptContext); + } + + Var JavascriptPromise::CreateThenPromise(JavascriptPromise* sourcePromise, RecyclableObject* fulfillmentHandler, RecyclableObject* rejectionHandler, ScriptContext* scriptContext) + { + Var constructor = JavascriptOperators::SpeciesConstructor(sourcePromise, scriptContext->GetLibrary()->GetPromiseConstructor(), scriptContext); + JavascriptPromiseCapability* promiseCapability = NewPromiseCapability(constructor, scriptContext); + + JavascriptPromiseReaction* resolveReaction = JavascriptPromiseReaction::New(promiseCapability, fulfillmentHandler, scriptContext); + JavascriptPromiseReaction* rejectReaction = JavascriptPromiseReaction::New(promiseCapability, rejectionHandler, scriptContext); + + switch (sourcePromise->status) + { + case PromiseStatusCode_Unresolved: + sourcePromise->resolveReactions->Add(resolveReaction); + sourcePromise->rejectReactions->Add(rejectReaction); + break; + case PromiseStatusCode_HasResolution: + EnqueuePromiseReactionTask(resolveReaction, sourcePromise->result, scriptContext); + break; + case PromiseStatusCode_HasRejection: + EnqueuePromiseReactionTask(rejectReaction, sourcePromise->result, scriptContext); + break; + default: + AssertMsg(false, "Promise status is in an invalid state"); + break; + } + + return promiseCapability->GetPromise(); + } + // Promise Resolve Thenable Job as described in ES 2015 Section 25.4.2.2 Var JavascriptPromise::EntryResolveThenableTaskFunction(RecyclableObject* function, CallInfo callInfo, ...) { @@ -810,7 +858,7 @@ namespace Js JavascriptExceptionObject* exception = nullptr; { - Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext, false); + Js::JavascriptExceptionOperators::AutoCatchHandlerExists autoCatchHandlerExists(scriptContext); try { return CALL_FUNCTION(thenFunction, Js::CallInfo(Js::CallFlags::CallFlags_Value, 3), diff --git a/lib/Runtime/Library/JavascriptPromise.h b/lib/Runtime/Library/JavascriptPromise.h index 7bcaf21f606..d82716c74ae 100644 --- a/lib/Runtime/Library/JavascriptPromise.h +++ b/lib/Runtime/Library/JavascriptPromise.h @@ -422,6 +422,11 @@ namespace Js static bool Is(Var aValue); static JavascriptPromise* FromVar(Js::Var aValue); + static Var CreateRejectedPromise(Var resolution, ScriptContext* scriptContext, Var promiseConstructor = nullptr); + static Var CreateResolvedPromise(Var resolution, ScriptContext* scriptContext, Var promiseConstructor = nullptr); + static Var CreatePassThroughPromise(JavascriptPromise* sourcePromise, ScriptContext* scriptContext); + static Var CreateThenPromise(JavascriptPromise* sourcePromise, RecyclableObject* fulfillmentHandler, RecyclableObject* rejectionHandler, ScriptContext* scriptContext); + virtual BOOL GetDiagValueString(StringBuilder* stringBuilder, ScriptContext* requestContext) override; virtual BOOL GetDiagTypeString(StringBuilder* stringBuilder, ScriptContext* requestContext) override; @@ -437,6 +442,9 @@ namespace Js static Var TryCallResolveOrRejectHandler(Var handler, Var value, ScriptContext* scriptContext); static Var TryRejectWithExceptionObject(JavascriptExceptionObject* exceptionObject, Var handler, ScriptContext* scriptContext); + Var Resolve(Var resolution, ScriptContext* scriptContext); + Var Reject(Var resolution, ScriptContext* scriptContext); + enum PromiseStatus { PromiseStatusCode_Undefined, @@ -448,6 +456,9 @@ namespace Js PromiseStatus GetStatus() const { return status; } Var GetResult() const { return result; } + protected: + Var ResolveHelper(Var resolution, bool isRejecting, ScriptContext* scriptContext); + protected: PromiseStatus status; Var result; diff --git a/lib/Runtime/Library/JavascriptString.h b/lib/Runtime/Library/JavascriptString.h index 6ab5956a76e..b9b8bcdbc43 100644 --- a/lib/Runtime/Library/JavascriptString.h +++ b/lib/Runtime/Library/JavascriptString.h @@ -218,12 +218,12 @@ namespace Js static JavascriptString* Concat_BothOneChar(JavascriptString * pstLeft, JavascriptString * pstRight); public: - static OPT_CONSTEXPR uint32 GetOffsetOfpszValue() + static uint32 GetOffsetOfpszValue() { return offsetof(JavascriptString, m_pszValue); } - static OPT_CONSTEXPR uint32 GetOffsetOfcharLength() + static uint32 GetOffsetOfcharLength() { return offsetof(JavascriptString, m_charLength); } diff --git a/lib/Runtime/Library/ScriptFunction.cpp b/lib/Runtime/Library/ScriptFunction.cpp index 4e5fef1fcb3..7d27184060c 100644 --- a/lib/Runtime/Library/ScriptFunction.cpp +++ b/lib/Runtime/Library/ScriptFunction.cpp @@ -626,11 +626,11 @@ namespace Js #endif AsmJsScriptFunction::AsmJsScriptFunction(FunctionProxy * proxy, ScriptFunctionType* deferredPrototypeType) : - ScriptFunction(proxy, deferredPrototypeType), m_moduleMemory(nullptr) + ScriptFunction(proxy, deferredPrototypeType), m_moduleMemory(nullptr), m_lazyError(nullptr) {} AsmJsScriptFunction::AsmJsScriptFunction(DynamicType * type) : - ScriptFunction(type), m_moduleMemory(nullptr) + ScriptFunction(type), m_moduleMemory(nullptr), m_lazyError(nullptr) {} ScriptFunctionWithInlineCache::ScriptFunctionWithInlineCache(FunctionProxy * proxy, ScriptFunctionType* deferredPrototypeType) : diff --git a/lib/Runtime/Library/ScriptFunction.h b/lib/Runtime/Library/ScriptFunction.h index d16b71a5c54..e5410e99367 100644 --- a/lib/Runtime/Library/ScriptFunction.h +++ b/lib/Runtime/Library/ScriptFunction.h @@ -117,6 +117,8 @@ namespace Js void SetModuleMemory(Var* mem) { m_moduleMemory = mem; } Var * GetModuleMemory() const { return m_moduleMemory; } + Js::JavascriptError * GetLazyError() const { return m_lazyError; } + void SetLazyError(Js::JavascriptError * val) { m_lazyError = val; } static uint32 GetOffsetOfModuleMemory() { return offsetof(AsmJsScriptFunction, m_moduleMemory); } protected: @@ -126,6 +128,7 @@ namespace Js private: Var * m_moduleMemory; + JavascriptError * m_lazyError; }; class ScriptFunctionWithInlineCache : public ScriptFunction diff --git a/lib/Runtime/Library/WasmLibrary.cpp b/lib/Runtime/Library/WasmLibrary.cpp new file mode 100644 index 00000000000..cf8f7a1f152 --- /dev/null +++ b/lib/Runtime/Library/WasmLibrary.cpp @@ -0,0 +1,662 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +#include "RuntimeLibraryPch.h" + +#ifdef ENABLE_WASM +#include "../WasmReader/WasmReaderPch.h" +// Included for AsmJsDefaultEntryThunk +#include "Language/InterpreterStackFrame.h" + +namespace Js +{ + const unsigned int WasmLibrary::experimentalVersion = Wasm::experimentalVersion; + + char16* WasmLibrary::lastWasmExceptionMessage = nullptr; + + Var WasmLibrary::instantiateModule(RecyclableObject* function, CallInfo callInfo, ...) + { + PROBE_STACK(function->GetScriptContext(), Js::Constants::MinStackDefault); + + ARGUMENTS(args, callInfo); + AssertMsg(args.Info.Count > 0, "Should always have implicit 'this'"); + ScriptContext* scriptContext = function->GetScriptContext(); + + Assert(!(callInfo.Flags & CallFlags_New)); + + if (args.Info.Count < 2) + { + JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedTypedArray, _u("[Wasm].instantiateModule(typedArray,)")); + } + if (args.Info.Count < 3) + { + JavascriptError::ThrowTypeError(scriptContext, JSERR_NeedObject, _u("[Wasm].instantiateModule(,ffi)")); + } + + const BOOL isTypedArray = Js::TypedArrayBase::Is(args[1]); + const BOOL isArrayBuffer = Js::ArrayBuffer::Is(args[1]); + + if (!isTypedArray && !isArrayBuffer) + { + JavascriptError::ThrowTypeError(scriptContext, JSERR_This_NeedTypedArray, _u("[Wasm].instantiateModule(typedArray,)")); + } + + BYTE* buffer; + uint byteLength; + if (isTypedArray) + { + Js::TypedArrayBase* array = Js::TypedArrayBase::FromVar(args[1]); + buffer = array->GetByteBuffer(); + byteLength = array->GetByteLength(); + } + else + { + Js::ArrayBuffer* arrayBuffer = Js::ArrayBuffer::FromVar(args[1]); + buffer = arrayBuffer->GetBuffer(); + byteLength = arrayBuffer->GetByteLength(); + } + + if (!Js::JavascriptObject::Is(args[2])) + { + JavascriptError::ThrowTypeError(scriptContext, JSERR_NeedObject, _u("[Wasm].instantiateModule(,ffi)")); + } + Js::Var ffi = args[2]; + + CompileScriptException se; + Js::Var exportObject; + Js::Var start = nullptr; + Js::Utf8SourceInfo* utf8SourceInfo; + BEGIN_LEAVE_SCRIPT_INTERNAL(scriptContext) + exportObject = WasmLibrary::LoadWasmScript( + scriptContext, + (const char16*)buffer, + nullptr, // source info + &se, + &utf8SourceInfo, + byteLength, + Js::Constants::GlobalCode, + ffi, + &start + ); + END_LEAVE_SCRIPT_INTERNAL(scriptContext); + + HRESULT hr = se.ei.scode; + if (FAILED(hr)) + { + if (hr == E_OUTOFMEMORY || hr == VBSERR_OutOfMemory || hr == VBSERR_OutOfStack || hr == ERRnoMemory) + { + Js::Throw::OutOfMemory(); + } + JavascriptError::ThrowParserError(scriptContext, hr, &se); + } + + if (exportObject && start) + { + Js::ScriptFunction* f = Js::AsmJsScriptFunction::FromVar(start); + Js::CallInfo info(Js::CallFlags_New, 1); + Js::Arguments startArg(info, &start); + Js::JavascriptFunction::CallFunction(f, f->GetEntryPoint(), startArg); + } + return exportObject; + } + + Var WasmLibrary::WasmLazyTrapCallback(RecyclableObject *callee, CallInfo, ...) + { + AsmJsScriptFunction* asmFunction = static_cast(callee); + Assert(asmFunction); + ScriptContext * scriptContext = asmFunction->GetScriptContext(); + Assert(scriptContext); + JavascriptExceptionOperators::Throw(asmFunction->GetLazyError(), scriptContext); + } + + void WasmLibrary::WasmLoadDataSegs(Wasm::WasmModule * wasmModule, Var* heap, ScriptContext* ctx) + { + if (wasmModule->GetMemory()->minSize != 0) + { + const uint64 maxSize = wasmModule->GetMemory()->maxSize; + if (maxSize > ArrayBuffer::MaxArrayBufferLength) + { + Js::Throw::OutOfMemory(); + } + // TODO: create new type array buffer that is non detachable + *heap = JavascriptArrayBuffer::Create((uint32)maxSize, ctx->GetLibrary()->GetArrayBufferType()); + BYTE* buffer = ((JavascriptArrayBuffer*)*heap)->GetBuffer(); + for (uint32 iSeg = 0; iSeg < wasmModule->GetDataSegCount(); ++iSeg) + { + Wasm::WasmDataSegment* segment = wasmModule->GetDataSeg(iSeg); + Assert(segment != nullptr); + const uint32 offset = segment->getDestAddr(wasmModule); + const uint32 size = segment->getSourceSize(); + if (offset > maxSize || UInt32Math::Add(offset, size) > maxSize) + { + throw Wasm::WasmCompilationException(_u("Data segment #%u is out of bound"), iSeg); + } + + if (size > 0) + { + js_memcpy_s(buffer + offset, (uint32)maxSize - offset, segment->getData(), size); + } + } + + } + else + { + *heap = nullptr; + } + } + + void WasmLibrary::WasmFunctionGenerateBytecode(AsmJsScriptFunction* func, bool propagateError) + { + FunctionBody* body = func->GetFunctionBody(); + AsmJsFunctionInfo* info = body->GetAsmJsFunctionInfo(); + ScriptContext* scriptContext = func->GetScriptContext(); + + Js::FunctionEntryPointInfo * entypointInfo = (Js::FunctionEntryPointInfo*)func->GetEntryPointInfo(); + Wasm::WasmReaderInfo* readerInfo = info->GetWasmReaderInfo(); + info->SetWasmReaderInfo(nullptr); + try + { + Wasm::WasmBytecodeGenerator::GenerateFunctionBytecode(scriptContext, readerInfo); + func->GetDynamicType()->SetEntryPoint(Js::AsmJsExternalEntryPoint); + entypointInfo->jsMethod = AsmJsDefaultEntryThunk; + // Do MTJRC/MAIC:0 check +#if ENABLE_DEBUG_CONFIG_OPTIONS + if (CONFIG_FLAG(ForceNative) || CONFIG_FLAG(MaxAsmJsInterpreterRunCount) == 0) + { + GenerateFunction(scriptContext->GetNativeCodeGenerator(), func->GetFunctionBody(), func); + } +#endif + } + catch (Wasm::WasmCompilationException& ex) + { + char16* originalMessage = ex.ReleaseErrorMessage(); + intptr_t offset = readerInfo->m_module->GetReader()->GetCurrentOffset(); + intptr_t start = readerInfo->m_funcInfo->m_readerInfo.startOffset; + uint32 size = readerInfo->m_funcInfo->m_readerInfo.size; + + Wasm::WasmCompilationException newEx = Wasm::WasmCompilationException( + _u("function %s at offset %d/%d: %s"), + body->GetDisplayName(), + offset - start, + size, + originalMessage + ); + SysFreeString(originalMessage); + if (propagateError) + { + throw newEx; + } + char16* msg = newEx.ReleaseErrorMessage(); + //Output::Print(_u("%s\n"), msg); + Js::JavascriptLibrary *library = scriptContext->GetLibrary(); + Js::JavascriptError *pError = library->CreateError(); + Js::JavascriptError::SetErrorMessage(pError, JSERR_WasmCompileError, msg, scriptContext); + + func->GetDynamicType()->SetEntryPoint(WasmLazyTrapCallback); + entypointInfo->jsMethod = WasmLazyTrapCallback; + func->SetLazyError(pError); + } + } + + void WasmLibrary::WasmLoadFunctions(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var* moduleMemoryPtr, Var* exportObj, Var* localModuleFunctions, bool* hasAnyLazyTraps) + { + FrameDisplay * frameDisplay = RecyclerNewPlus(ctx->GetRecycler(), sizeof(void*), FrameDisplay, 1); + frameDisplay->SetItem(0, moduleMemoryPtr); + + for (uint i = 0; i < wasmModule->GetWasmFunctionCount(); ++i) + { + AsmJsScriptFunction * funcObj = ctx->GetLibrary()->CreateAsmJsScriptFunction(wasmModule->GetWasmFunctionInfo(i)->GetBody()); + funcObj->SetModuleMemory(moduleMemoryPtr); + FunctionEntryPointInfo * entypointInfo = (FunctionEntryPointInfo*)funcObj->GetEntryPointInfo(); + entypointInfo->SetIsAsmJSFunction(true); + entypointInfo->SetModuleAddress((uintptr_t)moduleMemoryPtr); + funcObj->SetEnvironment(frameDisplay); + localModuleFunctions[i] = funcObj; + + if (!PHASE_OFF(WasmDeferredPhase, funcObj->GetFunctionBody())) + { + funcObj->GetDynamicType()->SetEntryPoint(WasmLibrary::WasmDeferredParseExternalThunk); + entypointInfo->jsMethod = WasmLibrary::WasmDeferredParseInternalThunk; + } + else + { + WasmFunctionGenerateBytecode(funcObj, !PHASE_ON(WasmLazyTrapPhase, funcObj->GetFunctionBody())); + } + } + } + + void WasmLibrary::WasmBuildObject(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var exportsNamespace, Var* heap, Var* exportObj, bool* hasAnyLazyTraps, Var* localModuleFunctions, Var* importFunctions) + { + if (wasmModule->GetMemory()->minSize != 0 && wasmModule->GetMemory()->exported) + { + PropertyRecord const * propertyRecord = nullptr; + ctx->GetOrAddPropertyRecord(_u("memory"), lstrlen(_u("memory")), &propertyRecord); + JavascriptOperators::OP_SetProperty(exportsNamespace, propertyRecord->GetPropertyId(), *heap, ctx); + } + + PropertyRecord const * exportsPropertyRecord = nullptr; + ctx->GetOrAddPropertyRecord(_u("exports"), lstrlen(_u("exports")), &exportsPropertyRecord); + JavascriptOperators::OP_SetProperty(*exportObj, exportsPropertyRecord->GetPropertyId(), exportsNamespace, ctx); + if (*hasAnyLazyTraps) + { + PropertyRecord const * hasErrorsPropertyRecord = nullptr; + ctx->GetOrAddPropertyRecord(_u("hasErrors"), lstrlen(_u("hasErrors")), &hasErrorsPropertyRecord); + JavascriptOperators::OP_SetProperty(exportsNamespace, hasErrorsPropertyRecord->GetPropertyId(), JavascriptBoolean::OP_LdTrue(ctx), ctx); + } + + for (uint32 iExport = 0; iExport < wasmModule->GetExportCount(); ++iExport) + { + Wasm::WasmExport* funcExport = wasmModule->GetFunctionExport(iExport); + if (funcExport && funcExport->nameLength > 0) + { + PropertyRecord const * propertyRecord = nullptr; + ctx->GetOrAddPropertyRecord(funcExport->name, funcExport->nameLength, &propertyRecord); + + Var obj = ctx->GetLibrary()->GetUndefined(); + switch (funcExport->kind) + { + case Wasm::ExternalKinds::Function: + + obj = GetFunctionObjFromFunctionIndex(wasmModule, ctx, funcExport->funcIndex, localModuleFunctions, importFunctions); + break; + case Wasm::ExternalKinds::Global: + Wasm::WasmGlobal* global = wasmModule->globals.Item(funcExport->funcIndex); + Assert(global->GetReferenceType() == Wasm::WasmGlobal::Const); //every global has to be resolved by this point + + if (global->GetMutability()) + { + throw Wasm::WasmCompilationException(_u("global %d is mutable. Exporting mutable globals isn't supported"), iExport); + } + + switch (global->GetType()) + { + case Wasm::WasmTypes::I32: + obj = JavascriptNumber::ToVar(global->cnst.i32, ctx); + break; + case Wasm::WasmTypes::F32: + obj = JavascriptNumber::New((double)global->cnst.f32, ctx); + break; + case Wasm::WasmTypes::F64: + obj = JavascriptNumber::New(global->cnst.f64, ctx); + break; + case Wasm::WasmTypes::I64: + default: + Assert(UNREACHED); + break; + } + } + JavascriptOperators::OP_SetProperty(exportsNamespace, propertyRecord->GetPropertyId(), obj, ctx); + } + } + } + + static Var GetImportVariable(Wasm::WasmImport* wi, ScriptContext* ctx, Var ffi) + { + PropertyRecord const * modPropertyRecord = nullptr; + char16* modName = wi->modName; + uint32 modNameLen = wi->modNameLen; + ctx->GetOrAddPropertyRecord(modName, modNameLen, &modPropertyRecord); + Var modProp = JavascriptOperators::OP_GetProperty(ffi, modPropertyRecord->GetPropertyId(), ctx); + + + + char16* name = wi->fnName; + uint32 nameLen = wi->fnNameLen; + Var prop = nullptr; + if (nameLen > 0) + { + PropertyRecord const * propertyRecord = nullptr; + ctx->GetOrAddPropertyRecord(name, nameLen, &propertyRecord); + + if (!JavascriptObject::Is(modProp)) + { + throw Wasm::WasmCompilationException(_u("Import module %s is invalid"), modName); + } + prop = JavascriptOperators::OP_GetProperty(modProp, propertyRecord->GetPropertyId(), ctx); + } + else + { + // Use only first level if name is missing + prop = modProp; + } + + return prop; + } + + template + void static SetGlobalValue(Var moduleEnv, uint offset, T val) + { + T* slot = (T*)moduleEnv + offset; + *slot = val; + } + + void WasmLibrary::WasmLoadImports(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var* importFunctions, Var moduleEnv, Var ffi) + { + const uint32 importCount = wasmModule->GetImportCount(); + if (importCount > 0 && (!ffi || !JavascriptObject::Is(ffi))) + { + throw Wasm::WasmCompilationException(_u("Import object is invalid")); + } + for (uint32 i = 0; i < importCount; ++i) + { + Var prop = GetImportVariable(wasmModule->GetFunctionImport(i), ctx, ffi); + if (!JavascriptFunction::Is(prop)) + { + throw Wasm::WasmCompilationException(_u("Import function %s.%s is invalid"), wasmModule->GetFunctionImport(i)->modName, wasmModule->GetFunctionImport(i)->fnName); + } + importFunctions[i] = prop; + } + } + + void WasmLibrary::WasmLoadGlobals(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var moduleEnv, Var ffi) + { + uint i = 0; + uint count = (uint) wasmModule->globals.Count(); + while (i < count && wasmModule->globals.Item(i)->GetReferenceType() == Wasm::WasmGlobal::ImportedReference) + { + Wasm::WasmGlobal* global = wasmModule->globals.Item(i); + Var prop = GetImportVariable(global->importVar, ctx, ffi); + + uint offset = wasmModule->GetOffsetForGlobal(global); + global->SetReferenceType(Wasm::WasmGlobal::Const); + + if (!JavascriptNumber::Is(prop) && !TaggedInt::Is(prop)) + { + throw Wasm::WasmCompilationException(_u("Import global %s.%s (%d) isn't a valid javascript number"), global->importVar->modName, global->importVar->fnName, i); + } + + switch (global->GetType()) + { + case Wasm::WasmTypes::I32: + { + + int val = JavascriptConversion::ToInt32(prop, ctx); + global->cnst.i32 = val; //resolve global to const + SetGlobalValue(moduleEnv, offset, val); + break; + } + case Wasm::WasmTypes::F32: + { + float val = (float) JavascriptConversion::ToNumber(prop, ctx); + global->cnst.f32 = val; + SetGlobalValue(moduleEnv, offset, val); + } + case Wasm::WasmTypes::F64: + { + double val = JavascriptConversion::ToNumber(prop, ctx); + global->cnst.f64 = val; + SetGlobalValue(moduleEnv, offset, val); + break; + } + case Wasm::WasmTypes::I64: + default: + Assert(UNREACHED); + break; + + } + i++; + } + + + for (; i < count; i++) + { + Wasm::WasmGlobal* global = wasmModule->globals.Item(i); + + uint offset = wasmModule->GetOffsetForGlobal(global); + Wasm::WasmGlobal* sourceGlobal = nullptr; + if (global->GetReferenceType() == Wasm::WasmGlobal::Const) + { + sourceGlobal = global; + } + else + { + sourceGlobal = wasmModule->globals.Item(global->var.num); + Assert(sourceGlobal->GetReferenceType() != Wasm::WasmGlobal::ImportedReference); //no imported globals at this point + if (sourceGlobal->GetReferenceType() != Wasm::WasmGlobal::Const) + { + throw Wasm::WasmCompilationException(_u("Global %d is initialized with global %d ") + _u("which is not a const. Forward references aren't supported!"), i, global->var.num); + } + global->SetReferenceType(Wasm::WasmGlobal::Const); //resolve global to const + global->cnst = sourceGlobal->cnst; + + Assert(sourceGlobal->GetReferenceType() == Wasm::WasmGlobal::Const); + if (sourceGlobal->GetType() != global->GetType()) + { + throw Wasm::WasmCompilationException(_u("Type mismatch between %d and %d"), i, global->var.num); + } + } + + switch (sourceGlobal->GetType()) + { + case Wasm::WasmTypes::I32: + SetGlobalValue(moduleEnv, offset, sourceGlobal->cnst.i32); + break; + case Wasm::WasmTypes::F32: + SetGlobalValue(moduleEnv, offset, sourceGlobal->cnst.f32); + break; + case Wasm::WasmTypes::F64: + SetGlobalValue(moduleEnv, offset, sourceGlobal->cnst.f64); + break; + case Wasm::WasmTypes::I64: + default: + Assert(UNREACHED); + break; + } + + } + } + + void WasmLibrary::WasmLoadIndirectFunctionTables(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var** indirectFunctionTables, Var* localModuleFunctions, Var* importFunctions) + { + for (uint i = 0; i < wasmModule->GetTableSize(); ++i) + { + uint funcIndex = wasmModule->GetTableValue(i); + if (funcIndex == Js::Constants::UninitializedValue) + { + // todo:: are we suppose to invalidate here, or do a runtime error if this is accessed? + continue; + } + + uint32 sigId = wasmModule->GetFunctionSignature(funcIndex)->GetSignatureId(); + sigId = wasmModule->GetEquivalentSignatureId(sigId); + if (!indirectFunctionTables[sigId]) + { + // TODO: initialize all indexes to "Js::Throw::RuntimeError" or similar type thing + // now, indirect func call to invalid type will give nullptr deref + indirectFunctionTables[sigId] = RecyclerNewArrayZ(ctx->GetRecycler(), Js::Var, wasmModule->GetTableSize()); + } + Var funcObj = GetFunctionObjFromFunctionIndex(wasmModule, ctx, funcIndex, localModuleFunctions, importFunctions); + if (funcObj) + { + indirectFunctionTables[sigId][i] = funcObj; + } + } + } + + Var WasmLibrary::GetFunctionObjFromFunctionIndex(Wasm::WasmModule * wasmModule, ScriptContext* ctx, uint32 funcIndex, Var* localModuleFunctions, Var* importFunctions) + { + Wasm::FunctionIndexTypes::Type funcType = wasmModule->GetFunctionIndexType(funcIndex); + uint32 normIndex = wasmModule->NormalizeFunctionIndex(funcIndex); + switch (funcType) + { + case Wasm::FunctionIndexTypes::Function: + return localModuleFunctions[normIndex]; + break; + case Wasm::FunctionIndexTypes::Import: + return importFunctions[normIndex]; + break; + default: + Assert(UNREACHED); + return nullptr; + } + } + + Var WasmLibrary::LoadWasmScript( + ScriptContext* scriptContext, + const char16* script, + SRCINFO const * pSrcInfo, + CompileScriptException * pse, + Utf8SourceInfo** ppSourceInfo, + const uint lengthBytes, + const char16 *rootDisplayName, + Js::Var ffi, + Js::Var* start) + { + if (pSrcInfo == nullptr) + { + pSrcInfo = scriptContext->cache->noContextGlobalSourceInfo; + } + + AutoProfilingPhase wasmPhase(scriptContext, Js::WasmPhase); + Unused(wasmPhase); + + Assert(!scriptContext->GetThreadContext()->IsScriptActive()); + Assert(pse != nullptr); + Wasm::WasmModuleGenerator *bytecodeGen = nullptr; + Js::Var exportObj = nullptr; + try + { + AUTO_NESTED_HANDLED_EXCEPTION_TYPE((ExceptionType)(ExceptionType_OutOfMemory | ExceptionType_StackOverflow)); + Js::AutoDynamicCodeReference dynamicFunctionReference(scriptContext); + *ppSourceInfo = nullptr; + Wasm::WasmModule * wasmModule = nullptr; + + *ppSourceInfo = Utf8SourceInfo::New(scriptContext, (LPCUTF8)script, lengthBytes / sizeof(char16), lengthBytes, pSrcInfo, false); + bytecodeGen = HeapNew(Wasm::WasmModuleGenerator, scriptContext, *ppSourceInfo, (byte*)script, lengthBytes); + wasmModule = bytecodeGen->GenerateModule(); + + Var* moduleEnvironmentPtr = RecyclerNewArrayZ(scriptContext->GetRecycler(), Var, wasmModule->GetModuleEnvironmentSize()); + Var* heap = moduleEnvironmentPtr + wasmModule->GetHeapOffset(); + exportObj = JavascriptOperators::NewJavascriptObjectNoArg(scriptContext); + Var* localModuleFunctions = moduleEnvironmentPtr + wasmModule->GetFuncOffset(); + + WasmLoadGlobals(wasmModule, scriptContext, moduleEnvironmentPtr, ffi); + WasmLoadDataSegs(wasmModule, heap, scriptContext); + + bool hasAnyLazyTraps = false; + WasmLoadFunctions(wasmModule, scriptContext, moduleEnvironmentPtr, &exportObj, localModuleFunctions, &hasAnyLazyTraps); + + Var* importFunctions = moduleEnvironmentPtr + wasmModule->GetImportFuncOffset(); + WasmLoadImports(wasmModule, scriptContext, importFunctions, moduleEnvironmentPtr, ffi); + + + Js::Var exportsNamespace = JavascriptOperators::NewJavascriptObjectNoArg(scriptContext); + WasmBuildObject(wasmModule, scriptContext, exportsNamespace, heap, &exportObj, &hasAnyLazyTraps, localModuleFunctions, importFunctions); + + Var** indirectFunctionTables = (Var**)(moduleEnvironmentPtr + wasmModule->GetTableEnvironmentOffset()); + WasmLoadIndirectFunctionTables(wasmModule, scriptContext, indirectFunctionTables, localModuleFunctions, importFunctions); + uint32 startFuncIdx = wasmModule->GetStartFunction(); + if (start) + { + if (startFuncIdx != Js::Constants::UninitializedValue) + { + *start = GetFunctionObjFromFunctionIndex(wasmModule, scriptContext, startFuncIdx, localModuleFunctions, importFunctions); + } + else + { + *start = nullptr; + } + } + } + catch (Js::OutOfMemoryException) + { + pse->ProcessError(nullptr, E_OUTOFMEMORY, nullptr); + } + catch (Js::StackOverflowException) + { + pse->ProcessError(nullptr, VBSERR_OutOfStack, nullptr); + } + catch (Wasm::WasmCompilationException& ex) + { + lastWasmExceptionMessage = ex.ReleaseErrorMessage(); + + pse->ProcessError(nullptr, JSERR_WasmCompileError, nullptr); + pse->ei.pfnDeferredFillIn = [](tagEXCEPINFO *pei) -> HRESULT { + pei->bstrDescription = lastWasmExceptionMessage; + lastWasmExceptionMessage = nullptr; + return S_OK; + }; + } + + if (bytecodeGen) + { + HeapDelete(bytecodeGen); + } + return exportObj; + } + +#if _M_IX86 + __declspec(naked) + Var WasmLibrary::WasmDeferredParseExternalThunk(RecyclableObject* function, CallInfo callInfo, ...) + { + // Register functions + __asm + { + push ebp + mov ebp, esp + lea eax, [esp + 8] + push 0 + push eax + call WasmLibrary::WasmDeferredParseEntryPoint +#ifdef _CONTROL_FLOW_GUARD + // verify that the call target is valid + mov ecx, eax + call[__guard_check_icall_fptr] + mov eax, ecx +#endif + pop ebp + // Although we don't restore ESP here on WinCE, this is fine because script profiler is not shipped for WinCE. + jmp eax + } + } + + __declspec(naked) + Var WasmLibrary::WasmDeferredParseInternalThunk(RecyclableObject* function, CallInfo callInfo, ...) + { + // Register functions + __asm + { + push ebp + mov ebp, esp + lea eax, [esp + 8] + push 1 + push eax + call WasmLibrary::WasmDeferredParseEntryPoint +#ifdef _CONTROL_FLOW_GUARD + // verify that the call target is valid + mov ecx, eax + call[__guard_check_icall_fptr] + mov eax, ecx +#endif + pop ebp + // Although we don't restore ESP here on WinCE, this is fine because script profiler is not shipped for WinCE. + jmp eax + } + } +#elif defined(_M_X64) + // Do nothing: the implementation of WasmLibrary::WasmDeferredParseExternalThunk is declared (appropriately decorated) in + // Language\amd64\amd64_Thunks.asm. +#endif // _M_IX86 + +} + +#endif // ENABLE_WASM + +Js::JavascriptMethod Js::WasmLibrary::WasmDeferredParseEntryPoint(Js::AsmJsScriptFunction** funcPtr, int internalCall) +{ +#ifdef ENABLE_WASM + AsmJsScriptFunction* func = *funcPtr; + + WasmLibrary::WasmFunctionGenerateBytecode(func, false); + Js::FunctionEntryPointInfo * entypointInfo = (Js::FunctionEntryPointInfo*)func->GetEntryPointInfo(); + if (internalCall) + { + return entypointInfo->jsMethod; + } + return func->GetDynamicType()->GetEntryPoint(); +#else + Js::Throw::InternalError(); +#endif +} \ No newline at end of file diff --git a/lib/Runtime/Library/WasmLibrary.h b/lib/Runtime/Library/WasmLibrary.h new file mode 100644 index 00000000000..c81a3ab9068 --- /dev/null +++ b/lib/Runtime/Library/WasmLibrary.h @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +#pragma once + +namespace Wasm +{ + class WasmModule; +}; + +namespace Js +{ + class WasmLibrary + { + public: + static JavascriptMethod WasmDeferredParseEntryPoint(AsmJsScriptFunction** funcPtr, int internalCall); +#ifdef ENABLE_WASM + class EntryInfo + { + public: + static FunctionInfo instantiateModule; + }; + + static Var instantiateModule(RecyclableObject* function, CallInfo callInfo, ...); + static const unsigned int experimentalVersion; + + static Var WasmLazyTrapCallback(RecyclableObject *callee, CallInfo, ...); + static Var WasmDeferredParseInternalThunk(RecyclableObject* function, CallInfo callInfo, ...); + static Var WasmDeferredParseExternalThunk(RecyclableObject* function, CallInfo callInfo, ...); + private: + static void WasmFunctionGenerateBytecode(AsmJsScriptFunction* func, bool propagateError); + static void WasmLoadDataSegs(Wasm::WasmModule * wasmModule, Var* heap, ScriptContext* ctx); + static void WasmLoadFunctions(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var* moduleMemoryPtr, Var* exportObj, Var* localModuleFunctions, bool* hasAnyLazyTraps); + static void WasmBuildObject(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var exportsNamespace, Var* heap, Var* exportObj, bool* hasAnyLazyTraps, Var* localModuleFunctions, Var* importFunctions); + static void WasmLoadImports(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var* importFunctions, Var moduleEnv, Var ffi); + static void WasmLoadGlobals(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var moduleEnv, Var ffi); + static void WasmLoadIndirectFunctionTables(Wasm::WasmModule * wasmModule, ScriptContext* ctx, Var** indirectFunctionTables, Var* localModuleFunctions, Var* importFunctions); + static Var GetFunctionObjFromFunctionIndex(Wasm::WasmModule * wasmModule, ScriptContext* ctx, uint32 funcIndex, Var* localModuleFunctions, Var* importFunctions); + + static Var LoadWasmScript( + ScriptContext* scriptContext, + const char16* script, + SRCINFO const * pSrcInfo, + CompileScriptException * pse, + Utf8SourceInfo** ppSourceInfo, + const uint lengthBytes, + const char16 *rootDisplayName, + Js::Var ffi, + Js::Var* start = nullptr + ); + static char16* lastWasmExceptionMessage; +#endif + }; +} \ No newline at end of file diff --git a/lib/Runtime/Math/AsmJsMath.h b/lib/Runtime/Math/AsmJsMath.h index 1fbf1662c86..6f4261cd881 100644 --- a/lib/Runtime/Math/AsmJsMath.h +++ b/lib/Runtime/Math/AsmJsMath.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #pragma once diff --git a/lib/Runtime/Math/AsmJsMath.inl b/lib/Runtime/Math/AsmJsMath.inl index 34f088d5586..866945c0e84 100644 --- a/lib/Runtime/Math/AsmJsMath.inl +++ b/lib/Runtime/Math/AsmJsMath.inl @@ -1,69 +1,82 @@ //------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- namespace Js { + template - inline T AsmJsMath::Min(T aLeft, T aRight) + inline T minCheckNan(T aLeft, T aRight) { + if (NumberUtilities::IsNan(aLeft) || NumberUtilities::IsNan(aRight)) + { + return (T)NumberConstants::NaN; + } return aLeft < aRight ? aLeft : aRight; } template<> inline double AsmJsMath::Min(double aLeft, double aRight) { - if (NumberUtilities::IsNan(aLeft) || NumberUtilities::IsNan(aRight)) - { - return NumberConstants::NaN; - } - return aLeft < aRight ? aLeft : aRight; + return minCheckNan(aLeft, aRight); } - template - inline T AsmJsMath::Max(T aLeft, T aRight) + template<> + inline float AsmJsMath::Min(float aLeft, float aRight) { - return aLeft > aRight ? aLeft : aRight; + return minCheckNan(aLeft, aRight); } - template<> - inline double AsmJsMath::Max(double aLeft, double aRight) + template + inline T maxCheckNan(T aLeft, T aRight) { if (NumberUtilities::IsNan(aLeft) || NumberUtilities::IsNan(aRight)) { - return NumberConstants::NaN; + return (T)NumberConstants::NaN; } return aLeft > aRight ? aLeft : aRight; } + template<> + inline double AsmJsMath::Max(double aLeft, double aRight) + { + return maxCheckNan(aLeft, aRight); + } + + template<> + inline float AsmJsMath::Max(float aLeft, float aRight) + { + return maxCheckNan(aLeft, aRight); + } + template inline T AsmJsMath::Add( T aLeft, T aRight ) { return aLeft + aRight; } - template - inline T AsmJsMath::Div( T aLeft, T aRight ) + template<> + inline int32 AsmJsMath::Div( int32 aLeft, int32 aRight ) { return aRight == 0 ? 0 : ( aLeft == (1<<31) && aRight == -1) ? aLeft : aLeft / aRight; } template<> - inline double AsmJsMath::Div( double aLeft, double aRight ) + inline uint32 AsmJsMath::Div(uint32 aLeft, uint32 aRight) { - return aLeft / aRight; + return aRight == 0 ? 0 : aLeft / aRight; } template - inline T AsmJsMath::Mul( T aLeft, T aRight ) + inline T AsmJsMath::Div( T aLeft, T aRight ) { - return aLeft * aRight; + return aLeft / aRight; } - template<> - inline int AsmJsMath::Mul( int aLeft, int aRight ) + template + inline T AsmJsMath::Mul( T aLeft, T aRight ) { - return (int)((int64)aLeft * (int64)aRight); + return aLeft * aRight; } template diff --git a/lib/Runtime/Math/Chakra.Runtime.Math.vcxproj b/lib/Runtime/Math/Chakra.Runtime.Math.vcxproj index dfb9cb309b0..3d31199de97 100644 --- a/lib/Runtime/Math/Chakra.Runtime.Math.vcxproj +++ b/lib/Runtime/Math/Chakra.Runtime.Math.vcxproj @@ -24,6 +24,7 @@ $(MSBuildThisFileDirectory)..; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\Backend; $(MSBuildThisFileDirectory)..\..\JITClient; @@ -49,12 +50,14 @@ + + diff --git a/lib/Runtime/Math/RuntimeMathPch.h b/lib/Runtime/Math/RuntimeMathPch.h index d20a3653d32..018b64a537f 100644 --- a/lib/Runtime/Math/RuntimeMathPch.h +++ b/lib/Runtime/Math/RuntimeMathPch.h @@ -5,4 +5,4 @@ #pragma once #include "Runtime.h" #include "Math/JavascriptSSE2MathOperators.h" -#include "Math/JavascriptSSE2MathOperators.inl" +#include "Math/JavascriptSSE2MathOperators.inl" \ No newline at end of file diff --git a/lib/Runtime/Math/WasmMath.h b/lib/Runtime/Math/WasmMath.h new file mode 100644 index 00000000000..98aab822470 --- /dev/null +++ b/lib/Runtime/Math/WasmMath.h @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ +class WasmMath +{ +public: + static int Ctz(int value); + template static T Copysign(T aLeft, T aRight); + static int Eqz(int value); + template static T Trunc(T aLeft); + template static T Nearest(T aLeft); + static int Rol(int aLeft, int aRight); + static int Ror(int aLeft, int aRight); +}; + +} //namespace Wasm + diff --git a/lib/Runtime/Math/WasmMath.inl b/lib/Runtime/Math/WasmMath.inl new file mode 100644 index 00000000000..269b1437fae --- /dev/null +++ b/lib/Runtime/Math/WasmMath.inl @@ -0,0 +1,95 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +#pragma once + +namespace Wasm +{ +/* static */ +inline int +WasmMath::Ctz(int value) +{ + DWORD index; + if (_BitScanForward(&index, value)) + { + return index; + } + return 32; +} + +inline int +WasmMath::Eqz(int value) +{ + return value == 0; +} + +template +inline T WasmMath::Copysign(T aLeft, T aRight) +{ + return (T)_copysign(aLeft, aRight); +} + +template +inline T WasmMath::Trunc(T value) +{ + if (value == 0.0) + { + return value; + } + else + { + T result; + if (value < 0.0) + { + result = ceil(value); + } + else + { + result = floor(value); + } + // TODO: Propagating NaN sign for now awaiting consensus on semantics + return result; + } +} + +template +inline T WasmMath::Nearest(T value) +{ + if (value == 0.0) + { + return value; + } + else + { + T result; + T u = ceil(value); + T d = floor(value); + T um = fabs(value - u); + T dm = fabs(value - d); + if (um < dm || (um == dm && floor(u / 2) == u / 2)) + { + result = u; + } + else + { + result = d; + } + // TODO: Propagating NaN sign for now awaiting consensus on semantics + return result; + } +} + +inline int +WasmMath::Rol(int aLeft, int aRight) +{ + return _rotl(aLeft, aRight); +} + +inline int +WasmMath::Ror(int aLeft, int aRight) +{ + return _rotr(aLeft, aRight); +} + +} diff --git a/lib/Runtime/Runtime.h b/lib/Runtime/Runtime.h index 7f84d0a48f0..823e89f35f5 100644 --- a/lib/Runtime/Runtime.h +++ b/lib/Runtime/Runtime.h @@ -454,7 +454,7 @@ enum tagDEBUG_EVENT_INFO_TYPE #include "Language/JavascriptOperators.h" #include "Library/MathLibrary.h" - +#include "Library/WasmLibrary.h" // xplat-todo: We should get rid of this altogether and move the functionality it // encapsulates to the Platform Agnostic Interface #ifdef _WIN32 diff --git a/lib/Runtime/Types/Chakra.Runtime.Types.vcxproj b/lib/Runtime/Types/Chakra.Runtime.Types.vcxproj index f95fdaf69eb..994749aa4d6 100644 --- a/lib/Runtime/Types/Chakra.Runtime.Types.vcxproj +++ b/lib/Runtime/Types/Chakra.Runtime.Types.vcxproj @@ -25,6 +25,7 @@ $(MSBuildThisFileDirectory)..\..\Backend; $(MSBuildThisFileDirectory)..\..\Common; $(MSBuildThisFileDirectory)..\..\Parser; + $(MSBuildThisFileDirectory)..\..\WasmReader; $(MSBuildThisFileDirectory)..\..\Runtime\ByteCode; $(MSBuildThisFileDirectory)..\..\JITClient; $(ChakraJITIDLIntDir); diff --git a/lib/WasmReader/CMakeLists.txt b/lib/WasmReader/CMakeLists.txt new file mode 100644 index 00000000000..1ee12f44db5 --- /dev/null +++ b/lib/WasmReader/CMakeLists.txt @@ -0,0 +1,19 @@ +add_library (Chakra.WasmReader OBJECT + WasmReaderPch.cpp + WasmDataSegment.cpp + WasmFunctionInfo.cpp + WasmModule.cpp + WasmSection.cpp + WasmSignature.cpp + WasmBinaryReader.cpp + WasmByteCodeGenerator.cpp + ) + +target_include_directories ( + Chakra.WasmReader PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} + ../JITIDL + ../Backend + ../Runtime + ../Runtime/ByteCode + ../Parser + ) diff --git a/lib/WasmReader/Chakra.WasmReader.vcxproj b/lib/WasmReader/Chakra.WasmReader.vcxproj new file mode 100644 index 00000000000..7e7b824b1dc --- /dev/null +++ b/lib/WasmReader/Chakra.WasmReader.vcxproj @@ -0,0 +1,73 @@ + + + + + + Chakra.WasmReader + {53D52B0B-86D9-4D31-AD09-0D6B3C063ADD} + JS + Win32Proj + Chakra.WasmReader + + + StaticLibrary + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + + $(MSBuildThisFileDirectory)..\Common; + $(MSBuildThisFileDirectory)..\Runtime; + $(MSBuildThisFileDirectory)..\Runtime\ByteCode; + $(MSBuildThisFileDirectory)..\Parser; + $(MSBuildThisFileDirectory)..\Backend; + $(MSBuildThisFileDirectory)..\JITClient; + $(ChakraJITIDLIntDir); + %(AdditionalIncludeDirectories) + + Use + WasmReaderPch.h + + + + + + + + + Create + + + + + + + + + + + + + + + + + + + + + + + + {0db5ecbc-9385-4a65-be2c-4ef7c65cb719} + + + + + diff --git a/lib/WasmReader/Chakra.WasmReader.vcxproj.filters b/lib/WasmReader/Chakra.WasmReader.vcxproj.filters new file mode 100644 index 00000000000..22e26f59a04 --- /dev/null +++ b/lib/WasmReader/Chakra.WasmReader.vcxproj.filters @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/WasmReader/WasmBinaryOpCodes.h b/lib/WasmReader/WasmBinaryOpCodes.h new file mode 100755 index 00000000000..8b67d5ad8d5 --- /dev/null +++ b/lib/WasmReader/WasmBinaryOpCodes.h @@ -0,0 +1,262 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +// define this to include all opcodes +#ifndef WASM_OPCODE +#define WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_SIGNATURE +#define WASM_SIGNATURE(id,...) +#endif + +#ifndef WASM_CTRL_OPCODE +#define WASM_CTRL_OPCODE(opname, opcode, sig, nyi) WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_MISC_OPCODE +#define WASM_MISC_OPCODE(opname, opcode, sig, nyi) WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_MEM_OPCODE +#define WASM_MEM_OPCODE(opname, opcode, sig, nyi) WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_MEMREAD_OPCODE +#define WASM_MEMREAD_OPCODE(opname, opcode, sig, nyi) WASM_MEM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_MEMSTORE_OPCODE +#define WASM_MEMSTORE_OPCODE(opname, opcode, sig, nyi) WASM_MEM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_UNARY__OPCODE +#define WASM_UNARY__OPCODE(opname, opcode, sig, asmjop, nyi) WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +#ifndef WASM_BINARY_OPCODE +#define WASM_BINARY_OPCODE(opname, opcode, sig, asmjop, nyi) WASM_OPCODE(opname, opcode, sig, nyi) +#endif + +// built-in opcode signatures +// id, retType, arg0, arg1, arg2 +WASM_SIGNATURE(I_II, 3, WasmTypes::I32, WasmTypes::I32, WasmTypes::I32) +WASM_SIGNATURE(I_I, 2, WasmTypes::I32, WasmTypes::I32) +WASM_SIGNATURE(I_V, 1, WasmTypes::I32) +WASM_SIGNATURE(I_FF, 3, WasmTypes::I32, WasmTypes::F32, WasmTypes::F32) +WASM_SIGNATURE(I_F, 2, WasmTypes::I32, WasmTypes::F32) +WASM_SIGNATURE(I_DD, 3, WasmTypes::I32, WasmTypes::F64, WasmTypes::F64) +WASM_SIGNATURE(I_D, 2, WasmTypes::I32, WasmTypes::F64) +WASM_SIGNATURE(I_L, 2, WasmTypes::I32, WasmTypes::I64) +WASM_SIGNATURE(L_LL, 3, WasmTypes::I64, WasmTypes::I64, WasmTypes::I64) +WASM_SIGNATURE(I_LL, 3, WasmTypes::I32, WasmTypes::I64, WasmTypes::I64) +WASM_SIGNATURE(L_L, 2, WasmTypes::I64, WasmTypes::I64) +WASM_SIGNATURE(L_I, 2, WasmTypes::I64, WasmTypes::I32) +WASM_SIGNATURE(L_F, 2, WasmTypes::I64, WasmTypes::F32) +WASM_SIGNATURE(L_D, 2, WasmTypes::I64, WasmTypes::F64) +WASM_SIGNATURE(F_FF, 3, WasmTypes::F32, WasmTypes::F32, WasmTypes::F32) +WASM_SIGNATURE(F_F, 2, WasmTypes::F32, WasmTypes::F32) +WASM_SIGNATURE(F_D, 2, WasmTypes::F32, WasmTypes::F64) +WASM_SIGNATURE(F_I, 2, WasmTypes::F32, WasmTypes::I32) +WASM_SIGNATURE(F_L, 2, WasmTypes::F32, WasmTypes::I64) +WASM_SIGNATURE(D_DD, 3, WasmTypes::F64, WasmTypes::F64, WasmTypes::F64) +WASM_SIGNATURE(D_D, 2, WasmTypes::F64, WasmTypes::F64) +WASM_SIGNATURE(D_F, 2, WasmTypes::F64, WasmTypes::F32) +WASM_SIGNATURE(D_I, 2, WasmTypes::F64, WasmTypes::I32) +WASM_SIGNATURE(D_L, 2, WasmTypes::F64, WasmTypes::I64) +WASM_SIGNATURE(D_ID, 3, WasmTypes::F64, WasmTypes::I32, WasmTypes::F64) +WASM_SIGNATURE(F_IF, 3, WasmTypes::F32, WasmTypes::I32, WasmTypes::F32) +WASM_SIGNATURE(L_IL, 3, WasmTypes::I64, WasmTypes::I32, WasmTypes::I64) + +// OpCode Name, Encoding, Signature, NYI +WASM_CTRL_OPCODE(Unreachable, 0x00, Limit, false) +WASM_CTRL_OPCODE(Block, 0x01, Limit, false) +WASM_CTRL_OPCODE(Loop, 0x02, Limit, false) +WASM_CTRL_OPCODE(If, 0x03, Limit, false) +WASM_CTRL_OPCODE(Else, 0x04, Limit, false) +WASM_CTRL_OPCODE(Br, 0x06, Limit, false) +WASM_CTRL_OPCODE(BrIf, 0x07, Limit, false) +WASM_CTRL_OPCODE(BrTable, 0x08, Limit, false) +WASM_CTRL_OPCODE(Return, 0x09, Limit, false) +WASM_CTRL_OPCODE(Nop, 0x0a, Limit, false) +WASM_CTRL_OPCODE(Drop, 0x0b, Limit, false) +WASM_CTRL_OPCODE(End, 0x0f, Limit, false) +WASM_CTRL_OPCODE(Select, 0x05, Limit, false) + +// Constants, locals, globals, and calls. +WASM_MISC_OPCODE(I32Const, 0x10, Limit, false) +WASM_MISC_OPCODE(I64Const, 0x11, Limit, true) +WASM_MISC_OPCODE(F64Const, 0x12, Limit, false) +WASM_MISC_OPCODE(F32Const, 0x13, Limit, false) +WASM_MISC_OPCODE(GetLocal, 0x14, Limit, false) +WASM_MISC_OPCODE(SetLocal, 0x15, Limit, false) +WASM_MISC_OPCODE(Call, 0x16, Limit, false) +WASM_MISC_OPCODE(CallIndirect, 0x17, Limit, false) +WASM_MISC_OPCODE(TeeLocal, 0x19, Limit, false) +WASM_MISC_OPCODE(GetGlobal, 0xbb, Limit, false) +WASM_MISC_OPCODE(SetGlobal, 0xbc, Limit, false) + +// Load memory expressions. +WASM_MEMREAD_OPCODE(I32LoadMem8S, 0x20, I_I, false) +WASM_MEMREAD_OPCODE(I32LoadMem8U, 0x21, I_I, false) +WASM_MEMREAD_OPCODE(I32LoadMem16S, 0x22, I_I, false) +WASM_MEMREAD_OPCODE(I32LoadMem16U, 0x23, I_I, false) +WASM_MEMREAD_OPCODE(I64LoadMem8S, 0x24, L_I, true) +WASM_MEMREAD_OPCODE(I64LoadMem8U, 0x25, L_I, true) +WASM_MEMREAD_OPCODE(I64LoadMem16S, 0x26, L_I, true) +WASM_MEMREAD_OPCODE(I64LoadMem16U, 0x27, L_I, true) +WASM_MEMREAD_OPCODE(I64LoadMem32S, 0x28, L_I, true) +WASM_MEMREAD_OPCODE(I64LoadMem32U, 0x29, L_I, true) +WASM_MEMREAD_OPCODE(I32LoadMem, 0x2a, I_I, false) +WASM_MEMREAD_OPCODE(I64LoadMem, 0x2b, L_I, true) +WASM_MEMREAD_OPCODE(F32LoadMem, 0x2c, F_I, false) +WASM_MEMREAD_OPCODE(F64LoadMem, 0x2d, D_I, false) + +// Store memory expressions. +WASM_MEMSTORE_OPCODE(I32StoreMem8, 0x2e, I_II, false) +WASM_MEMSTORE_OPCODE(I32StoreMem16, 0x2f, I_II, false) +WASM_MEMSTORE_OPCODE(I64StoreMem8, 0x30, L_IL, true) +WASM_MEMSTORE_OPCODE(I64StoreMem16, 0x31, L_IL, true) +WASM_MEMSTORE_OPCODE(I64StoreMem32, 0x32, L_IL, true) +WASM_MEMSTORE_OPCODE(I32StoreMem, 0x33, I_II, false) +WASM_MEMSTORE_OPCODE(I64StoreMem, 0x34, L_IL, true) +WASM_MEMSTORE_OPCODE(F32StoreMem, 0x35, F_IF, false) +WASM_MEMSTORE_OPCODE(F64StoreMem, 0x36, D_ID, false) + +// Memory operator +WASM_MISC_OPCODE(CurrentMemory, 0x3b, I_I, false) +WASM_MISC_OPCODE(GrowMemory, 0x39, I_I, true) + +// Expressions +WASM_BINARY_OPCODE(I32Add, 0x40, I_II, Add_Int , false) +WASM_BINARY_OPCODE(I32Sub, 0x41, I_II, Sub_Int , false) +WASM_BINARY_OPCODE(I32Mul, 0x42, I_II, Mul_Int , false) +WASM_BINARY_OPCODE(I32DivS, 0x43, I_II, Div_Int , false) +WASM_BINARY_OPCODE(I32DivU, 0x44, I_II, Div_UInt , false) +WASM_BINARY_OPCODE(I32RemS, 0x45, I_II, Rem_Int , false) +WASM_BINARY_OPCODE(I32RemU, 0x46, I_II, Rem_UInt , false) +WASM_BINARY_OPCODE(I32And, 0x47, I_II, And_Int , false) +WASM_BINARY_OPCODE(I32Or, 0x48, I_II, Or_Int , false) +WASM_BINARY_OPCODE(I32Xor, 0x49, I_II, Xor_Int , false) +WASM_BINARY_OPCODE(I32Shl, 0x4a, I_II, Shl_Int , false) +WASM_BINARY_OPCODE(I32ShrU, 0x4b, I_II, Shr_UInt , false) +WASM_BINARY_OPCODE(I32ShrS, 0x4c, I_II, Shr_Int , false) +WASM_BINARY_OPCODE(I32Eq, 0x4d, I_II, CmEq_Int , false) +WASM_BINARY_OPCODE(I32Ne, 0x4e, I_II, CmNe_Int , false) +WASM_BINARY_OPCODE(I32LtS, 0x4f, I_II, CmLt_Int , false) +WASM_BINARY_OPCODE(I32LeS, 0x50, I_II, CmLe_Int , false) +WASM_BINARY_OPCODE(I32LtU, 0x51, I_II, CmLt_UInt , false) +WASM_BINARY_OPCODE(I32LeU, 0x52, I_II, CmLe_UInt , false) +WASM_BINARY_OPCODE(I32GtS, 0x53, I_II, CmGt_Int , false) +WASM_BINARY_OPCODE(I32GeS, 0x54, I_II, CmGe_Int , false) +WASM_BINARY_OPCODE(I32GtU, 0x55, I_II, CmGt_UInt , false) +WASM_BINARY_OPCODE(I32GeU, 0x56, I_II, CmGe_UInt , false) +WASM_UNARY__OPCODE(I32Clz, 0x57, I_I , Clz32_Int , false) +WASM_UNARY__OPCODE(I32Ctz, 0x58, I_I , Ctz_Int , false) +WASM_UNARY__OPCODE(I32Popcnt, 0x59, I_I , PopCnt_Int , false) +WASM_UNARY__OPCODE(I32Eqz, 0x5a, I_I , Eqz_Int , false) +WASM_BINARY_OPCODE(I64Add, 0x5b, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Sub, 0x5c, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Mul, 0x5d, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64DivS, 0x5e, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64DivU, 0x5f, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64RemS, 0x60, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64RemU, 0x61, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64And, 0x62, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Ior, 0x63, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Xor, 0x64, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Shl, 0x65, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64ShrU, 0x66, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64ShrS, 0x67, L_LL, Nop , true) +WASM_BINARY_OPCODE(I64Eq, 0x68, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64Ne, 0x69, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64LtS, 0x6a, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64LeS, 0x6b, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64LtU, 0x6c, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64LeU, 0x6d, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64GtS, 0x6e, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64GeS, 0x6f, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64GtU, 0x70, I_LL, Nop , true) +WASM_BINARY_OPCODE(I64GeU, 0x71, I_LL, Nop , true) +WASM_UNARY__OPCODE(I64Clz, 0x72, L_L , Nop , true) +WASM_UNARY__OPCODE(I64Ctz, 0x73, L_L , Nop , true) +WASM_UNARY__OPCODE(I64Popcnt, 0x74, L_L , Nop , true) +WASM_BINARY_OPCODE(F32Add, 0x75, F_FF, Add_Flt , false) +WASM_BINARY_OPCODE(F32Sub, 0x76, F_FF, Sub_Flt , false) +WASM_BINARY_OPCODE(F32Mul, 0x77, F_FF, Mul_Flt , false) +WASM_BINARY_OPCODE(F32Div, 0x78, F_FF, Div_Flt , false) +WASM_BINARY_OPCODE(F32Min, 0x79, F_FF, Min_Flt , false) +WASM_BINARY_OPCODE(F32Max, 0x7a, F_FF, Max_Flt , false) +WASM_UNARY__OPCODE(F32Abs, 0x7b, F_F , Abs_Flt , false) +WASM_UNARY__OPCODE(F32Neg, 0x7c, F_F , Neg_Flt , false) +WASM_BINARY_OPCODE(F32CopySign, 0x7d, F_FF, Copysign_Flt , false) +WASM_UNARY__OPCODE(F32Ceil, 0x7e, F_F , Ceil_Flt , false) +WASM_UNARY__OPCODE(F32Floor, 0x7f, F_F , Floor_Flt , false) +WASM_UNARY__OPCODE(F32Trunc, 0x80, F_F , Trunc_Flt , false) +WASM_UNARY__OPCODE(F32NearestInt, 0x81, F_F , Nearest_Flt , false) +WASM_UNARY__OPCODE(F32Sqrt, 0x82, F_F , Sqrt_Flt , false) +WASM_BINARY_OPCODE(F32Eq, 0x83, I_FF, CmEq_Flt , false) +WASM_BINARY_OPCODE(F32Ne, 0x84, I_FF, CmNe_Flt , false) +WASM_BINARY_OPCODE(F32Lt, 0x85, I_FF, CmLt_Flt , false) +WASM_BINARY_OPCODE(F32Le, 0x86, I_FF, CmLe_Flt , false) +WASM_BINARY_OPCODE(F32Gt, 0x87, I_FF, CmGt_Flt , false) +WASM_BINARY_OPCODE(F32Ge, 0x88, I_FF, CmGe_Flt , false) +WASM_BINARY_OPCODE(F64Add, 0x89, D_DD, Add_Db , false) +WASM_BINARY_OPCODE(F64Sub, 0x8a, D_DD, Sub_Db , false) +WASM_BINARY_OPCODE(F64Mul, 0x8b, D_DD, Mul_Db , false) +WASM_BINARY_OPCODE(F64Div, 0x8c, D_DD, Div_Db , false) +WASM_BINARY_OPCODE(F64Min, 0x8d, D_DD, Min_Db , false) +WASM_BINARY_OPCODE(F64Max, 0x8e, D_DD, Max_Db , false) +WASM_UNARY__OPCODE(F64Abs, 0x8f, D_D , Abs_Db , false) +WASM_UNARY__OPCODE(F64Neg, 0x90, D_D , Neg_Db , false) +WASM_BINARY_OPCODE(F64CopySign, 0x91, D_DD, Copysign_Db , false) +WASM_UNARY__OPCODE(F64Ceil, 0x92, D_D , Ceil_Db , false) +WASM_UNARY__OPCODE(F64Floor, 0x93, D_D , Floor_Db , false) +WASM_UNARY__OPCODE(F64Trunc, 0x94, D_D , Trunc_Db , false) +WASM_UNARY__OPCODE(F64NearestInt, 0x95, D_D , Nearest_Db , false) +WASM_UNARY__OPCODE(F64Sqrt, 0x96, D_D , Sqrt_Db , false) +WASM_BINARY_OPCODE(F64Eq, 0x97, I_DD, CmEq_Db , false) +WASM_BINARY_OPCODE(F64Ne, 0x98, I_DD, CmNe_Db , false) +WASM_BINARY_OPCODE(F64Lt, 0x99, I_DD, CmLt_Db , false) +WASM_BINARY_OPCODE(F64Le, 0x9a, I_DD, CmLe_Db , false) +WASM_BINARY_OPCODE(F64Gt, 0x9b, I_DD, CmGt_Db , false) +WASM_BINARY_OPCODE(F64Ge, 0x9c, I_DD, CmGe_Db , false) +WASM_UNARY__OPCODE(I32SConvertF32, 0x9d, I_F , Conv_FTI , false) +WASM_UNARY__OPCODE(I32SConvertF64, 0x9e, I_D , Conv_DTI , false) +WASM_UNARY__OPCODE(I32UConvertF32, 0x9f, I_F , Conv_FTU , true) +WASM_UNARY__OPCODE(I32UConvertF64, 0xa0, I_D , Conv_DTU , true) +WASM_UNARY__OPCODE(I32ConvertI64, 0xa1, I_L , Nop , true) +WASM_UNARY__OPCODE(I64SConvertF32, 0xa2, L_F , Nop , true) +WASM_UNARY__OPCODE(I64SConvertF64, 0xa3, L_D , Nop , true) +WASM_UNARY__OPCODE(I64UConvertF32, 0xa4, L_F , Nop , true) +WASM_UNARY__OPCODE(I64UConvertF64, 0xa5, L_D , Nop , true) +WASM_UNARY__OPCODE(I64SConvertI32, 0xa6, L_I , Nop , true) +WASM_UNARY__OPCODE(I64UConvertI32, 0xa7, L_I , Nop , true) +WASM_UNARY__OPCODE(F32SConvertI32, 0xa8, F_I , Fround_Int , false) +WASM_UNARY__OPCODE(F32UConvertI32, 0xa9, F_I , Conv_UTF , true) +WASM_UNARY__OPCODE(F32SConvertI64, 0xaa, F_L , Nop , true) +WASM_UNARY__OPCODE(F32UConvertI64, 0xab, F_L , Nop , true) +WASM_UNARY__OPCODE(F32ConvertF64, 0xac, F_D , Fround_Db , false) +WASM_UNARY__OPCODE(F32ReinterpretI32, 0xad, F_I , Reinterpret_ITF, true) +WASM_UNARY__OPCODE(F64SConvertI32, 0xae, D_I , Conv_ITD , false) +WASM_UNARY__OPCODE(F64UConvertI32, 0xaf, D_I , Conv_UTD , false) +WASM_UNARY__OPCODE(F64SConvertI64, 0xb0, D_L , Nop , true) +WASM_UNARY__OPCODE(F64UConvertI64, 0xb1, D_L , Nop , true) +WASM_UNARY__OPCODE(F64ConvertF32, 0xb2, D_F , Conv_FTD , false) +WASM_UNARY__OPCODE(F64ReinterpretI64, 0xb3, D_L , Nop , true) +WASM_UNARY__OPCODE(I32ReinterpretF32, 0xb4, I_F , Reinterpret_FTI, false) +WASM_UNARY__OPCODE(I64ReinterpretF64, 0xb5, L_D , Nop , true) +WASM_BINARY_OPCODE(I32Ror, 0xb6, I_II, Ror_Int , false) +WASM_BINARY_OPCODE(I32Rol, 0xb7, I_II, Rol_Int , false) + +#undef WASM_OPCODE +#undef WASM_SIGNATURE +#undef WASM_CTRL_OPCODE +#undef WASM_MISC_OPCODE +#undef WASM_MEM_OPCODE +#undef WASM_MEMREAD_OPCODE +#undef WASM_MEMSTORE_OPCODE +#undef WASM_UNARY__OPCODE +#undef WASM_BINARY_OPCODE diff --git a/lib/WasmReader/WasmBinaryReader.cpp b/lib/WasmReader/WasmBinaryReader.cpp new file mode 100644 index 00000000000..30da47473f8 --- /dev/null +++ b/lib/WasmReader/WasmBinaryReader.cpp @@ -0,0 +1,1090 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM +#if ENABLE_DEBUG_CONFIG_OPTIONS +#include "Codex\Utf8Helper.h" +#endif + +namespace Wasm +{ + +namespace WasmTypes +{ +bool IsLocalType(WasmTypes::WasmType type) +{ + // Check if type in range ]Void,Limit[ + return (uint)(type - 1) < (WasmTypes::Limit - 1); +} + +} // namespace WasmTypes + +WasmBinaryReader::WasmBinaryReader(ArenaAllocator* alloc, WasmModule* module, byte* source, size_t length) : + m_module(module), + m_curFuncEnd(nullptr), + m_alloc(alloc) +{ + m_start = m_pc = source; + m_end = source + length; + m_currentSection.code = bSectInvalid; +#if DBG_DUMP + m_ops = Anew(m_alloc, OpSet, m_alloc); +#endif +} + +void WasmBinaryReader::InitializeReader() +{ + ValidateModuleHeader(); +#if DBG_DUMP + if (DO_WASM_TRACE_SECTION) + { + byte* startModule = m_pc; + + bool doRead = true; + SectionCode prevSect = bSectInvalid; + while (doRead) + { + SectionHeader secHeader = ReadSectionHeader(); + if (secHeader.code <= prevSect) + { + TRACE_WASM_SECTION(_u("Unknown section order")); + } + prevSect = secHeader.code; + // skip the section + m_pc = secHeader.end; + doRead = !EndOfModule(); + } + m_pc = startModule; + } +#endif +} + +void +WasmBinaryReader::ThrowDecodingError(const char16* msg, ...) +{ + va_list argptr; + va_start(argptr, msg); + throw WasmCompilationException(msg, argptr); +} + +bool +WasmBinaryReader::ReadNextSection(SectionCode nextSection) +{ + if (EndOfModule() || SectionInfo::All[nextSection].flag == fSectIgnore) + { + return false; + } + + SectionHeader secHeader = ReadSectionHeader(); + if (secHeader.code == bSectInvalid || SectionInfo::All[secHeader.code].flag == fSectIgnore) + { + TRACE_WASM_DECODER(_u("Ignore this section")); + m_pc = secHeader.end; + return ReadNextSection(nextSection); + } + if (secHeader.code < nextSection) + { + ThrowDecodingError(_u("Invalid Section %s"), secHeader.code); + } + + if (secHeader.code != nextSection) + { + TRACE_WASM_DECODER(_u("The current section is not the one we are looking for")); + // We know about this section, but it's not the one we're looking for + m_pc = secHeader.start; + return false; + } + m_currentSection = secHeader; + return true; +} + +bool +WasmBinaryReader::ProcessCurrentSection() +{ + Assert(m_currentSection.code != bSectInvalid); + TRACE_WASM_SECTION(_u("Process section %s"), SectionInfo::All[m_currentSection.code].name); + + switch (m_currentSection.code) + { + case bSectMemory: + ReadMemorySection(); + break; + case bSectSignatures: + ReadSignatures(); + break; + case bSectImportTable: + ReadImportEntries(); + break; + case bSectFunctionSignatures: + ReadFunctionsSignatures(); + break; + case bSectFunctionBodies: + return ReadFunctionHeaders(); + case bSectExportTable: + ReadExportTable(); + break; + case bSectStartFunction: + ReadStartFunction(); + break; + case bSectDataSegments: + ReadDataSegments(); + break; + case bSectIndirectFunctionTable: + ReadTableSection(); + break; + case bSectElement: + ReadElementSection(); + break; + case bSectNames: + ReadNamesSection(); + break; + case bSectGlobal: + ReadGlobalsSection(); + break; + default: + Assert(UNREACHED); + return false; + } + + return m_pc == m_currentSection.end; +} + +SectionHeader +WasmBinaryReader::ReadSectionHeader() +{ + SectionHeader header; + header.start = m_pc; + header.code = bSectInvalid; + + UINT len = 0; + UINT32 sectionId = LEB128(len); + + UINT32 sectionSize = LEB128(len); + header.end = m_pc + sectionSize; + CheckBytesLeft(sectionSize); + + const char *sectionName = nullptr; + UINT32 nameLength = 0; + + if (sectionId > 0) + { + SectionCode sectCode = (SectionCode)(sectionId - 1); + + if (sectCode >= bSectNames) // ">=" since "Name" isn't considered to be a known section + { + ThrowDecodingError(_u("Invalid known section opcode %d"), sectCode); + } + + sectionName = SectionInfo::All[sectCode].id; + header.code = sectCode; + nameLength = static_cast(strlen(sectionName)); //sectionName (SectionInfo.id) is null-terminated + } + else + { + nameLength = LEB128(len); + CheckBytesLeft(nameLength); + sectionName = (char*)(m_pc); + m_pc += nameLength; //skip section name for now + header.code = bSectUser; + } + +#if ENABLE_DEBUG_CONFIG_OPTIONS + if (DO_WASM_TRACE_SECTION) + { + char16* wstr = nullptr; + size_t unused; + utf8::NarrowStringToWide(sectionName, nameLength, &wstr, &unused); + TRACE_WASM_SECTION(_u("Section Header: %s, length = %u (0x%x)"), wstr, sectionSize, sectionSize); + free(wstr); + } +#endif + return header; +} + +#if DBG_DUMP +void +WasmBinaryReader::PrintOps() +{ + WasmOp * ops = HeapNewArray(WasmOp, m_ops->Count()); + + auto iter = m_ops->GetIterator(); + int i = 0; + while (iter.IsValid()) + { + ops[i] = iter.CurrentKey(); + iter.MoveNext(); + ++i; + } + for (i = 0; i < m_ops->Count(); ++i) + { + int j = i; + while (j > 0 && ops[j-1] > ops[j]) + { + WasmOp tmp = ops[j]; + ops[j] = ops[j - 1]; + ops[j - 1] = tmp; + + --j; + } + } + for (i = 0; i < m_ops->Count(); ++i) + { + switch (ops[i]) + { +#define WASM_OPCODE(opname, opcode, sig, nyi) \ + case opcode: \ + Output::Print(_u("%s\r\n"), _u(#opname)); \ + break; +#include "WasmBinaryOpCodes.h" + } + } + HeapDeleteArray(m_ops->Count(), ops); +} + +#endif + +bool +WasmBinaryReader::ReadFunctionHeaders() +{ + uint32 len; + uint32 entries = LEB128(len); + if (entries != m_module->GetWasmFunctionCount()) + { + ThrowDecodingError(_u("Function signatures and function bodies count mismatch")); + } + + for (uint32 i = 0; i < entries; ++i) + { + WasmFunctionInfo* funcInfo = m_module->GetWasmFunctionInfo(i); + + const uint32 funcSize = LEB128(len); + funcInfo->m_readerInfo.index = i; + funcInfo->m_readerInfo.size = funcSize; + funcInfo->m_readerInfo.startOffset = (m_pc - m_start); + CheckBytesLeft(funcSize); + TRACE_WASM_DECODER(_u("Function body header: index = %u, size = %u"), i, funcSize); + byte* end = m_pc + funcSize; + m_pc = end; + } + return m_pc == m_currentSection.end; +} + +void +WasmBinaryReader::SeekToFunctionBody(FunctionBodyReaderInfo readerInfo) +{ + if (readerInfo.startOffset >= (m_end - m_start)) + { + ThrowDecodingError(_u("Function byte offset out of bounds")); + } + // Seek to the function start and skip function header (count) + m_pc = m_start + readerInfo.startOffset; + m_funcState.size = readerInfo.size; + m_funcState.count = 0; + CheckBytesLeft(readerInfo.size); + m_curFuncEnd = m_pc + m_funcState.size; + + uint32 len = 0; + uint32 entryCount = LEB128(len); + m_funcState.count += len; + + WasmFunctionInfo* funcInfo = m_module->GetWasmFunctionInfo(readerInfo.index); + + // locals + for (uint32 j = 0; j < entryCount; j++) + { + uint32 count = LEB128(len); + m_funcState.count += len; + WasmTypes::WasmType type = ReadWasmType(len); + if (!WasmTypes::IsLocalType(type)) + { + ThrowDecodingError(_u("Invalid local type")); + } + m_funcState.count += len; + funcInfo->AddLocal(type, count); + switch (type) + { + case WasmTypes::I32: TRACE_WASM_DECODER(_u("Local: type = I32, count = %u"), count); break; + case WasmTypes::I64: TRACE_WASM_DECODER(_u("Local: type = I64, count = %u"), count); break; + case WasmTypes::F32: TRACE_WASM_DECODER(_u("Local: type = F32, count = %u"), count); break; + case WasmTypes::F64: TRACE_WASM_DECODER(_u("Local: type = F64, count = %u"), count); break; + break; + default: + break; + } + } +} + +bool WasmBinaryReader::IsCurrentFunctionCompleted() const +{ + return m_pc == m_curFuncEnd; +} + +WasmOp +WasmBinaryReader::ReadExpr() +{ + WasmOp op = m_currentNode.op = (WasmOp)*m_pc++; + ++m_funcState.count; + + if (EndOfFunc()) + { + // end of AST + if (op != wbEnd) + { + ThrowDecodingError(_u("missing function end opcode")); + } + return op; + } + + switch (op) + { + case wbBlock: + case wbLoop: + case wbIf: + BlockNode(); + break; + case wbElse: + // no node attributes + break; + case wbCall: + CallNode(); + break; + case wbCallIndirect: + CallIndirectNode(); + break; + case wbBr: + case wbBrIf: + BrNode(); + break; + case wbBrTable: + BrTableNode(); + break; + case wbReturn: + break; + case wbI32Const: + ConstNode(); + break; + case wbI64Const: + ConstNode(); + break; + case wbF32Const: + ConstNode(); + break; + case wbF64Const: + ConstNode(); + break; + case wbSetLocal: + case wbGetLocal: + case wbTeeLocal: + case wbGetGlobal: + case wbSetGlobal: + VarNode(); + break; + case wbDrop: + break; + case wbEnd: + break; + case wbNop: + break; +#define WASM_MEM_OPCODE(opname, opcode, sig, nyi) \ + case wb##opname: \ + MemNode(); \ + break; +#include "WasmBinaryOpCodes.h" + default: + break; + } + +#if DBG_DUMP + m_ops->AddNew(op); +#endif + return op; +} + +void +WasmBinaryReader::ValidateModuleHeader() +{ + uint32 magicNumber = ReadConst(); + uint32 version = ReadConst(); + TRACE_WASM_DECODER(_u("Module Header: Magic 0x%x, Version %u"), magicNumber, version); + if (magicNumber != 0x6d736100) + { + ThrowDecodingError(_u("Malformed WASM module header!")); + } + + if (version != experimentalVersion) + { + ThrowDecodingError(_u("Invalid WASM version!")); + } +} + +void +WasmBinaryReader::CallNode() +{ + UINT length = 0; + + UINT32 funcNum = LEB128(length); + m_funcState.count += length; + FunctionIndexTypes::Type funcType = m_module->GetFunctionIndexType(funcNum); + if (funcType == FunctionIndexTypes::Invalid) + { + ThrowDecodingError(_u("Function is out of bound")); + } + m_currentNode.call.funcType = funcType; + m_currentNode.call.num = funcNum; +} + +void +WasmBinaryReader::CallIndirectNode() +{ + UINT length = 0; + + UINT32 funcNum = LEB128(length); + m_funcState.count += length; + if (funcNum >= m_module->GetSignatureCount()) + { + ThrowDecodingError(_u("Function is out of bound")); + } + m_currentNode.call.num = funcNum; + m_currentNode.call.funcType = FunctionIndexTypes::Function; +} + +void WasmBinaryReader::BlockNode() +{ + uint8 sig = ReadConst(); + m_funcState.count++; + if (sig >= WasmTypes::Limit) + { + ThrowDecodingError(_u("Invalid block signature type")); + } + m_currentNode.block.sig = (WasmTypes::WasmType)sig; +} + +// control flow +void +WasmBinaryReader::BrNode() +{ + UINT len = 0; + m_currentNode.br.depth = LEB128(len); + m_funcState.count += len; +} + +void +WasmBinaryReader::BrTableNode() +{ + UINT len = 0; + m_currentNode.brTable.numTargets = LEB128(len); + m_funcState.count += len; + m_currentNode.brTable.targetTable = AnewArray(m_alloc, UINT32, m_currentNode.brTable.numTargets); + + for (UINT32 i = 0; i < m_currentNode.brTable.numTargets; i++) + { + m_currentNode.brTable.targetTable[i] = LEB128(len); + m_funcState.count += len; + } + m_currentNode.brTable.defaultTarget = LEB128(len); + m_funcState.count += len; +} + +void +WasmBinaryReader::MemNode() +{ + uint len = 0; + + LEB128(len); // flags (unused) + m_funcState.count += len; + + m_currentNode.mem.offset = LEB128(len); + m_funcState.count += len; +} + +// Locals/Globals +void +WasmBinaryReader::VarNode() +{ + UINT length; + m_currentNode.var.num = LEB128(length); + m_funcState.count += length; +} + +// Const +template +void WasmBinaryReader::ConstNode() +{ + UINT len = 0; + switch (localType) + { + case WasmTypes::I32: + m_currentNode.cnst.i32 = SLEB128(len); + m_funcState.count += len; + break; + case WasmTypes::I64: + m_currentNode.cnst.i32 = SLEB128(len); + m_funcState.count += len; + break; + case WasmTypes::F32: + m_currentNode.cnst.f32 = ReadConst(); + m_funcState.count += sizeof(float); + break; + case WasmTypes::F64: + m_currentNode.cnst.f64 = ReadConst(); + m_funcState.count += sizeof(double); + break; + } +} + +bool +WasmBinaryReader::EndOfFunc() +{ + return m_funcState.count >= m_funcState.size; +} + +bool +WasmBinaryReader::EndOfModule() +{ + return (m_pc >= m_end); +} + +// readers +void +WasmBinaryReader::ReadMemorySection() +{ + UINT length = 0; + UINT32 count = LEB128(length); + if (count > 1) + { + ThrowDecodingError(_u("Maximum of 1 memory allowed")); + } + + if (count == 1) + { + uint32 flags = LEB128(length); + uint32 minPage = LEB128(length); + uint32 maxPage = minPage; + if (flags & 0x1) + { + maxPage = LEB128(length); + } + m_module->InitializeMemory(minPage, maxPage); + } +} + +void +WasmBinaryReader::ReadSignatures() +{ + UINT len = 0; + const uint32 count = LEB128(len); + m_module->SetSignatureCount(count); + // signatures table + for (UINT32 i = 0; i < count; i++) + { + TRACE_WASM_DECODER(_u("Signature #%u"), i); + WasmSignature * sig = Anew(m_alloc, WasmSignature, m_alloc); + + char form = ReadConst(); + if (form != 0x40) + { + ThrowDecodingError(_u("Unexpected type form 0x%X"), form); + } + UINT32 paramCount = LEB128(len); + WasmTypes::WasmType type; + sig->AllocateParams(paramCount); + + for (UINT32 j = 0; j < paramCount; j++) + { + type = ReadWasmType(len); + sig->SetParam(type, j); + } + + UINT32 resultCount = LEB128(len); + if (resultCount != 0 && resultCount != 1) + { + ThrowDecodingError(_u("Unexpected result count %u"), resultCount); + } + if (resultCount == 1) + { + type = ReadWasmType(len); + sig->SetResultType(type); + } + m_module->SetSignature(i, sig); + } +} + +void +WasmBinaryReader::ReadFunctionsSignatures() +{ + UINT len = 0; + uint32 nFunctions = LEB128(len); + m_module->AllocateWasmFunctions(nFunctions); + + for (uint32 iFunc = 0; iFunc < nFunctions; iFunc++) + { + uint32 sigIndex = LEB128(len); + if (sigIndex >= m_module->GetSignatureCount()) + { + ThrowDecodingError(_u("Function signature is out of bound")); + } + + WasmSignature* sig = m_module->GetSignature(sigIndex); + WasmFunctionInfo* newFunction = Anew(m_alloc, WasmFunctionInfo, m_alloc, sig, iFunc); + m_module->SetWasmFunctionInfo(newFunction, iFunc); + } +} + +void WasmBinaryReader::ReadExportTable() +{ + uint32 length; + uint32 entries = LEB128(length); + m_module->AllocateFunctionExports(entries); + + for (uint32 iExport = 0; iExport < entries; iExport++) + { + uint32 nameLength; + char16* exportName = ReadInlineName(length, nameLength); + + ExternalKinds::ExternalKind kind = (ExternalKinds::ExternalKind)ReadConst(); + uint32 index = LEB128(length); + switch (kind) + { + case ExternalKinds::Function: + { + FunctionIndexTypes::Type type = m_module->GetFunctionIndexType(index); + if (type == FunctionIndexTypes::Invalid) + { + ThrowDecodingError(_u("Invalid Export %u => func[%u]"), iExport, index); + } + m_module->SetExport(iExport, index, exportName, nameLength, kind); + +#if DBG_DUMP + uint32 normIndex = m_module->NormalizeFunctionIndex(index); + if (type == FunctionIndexTypes::Import) + { + WasmImport* import = m_module->GetFunctionImport(normIndex); + TRACE_WASM_DECODER(_u("Export #%u: Import(%s.%s)(%u) => %s"), iExport, import->modName, import->fnName, normIndex, exportName); + } + else + { + TRACE_WASM_DECODER(_u("Export #%u: Function(%u) => %s"), iExport, normIndex, exportName); + } +#endif + break; + } + case ExternalKinds::Memory: + { + if (index != 0) + { + ThrowDecodingError(_u("Invalid memory index %s"), index); + } + m_module->SetMemoryIsExported(); + break; + } + case ExternalKinds::Global: + m_module->SetExport(iExport, index, exportName, nameLength, kind); + break; + case ExternalKinds::Table: + ThrowDecodingError(_u("Exported Kind Table, NYI")); + default: + ThrowDecodingError(_u("Exported Kind %d, NYI"), kind); + break; + } + + } +} + +void WasmBinaryReader::ReadTableSection() +{ + uint32 length; + uint32 entries = LEB128(length); + if (entries > 1) + { + ThrowDecodingError(_u("Maximum of one table allowed")); + } + + if (entries > 0) + { + uint8 elementType = ReadConst(); + if (elementType != ElementTypes::anyfunc) + { + ThrowDecodingError(_u("Only anyfunc type is supported. Unknown type %d"), elementType); + } + uint32 flags = LEB128(length); + uint32 initialLength = LEB128(length); + if (flags & 0x1) + { + uint32 maximumLength = LEB128(length); + + // Allocate maximum length for now until resizing supported + initialLength = maximumLength; + } + m_module->AllocateTable(initialLength); + m_module->CalculateEquivalentSignatures(); + TRACE_WASM_DECODER(_u("Indirect table: %u entries"), initialLength); + } +} + +void +WasmBinaryReader::ReadElementSection() +{ + uint32 length = 0; + uint32 count = LEB128(length); + + for (uint32 i = 0; i < count; ++i) + { + uint32 index = LEB128(length); + if (index != 0) + { + ThrowDecodingError(_u("Invalid table index %d"), index); + } + + WasmNode initExpr = ReadInitExpr(); + if (initExpr.op != wbI32Const) + { + ThrowDecodingError(_u("Only int32.const supported for element offset")); + } + + uint32 offset = initExpr.cnst.i32; + uint32 numElem = LEB128(length); + uint32 end = UInt32Math::Add(offset, numElem); + if (end > m_module->GetTableSize()) + { + ThrowDecodingError(_u("Out of bounds element in Table[%d][%d], max index: %d"), index, end - 1 , m_module->GetTableSize() - 1); + } + + for (uint32 iElem = offset; iElem < end; ++iElem) + { + uint32 elem = LEB128(length); + FunctionIndexTypes::Type funcType = m_module->GetFunctionIndexType(elem); + if (funcType == FunctionIndexTypes::Invalid) + { + ThrowDecodingError(_u("Invalid function index %d"), elem); + } + if (funcType == FunctionIndexTypes::Import) + { + ThrowDecodingError(_u("Import functions in the table NYI")); + } + m_module->SetTableValue(elem, iElem); + } + } +} + +void +WasmBinaryReader::ReadDataSegments() +{ + UINT len = 0; + const uint32 entries = LEB128(len); + if (entries > 0) + { + m_module->AllocateDataSegs(entries); + } + + for (uint32 i = 0; i < entries; ++i) + { + UINT32 index = LEB128(len); + if (index != 0) + { + ThrowDecodingError(_u("Memory index out of bounds %d > 0"), index); + } + TRACE_WASM_DECODER(_u("Data Segment #%u"), i); + WasmNode initExpr = ReadInitExpr(); + if (initExpr.op != wbI32Const && initExpr.op != wbGetGlobal) + { + ThrowDecodingError(_u("Only i32.const supported for data segment offset")); + } + //UINT32 offset = initExpr.cnst.i32; + UINT32 dataByteLen = LEB128(len); + WasmDataSegment *dseg = Anew(m_alloc, WasmDataSegment, m_alloc, initExpr, dataByteLen, m_pc); + CheckBytesLeft(dataByteLen); + m_pc += dataByteLen; + m_module->AddDataSeg(dseg, i); + } +} + +void +WasmBinaryReader::ReadNamesSection() +{ + UINT len = 0; + UINT numEntries = LEB128(len); + + for (UINT i = 0; i < numEntries; ++i) + { + UINT fnNameLen = 0; + WasmFunctionInfo* funsig = m_module->GetWasmFunctionInfo(i); + funsig->SetName(ReadInlineName(len, fnNameLen), fnNameLen); + UINT numLocals = LEB128(len); + if (numLocals != funsig->GetLocalCount()) + { + ThrowDecodingError(_u("num locals mismatch in names section")); + } + for (UINT j = 0; j < numLocals; ++j) + { + UINT localNameLen = 0; + ReadInlineName(len, localNameLen); + } + } +} + +void +WasmBinaryReader::ReadGlobalsSection() +{ + UINT len = 0; + UINT numEntries = LEB128(len); + + for (UINT i = 0; i < numEntries; ++i) + { + WasmTypes::WasmType type = ReadWasmType(len); + bool mutability = ReadConst() == 1; + WasmGlobal* global = Anew(m_alloc, WasmGlobal, m_module->globalCounts[type]++, type, mutability); + + WasmNode globalNode = ReadInitExpr(); + switch (globalNode.op) { + case wbI32Const: + case wbF32Const: + case wbF64Const: + global->SetReferenceType(WasmGlobal::Const); + global->cnst = globalNode.cnst; + break; + case wbGetGlobal: + global->SetReferenceType(WasmGlobal::LocalReference); + global->var = globalNode.var; + break; + case wbI64Const: + ThrowDecodingError(_u("i64 globals NYI")); + default: + Assert(UNREACHED); + } + + m_module->globals.Add(global); + } +} + +char16* WasmBinaryReader::ReadInlineName(uint32& length, uint32& nameLength) +{ + nameLength = LEB128(length); + CheckBytesLeft(nameLength); + LPUTF8 rawName = m_pc; + + m_pc += nameLength; + length += nameLength; + + return CvtUtf8Str(rawName, nameLength); +} + +char16* WasmBinaryReader::CvtUtf8Str(LPUTF8 name, uint32 nameLen) +{ + utf8::DecodeOptions decodeOptions = utf8::doDefault; + charcount_t utf16Len = utf8::ByteIndexIntoCharacterIndex(name, nameLen, decodeOptions); + char16* contents = AnewArray(m_alloc, char16, utf16Len + 1); + if (contents == nullptr) + { + Js::Throw::OutOfMemory(); + } + utf8::DecodeIntoAndNullTerminate((char16*)contents, name, utf16Len, decodeOptions); + return contents; +} + +void +WasmBinaryReader::ReadImportEntries() +{ + uint32 len = 0; + uint32 entries = LEB128(len); + + uint importFunctionCount = 0; //TODO: we are probably much better of using lists + + if (entries > 0) + { + m_module->AllocateFunctionImports(entries); + } + for (uint32 i = 0; i < entries; ++i) + { + uint32 modNameLen = 0, fnNameLen = 0; + char16* modName = ReadInlineName(len, modNameLen); + char16* fnName = ReadInlineName(len, fnNameLen); + + ExternalKinds::ExternalKind kind = (ExternalKinds::ExternalKind)ReadConst(); + TRACE_WASM_DECODER(_u("Import #%u: \"%s\".\"%s\", kind: %d"), i, modName, fnName, kind); + switch (kind) + { + case ExternalKinds::Function: + { + uint32 sigId = LEB128(len); + if (sigId >= m_module->GetSignatureCount()) + { + ThrowDecodingError(_u("Function signature %u is out of bound"), sigId); + } + m_module->SetFunctionImport(importFunctionCount, sigId, modName, modNameLen, fnName, fnNameLen, kind); + importFunctionCount++; + break; + } + case ExternalKinds::Global: + { + WasmTypes::WasmType type = ReadWasmType(len); + bool mutability = ReadConst() == 1; + WasmGlobal* importedGlobal = Anew(m_alloc, WasmGlobal, m_module->globalCounts[type]++, type, mutability); + if (importedGlobal->GetType() == WasmTypes::I64) + { + ThrowDecodingError(_u("I64 Globals, NYI")); + } + m_module->AddGlobalImport(modName, modNameLen, fnName, fnNameLen, kind, importedGlobal); + break; + } + case ExternalKinds::Table: + ThrowDecodingError(_u("Imported Kind Table, NYI")); + case ExternalKinds::Memory: + ThrowDecodingError(_u("Imported Kind Memory, NYI")); + default: + ThrowDecodingError(_u("Imported Kind %d, NYI"), kind); + break; + } + } + m_module->SetImportCount(importFunctionCount); +} + +void +WasmBinaryReader::ReadStartFunction() +{ + uint32 len = 0; + uint32 id = LEB128(len); + m_module->SetStartFunction(id); + + // TODO: Validate + // 1. Valid function id + // 2. Function should be void and nullary +} + +UINT +WasmBinaryReader::LEB128(UINT &length, bool sgn) +{ + UINT result = 0; + UINT shamt = 0; + byte b; + length = 1; + + // LEB128 needs at least one byte + CheckBytesLeft(1); + + for (UINT i = 0; i < 5; i++, length++) + { + // 5 bytes at most + b = *m_pc++; + result = result | ((b & 0x7f) << shamt); + if (sgn) + { + shamt += 7; + if ((b & 0x80) == 0) + break; + } + else + { + if ((b & 0x80) == 0) + break; + shamt += 7; + } + } + + if (b & 0x80 || m_pc > m_end) + { + ThrowDecodingError(_u("Invalid LEB128 format")); + } + + if (sgn && (shamt < sizeof(INT) * 8) && (0x40 & b)) + { + result |= -(1 << shamt); + } + + if (!sgn) + { + TRACE_WASM_LEB128(_u("Binary decoder: LEB128 value = %u, length = %u"), result, length); + } + + return result; +} + +// Signed LEB128 +INT +WasmBinaryReader::SLEB128(UINT &length) +{ + INT result = LEB128(length, true); + + TRACE_WASM_LEB128(_u("Binary decoder: SLEB128 value = %d, length = %u"), result, length); + return result; +} + +WasmNode +WasmBinaryReader::ReadInitExpr() +{ + m_funcState.count = 0; + m_funcState.size = 123456; // some arbitrary big value + ReadExpr(); + WasmNode node = m_currentNode; + switch (node.op) + { + case wbI32Const: + case wbF32Const: + case wbI64Const: + case wbF64Const: + break; + case wbGetGlobal: + { + uint32 globalIndex = node.var.num; + if (globalIndex >= (uint32)m_module->globals.Count()) + { + ThrowDecodingError(_u("Global %u out of bounds"), globalIndex); + } + WasmGlobal* global = m_module->globals.Item(globalIndex); + if (global->GetMutability()) + { + ThrowDecodingError(_u("initializer expression cannot reference a mutable global")); + } + break; + } + default: + ThrowDecodingError(_u("Invalid initexpr opcode")); + } + + if (ReadExpr() != wbEnd) + { + ThrowDecodingError(_u("Missing end opcode after init expr")); + } + return node; +} + +template +T WasmBinaryReader::ReadConst() +{ + CheckBytesLeft(sizeof(T)); + T value = *((T*)m_pc); + m_pc += sizeof(T); + + return value; +} + +WasmTypes::WasmType +WasmBinaryReader::ReadWasmType(uint32& length) +{ + length = 1; + WasmTypes::WasmType type = (WasmTypes::WasmType)ReadConst(); + if (type >= WasmTypes::Limit) + { + ThrowDecodingError(_u("Invalid type")); + } + return type; +} + +void +WasmBinaryReader::CheckBytesLeft(UINT bytesNeeded) +{ + UINT bytesLeft = (UINT)(m_end - m_pc); + if (bytesNeeded > bytesLeft) + { + ThrowDecodingError(_u("Out of file: Needed: %d, Left: %d"), bytesNeeded, bytesLeft); + } +} + +} // namespace Wasm + +#undef TRACE_WASM_DECODER + +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmBinaryReader.h b/lib/WasmReader/WasmBinaryReader.h new file mode 100644 index 00000000000..4ac03dcdfac --- /dev/null +++ b/lib/WasmReader/WasmBinaryReader.h @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once +#ifdef ENABLE_WASM +namespace Wasm +{ + struct SectionHeader + { + SectionCode code; + byte* start; + byte* end; + }; + + static const unsigned int experimentalVersion = 0xc; + + class WasmBinaryReader + { + public: + WasmBinaryReader(ArenaAllocator* alloc, WasmModule* module, byte* source, size_t length); + + void InitializeReader(); + bool ReadNextSection(SectionCode nextSection); + // Fully read the section in the reader. Return true if the section fully read + bool ProcessCurrentSection(); + void SeekToFunctionBody(FunctionBodyReaderInfo readerInfo); + bool IsCurrentFunctionCompleted() const; + WasmOp ReadExpr(); +#if DBG_DUMP + void PrintOps(); +#endif + intptr_t GetCurrentOffset() const { return m_pc - m_start; } + WasmNode m_currentNode; + private: + struct ReaderState + { + UINT32 count; // current entry + UINT32 size; // number of entries + }; + + void BlockNode(); + void CallNode(); + void CallIndirectNode(); + void BrNode(); + void BrTableNode(); + void MemNode(); + void VarNode(); + + // Module readers + void ValidateModuleHeader(); + SectionHeader ReadSectionHeader(); + void ReadMemorySection(); + void ReadSignatures(); + void ReadFunctionsSignatures(); + bool ReadFunctionHeaders(); + void ReadExportTable(); + void ReadTableSection(); + void ReadDataSegments(); + void ReadImportEntries(); + void ReadStartFunction(); + void ReadNamesSection(); + void ReadElementSection(); + void ReadGlobalsSection(); + + // Primitive reader + template void ConstNode(); + template T ReadConst(); + char16* ReadInlineName(uint32& length, uint32& nameLength); + char16* CvtUtf8Str(LPUTF8 name, uint32 nameLen); + UINT LEB128(UINT &length, bool sgn = false); + INT SLEB128(UINT &length); + WasmNode ReadInitExpr(); + + void CheckBytesLeft(UINT bytesNeeded); + bool EndOfFunc(); + bool EndOfModule(); + DECLSPEC_NORETURN void ThrowDecodingError(const char16* msg, ...); + Wasm::WasmTypes::WasmType ReadWasmType(uint32& length); + + ArenaAllocator* m_alloc; + uint m_funcNumber; + byte* m_start, *m_end, *m_pc, *m_curFuncEnd; + SectionHeader m_currentSection; + ReaderState m_funcState; // func AST level + + private: + WasmModule* m_module; +#if DBG_DUMP + typedef JsUtil::BaseHashSet OpSet; + OpSet* m_ops; +#endif + }; // WasmBinaryReader +} // namespace Wasm +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmByteCodeGenerator.cpp b/lib/WasmReader/WasmByteCodeGenerator.cpp new file mode 100755 index 00000000000..fda8820e081 --- /dev/null +++ b/lib/WasmReader/WasmByteCodeGenerator.cpp @@ -0,0 +1,1619 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +#if DBG_DUMP +#define DebugPrintOp(op) if (PHASE_TRACE(Js::WasmReaderPhase, GetFunctionBody())) { PrintOpName(op); } +#else +#define DebugPrintOp(op) +#endif + +namespace Wasm +{ +#define WASM_SIGNATURE(id, nTypes, ...) const WasmTypes::WasmType WasmOpCodeSignatures::id[] = {__VA_ARGS__}; +#include "WasmBinaryOpCodes.h" + +#if DBG_DUMP +void +WasmBytecodeGenerator::PrintOpName(WasmOp op) const +{ + switch (op) + { +#define WASM_OPCODE(opname, opcode, sig, nyi) \ +case wb##opname: \ + Output::Print(_u("%s\r\n"), _u(#opname)); \ + break; +#include "WasmBinaryOpCodes.h" + } +} +#endif + +/* static */ +Js::AsmJsRetType +WasmToAsmJs::GetAsmJsReturnType(WasmTypes::WasmType wasmType) +{ + switch (wasmType) + { + case WasmTypes::F32: + return Js::AsmJsRetType::Float; + case WasmTypes::F64: + return Js::AsmJsRetType::Double; + case WasmTypes::I32: + return Js::AsmJsRetType::Signed; + case WasmTypes::Void: + return Js::AsmJsRetType::Void; + case WasmTypes::I64: + return Js::AsmJsRetType::Signed; + //throw WasmCompilationException(_u("I64 support NYI")); + default: + throw WasmCompilationException(_u("Unknown return type %u"), wasmType); + } +} + +/* static */ +Js::AsmJsVarType +WasmToAsmJs::GetAsmJsVarType(WasmTypes::WasmType wasmType) +{ + Js::AsmJsVarType asmType = Js::AsmJsVarType::Int; + switch (wasmType) + { + case WasmTypes::F32: + return Js::AsmJsVarType::Float; + case WasmTypes::F64: + return Js::AsmJsVarType::Double; + case WasmTypes::I32: + return Js::AsmJsVarType::Int; + case WasmTypes::I64: + return Js::AsmJsVarType::Int; + //throw WasmCompilationException(_u("I64 support NYI")); + default: + throw WasmCompilationException(_u("Unknown var type %u"), wasmType); + } +} + +typedef bool(*SectionProcessFunc)(WasmModuleGenerator*); +typedef void(*AfterSectionCallback)(WasmModuleGenerator*); + +WasmModuleGenerator::WasmModuleGenerator(Js::ScriptContext* scriptContext, Js::Utf8SourceInfo* sourceInfo, byte* binaryBuffer, uint binaryBufferLength) : + m_sourceInfo(sourceInfo), + m_scriptContext(scriptContext), + m_recycler(scriptContext->GetRecycler()) +{ + m_module = RecyclerNewFinalizedLeaf(m_recycler, WasmModule, scriptContext, binaryBuffer, binaryBufferLength); + + m_sourceInfo->EnsureInitialized(0); + m_sourceInfo->GetSrcInfo()->sourceContextInfo->EnsureInitialized(); +} + +WasmModule* +WasmModuleGenerator::GenerateModule() +{ + m_module->SetHeapOffset(0); + m_module->SetImportFuncOffset(m_module->GetHeapOffset() + 1); + m_module->SetFuncOffset(m_module->GetHeapOffset() + 1); + + BVStatic visitedSections; + + // Will callback regardless if the section is present or not + AfterSectionCallback afterSectionCallback[bSectLimit + 1] = {}; + + afterSectionCallback[bSectFunctionSignatures] = [](WasmModuleGenerator* gen) { + gen->m_module->SetFuncOffset(gen->m_module->GetImportFuncOffset() + gen->m_module->GetImportCount()); + }; + afterSectionCallback[bSectIndirectFunctionTable] = [](WasmModuleGenerator* gen) { + gen->m_module->SetTableEnvironmentOffset(gen->m_module->GetFuncOffset() + gen->m_module->GetWasmFunctionCount()); + }; + afterSectionCallback[bSectFunctionBodies] = [](WasmModuleGenerator* gen) { + + gen->m_module->SetGlobalOffset(gen->m_module->GetFuncOffset() + gen->m_module->GetTableEnvironmentOffset()); + gen->m_module->globalCounts[0] = gen->m_module->GetGlobalOffset(); + + uint32 funcCount = gen->m_module->GetWasmFunctionCount(); + for (uint32 i = 0; i < funcCount; ++i) + { + gen->GenerateFunctionHeader(i); + } + }; + + for (SectionCode sectionCode = (SectionCode)(bSectInvalid + 1); sectionCode < bSectLimit ; sectionCode = (SectionCode)(sectionCode + 1)) + { + SectionCode precedent = SectionInfo::All[sectionCode].precedent; + if (GetReader()->ReadNextSection((SectionCode)sectionCode)) + { + if (precedent != bSectInvalid && !visitedSections.Test(precedent)) + { + throw WasmCompilationException(_u("%s section missing before %s"), + SectionInfo::All[precedent].name, + SectionInfo::All[sectionCode].name); + } + visitedSections.Set(sectionCode); + + if (!GetReader()->ProcessCurrentSection()) + { + throw WasmCompilationException(_u("Error while reading section %s"), SectionInfo::All[sectionCode].name); + } + } + + if (afterSectionCallback[sectionCode]) + { + afterSectionCallback[sectionCode](this); + } + } + +#if DBG_DUMP + if (PHASE_TRACE1(Js::WasmReaderPhase)) + { + GetReader()->PrintOps(); + } +#endif + // If we see a FunctionSignatures section we need to see a FunctionBodies section + if (visitedSections.Test(bSectFunctionSignatures) && !visitedSections.Test(bSectFunctionBodies)) + { + throw WasmCompilationException(_u("Missing required section: %s"), SectionInfo::All[bSectFunctionBodies].name); + } + + return m_module; +} + +void +WasmModuleGenerator::GenerateFunctionHeader(uint32 index) +{ + WasmFunctionInfo* wasmInfo = m_module->GetWasmFunctionInfo(index); + if (!wasmInfo) + { + throw WasmCompilationException(_u("Invalid function index %u"), index); + } + + char16* functionName = nullptr; + int nameLength = 0; + + if (wasmInfo->GetNameLength() > 0) + { + functionName = wasmInfo->GetName(); + nameLength = wasmInfo->GetNameLength(); + } + else + { + for (uint32 iExport = 0; iExport < m_module->GetExportCount(); ++iExport) + { + Wasm::WasmExport* funcExport = m_module->GetFunctionExport(iExport); + if (funcExport && + funcExport->nameLength > 0 && + m_module->GetFunctionIndexType(funcExport->funcIndex) == FunctionIndexTypes::Function && + m_module->NormalizeFunctionIndex(funcExport->funcIndex) == wasmInfo->GetNumber()) + { + nameLength = funcExport->nameLength + 16; + functionName = RecyclerNewArrayLeafZ(m_recycler, char16, nameLength); + nameLength = swprintf_s(functionName, nameLength, _u("%s[%u]"), funcExport->name, wasmInfo->GetNumber()); + break; + } + } + } + + if (!functionName) + { + functionName = RecyclerNewArrayLeafZ(m_recycler, char16, 32); + nameLength = swprintf_s(functionName, 32, _u("wasm-function[%u]"), wasmInfo->GetNumber()); + } + + Js::FunctionBody* body = Js::FunctionBody::NewFromRecycler( + m_scriptContext, + functionName, + nameLength, + 0, + 0, + m_sourceInfo, + m_sourceInfo->GetSrcInfo()->sourceContextInfo->sourceContextId, + wasmInfo->GetNumber(), + nullptr, + Js::FunctionInfo::Attributes::None, + Js::FunctionBody::Flags_None +#ifdef PERF_COUNTERS + , false /* is function from deferred deserialized proxy */ +#endif + ); + wasmInfo->SetBody(body); + // TODO (michhol): numbering + body->SetSourceInfo(0); + body->AllocateAsmJsFunctionInfo(); + body->SetIsAsmJsFunction(true); + body->SetIsAsmjsMode(true); + body->SetIsWasmFunction(true); + body->GetAsmJsFunctionInfo()->SetIsHeapBufferConst(true); + + WasmReaderInfo* readerInfo = RecyclerNew(m_recycler, WasmReaderInfo); + readerInfo->m_funcInfo = wasmInfo; + readerInfo->m_module = m_module; + + Js::AsmJsFunctionInfo* info = body->GetAsmJsFunctionInfo(); + info->SetWasmReaderInfo(readerInfo); + + if (wasmInfo->GetParamCount() >= Js::Constants::InvalidArgSlot) + { + Js::Throw::OutOfMemory(); + } + Js::ArgSlot paramCount = (Js::ArgSlot)wasmInfo->GetParamCount(); + info->SetArgCount(paramCount); + + Js::ArgSlot argSizeLength = max(paramCount, 3ui16); + info->SetArgSizeArrayLength(argSizeLength); + uint* argSizeArray = RecyclerNewArrayLeafZ(m_recycler, uint, argSizeLength); + info->SetArgsSizesArray(argSizeArray); + + if (m_module->GetMemory()->minSize > 0) + { + info->SetUsesHeapBuffer(true); + } + if (paramCount > 0) + { + body->SetHasImplicitArgIns(true); + body->SetInParamsCount(paramCount + 1); + body->SetReportedInParamsCount(paramCount + 1); + info->SetArgTypeArray(RecyclerNewArrayLeaf(m_recycler, Js::AsmJsVarType::Which, paramCount)); + } + Js::ArgSlot paramSize = 0; + for (Js::ArgSlot i = 0; i < paramCount; ++i) + { + WasmTypes::WasmType type = wasmInfo->GetParam(i); + info->SetArgType(WasmToAsmJs::GetAsmJsVarType(type), i); + uint16 size = 0; + switch (type) + { + case WasmTypes::F32: + case WasmTypes::I32: + CompileAssert(sizeof(float) == sizeof(int32)); +#ifdef _M_X64 + // on x64, we always alloc (at least) 8 bytes per arguments + size = sizeof(void*); +#elif _M_IX86 + size = sizeof(int32); +#else + Assert(UNREACHED); +#endif + break; + case WasmTypes::F64: + case WasmTypes::I64: + CompileAssert(sizeof(double) == sizeof(int64)); + size = sizeof(int64); + break; + default: + Assume(UNREACHED); + } + argSizeArray[i] = size; + // REVIEW: reduce number of checked adds + paramSize = UInt16Math::Add(paramSize, size); + } + info->SetArgByteSize(paramSize); + info->SetReturnType(WasmToAsmJs::GetAsmJsReturnType(wasmInfo->GetResultType())); +} + +void +WasmBytecodeGenerator::GenerateFunctionBytecode(Js::ScriptContext* scriptContext, WasmReaderInfo* readerinfo) +{ + WasmBytecodeGenerator generator(scriptContext, readerinfo); + generator.GenerateFunction(); + if (!generator.GetReader()->IsCurrentFunctionCompleted()) + { + throw WasmCompilationException(_u("Invalid function format")); + } +} + +WasmBytecodeGenerator::WasmBytecodeGenerator(Js::ScriptContext* scriptContext, WasmReaderInfo* readerInfo) : + m_scriptContext(scriptContext), + m_alloc(_u("WasmBytecodeGen"), scriptContext->GetThreadContext()->GetPageAllocator(), Js::Throw::OutOfMemory), + m_evalStack(&m_alloc), + m_i32RegSlots(ReservedRegisterCount), + m_f32RegSlots(ReservedRegisterCount), + m_f64RegSlots(ReservedRegisterCount), + m_blockInfos(&m_alloc), + isUnreachable(false) +{ +#if DBG_DUMP + m_i32RegSlots.mType = WAsmJs::RegisterSpace::INT32; + m_f32RegSlots.mType = WAsmJs::RegisterSpace::FLOAT32; + m_f64RegSlots.mType = WAsmJs::RegisterSpace::FLOAT64; +#endif + + m_writer.Create(); + m_funcInfo = readerInfo->m_funcInfo; + m_module = readerInfo->m_module; + // Init reader to current func offset + GetReader()->SeekToFunctionBody(m_funcInfo->m_readerInfo); + + // Use binary size to estimate bytecode size + const long astSize = readerInfo->m_funcInfo->m_readerInfo.size; + m_writer.InitData(&m_alloc, astSize); +} + +void +WasmBytecodeGenerator::GenerateFunction() +{ + TRACE_WASM_DECODER(_u("GenerateFunction %u \n"), m_funcInfo->GetNumber()); + if (PHASE_OFF(Js::WasmBytecodePhase, GetFunctionBody())) + { + throw WasmCompilationException(_u("Compilation skipped")); + } + Js::AutoProfilingPhase functionProfiler(m_scriptContext, Js::WasmFunctionBodyPhase); + Unused(functionProfiler); + + m_maxArgOutDepth = 0; + + // TODO: fix these bools + m_writer.Begin(GetFunctionBody(), &m_alloc, true, true, false); + try + { + Js::ByteCodeLabel exitLabel = m_writer.DefineLabel(); + m_funcInfo->SetExitLabel(exitLabel); + EnregisterLocals(); + + EnterEvalStackScope(); + // The function's yield type is the return type + GetReader()->m_currentNode.block.sig = m_funcInfo->GetResultType(); + EmitInfo lastInfo = EmitBlock(); + if (lastInfo.type != WasmTypes::Void || m_funcInfo->GetResultType() == WasmTypes::Void) + { + EmitReturnExpr(&lastInfo); + } + ExitEvalStackScope(); + m_writer.MarkAsmJsLabel(exitLabel); + m_writer.EmptyAsm(Js::OpCodeAsmJs::Ret); + m_writer.End(); + } + catch (...) + { + m_writer.Reset(); + throw; + } + + +#if DBG_DUMP + if (PHASE_DUMP(Js::ByteCodePhase, GetFunctionBody())) + { + Js::AsmJsByteCodeDumper::DumpBasic(GetFunctionBody()); + } +#endif + + Js::AsmJsFunctionInfo * info = GetFunctionBody()->GetAsmJsFunctionInfo(); + info->SetIntVarCount(m_i32RegSlots.GetVarCount()); + info->SetFloatVarCount(m_f32RegSlots.GetVarCount()); + info->SetDoubleVarCount(m_f64RegSlots.GetVarCount()); + + info->SetIntTmpCount(m_i32RegSlots.GetTmpCount()); + info->SetFloatTmpCount(m_f32RegSlots.GetTmpCount()); + info->SetDoubleTmpCount(m_f64RegSlots.GetTmpCount()); + + info->SetIntConstCount(ReservedRegisterCount); + info->SetFloatConstCount(ReservedRegisterCount); + info->SetDoubleConstCount(ReservedRegisterCount); + + const uint32 nbConst = + ((info->GetDoubleConstCount() + 1) * WAsmJs::DOUBLE_SLOTS_SPACE) + + (uint32)((info->GetFloatConstCount() + 1) * WAsmJs::FLOAT_SLOTS_SPACE + 0.5 /*ceil*/) + + (uint32)((info->GetIntConstCount() + 1) * WAsmJs::INT_SLOTS_SPACE + 0.5/*ceil*/) + + Js::AsmJsFunctionMemory::RequiredVarConstants; + + // This is constant, 29 for 32bits and 17 for 64bits systems + Assert(nbConst == 29 || nbConst == 17); + GetFunctionBody()->CheckAndSetConstantCount(nbConst); + + info->SetReturnType(WasmToAsmJs::GetAsmJsReturnType(m_funcInfo->GetResultType())); + + uint32 byteOffset = ReservedRegisterCount * sizeof(Js::Var); + info->SetIntByteOffset(byteOffset); + byteOffset = UInt32Math::Add(byteOffset, UInt32Math::Mul(m_i32RegSlots.GetRegisterCount(), sizeof(int32))); + info->SetFloatByteOffset(byteOffset); + byteOffset = UInt32Math::Add(info->GetFloatByteOffset(), UInt32Math::Mul(m_f32RegSlots.GetRegisterCount(), sizeof(float))); + // The offsets are stored as int, since we do uint32 math, make sure we haven't overflowed INT_MAX + if (byteOffset >= INT_MAX) + { + Js::Throw::OutOfMemory(); + } + byteOffset = Math::AlignOverflowCheck(byteOffset, sizeof(double)); + info->SetDoubleByteOffset(byteOffset); + + GetFunctionBody()->SetOutParamMaxDepth(m_maxArgOutDepth); + GetFunctionBody()->SetVarCount(UInt32Math::Add( + UInt32Math::Add(m_f32RegSlots.GetRegisterCount(), m_f64RegSlots.GetRegisterCount()), + m_i32RegSlots.GetRegisterCount() + )); +} + +void +WasmBytecodeGenerator::EnregisterLocals() +{ + uint32 nLocals = m_funcInfo->GetLocalCount(); + m_locals = AnewArray(&m_alloc, WasmLocal, nLocals); + + m_funcInfo->GetBody()->SetFirstTmpReg(nLocals); + for (uint i = 0; i < nLocals; ++i) + { + WasmTypes::WasmType type = m_funcInfo->GetLocal(i); + WasmRegisterSpace * regSpace = GetRegisterSpace(type); + if (regSpace == nullptr) + { + throw WasmCompilationException(_u("Unable to find local register space")); + } + m_locals[i] = WasmLocal(regSpace->AcquireRegister(), type); + + // Zero only the locals not corresponding to formal parameters. + if (i >= m_funcInfo->GetParamCount()) { + switch (type) + { + case WasmTypes::F32: + m_writer.AsmFloat1Const1(Js::OpCodeAsmJs::Ld_FltConst, m_locals[i].location, 0.0f); + break; + case WasmTypes::F64: + m_writer.AsmDouble1Const1(Js::OpCodeAsmJs::Ld_DbConst, m_locals[i].location, 0.0); + break; + case WasmTypes::I32: + m_writer.AsmInt1Const1(Js::OpCodeAsmJs::Ld_IntConst, m_locals[i].location, 0); + break; + case WasmTypes::I64: + throw WasmCompilationException(_u("I64 locals NYI")); + default: + Assume(UNREACHED); + } + } + } +} + +void +WasmBytecodeGenerator::EmitExpr(WasmOp op) +{ + DebugPrintOp(op); + switch (op) + { +#define WASM_OPCODE(opname, opcode, sig, nyi) \ + case opcode: \ + if (nyi) throw WasmCompilationException(_u("Operator %s NYI"), _u(#opname)); break; +#include "WasmBinaryOpCodes.h" + default: + break; + } + + EmitInfo info; + + if (IsUnreachable() && !IsBlockOpCode(op)) + { + return; + } + + switch (op) + { + case wbGetGlobal: + info = EmitGetGlobal(); + break; + case wbSetGlobal: + info = EmitSetGlobal(); + break; + case wbGetLocal: + info = EmitGetLocal(); + break; + case wbSetLocal: + info = EmitSetLocal(false); + break; + case wbTeeLocal: + info = EmitSetLocal(true); + break; + case wbReturn: + EmitReturnExpr(); + break; + case wbF32Const: + info = EmitConst(); + break; + case wbF64Const: + info = EmitConst(); + break; + case wbI32Const: + info = EmitConst(); + break; + case wbBlock: + if (IsUnreachable()) + { + EmitBlockCommon(nullptr); + return; + } + info = EmitBlock(); + break; + case wbLoop: + if (IsUnreachable()) + { + EmitBlockCommon(nullptr); + return; + } + info = EmitLoop(); + break; + case wbCall: + info = EmitCall(); + break; + case wbCallIndirect: + info = EmitCall(); + break; + case wbIf: + if (IsUnreachable()) + { + bool endOnElse = false; + EmitBlockCommon(nullptr, &endOnElse); + if (endOnElse) + { + EmitBlockCommon(nullptr); + } + return; + } + info = EmitIfElseExpr(); + break; + case wbElse: + throw WasmCompilationException(_u("Unexpected else opcode")); + case wbEnd: + throw WasmCompilationException(_u("Unexpected end opcode")); + case wbBr: + EmitBr(); + break; + case wbBrIf: + info = EmitBrIf(); + break; + case wbSelect: + info = EmitSelect(); + break; + case wbBrTable: + EmitBrTable(); + break; + case wbDrop: + info = EmitDrop(); + break; + case wbNop: + return; + case wbCurrentMemory: + { + Js::RegSlot tempReg = m_i32RegSlots.AcquireTmpRegister(); + info = EmitInfo(tempReg, WasmTypes::I32); + // todo:: check for imported memory + if (m_module->GetMemory()->minSize > 0) + { + m_writer.AsmReg1(Js::OpCodeAsmJs::CurrentMemory_Int, tempReg); + } + else + { + WasmConstLitNode cnst; + cnst.i32 = 0; + this->EmitLoadConst(info, cnst); + } + break; + } + case wbUnreachable: + m_writer.EmptyAsm(Js::OpCodeAsmJs::Unreachable_Void); + SetUnreachableState(true); + break; +#define WASM_MEMREAD_OPCODE(opname, opcode, sig, nyi) \ + case wb##opname: \ + Assert(WasmOpCodeSignatures::n##sig > 0);\ + info = EmitMemAccess(false); \ + break; +#define WASM_MEMSTORE_OPCODE(opname, opcode, sig, nyi) \ + case wb##opname: \ + Assert(WasmOpCodeSignatures::n##sig > 0);\ + info = EmitMemAccess(true); \ + break; +#define WASM_BINARY_OPCODE(opname, opcode, sig, asmjop, nyi) \ + case wb##opname: \ + Assert(WasmOpCodeSignatures::n##sig == 3);\ + info = EmitBinExpr(); \ + break; +#define WASM_UNARY__OPCODE(opname, opcode, sig, asmjop, nyi) \ + case wb##opname: \ + Assert(WasmOpCodeSignatures::n##sig == 2);\ + info = EmitUnaryExpr(); \ + break; +#include "WasmBinaryOpCodes.h" + default: + throw WasmCompilationException(_u("Unknown expression's op 0x%X"), op); + } + + if (info.type != WasmTypes::Void && !IsUnreachable()) + { + PushEvalStack(info); + } +} + + +EmitInfo +WasmBytecodeGenerator::EmitGetGlobal() +{ + uint globalIndex = GetReader()->m_currentNode.var.num; + WasmGlobal* global = m_module->globals.Item(globalIndex); + + WasmTypes::WasmType type = global->GetType(); + + Js::RegSlot slot = m_module->GetOffsetForGlobal(global); + + static const Js::OpCodeAsmJs globalOpcodes[] = { + Js::OpCodeAsmJs::LdSlot_Int, + Js::OpCodeAsmJs::LdUndef, //no i64 yet + Js::OpCodeAsmJs::LdSlot_Flt, + Js::OpCodeAsmJs::LdSlot_Db + }; + + Assert(globalOpcodes[type - 1] != Js::OpCodeAsmJs::LdUndef); + + WasmRegisterSpace * regSpace = GetRegisterSpace(type); + Js::RegSlot tmpReg = regSpace->AcquireTmpRegister(); + EmitInfo info(tmpReg, type); + + m_writer.AsmSlot(globalOpcodes[type - 1], tmpReg, WasmBytecodeGenerator::ModuleEnvRegister, slot); + + return info; +} + +EmitInfo +WasmBytecodeGenerator::EmitSetGlobal() +{ + uint globalIndex = GetReader()->m_currentNode.var.num; + WasmGlobal* global = m_module->globals.Item(globalIndex); + Js::RegSlot slot = m_module->GetOffsetForGlobal(global); + + WasmTypes::WasmType type = global->GetType(); + EmitInfo info = PopEvalStack(); + + if (info.type != type) + { + throw WasmCompilationException(_u("TypeError in setglobal for %u"), globalIndex); + } + + static const Js::OpCodeAsmJs globalOpcodes[] = { + Js::OpCodeAsmJs::StSlot_Int, + Js::OpCodeAsmJs::LdUndef, //no i64 yet + Js::OpCodeAsmJs::StSlot_Flt, + Js::OpCodeAsmJs::StSlot_Db + }; + + m_writer.AsmSlot(globalOpcodes[type - 1], info.location, WasmBytecodeGenerator::ModuleEnvRegister, slot); + ReleaseLocation(&info); + + return EmitInfo(); +} + + + +EmitInfo +WasmBytecodeGenerator::EmitGetLocal() +{ + if (m_funcInfo->GetLocalCount() < GetReader()->m_currentNode.var.num) + { + throw WasmCompilationException(_u("%u is not a valid local"), GetReader()->m_currentNode.var.num); + } + + WasmLocal local = m_locals[GetReader()->m_currentNode.var.num]; + + Js::OpCodeAsmJs op = GetLoadOp(local.type); + WasmRegisterSpace * regSpace = GetRegisterSpace(local.type); + + Js::RegSlot tmpReg = regSpace->AcquireTmpRegister(); + + m_writer.AsmReg2(op, tmpReg, local.location); + + return EmitInfo(tmpReg, local.type); +} + +EmitInfo +WasmBytecodeGenerator::EmitSetLocal(bool tee) +{ + uint localNum = GetReader()->m_currentNode.var.num; + if (localNum >= m_funcInfo->GetLocalCount()) + { + throw WasmCompilationException(_u("%u is not a valid local"), localNum); + } + + WasmLocal local = m_locals[localNum]; + + EmitInfo info = PopEvalStack(); + if (info.type != local.type) + { + throw WasmCompilationException(_u("TypeError in setlocal for %u"), localNum); + } + + m_writer.AsmReg2(GetLoadOp(local.type), local.location, info.location); + + if (tee) + { + return info; + } + else + { + ReleaseLocation(&info); + return EmitInfo(); + } +} + +template +EmitInfo +WasmBytecodeGenerator::EmitConst() +{ + WasmRegisterSpace * regSpace = GetRegisterSpace(type); + + Js::RegSlot tmpReg = regSpace->AcquireTmpRegister(); + EmitInfo dst(tmpReg, type); + EmitLoadConst(dst, GetReader()->m_currentNode.cnst); + return dst; +} + +void WasmBytecodeGenerator::EmitLoadConst(EmitInfo dst, WasmConstLitNode cnst) +{ + switch (dst.type) + { + case WasmTypes::F32: + m_writer.AsmFloat1Const1(Js::OpCodeAsmJs::Ld_FltConst, dst.location, cnst.f32); + break; + case WasmTypes::F64: + m_writer.AsmDouble1Const1(Js::OpCodeAsmJs::Ld_DbConst, dst.location, cnst.f64); + break; + case WasmTypes::I32: + m_writer.AsmInt1Const1(Js::OpCodeAsmJs::Ld_IntConst, dst.location, cnst.i32); + break; + case WasmTypes::I64: + throw WasmCompilationException(_u("I64 const NYI")); + break; + default: + throw WasmCompilationException(_u("Unknown type %u"), dst.type); + } +} + +void +WasmBytecodeGenerator::EmitBlockCommon(BlockInfo* blockInfo, bool* endOnElse /*= nullptr*/) +{ + WasmOp op; + EnterEvalStackScope(); + if(endOnElse) *endOnElse = false; + do { + op = GetReader()->ReadExpr(); + if (op == wbEnd) + { + break; + } + if (endOnElse && op == wbElse) + { + *endOnElse = true; + break; + } + EmitExpr(op); + } while (true); + DebugPrintOp(op); + if (blockInfo && blockInfo->HasYield() && !IsUnreachable()) + { + EmitInfo info = PopEvalStack(); + YieldToBlock(*blockInfo, info); + ReleaseLocation(&info); + } + ExitEvalStackScope(); +} + +EmitInfo +WasmBytecodeGenerator::EmitBlock() +{ + Js::ByteCodeLabel blockLabel = m_writer.DefineLabel(); + + BlockInfo blockInfo = PushLabel(blockLabel); + EmitBlockCommon(&blockInfo); + m_writer.MarkAsmJsLabel(blockLabel); + EmitInfo yieldInfo = PopLabel(blockLabel); + + // Reset unreachable state + SetUnreachableState(false); + + // block yields last value + return yieldInfo; +} + +EmitInfo +WasmBytecodeGenerator::EmitLoop() +{ + Js::ByteCodeLabel loopTailLabel = m_writer.DefineLabel(); + Js::ByteCodeLabel loopHeadLabel = m_writer.DefineLabel(); + Js::ByteCodeLabel loopLandingPadLabel = m_writer.DefineLabel(); + + uint loopId = m_writer.EnterLoop(loopHeadLabel); + + // Internally we create a block for loop to exit, but semantically, they don't exist so pop it + BlockInfo implicitBlockInfo = PushLabel(loopTailLabel); + m_blockInfos.Pop(); + + // We don't want nested block to jump directly to the loop header + // instead, jump to the landing pad and let it jump back to the loop header + PushLabel(loopLandingPadLabel, false); + EmitBlockCommon(&implicitBlockInfo); + PopLabel(loopLandingPadLabel); + + // By default we don't loop, jump over the landing pad + m_writer.AsmBr(loopTailLabel); + m_writer.MarkAsmJsLabel(loopLandingPadLabel); + m_writer.AsmBr(loopHeadLabel); + + // Put the implicit block back on the stack and yield the last expression to it + m_blockInfos.Push(implicitBlockInfo); + m_writer.MarkAsmJsLabel(loopTailLabel); + // Pop the implicit block to resolve the yield correctly + EmitInfo loopInfo = PopLabel(loopTailLabel); + m_writer.ExitLoop(loopId); + + // Reset unreachable state + SetUnreachableState(false); + + return loopInfo; +} + +template +EmitInfo +WasmBytecodeGenerator::EmitCall() +{ + uint funcNum = Js::Constants::UninitializedValue; + uint signatureId = Js::Constants::UninitializedValue; + WasmSignature * calleeSignature = nullptr; + EmitInfo indirectIndexInfo; + const bool isImportCall = GetReader()->m_currentNode.call.funcType == FunctionIndexTypes::Import; + Assert(isImportCall || GetReader()->m_currentNode.call.funcType == FunctionIndexTypes::Function); + switch (wasmOp) + { + case wbCall: + funcNum = GetReader()->m_currentNode.call.num; + calleeSignature = m_module->GetFunctionSignature(funcNum); + break; + case wbCallIndirect: + indirectIndexInfo = PopEvalStack(); + signatureId = GetReader()->m_currentNode.call.num; + signatureId = m_module->GetEquivalentSignatureId(signatureId); + calleeSignature = m_module->GetSignature(signatureId); + ReleaseLocation(&indirectIndexInfo); + break; + default: + Assume(UNREACHED); + } + + // emit start call + Js::ArgSlot argSize; + Js::OpCodeAsmJs startCallOp; + if (isImportCall) + { + argSize = (Js::ArgSlot)(calleeSignature->GetParamCount() * sizeof(Js::Var)); + startCallOp = Js::OpCodeAsmJs::StartCall; + } + else + { + startCallOp = Js::OpCodeAsmJs::I_StartCall; + argSize = (Js::ArgSlot)calleeSignature->GetParamsSize(); + } + // Add return value + argSize += sizeof(Js::Var); + + if (argSize >= UINT16_MAX) + { + throw WasmCompilationException(_u("Argument size too big")); + } + + m_writer.AsmStartCall(startCallOp, argSize); + + uint32 nArgs = calleeSignature->GetParamCount(); + //copy args into a list so they could be generated in the right order (FIFO) + JsUtil::List argsList(&m_alloc); + for (uint32 i = 0; i < nArgs; i++) + { + argsList.Add(PopEvalStack()); + } + Assert((uint32)argsList.Count() == nArgs); + + // Size of the this pointer (aka undefined) + int32 argsBytesLeft = sizeof(Js::Var); + for (uint32 i = 0; i < nArgs; ++i) + { + EmitInfo info = argsList.Item(nArgs - i - 1); + if (calleeSignature->GetParam(i) != info.type) + { + throw WasmCompilationException(_u("Call argument does not match formal type")); + } + + Js::OpCodeAsmJs argOp = Js::OpCodeAsmJs::Nop; + switch (info.type) + { + case WasmTypes::F32: + if (isImportCall) + { + throw WasmCompilationException(_u("External calls with float argument NYI")); + } + argOp = Js::OpCodeAsmJs::I_ArgOut_Flt; + break; + case WasmTypes::F64: + argOp = isImportCall ? Js::OpCodeAsmJs::ArgOut_Db : Js::OpCodeAsmJs::I_ArgOut_Db; + break; + case WasmTypes::I32: + argOp = isImportCall ? Js::OpCodeAsmJs::ArgOut_Int : Js::OpCodeAsmJs::I_ArgOut_Int; + break; + default: + throw WasmCompilationException(_u("Unknown argument type %u"), info.type); + } + //argSize + + if (argsBytesLeft < 0 || (argsBytesLeft % sizeof(Js::Var)) != 0) + { + throw WasmCompilationException(_u("Error while emitting call arguments")); + } + Js::RegSlot argLoc = argsBytesLeft / sizeof(Js::Var); + argsBytesLeft += isImportCall ? sizeof(Js::Var) : calleeSignature->GetParamSize(i); + + m_writer.AsmReg2(argOp, argLoc, info.location); + } + + //registers need to be released from higher ordinals to lower + for (uint32 i = 0; i < nArgs; i++) + { + ReleaseLocation(&(argsList.Item(i))); + } + + // emit call + switch (wasmOp) + { + case wbCall: + { + uint32 offset = isImportCall ? m_module->GetImportFuncOffset() : m_module->GetFuncOffset(); + uint32 index = UInt32Math::Add(offset, m_module->NormalizeFunctionIndex(funcNum)); + m_writer.AsmSlot(Js::OpCodeAsmJs::LdSlot, 0, 1, index); + break; + } + case wbCallIndirect: + if (indirectIndexInfo.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("Indirect call index must be int type")); + } + // todo:: Add bounds check. Asm.js doesn't need it because there has to be an & operator + m_writer.AsmSlot(Js::OpCodeAsmJs::LdSlotArr, 0, 1, calleeSignature->GetSignatureId() + m_module->GetTableEnvironmentOffset()); + m_writer.AsmSlot(Js::OpCodeAsmJs::LdArr_Func, 0, 0, indirectIndexInfo.location); + break; + default: + Assume(UNREACHED); + } + + // calculate number of RegSlots the arguments consume + Js::ArgSlot args; + Js::OpCodeAsmJs callOp = Js::OpCodeAsmJs::Nop; + if (isImportCall) + { + args = (Js::ArgSlot)(calleeSignature->GetParamCount() + 1); + callOp = Js::OpCodeAsmJs::Call; + } + else + { + args = (Js::ArgSlot)(::ceil((double)(argSize / sizeof(Js::Var)))); + callOp = Js::OpCodeAsmJs::I_Call; + } + + m_writer.AsmCall(callOp, 0, 0, args, WasmToAsmJs::GetAsmJsReturnType(calleeSignature->GetResultType())); + + // emit result coercion + EmitInfo retInfo; + retInfo.type = calleeSignature->GetResultType(); + if (retInfo.type != WasmTypes::Void) + { + Js::OpCodeAsmJs convertOp = Js::OpCodeAsmJs::Nop; + switch (retInfo.type) + { + case WasmTypes::F32: + retInfo.location = m_f32RegSlots.AcquireTmpRegister(); + convertOp = isImportCall ? Js::OpCodeAsmJs::Conv_VTF : Js::OpCodeAsmJs::I_Conv_VTF; + break; + case WasmTypes::F64: + retInfo.location = m_f64RegSlots.AcquireTmpRegister(); + convertOp = isImportCall ? Js::OpCodeAsmJs::Conv_VTD : Js::OpCodeAsmJs::I_Conv_VTD; + break; + case WasmTypes::I32: + retInfo.location = m_i32RegSlots.AcquireTmpRegister(); + convertOp = isImportCall ? Js::OpCodeAsmJs::Conv_VTI : Js::OpCodeAsmJs::I_Conv_VTI; + break; + case WasmTypes::I64: + throw WasmCompilationException(_u("I64 return type NYI")); + default: + throw WasmCompilationException(_u("Unknown call return type %u"), retInfo.type); + } + m_writer.AsmReg2(convertOp, retInfo.location, 0); + } + + // track stack requirements for out params + + // + 1 for return address + uint maxDepthForLevel = args + 1; + if (maxDepthForLevel > m_maxArgOutDepth) + { + m_maxArgOutDepth = maxDepthForLevel; + } + + return retInfo; +} + +EmitInfo +WasmBytecodeGenerator::EmitIfElseExpr() +{ + Js::ByteCodeLabel falseLabel = m_writer.DefineLabel(); + Js::ByteCodeLabel endLabel = m_writer.DefineLabel(); + + EmitInfo checkExpr = PopEvalStack(); + ReleaseLocation(&checkExpr); + if (checkExpr.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("If expression must have type i32")); + } + + m_writer.AsmBrReg1(Js::OpCodeAsmJs::BrFalse_Int, falseLabel, checkExpr.location); + + BlockInfo blockInfo = PushLabel(endLabel); + bool endOnElse = false; + EmitBlockCommon(&blockInfo, &endOnElse); + + m_writer.AsmBr(endLabel); + m_writer.MarkAsmJsLabel(falseLabel); + + EmitInfo retInfo; + EmitInfo falseExpr; + if (endOnElse) + { + // In case the true block sets the unreachable state, we still have to emit the else block + SetUnreachableState(false); + EmitBlockCommon(&blockInfo); + } + m_writer.MarkAsmJsLabel(endLabel); + + // Reset unreachable state + SetUnreachableState(false); + + return PopLabel(endLabel); +} + +void +WasmBytecodeGenerator::EmitBrTable() +{ + const uint numTargets = GetReader()->m_currentNode.brTable.numTargets; + const UINT* targetTable = GetReader()->m_currentNode.brTable.targetTable; + const UINT defaultEntry = GetReader()->m_currentNode.brTable.defaultTarget; + + // Compile scrutinee + EmitInfo scrutineeInfo = PopEvalStack(); + + if (scrutineeInfo.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("br_table expression must be of type I32")); + } + + m_writer.AsmReg2(Js::OpCodeAsmJs::BeginSwitch_Int, scrutineeInfo.location, scrutineeInfo.location); + EmitInfo yieldInfo; + if (ShouldYieldToBlock(defaultEntry)) + { + yieldInfo = PopEvalStack(); + } + // Compile cases + for (uint i = 0; i < numTargets; i++) + { + uint target = targetTable[i]; + YieldToBlock(target, yieldInfo); + Js::ByteCodeLabel targetLabel = GetLabel(target); + m_writer.AsmBrReg1Const1(Js::OpCodeAsmJs::Case_IntConst, targetLabel, scrutineeInfo.location, i); + } + + YieldToBlock(defaultEntry, yieldInfo); + m_writer.AsmBr(GetLabel(defaultEntry), Js::OpCodeAsmJs::EndSwitch_Int); + ReleaseLocation(&scrutineeInfo); + ReleaseLocation(&yieldInfo); + + SetUnreachableState(true); +} + +EmitInfo +WasmBytecodeGenerator::EmitDrop() +{ + EmitInfo info = PopEvalStack(); + ReleaseLocation(&info); + return EmitInfo(); +} + +template +EmitInfo +WasmBytecodeGenerator::EmitBinExpr() +{ + WasmTypes::WasmType resultType = signature[0]; + WasmTypes::WasmType lhsType = signature[1]; + WasmTypes::WasmType rhsType = signature[2]; + + EmitInfo rhs = PopEvalStack(); + EmitInfo lhs = PopEvalStack(); + + if (lhsType != lhs.type) + { + throw WasmCompilationException(_u("Invalid type for LHS")); + } + if (rhsType != rhs.type) + { + throw WasmCompilationException(_u("Invalid type for RHS")); + } + + GetRegisterSpace(rhsType)->ReleaseLocation(&rhs); + GetRegisterSpace(lhsType)->ReleaseLocation(&lhs); + + Js::RegSlot resultReg = GetRegisterSpace(resultType)->AcquireTmpRegister(); + + m_writer.AsmReg3(op, resultReg, lhs.location, rhs.location); + + return EmitInfo(resultReg, resultType); +} + +template +EmitInfo +WasmBytecodeGenerator::EmitUnaryExpr() +{ + WasmTypes::WasmType resultType = signature[0]; + WasmTypes::WasmType inputType = signature[1]; + + EmitInfo info = PopEvalStack(); + + if (inputType != info.type) + { + throw WasmCompilationException(_u("Invalid input type")); + } + + GetRegisterSpace(inputType)->ReleaseLocation(&info); + + Js::RegSlot resultReg = GetRegisterSpace(resultType)->AcquireTmpRegister(); + + m_writer.AsmReg2(op, resultReg, info.location); + + return EmitInfo(resultReg, resultType); +} + +template +EmitInfo +WasmBytecodeGenerator::EmitMemAccess(bool isStore) +{ + WasmTypes::WasmType type = signature[0]; + const uint offset = GetReader()->m_currentNode.mem.offset; + GetFunctionBody()->GetAsmJsFunctionInfo()->SetUsesHeapBuffer(true); + + // todo:: check for imported memory + if (m_module->GetMemory()->minSize == 0) + { + // todo:: make that an out of bounds trap + m_writer.EmptyAsm(Js::OpCodeAsmJs::Unreachable_Void); + } + + EmitInfo rhsInfo; + if (isStore) + { + rhsInfo = PopEvalStack(); + } + EmitInfo exprInfo = PopEvalStack(); + + if (exprInfo.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("Index expression must be of type I32")); + } + if (offset != 0) + { + Js::RegSlot tempReg = m_i32RegSlots.AcquireTmpRegister(); + m_writer.AsmInt1Const1(Js::OpCodeAsmJs::Ld_IntConst, tempReg, offset); + + m_writer.AsmReg3(Js::OpCodeAsmJs::Add_Int, exprInfo.location, exprInfo.location, tempReg); + m_i32RegSlots.ReleaseTmpRegister(tempReg); + } + + if (isStore) // Stores + { + if (rhsInfo.type != type) + { + throw WasmCompilationException(_u("Invalid type for store op")); + } + m_writer.AsmTypedArr(Js::OpCodeAsmJs::StArrWasm, rhsInfo.location, exprInfo.location, GetViewType(wasmOp)); + ReleaseLocation(&rhsInfo); + ReleaseLocation(&exprInfo); + + return EmitInfo(); + } + + ReleaseLocation(&exprInfo); + Js::RegSlot resultReg = GetRegisterSpace(type)->AcquireTmpRegister(); + m_writer.AsmTypedArr(Js::OpCodeAsmJs::LdArrWasm, resultReg, exprInfo.location, GetViewType(wasmOp)); + + EmitInfo yieldInfo; + if (!isStore) + { + // Yield only on load + yieldInfo = EmitInfo(resultReg, type); + } + return yieldInfo; +} + +void +WasmBytecodeGenerator::EmitReturnExpr(EmitInfo* explicitRetInfo) +{ + if (m_funcInfo->GetResultType() == WasmTypes::Void) + { + // TODO (michhol): consider moving off explicit 0 for return reg + m_writer.AsmReg1(Js::OpCodeAsmJs::LdUndef, 0); + } + else + { + EmitInfo retExprInfo = explicitRetInfo ? *explicitRetInfo : PopEvalStack(); + + if (m_funcInfo->GetResultType() != retExprInfo.type) + { + throw WasmCompilationException(_u("Result type must match return type")); + } + + Js::OpCodeAsmJs retOp = GetReturnOp(retExprInfo.type); + m_writer.Conv(retOp, 0, retExprInfo.location); + ReleaseLocation(&retExprInfo); + } + m_writer.AsmBr(m_funcInfo->GetExitLabel()); + + SetUnreachableState(true); +} + +EmitInfo +WasmBytecodeGenerator::EmitSelect() +{ + EmitInfo conditionInfo = PopEvalStack(); + if (conditionInfo.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("select condition must have I32 type")); + } + + Js::ByteCodeLabel falseLabel = m_writer.DefineLabel(); + Js::ByteCodeLabel doneLabel = m_writer.DefineLabel(); + + m_writer.AsmBrReg1(Js::OpCodeAsmJs::BrFalse_Int, falseLabel, conditionInfo.location); + ReleaseLocation(&conditionInfo); + + EmitInfo falseInfo = PopEvalStack(); + EmitInfo trueInfo = PopEvalStack(); + + // Refresh the lifetime of the true location + m_writer.AsmReg2(GetLoadOp(trueInfo.type), trueInfo.location, trueInfo.location); + + m_writer.AsmBr(doneLabel); + m_writer.MarkAsmJsLabel(falseLabel); + + if (trueInfo.type != falseInfo.type) + { + throw WasmCompilationException(_u("select operands must both have same type")); + } + + Js::OpCodeAsmJs op = GetLoadOp(trueInfo.type); + + m_writer.AsmReg2(op, trueInfo.location, falseInfo.location); + ReleaseLocation(&falseInfo); + + m_writer.MarkAsmJsLabel(doneLabel); + + return trueInfo; +} + +void +WasmBytecodeGenerator::EmitBr() +{ + UINT depth = GetReader()->m_currentNode.br.depth; + + if (ShouldYieldToBlock(depth)) + { + EmitInfo info = PopEvalStack(); + YieldToBlock(depth, info); + ReleaseLocation(&info); + } + + Js::ByteCodeLabel target = GetLabel(depth); + m_writer.AsmBr(target); + + SetUnreachableState(true); +} + +EmitInfo +WasmBytecodeGenerator::EmitBrIf() +{ + UINT depth = GetReader()->m_currentNode.br.depth; + + EmitInfo conditionInfo = PopEvalStack(); + ReleaseLocation(&conditionInfo); + + if (conditionInfo.type != WasmTypes::I32) + { + throw WasmCompilationException(_u("br_if condition must have I32 type")); + } + + EmitInfo info; + if (ShouldYieldToBlock(depth)) + { + info = PopEvalStack(); + YieldToBlock(depth, info); + } + + Js::ByteCodeLabel target = GetLabel(depth); + m_writer.AsmBrReg1(Js::OpCodeAsmJs::BrTrue_Int, target, conditionInfo.location); + return info; +} + +/* static */ +Js::OpCodeAsmJs +WasmBytecodeGenerator::GetLoadOp(WasmTypes::WasmType wasmType) +{ + switch (wasmType) + { + case WasmTypes::F32: + return Js::OpCodeAsmJs::Ld_Flt; + case WasmTypes::F64: + return Js::OpCodeAsmJs::Ld_Db; + case WasmTypes::I32: + return Js::OpCodeAsmJs::Ld_Int; + case WasmTypes::I64: + throw WasmCompilationException(_u("I64 support NYI")); + default: + throw WasmCompilationException(_u("Unknown load operator %u"), wasmType); + } +} + +Js::OpCodeAsmJs WasmBytecodeGenerator::GetReturnOp(WasmTypes::WasmType type) +{ + Js::OpCodeAsmJs retOp = Js::OpCodeAsmJs::Nop; + switch (type) + { + case WasmTypes::F32: + retOp = Js::OpCodeAsmJs::Return_Flt; + break; + case WasmTypes::F64: + retOp = Js::OpCodeAsmJs::Return_Db; + break; + case WasmTypes::I32: + retOp = Js::OpCodeAsmJs::Return_Int; + break; + default: + throw WasmCompilationException(_u("Unknown return type %u"), type); + } + return retOp; +} + +/* static */ +Js::ArrayBufferView::ViewType +WasmBytecodeGenerator::GetViewType(WasmOp op) +{ + switch (op) + { + case wbI32LoadMem8S: + case wbI32StoreMem8: + return Js::ArrayBufferView::TYPE_INT8; + break; + case wbI32LoadMem8U: + return Js::ArrayBufferView::TYPE_UINT8; + break; + case wbI32LoadMem16S: + case wbI32StoreMem16: + return Js::ArrayBufferView::TYPE_INT16; + break; + case wbI32LoadMem16U: + return Js::ArrayBufferView::TYPE_UINT16; + break; + case wbF32LoadMem: + case wbF32StoreMem: + return Js::ArrayBufferView::TYPE_FLOAT32; + break; + case wbF64LoadMem: + case wbF64StoreMem: + return Js::ArrayBufferView::TYPE_FLOAT64; + break; + case wbI32LoadMem: + case wbI32StoreMem: + return Js::ArrayBufferView::TYPE_INT32; + break; + default: + throw WasmCompilationException(_u("Could not match typed array name")); + } +} + +void +WasmBytecodeGenerator::ReleaseLocation(EmitInfo * info) +{ + if (WasmTypes::IsLocalType(info->type)) + { + GetRegisterSpace(info->type)->ReleaseLocation(info); + } +} + +EmitInfo +WasmBytecodeGenerator::PopLabel(Js::ByteCodeLabel labelValidation) +{ + Assert(m_blockInfos.Count() > 0); + BlockInfo info = m_blockInfos.Pop(); + UNREFERENCED_PARAMETER(labelValidation); + Assert(info.label == labelValidation); + + EmitInfo yieldEmitInfo; + if (info.HasYield()) + { + yieldEmitInfo = info.yieldInfo->info; + if (!info.DidYield()) + { + // Emit a load to the yield location to make sure we have a dest there + // Most likely we can't reach this code so the value doesn't matter + WasmConstLitNode cnst; + cnst.i64 = 0; + EmitLoadConst(yieldEmitInfo, cnst); + } + } + return yieldEmitInfo; +} + +BlockInfo +WasmBytecodeGenerator::PushLabel(Js::ByteCodeLabel label, bool addBlockYieldInfo /*= true*/) +{ + BlockInfo info; + info.label = label; + if (addBlockYieldInfo) + { + WasmTypes::WasmType type = GetReader()->m_currentNode.block.sig; + if (type != WasmTypes::Void) + { + info.yieldInfo = Anew(&m_alloc, BlockInfo::YieldInfo); + info.yieldInfo->info = EmitInfo(GetRegisterSpace(type)->AcquireTmpRegister(), type); + info.yieldInfo->didYield = false; + } + } + m_blockInfos.Push(info); + return info; +} + +void +WasmBytecodeGenerator::YieldToBlock(uint relativeDepth, EmitInfo expr) +{ + BlockInfo blockInfo = GetBlockInfo(relativeDepth); + YieldToBlock(blockInfo, expr); +} + +void WasmBytecodeGenerator::YieldToBlock(BlockInfo blockInfo, EmitInfo expr) +{ + if (blockInfo.HasYield()) + { + EmitInfo yieldInfo = blockInfo.yieldInfo->info; + + // Do not yield unrechable expressions + if (IsUnreachable()) + { + return; + } + + if (yieldInfo.type != expr.type) + { + throw WasmCompilationException(_u("Invalid yield type")); + } + + blockInfo.yieldInfo->didYield = true; + m_writer.AsmReg2(GetLoadOp(expr.type), yieldInfo.location, expr.location); + } +} + +bool +WasmBytecodeGenerator::ShouldYieldToBlock(uint relativeDepth) const +{ + return GetBlockInfo(relativeDepth).HasYield(); +} + +Wasm::BlockInfo +WasmBytecodeGenerator::GetBlockInfo(uint relativeDepth) const +{ + if (relativeDepth >= (uint)m_blockInfos.Count()) + { + throw WasmCompilationException(_u("Invalid branch target")); + } + return m_blockInfos.Peek(relativeDepth); +} + +Js::ByteCodeLabel +WasmBytecodeGenerator::GetLabel(uint relativeDepth) +{ + return GetBlockInfo(relativeDepth).label; +} + +bool WasmBytecodeGenerator::IsBlockOpCode(WasmOp op) +{ + return op == wbBlock || op == wbIf || op == wbLoop; +} + +WasmRegisterSpace * +WasmBytecodeGenerator::GetRegisterSpace(WasmTypes::WasmType type) +{ + switch (type) + { + case WasmTypes::F32: + return &m_f32RegSlots; + case WasmTypes::F64: + return &m_f64RegSlots; + case WasmTypes::I32: + return &m_i32RegSlots; + case WasmTypes::I64: + throw WasmCompilationException(_u("I64 support NYI")); + default: + return nullptr; + } +} + +EmitInfo +WasmBytecodeGenerator::PopEvalStack() +{ + // The scope marker should at least be there + Assert(!m_evalStack.Empty()); + EmitInfo info = m_evalStack.Pop(); + if (info.type == WasmTypes::Limit) + { + throw WasmCompilationException(_u("Missing operand")); + } + return info; +} + +void +WasmBytecodeGenerator::PushEvalStack(EmitInfo info) +{ + Assert(!m_evalStack.Empty()); + m_evalStack.Push(info); +} + +void +WasmBytecodeGenerator::EnterEvalStackScope() +{ + m_evalStack.Push(EmitInfo(WasmTypes::Limit)); +} + +void +WasmBytecodeGenerator::ExitEvalStackScope() +{ + Assert(!m_evalStack.Empty()); + EmitInfo info = m_evalStack.Pop(); + if (info.type != WasmTypes::Limit) + { + uint32 nElemLeftOnStack = 1; + while(m_evalStack.Pop().type != WasmTypes::Limit) { ++nElemLeftOnStack; } + throw WasmCompilationException(_u("Expected stack to be empty, but has %d"), nElemLeftOnStack); + } +} + +void WasmBytecodeGenerator::SetUnreachableState(bool isUnreachable) +{ + if (isUnreachable) + { + // Remove whatever is left on the stack when we become unreachable + Assert(!m_evalStack.Empty()); + while(m_evalStack.Top().type != WasmTypes::Limit) + { + EmitInfo info = m_evalStack.Pop(); + ReleaseLocation(&info); + } + } + + this->isUnreachable = isUnreachable; +} + +void +WasmCompilationException::FormatError(const char16* _msg, va_list arglist) +{ + char16 buf[2048]; + + _vsnwprintf_s(buf, _countof(buf), _TRUNCATE, _msg, arglist); + errorMsg = SysAllocString(buf); +} + +WasmCompilationException::WasmCompilationException(const char16* _msg, ...) +{ + va_list arglist; + va_start(arglist, _msg); + FormatError(_msg, arglist); +} + +WasmCompilationException::WasmCompilationException(const char16* _msg, va_list arglist) +{ + FormatError(_msg, arglist); +} + +} // namespace Wasm + +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmByteCodeGenerator.h b/lib/WasmReader/WasmByteCodeGenerator.h new file mode 100644 index 00000000000..139bfc0166b --- /dev/null +++ b/lib/WasmReader/WasmByteCodeGenerator.h @@ -0,0 +1,198 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +#pragma once + +namespace Wasm +{ + struct EmitInfo : WAsmJs::EmitInfoBase + { + EmitInfo(Js::RegSlot location_, const WasmTypes::WasmType& type_) : + WAsmJs::EmitInfoBase(location_), type(type_) + { + } + EmitInfo(const WasmTypes::WasmType& type_) : type(type_) {} + EmitInfo() : type(WasmTypes::Void) {} + + WasmTypes::WasmType type; + }; + typedef WAsmJs::RegisterSpace WasmRegisterSpace; + + struct WasmLocal + { + WasmLocal() : + location(Js::Constants::NoRegister), type(WasmTypes::Limit) + { + } + WasmLocal(Js::RegSlot loc, WasmTypes::WasmType tp) : + location(loc), type(tp) + { + } + Js::RegSlot location; + WasmTypes::WasmType type; + }; + + class WasmToAsmJs + { + public: + static Js::AsmJsRetType GetAsmJsReturnType(WasmTypes::WasmType wasmType); + static Js::AsmJsVarType GetAsmJsVarType(WasmTypes::WasmType wasmType); + }; + + class WasmCompilationException + { + void FormatError(const char16* _msg, va_list arglist); + char16* errorMsg; + public: + WasmCompilationException(const char16* _msg, ...); + WasmCompilationException(const char16* _msg, va_list arglist); + + char16* ReleaseErrorMessage() + { + Assert(errorMsg); + char16* msg = errorMsg; + errorMsg = nullptr; + return msg; + }; + }; + + struct BlockInfo + { + struct YieldInfo + { + EmitInfo info; + bool didYield = false; + } *yieldInfo = nullptr; + Js::ByteCodeLabel label; + bool DidYield() const { return HasYield() && yieldInfo->didYield; } + bool HasYield() const { return yieldInfo != nullptr; } + }; + + typedef JsUtil::BaseDictionary WasmExportDictionary; + + struct WasmReaderInfo + { + WasmFunctionInfo* m_funcInfo; + WasmModule* m_module; + }; + + class WasmModuleGenerator + { + public: + WasmModuleGenerator(Js::ScriptContext* scriptContext, Js::Utf8SourceInfo* sourceInfo, byte* binaryBuffer, uint binaryBufferLength); + WasmModule* GenerateModule(); + void GenerateFunctionHeader(uint32 index); + private: + WasmBinaryReader* GetReader() const { return m_module->GetReader(); } + + Memory::Recycler* m_recycler; + Js::Utf8SourceInfo* m_sourceInfo; + Js::ScriptContext* m_scriptContext; + WasmModule* m_module; + }; + + class WasmBytecodeGenerator + { + public: + static const Js::RegSlot ModuleSlotRegister = 0; + static const Js::RegSlot ReturnRegister = 0; + + static const Js::RegSlot FunctionRegister = 0; + static const Js::RegSlot CallReturnRegister = 0; + static const Js::RegSlot ModuleEnvRegister = 1; + static const Js::RegSlot ArrayBufferRegister = 2; + static const Js::RegSlot ArraySizeRegister = 3; + static const Js::RegSlot ScriptContextBufferRegister = 4; + static const Js::RegSlot ReservedRegisterCount = 5; + + WasmBytecodeGenerator(Js::ScriptContext* scriptContext, WasmReaderInfo* readerinfo); + static void GenerateFunctionBytecode(Js::ScriptContext* scriptContext, WasmReaderInfo* readerinfo); + + private: + void GenerateFunction(); + + void EmitExpr(WasmOp op); + EmitInfo EmitBlock(); + void EmitBlockCommon(BlockInfo* blockInfo, bool* endOnElse = nullptr); + EmitInfo EmitLoop(); + + template + EmitInfo EmitCall(); + EmitInfo EmitIfElseExpr(); + void EmitBrTable(); + EmitInfo EmitDrop(); + EmitInfo EmitGetLocal(); + EmitInfo EmitGetGlobal(); + EmitInfo EmitSetGlobal(); + EmitInfo EmitSetLocal(bool tee); + void EmitReturnExpr(EmitInfo* explicitRetInfo = nullptr); + EmitInfo EmitSelect(); +#if DBG_DUMP + void PrintOpName(WasmOp op) const; +#endif + void EmitBr(); + EmitInfo EmitBrIf(); + + template + EmitInfo EmitMemAccess(bool isStore); + + template + EmitInfo EmitBinExpr(); + + template + EmitInfo EmitUnaryExpr(); + + template + EmitInfo EmitConst(); + void EmitLoadConst(EmitInfo dst, WasmConstLitNode cnst); + + void EnregisterLocals(); + void ReleaseLocation(EmitInfo* info); + + EmitInfo PopLabel(Js::ByteCodeLabel labelValidation); + BlockInfo PushLabel(Js::ByteCodeLabel label, bool addBlockYieldInfo = true); + void YieldToBlock(BlockInfo blockInfo, EmitInfo expr); + void YieldToBlock(uint relativeDepth, EmitInfo expr); + bool ShouldYieldToBlock(uint relativeDepth) const; + BlockInfo GetBlockInfo(uint relativeDepth) const; + Js::ByteCodeLabel GetLabel(uint relativeDepth); + + static bool IsBlockOpCode(WasmOp op); + static Js::ArrayBufferView::ViewType GetViewType(WasmOp op); + static Js::OpCodeAsmJs GetLoadOp(WasmTypes::WasmType type); + static Js::OpCodeAsmJs GetReturnOp(WasmTypes::WasmType type); + WasmRegisterSpace* GetRegisterSpace(WasmTypes::WasmType type); + + EmitInfo PopEvalStack(); + void PushEvalStack(EmitInfo); + void EnterEvalStackScope(); + // The caller needs to release the location of the returned EmitInfo + void ExitEvalStackScope(); + void SetUnreachableState(bool isUnreachable); + bool IsUnreachable() const { return this->isUnreachable; } + + Js::FunctionBody* GetFunctionBody() const { return m_funcInfo->GetBody(); } + WasmBinaryReader* GetReader() const { return m_module->GetReader(); } + + ArenaAllocator m_alloc; + + bool isUnreachable; + WasmLocal* m_locals; + + WasmFunctionInfo* m_funcInfo; + WasmModule* m_module; + + uint m_maxArgOutDepth; + + Js::AsmJsByteCodeWriter m_writer; + Js::ScriptContext* m_scriptContext; + + WasmRegisterSpace m_i32RegSlots; + WasmRegisterSpace m_f32RegSlots; + WasmRegisterSpace m_f64RegSlots; + + JsUtil::Stack m_blockInfos; + JsUtil::Stack m_evalStack; + }; +} diff --git a/lib/WasmReader/WasmDataSegment.cpp b/lib/WasmReader/WasmDataSegment.cpp new file mode 100644 index 00000000000..55b8e25e64d --- /dev/null +++ b/lib/WasmReader/WasmDataSegment.cpp @@ -0,0 +1,56 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +namespace Wasm +{ + +WasmDataSegment::WasmDataSegment(ArenaAllocator * alloc, WasmNode ie, uint32 _source_size, byte* _data) : + m_alloc(alloc), + initExpr(ie), + source_size(_source_size), + data(_data) +{ +} + +uint32 +WasmDataSegment::getDestAddr(WasmModule* module) const +{ + if (initExpr.op == wbI32Const) + { + return initExpr.cnst.i32; + } + if (initExpr.var.num >= (uint) module->globals.Count()) + { + throw WasmCompilationException(_u("global %d doesn't exist"), initExpr.var.num); + } + WasmGlobal* global = module->globals.Item(initExpr.var.num); + Assert(global->GetReferenceType() == WasmGlobal::Const); + + if (global->GetType() != WasmTypes::I32) + { + throw WasmCompilationException(_u("global %d must be i32"), initExpr.var.num); + } + return global->cnst.i32; +} + +uint32 +WasmDataSegment::getSourceSize() const +{ + return source_size; +} + +byte* +WasmDataSegment::getData() const +{ + return data; +} + +} // namespace Wasm + +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmDataSegment.h b/lib/WasmReader/WasmDataSegment.h new file mode 100644 index 00000000000..2fa65d64643 --- /dev/null +++ b/lib/WasmReader/WasmDataSegment.h @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ + +class WasmDataSegment +{ +public: + WasmDataSegment(ArenaAllocator * alloc, WasmNode initExpr, uint32 _source_size, byte* _data); + uint32 getDestAddr(WasmModule* module) const; + uint32 getSourceSize() const; + byte* getData() const; + +private: + ArenaAllocator * m_alloc; + WasmNode initExpr; + uint32 source_size; + byte* data; +}; + +} // namespace Wasm diff --git a/lib/WasmReader/WasmFunctionInfo.cpp b/lib/WasmReader/WasmFunctionInfo.cpp new file mode 100644 index 00000000000..e127a6afd13 --- /dev/null +++ b/lib/WasmReader/WasmFunctionInfo.cpp @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +namespace Wasm +{ + +WasmFunctionInfo::WasmFunctionInfo(ArenaAllocator * alloc, WasmSignature* signature, uint32 number) : + m_alloc(alloc), + m_signature(signature), + m_body(nullptr), + m_name(nullptr), + m_nameLength(0), + m_number(number), + m_locals(alloc, signature->GetParamCount()) +{ + for (uint32 i = 0; i < signature->GetParamCount(); ++i) + { + m_locals.Add(Wasm::Local(signature->GetParam(i))); + } +} + +void +WasmFunctionInfo::AddLocal(WasmTypes::WasmType type, uint count) +{ + for (uint i = 0; i < count; ++i) + { + m_locals.Add(Wasm::Local(type)); + } +} + +Local +WasmFunctionInfo::GetLocal(uint index) const +{ + if (index < GetLocalCount()) + { + return m_locals.ItemInBuffer(index); + } + return WasmTypes::Limit; +} + +Local +WasmFunctionInfo::GetParam(uint index) const +{ + return m_signature->GetParam(index); +} + +WasmTypes::WasmType +WasmFunctionInfo::GetResultType() const +{ + return m_signature->GetResultType(); +} + +uint32 +WasmFunctionInfo::GetLocalCount() const +{ + return m_locals.Count(); +} + +uint32 +WasmFunctionInfo::GetParamCount() const +{ + return m_signature->GetParamCount(); +} + + +} // namespace Wasm +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmFunctionInfo.h b/lib/WasmReader/WasmFunctionInfo.h new file mode 100644 index 00000000000..d870b27b5d9 --- /dev/null +++ b/lib/WasmReader/WasmFunctionInfo.h @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ + struct FunctionBodyReaderInfo + { + uint32 index; + uint32 size; + intptr_t startOffset; + }; + + class WasmFunctionInfo + { + public: + WasmFunctionInfo(ArenaAllocator* alloc, WasmSignature* signature, uint32 number); + + void AddLocal(WasmTypes::WasmType type, uint count = 1); + Local GetLocal(uint index) const; + Local GetParam(uint index) const; + WasmTypes::WasmType GetResultType() const; + + uint32 GetLocalCount() const; + uint32 GetParamCount() const; + + void SetName(char16* name, uint32 nameLength) { m_name = name; m_nameLength = nameLength; } + char16* GetName() const { return m_name; } + uint32 GetNameLength() const { return m_nameLength; } + + uint32 GetNumber() const { return m_number; } + WasmSignature* GetSignature() const { return m_signature; } + + void SetExitLabel(Js::ByteCodeLabel label) { m_ExitLabel = label; } + Js::ByteCodeLabel GetExitLabel() const { return m_ExitLabel; } + Js::FunctionBody* GetBody() const { return m_body; } + void SetBody(Js::FunctionBody* val) { m_body = val; } + + FunctionBodyReaderInfo m_readerInfo; + private: + ArenaAllocator* m_alloc; + typedef JsUtil::GrowingArray WasmTypeArray; + WasmTypeArray m_locals; + Js::FunctionBody* m_body; + WasmSignature* m_signature; + Js::ByteCodeLabel m_ExitLabel; + char16* m_name; + uint32 m_nameLength; + uint32 m_number; + }; +} // namespace Wasm diff --git a/lib/WasmReader/WasmGlobal.cpp b/lib/WasmReader/WasmGlobal.cpp new file mode 100644 index 00000000000..b561032af38 --- /dev/null +++ b/lib/WasmReader/WasmGlobal.cpp @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +namespace Wasm +{ + +WasmTypes::WasmType +WasmGlobal::GetType() const +{ + return m_type; +} + +bool +WasmGlobal::GetMutability() const +{ + return m_mutability; +} +} // namespace Wasm +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmGlobal.h b/lib/WasmReader/WasmGlobal.h new file mode 100644 index 00000000000..f97c81ed461 --- /dev/null +++ b/lib/WasmReader/WasmGlobal.h @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ + + class WasmGlobal + { + + + public: + + enum ReferenceType { Invalid, Const, LocalReference, ImportedReference }; + + WasmGlobal(uint offset, WasmTypes::WasmType type, bool mutability) : m_type(type), m_mutability(mutability), m_offset(offset) {}; + WasmTypes::WasmType GetType() const; + bool GetMutability() const; + ReferenceType GetReferenceType() { return m_rType; } + void SetReferenceType(ReferenceType rt) { m_rType = rt; } + uint GetOffset() { return m_offset; } + void SetOffset(uint offset) { m_offset = offset; } + + union + { + WasmConstLitNode cnst; + WasmVarNode var; + WasmImport* importVar; + }; + + private: + + ReferenceType m_rType; + WasmTypes::WasmType m_type; + bool m_mutability; + uint m_offset; + + }; +} // namespace Wasm diff --git a/lib/WasmReader/WasmModule.cpp b/lib/WasmReader/WasmModule.cpp new file mode 100644 index 00000000000..0fe841c3192 --- /dev/null +++ b/lib/WasmReader/WasmModule.cpp @@ -0,0 +1,430 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +namespace Wasm +{ + +WasmModule::WasmModule(Js::ScriptContext* scriptContext, byte* binaryBuffer, uint binaryBufferLength) : + m_memory(), + m_alloc(_u("WasmModule"), scriptContext->GetThreadContext()->GetPageAllocator(), Js::Throw::OutOfMemory), + m_functionsInfo(nullptr), + m_funcCount(0), + m_importCount(0), + m_equivalentSignatureMap(nullptr), + m_indirectfuncs(nullptr), + m_indirectFuncCount(0), + m_exports(nullptr), + m_exportCount(0), + m_datasegCount(0), + m_signatures(nullptr), + m_signaturesCount(0), + m_startFuncIndex(Js::Constants::UninitializedValue), + indirFuncTableOffset(0), + heapOffset(0), + funcOffset(0), + importFuncOffset(0), + globals (&m_alloc) +{ + //the first elm is the number of Vars in front of I32; makes for a nicer offset computation + memset(globalCounts, 0, sizeof( uint ) * WasmTypes::Limit); + m_reader = Anew(&m_alloc, WasmBinaryReader, &m_alloc, this, binaryBuffer, binaryBufferLength); + m_reader->InitializeReader(); +} + +uint32 +WasmModule::GetMaxFunctionIndex() const +{ + return UInt32Math::Add(GetImportCount(), GetWasmFunctionCount()); +} + +Wasm::WasmSignature* +WasmModule::GetFunctionSignature(uint32 funcIndex) const +{ + FunctionIndexTypes::Type funcType = GetFunctionIndexType(funcIndex); + if (funcType == FunctionIndexTypes::Invalid) + { + throw WasmCompilationException(_u("Function index out of range")); + } + + funcIndex = NormalizeFunctionIndex(funcIndex); + switch (funcType) + { + case FunctionIndexTypes::Import: + return GetSignature(GetFunctionImport(funcIndex)->sigId); + case FunctionIndexTypes::Function: + return GetWasmFunctionInfo(funcIndex)->GetSignature(); + default: + throw WasmCompilationException(_u("Unknown function index type")); + } +} + +FunctionIndexTypes::Type +WasmModule::GetFunctionIndexType(uint32 funcIndex) const +{ + if (funcIndex >= GetMaxFunctionIndex()) + { + return FunctionIndexTypes::Invalid; + } + if (funcIndex < GetImportCount()) + { + return FunctionIndexTypes::Import; + } + return FunctionIndexTypes::Function; +} + +uint32 +WasmModule::NormalizeFunctionIndex(uint32 funcIndex) const +{ + switch (GetFunctionIndexType(funcIndex)) + { + case FunctionIndexTypes::Import: + return funcIndex; + case FunctionIndexTypes::Function: + Assert(funcIndex >= GetImportCount()); + return funcIndex - GetImportCount(); + default: + throw WasmCompilationException(_u("Failed function index normalization: function index out of range")); + } +} + +void +WasmModule::InitializeMemory(uint32 minPage, uint32 maxPage) +{ + if (m_memory.minSize != 0) + { + throw WasmCompilationException(_u("Memory already allocated")); + } + + if (maxPage < minPage) + { + throw WasmCompilationException(_u("Memory: MaxPage (%d) must be greater than MinPage (%d)"), maxPage, minPage); + } + + CompileAssert(Memory::PAGE_SIZE < INT_MAX); + m_memory.minSize = (uint64)minPage * Memory::PAGE_SIZE; + m_memory.maxSize = (uint64)maxPage * Memory::PAGE_SIZE; +} + +const WasmModule::Memory * +WasmModule::GetMemory() const +{ + return &m_memory; +} + +void +WasmModule::SetSignature(uint32 index, WasmSignature * signature) +{ + Assert(index < GetSignatureCount()); + signature->SetSignatureId(index); + m_signatures[index] = signature; +} + +WasmSignature * +WasmModule::GetSignature(uint32 index) const +{ + if (index >= GetSignatureCount()) + { + throw WasmCompilationException(_u("Invalid signature index %u"), index); + } + + return m_signatures[index]; +} + +uint32 +WasmModule::GetSignatureCount() const +{ + return m_signaturesCount; +} + +void +WasmModule::CalculateEquivalentSignatures() +{ + Assert(m_equivalentSignatureMap == nullptr); + uint32 sigCount = GetSignatureCount(); + m_equivalentSignatureMap = AnewArray(&m_alloc, uint32, sigCount); + memset(m_equivalentSignatureMap, -1, sigCount * sizeof(uint32)); + + const auto IsEquivalentSignatureSet = [this](uint32 sigId) + { + return m_equivalentSignatureMap[sigId] != (uint32)-1; + }; + + for (uint32 iSig = 0; iSig < sigCount; iSig++) + { + if (!IsEquivalentSignatureSet(iSig)) + { + m_equivalentSignatureMap[iSig] = iSig; + WasmSignature* sig = GetSignature(iSig); + // todo:: Find a better way than O(n^2) algo here + for (uint32 iSig2 = iSig + 1; iSig2 < sigCount; iSig2++) + { + if (!IsEquivalentSignatureSet(iSig2) && sig->IsEquivalent(GetSignature(iSig2))) + { + m_equivalentSignatureMap[iSig2] = iSig; + } + } + } + } +} + +uint32 +WasmModule::GetEquivalentSignatureId(uint32 sigId) const +{ + if (m_equivalentSignatureMap && sigId < GetSignatureCount()) + { + return m_equivalentSignatureMap[sigId]; + } + Assert(UNREACHED); + return sigId; +} + +void +WasmModule::AllocateTable(uint32 entries) +{ + m_indirectFuncCount = entries; + m_indirectfuncs = AnewArray(&m_alloc, uint32, entries); + for (uint32 i = 0; i < entries ; i++) + { + // Initialize with invalid index + m_indirectfuncs[i] = Js::Constants::UninitializedValue; + } +} + +void +WasmModule::SetTableValue(uint32 funcIndex, uint32 tableIndex) +{ + if (tableIndex < GetTableSize()) + { + m_indirectfuncs[tableIndex] = funcIndex; + } +} + +uint32 +WasmModule::GetTableValue(uint32 tableIndex) const +{ + if (tableIndex >= GetTableSize()) + { + return Js::Constants::InvalidSourceIndex; + } + return m_indirectfuncs[tableIndex]; +} + +uint32 +WasmModule::GetTableSize() const +{ + return m_indirectFuncCount; +} + +uint32 +WasmModule::GetWasmFunctionCount() const +{ + return m_funcCount; +} + +void WasmModule::AllocateWasmFunctions(uint32 count) +{ + m_funcCount = count; + if (count > 0) + { + m_functionsInfo = AnewArray(&m_alloc, WasmFunctionInfo*, count); + } +} + +bool +WasmModule::SetWasmFunctionInfo(WasmFunctionInfo* funcInfo, uint32 index) +{ + if (index < m_funcCount) + { + m_functionsInfo[index] = funcInfo; + Assert(funcInfo->GetNumber() == index); + return true; + } + return false; +} + +WasmFunctionInfo* +WasmModule::GetWasmFunctionInfo(uint index) const +{ + if (index >= m_funcCount) + { + throw WasmCompilationException(_u("Invalid function index %u"), index); + } + + return m_functionsInfo[index]; +} + +void WasmModule::AllocateFunctionExports(uint32 entries) +{ + m_exports = AnewArrayZ(&m_alloc, WasmExport, entries); + m_exportCount = entries; +} + +void WasmModule::SetExport(uint32 iExport, uint32 funcIndex, char16* exportName, uint32 nameLength, ExternalKinds::ExternalKind kind) +{ + m_exports[iExport].funcIndex = funcIndex; + m_exports[iExport].nameLength = nameLength; + m_exports[iExport].name = exportName; + m_exports[iExport].kind = kind; +} + +Wasm::WasmExport* WasmModule::GetFunctionExport(uint32 iExport) const +{ + if (iExport >= m_exportCount) + { + return nullptr; + } + return &m_exports[iExport]; +} + +void +WasmModule::AllocateFunctionImports(uint32 entries) +{ + m_imports = AnewArrayZ(&m_alloc, WasmImport, entries); + m_importCount = entries; +} + +void +WasmModule::SetFunctionImport(uint32 i, uint32 sigId, char16* modName, uint32 modNameLen, char16* fnName, uint32 fnNameLen, ExternalKinds::ExternalKind kind) +{ + m_imports[i].sigId = sigId; + m_imports[i].modNameLen = modNameLen; + m_imports[i].modName = modName; + m_imports[i].fnNameLen = fnNameLen; + m_imports[i].fnName = fnName; +} + +void +WasmModule::AddGlobalImport(char16* modName, uint32 modNameLen, char16* fnName, uint32 fnNameLen, ExternalKinds::ExternalKind kind, WasmGlobal* importedGlobal) +{ + WasmImport* wi = Anew(&m_alloc, WasmImport); + wi->sigId = 0; + wi->fnName = fnName; + wi->fnNameLen = fnNameLen; + wi->modName = modName; + wi->modNameLen = modNameLen; + + importedGlobal->importVar = wi; + importedGlobal->SetReferenceType(WasmGlobal::ImportedReference); + globals.Add(importedGlobal); +} + +Wasm::WasmImport* +WasmModule::GetFunctionImport(uint32 i) const +{ + if (i >= m_importCount) + { + throw WasmCompilationException(_u("Import function index out of range")); + } + return &m_imports[i]; +} + +void +WasmModule::AllocateDataSegs(uint32 count) +{ + Assert(count != 0); + m_datasegCount = count; + m_datasegs = AnewArray(&m_alloc, WasmDataSegment*, count); +} + +bool +WasmModule::AddDataSeg(WasmDataSegment* seg, uint32 index) +{ + if (index >= m_datasegCount) + { + return false; + } + m_datasegs[index] = seg; + return true; +} + +WasmDataSegment* +WasmModule::GetDataSeg(uint32 index) const +{ + if (index >= m_datasegCount) + { + return nullptr; + } + return m_datasegs[index]; +} + +void +WasmModule::SetStartFunction(uint32 i) +{ + if (i >= m_funcCount) { + TRACE_WASM_DECODER(_u("Invalid start function index")); + return; + } + m_startFuncIndex = i; +} + +uint32 +WasmModule::GetStartFunction() const +{ + return m_startFuncIndex; +} + +void WasmModule::SetSignatureCount(uint32 count) +{ + Assert(m_signaturesCount == 0 && m_signatures == nullptr); + m_signaturesCount = count; + m_signatures = AnewArray(&m_alloc, WasmSignature*, count); +} + +uint32 WasmModule::GetModuleEnvironmentSize() const +{ + static const uint DOUBLE_SIZE_IN_INTS = sizeof(double) / sizeof(int); + // 1 for the heap + uint32 size = 1; + size = UInt32Math::Add(size, GetWasmFunctionCount()); + // reserve space for as many function tables as there are signatures, though we won't fill them all + size = UInt32Math::Add(size, GetSignatureCount()); + size = UInt32Math::Add(size, GetImportCount()); + size = UInt32Math::Add(size, globals.Count() * DOUBLE_SIZE_IN_INTS); //a tad bit overestimating + return size; +} + +void WasmModule::Finalize(bool isShutdown) +{ + m_alloc.Clear(); +} + +void WasmModule::Dispose(bool isShutdown) +{ + Assert(m_alloc.Size() == 0); +} + +void WasmModule::Mark(Recycler * recycler) +{ +} + +uint WasmModule::GetOffsetForGlobal(WasmGlobal* global) +{ + static const uint slotSizesInInts[] = + { sizeof(Js::Var)/sizeof(int), //Var + 1, //I32 + 2, //I64 + 1, //F32 + 2 //F64 + }; + + double sizeInInts = 0; + WasmTypes::WasmType type = global->GetType(); + + for (uint i = 0; i < (uint)type; i++) + { + sizeInInts += globalCounts[i] * slotSizesInInts[i]; + } + + sizeInInts += global->GetOffset() * slotSizesInInts[type]; + return (uint)(sizeInInts / slotSizesInInts[type] + 0.5 /*no half doubles or longs */); +} + +} // namespace Wasm + +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmModule.h b/lib/WasmReader/WasmModule.h new file mode 100644 index 00000000000..636da831fba --- /dev/null +++ b/lib/WasmReader/WasmModule.h @@ -0,0 +1,129 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once +#include "WasmGlobal.h" + +namespace Wasm +{ + class WasmBinaryReader; + class WasmModule : public FinalizableObject + { + private: + struct Memory + { + Memory() : minSize(0), maxSize(0), exported(false) + { + } + uint64 minSize; + uint64 maxSize; + bool exported; + static const uint64 PAGE_SIZE = 64 * 1024; + } m_memory; + public: + WasmModule(Js::ScriptContext* scriptContext, byte* binaryBuffer, uint binaryBufferLength); + + // The index used by those methods is the function index as describe by the WebAssembly design, ie: imports first then wasm functions + uint32 GetMaxFunctionIndex() const; + WasmSignature* GetFunctionSignature(uint32 funcIndex) const; + FunctionIndexTypes::Type GetFunctionIndexType(uint32 funcIndex) const; + // Returns index in the respective table's type + uint32 NormalizeFunctionIndex(uint32 funcIndex) const; + + void InitializeMemory(uint32 minSize, uint32 maxSize); + void SetMemoryIsExported() { m_memory.exported = true; } + const Memory* GetMemory() const; + + void SetSignature(uint32 index, WasmSignature * signature); + WasmSignature* GetSignature(uint32 index) const; + void SetSignatureCount(uint32 count); + uint32 GetSignatureCount() const; + + void CalculateEquivalentSignatures(); + uint32 GetEquivalentSignatureId(uint32 sigId) const; + + void AllocateTable(uint32 entries); + void SetTableValue(uint32 funcIndex, uint32 indirectIndex); + uint32 GetTableValue(uint32 indirTableIndex) const; + uint32 GetTableSize() const; + + uint GetWasmFunctionCount() const; + void AllocateWasmFunctions(uint32 count); + bool SetWasmFunctionInfo(WasmFunctionInfo* funsig, uint32 index); + WasmFunctionInfo* GetWasmFunctionInfo(uint index) const; + + void AllocateFunctionExports(uint32 entries); + uint GetExportCount() const { return m_exportCount; } + void SetExport(uint32 iExport, uint32 funcIndex, char16* exportName, uint32 nameLength, ExternalKinds::ExternalKind kind); + WasmExport* GetFunctionExport(uint32 iExport) const; + + void AllocateFunctionImports(uint32 entries); + uint32 GetImportCount() const { return m_importCount; } + void SetImportCount(uint count) { m_importCount = count; } + void SetFunctionImport(uint32 i, uint32 sigId, char16* modName, uint32 modNameLen, char16* fnName, uint32 fnNameLen, ExternalKinds::ExternalKind kind); + WasmImport* GetFunctionImport(uint32 i) const; + void AddGlobalImport(char16* modName, uint32 modNameLen, char16* fnName, uint32 fnNameLen, ExternalKinds::ExternalKind kind, WasmGlobal* importedGlobal); + + void AllocateDataSegs(uint32 count); + bool AddDataSeg(WasmDataSegment* seg, uint32 index); + WasmDataSegment* GetDataSeg(uint32 index) const; + uint32 GetDataSegCount() const { return m_datasegCount; } + + void SetStartFunction(uint32 i); + uint32 GetStartFunction() const; + + uint32 GetModuleEnvironmentSize() const; + + uint GetHeapOffset() const { return heapOffset; } + void SetHeapOffset(uint val) { heapOffset = val; } + uint GetFuncOffset() const { return funcOffset; } + void SetFuncOffset(uint val) { funcOffset = val; } + uint GetImportFuncOffset() const { return importFuncOffset; } + void SetImportFuncOffset(uint val) { importFuncOffset = val; } + + uint GetTableEnvironmentOffset() const { return indirFuncTableOffset; } + void SetTableEnvironmentOffset(uint val) { indirFuncTableOffset = val; } + uint GetGlobalOffset() const { return globalOffset; } + void SetGlobalOffset(uint val) { globalOffset = val; } + uint GetOffsetForGlobal(WasmGlobal* global); + + WasmBinaryReader* GetReader() const { return m_reader; } + + virtual void Finalize(bool isShutdown) override; + virtual void Dispose(bool isShutdown) override; + virtual void Mark(Recycler * recycler) override; + + uint globalCounts[WasmTypes::Limit]; + JsUtil::List globals; + + private: + WasmSignature** m_signatures; + uint32* m_indirectfuncs; + WasmFunctionInfo** m_functionsInfo; + WasmExport* m_exports; + WasmImport* m_imports; + WasmDataSegment** m_datasegs; + WasmBinaryReader* m_reader; + uint32* m_equivalentSignatureMap; + + uint m_signaturesCount; + uint m_indirectFuncCount; + uint m_funcCount; + uint m_exportCount; + uint32 m_importCount; + uint32 m_datasegCount; + + uint32 m_startFuncIndex; + + ArenaAllocator m_alloc; + + // Describes the module's Environment + uint heapOffset; + uint funcOffset; + uint importFuncOffset; + uint indirFuncTableOffset; + uint globalOffset; + }; +} // namespace Wasm diff --git a/lib/WasmReader/WasmParseTree.h b/lib/WasmReader/WasmParseTree.h new file mode 100644 index 00000000000..0c997cb4473 --- /dev/null +++ b/lib/WasmReader/WasmParseTree.h @@ -0,0 +1,147 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ + namespace WasmTypes + { + enum WasmType + { + // based on binary format encoding values + Void = 0, + I32 = 1, + I64 = 2, + F32 = 3, + F64 = 4, + Limit + }; + bool IsLocalType(WasmTypes::WasmType type); + } + + namespace ExternalKinds + { + enum ExternalKind + { + Function = 0, + Table = 1, + Memory = 2, + Global = 3 + }; + } + + namespace ElementTypes + { + enum Type + { + anyfunc = 0x20 + }; + } + + namespace FunctionIndexTypes + { + enum Type + { + Invalid = -1, + Function, + Import + }; + } + + struct WasmOpCodeSignatures + { +#define WASM_SIGNATURE(id, nTypes, ...) static const WasmTypes::WasmType id[nTypes]; DebugOnly(static const int n##id = nTypes;) +#include "WasmBinaryOpCodes.h" + }; + + enum WasmOp : byte + { +#define WASM_OPCODE(opname, opcode, sig, nyi) wb##opname = opcode, +#include "WasmBinaryOpCodes.h" + wbLimit + }; + + struct WasmConstLitNode + { + union + { + float f32; + double f64; + int32 i32; + int64 i64; + }; + }; + + struct WasmVarNode + { + uint num; + union + { + LPCUTF8 exportName; + }; + }; + + struct WasmMemOpNode + { + uint32 offset; + uint8 alignment; + }; + + struct WasmBrNode + { + uint32 depth; + }; + + struct WasmBrTableNode + { + uint32 numTargets; + uint32* targetTable; + uint32 defaultTarget; + }; + + struct WasmCallNode + { + uint32 num; // function id + FunctionIndexTypes::Type funcType; + }; + + struct WasmBlock + { + WasmTypes::WasmType sig; + }; + + struct WasmNode + { + WasmOp op; + union + { + WasmBlock block; + WasmBrNode br; + WasmBrTableNode brTable; + WasmCallNode call; + WasmConstLitNode cnst; + WasmMemOpNode mem; + WasmVarNode var; + }; + }; + + struct WasmExport + { + uint32 funcIndex; + uint32 nameLength; + char16* name; + ExternalKinds::ExternalKind kind; + }; + + struct WasmImport + { + uint32 sigId; + uint32 modNameLen; + char16* modName; + uint32 fnNameLen; + char16* fnName; + }; +} diff --git a/lib/WasmReader/WasmReader.h b/lib/WasmReader/WasmReader.h new file mode 100644 index 00000000000..71c4d175544 --- /dev/null +++ b/lib/WasmReader/WasmReader.h @@ -0,0 +1,77 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +#include "Common.h" + +#include "Runtime.h" +#include "Language/WAsmjsUtils.h" +#ifdef ENABLE_WASM +#if ENABLE_DEBUG_CONFIG_OPTIONS +#define TRACE_WASM(condition, ...) \ + if (condition)\ + {\ + Output::Print(__VA_ARGS__); \ + Output::Print(_u("\n")); \ + Output::Flush(); \ + } + +// Level of tracing +#define DO_WASM_TRACE_ALL PHASE_TRACE1(Js::WasmPhase) +#define DO_WASM_TRACE_DECODER DO_WASM_TRACE_ALL || PHASE_TRACE1(Js::WasmReaderPhase) + #define DO_WASM_TRACE_SECTION DO_WASM_TRACE_DECODER || PHASE_TRACE1(Js::WasmSectionPhase) +#define DO_WASM_TRACE_LEB128 DO_WASM_TRACE_ALL || PHASE_TRACE1(Js::WasmLEB128Phase) + +#define TRACE_WASM_DECODER(...) TRACE_WASM(DO_WASM_TRACE_DECODER, __VA_ARGS__) +#define TRACE_WASM_SECTION(...) TRACE_WASM(DO_WASM_TRACE_SECTION, __VA_ARGS__) +#define TRACE_WASM_LEB128(...) TRACE_WASM(DO_WASM_TRACE_LEB128, __VA_ARGS__) +#else +#define DO_WASM_TRACE_ALL +#define DO_WASM_TRACE_DECODER +#define DO_WASM_TRACE_SECTION +#define DO_WASM_TRACE_LEB128 + +#define TRACE_WASM(...) +#define TRACE_WASM_DECODER(...) +#define TRACE_WASM_SECTION(...) +#define TRACE_WASM_LEB128(...) +#endif + +namespace Wasm +{ + // forward declarations + struct WasmNode; + struct SExprParseContext; + class WasmFunctionInfo; +} + +#include "ByteCode/ByteCodeWriter.h" +#include "ByteCode/AsmJsByteCodeWriter.h" + +#include "WasmParseTree.h" + +namespace Wasm +{ + typedef WasmTypes::WasmType Local; +} + +#include "WasmSignature.h" +#include "WasmDataSegment.h" +#include "WasmFunctionInfo.h" +#include "WasmModule.h" + +#include "WasmSection.h" + +#include "WasmBinaryReader.h" +#include "WasmByteCodeGenerator.h" + +// TODO (michhol): cleanup includes +#include "ByteCode/AsmJsByteCodeWriter.h" +#include "ByteCode/ByteCodeDumper.h" +#include "ByteCode/AsmJsByteCodeDumper.h" +#include "Language/AsmJsTypes.h" + +#endif // ENABLE_WASM diff --git a/test/Error/useruncaught.js b/lib/WasmReader/WasmReaderPch.cpp similarity index 76% rename from test/Error/useruncaught.js rename to lib/WasmReader/WasmReaderPch.cpp index 32f81cf8650..265af8f48fa 100644 --- a/test/Error/useruncaught.js +++ b/lib/WasmReader/WasmReaderPch.cpp @@ -1,11 +1,6 @@ -//------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. -//------------------------------------------------------------------------------------------------------- - -var arrObj0 = {}; -function func12() { - 'use strict'; - arrObj0(arrObj0(typeof this.prop5)); -} -func12(); +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" diff --git a/lib/WasmReader/WasmReaderPch.h b/lib/WasmReader/WasmReaderPch.h new file mode 100644 index 00000000000..b5e761a8ff7 --- /dev/null +++ b/lib/WasmReader/WasmReaderPch.h @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +// Parser Includes +#include "WasmReader.h" + +#ifdef ENABLE_WASM +// AsmJsFunctionMemory::RequiredVarConstants +#include "../Language/AsmJsModule.h" +#endif + +// Runtime includes +#include "../Runtime/Runtime.h" diff --git a/lib/WasmReader/WasmSection.cpp b/lib/WasmReader/WasmSection.cpp new file mode 100644 index 00000000000..ea8c41de0f9 --- /dev/null +++ b/lib/WasmReader/WasmSection.cpp @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM +namespace Wasm +{ + SectionInfo SectionInfo::All[bSectLimit] = { +#define WASM_SECTION(name, id, flag, precedent) {flag, bSect ## precedent, static_cast(_u(#name)), static_cast(id)}, +#include "WasmSections.h" + }; +} +#endif diff --git a/lib/WasmReader/WasmSection.h b/lib/WasmReader/WasmSection.h new file mode 100644 index 00000000000..53803857d86 --- /dev/null +++ b/lib/WasmReader/WasmSection.h @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +#ifdef ENABLE_WASM +namespace Wasm +{ + + enum SectionFlag + { + fSectNone, + fSectIgnore, + }; + +#define WASM_SECTION(name, id, flag, precendent) bSect ## name, + enum SectionCode + { + bSectInvalid = -1, +#include "WasmSections.h" + bSectLimit + }; + + struct SectionInfo + { + SectionFlag flag; + SectionCode precedent; + const char16* name; + const char* id; + static SectionInfo All[bSectLimit]; + }; +} +#endif diff --git a/lib/WasmReader/WasmSections.h b/lib/WasmReader/WasmSections.h new file mode 100644 index 00000000000..eaade20d91a --- /dev/null +++ b/lib/WasmReader/WasmSections.h @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +// (name , ID , SectionFlag, Precedent ) +WASM_SECTION(Signatures , "type" , fSectNone , Invalid ) +WASM_SECTION(ImportTable , "import" , fSectNone , Invalid ) +WASM_SECTION(FunctionSignatures , "function" , fSectNone , Signatures ) +WASM_SECTION(IndirectFunctionTable, "table" , fSectNone , FunctionSignatures) +WASM_SECTION(Memory , "memory" , fSectNone , Invalid ) +WASM_SECTION(Global , "global" , fSectNone , Invalid ) +WASM_SECTION(ExportTable , "export" , fSectNone , FunctionSignatures) +WASM_SECTION(StartFunction , "start" , fSectNone , FunctionSignatures) +WASM_SECTION(Element , "element" , fSectNone , IndirectFunctionTable) +WASM_SECTION(FunctionBodies , "code" , fSectNone , FunctionSignatures) +WASM_SECTION(DataSegments , "data" , fSectNone , Memory ) +WASM_SECTION(Names , "name" , fSectNone , Signatures ) +WASM_SECTION(User , "user" , fSectIgnore, Invalid ) +#undef WASM_SECTION diff --git a/lib/WasmReader/WasmSignature.cpp b/lib/WasmReader/WasmSignature.cpp new file mode 100644 index 00000000000..ec9175d2ee8 --- /dev/null +++ b/lib/WasmReader/WasmSignature.cpp @@ -0,0 +1,139 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#include "WasmReaderPch.h" + +#ifdef ENABLE_WASM + +namespace Wasm +{ + +WasmSignature::WasmSignature(ArenaAllocator * alloc) : + m_alloc(alloc), + m_resultType(WasmTypes::Void), + m_id(Js::Constants::UninitializedValue), + m_paramSize(Js::Constants::UninitializedValue), + m_params(nullptr), + m_paramsCount(0) +{ +} + +void +WasmSignature::AllocateParams(uint32 count) +{ + m_params = AnewArrayZ(m_alloc, Local, count); + m_paramsCount = count; +} + +void +WasmSignature::SetParam(WasmTypes::WasmType type, uint32 index) +{ + if (index >= GetParamCount()) + { + throw WasmCompilationException(_u("Parameter %d out of range (max %d)"), index, GetParamCount()); + } + m_params[index] = Local(type); +} + +void +WasmSignature::SetResultType(WasmTypes::WasmType type) +{ + Assert(m_resultType == WasmTypes::Void); + m_resultType = type; +} + +void +WasmSignature::SetSignatureId(uint32 id) +{ + Assert(m_id == Js::Constants::UninitializedValue); + m_id = id; +} + +Local +WasmSignature::GetParam(uint index) const +{ + if (index >= GetParamCount()) + { + throw WasmCompilationException(_u("Parameter %d out of range (max %d)"), index, GetParamCount()); + } + return m_params[index]; +} + +WasmTypes::WasmType +WasmSignature::GetResultType() const +{ + return m_resultType; +} + +uint32 +WasmSignature::GetParamCount() const +{ + return m_paramsCount; +} + +uint32 +WasmSignature::GetSignatureId() const +{ + return m_id; +} + +bool +WasmSignature::IsEquivalent(WasmSignature* sig) const +{ + if (GetResultType() == sig->GetResultType() && + GetParamCount() == sig->GetParamCount() && + GetParamsSize() == sig->GetParamsSize()) + { + return GetParamCount() == 0 || memcmp(m_params, sig->m_params, GetParamCount() * sizeof(Local)) == 0; + } + return false; +} + +uint32 WasmSignature::GetParamSize(uint index) const +{ + switch (GetParam(index)) + { + case WasmTypes::F32: + case WasmTypes::I32: + CompileAssert(sizeof(float) == sizeof(int32)); +#ifdef _M_X64 + // on x64, we always alloc (at least) 8 bytes per arguments + return sizeof(void*); +#elif _M_IX86 + return sizeof(int32); +#else + Assert(UNREACHED); +#endif + break; + case WasmTypes::F64: + case WasmTypes::I64: + CompileAssert(sizeof(double) == sizeof(int64)); + return sizeof(int64); + break; + default: + throw WasmCompilationException(_u("Invalid param type")); + } +} + +uint32 +WasmSignature::GetParamsSize() const +{ + if (m_paramSize != Js::Constants::UninitializedValue) + { + return m_paramSize; + } + + uint32 m_paramSize = 0; + for (uint32 i = 0; i < GetParamCount(); ++i) + { + m_paramSize += GetParamSize(i); + } + + return m_paramSize; +} + +} // namespace Wasm + +#endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmSignature.h b/lib/WasmReader/WasmSignature.h new file mode 100644 index 00000000000..6dfed3c6bb6 --- /dev/null +++ b/lib/WasmReader/WasmSignature.h @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +#pragma once + +namespace Wasm +{ +class WasmSignature +{ +public: + WasmSignature(ArenaAllocator * alloc); + + void AllocateParams(uint32 count); + void SetParam(WasmTypes::WasmType type, uint32 index); + void SetResultType(WasmTypes::WasmType type); + void SetSignatureId(uint32 id); + + Local GetParam(uint index) const; + WasmTypes::WasmType GetResultType() const; + uint32 GetParamCount() const; + uint32 GetParamSize(uint index) const; + uint32 GetParamsSize() const; + uint32 GetSignatureId() const; + + bool IsEquivalent(WasmSignature* sig) const; +private: + ArenaAllocator* m_alloc; + WasmTypes::WasmType m_resultType; + Local* m_params; + uint32 m_paramsCount; + uint32 m_id; + uint32 m_paramSize; +}; + +} // namespace Wasm diff --git a/pal/src/exception/signal.cpp b/pal/src/exception/signal.cpp index 69519d4a87a..a79fe9c697f 100644 --- a/pal/src/exception/signal.cpp +++ b/pal/src/exception/signal.cpp @@ -155,8 +155,6 @@ void SEHCleanupSignals() { TRACE("Restoring default signal handlers\n"); - // Do not remove handlers for SIGUSR1 and SIGUSR2. They must remain so threads can be suspended - // during cleanup after this function has been called. restore_signal(SIGILL, &g_previous_sigill); restore_signal(SIGTRAP, &g_previous_sigtrap); restore_signal(SIGFPE, &g_previous_sigfpe); diff --git a/pal/src/include/pal/seh.hpp b/pal/src/include/pal/seh.hpp index 4946d944e93..7b0a1e69c80 100644 --- a/pal/src/include/pal/seh.hpp +++ b/pal/src/include/pal/seh.hpp @@ -25,8 +25,7 @@ Module Name: #include "pal/palinternal.h" #include "pal/corunix.hpp" -// Uncomment this define to turn off the signal handling thread. -// #define DO_NOT_USE_SIGNAL_HANDLING_THREAD +#define DO_NOT_USE_SIGNAL_HANDLING_THREAD /*++ Function : diff --git a/pal/src/include/pal/threadsusp.hpp b/pal/src/include/pal/threadsusp.hpp index bb987fcf667..ddcc5975e49 100644 --- a/pal/src/include/pal/threadsusp.hpp +++ b/pal/src/include/pal/threadsusp.hpp @@ -361,11 +361,6 @@ namespace CorUnix DWORD *pdwSuspendCount ); -#if !HAVE_MACH_EXCEPTIONS - static - VOID InitializeSignalSets(); -#endif // !HAVE_MACH_EXCEPTIONS - VOID InitializeSuspensionLock(); void SetBlockingPipe( diff --git a/pal/src/misc/time.cpp b/pal/src/misc/time.cpp index 17fe0373727..7be0fe47e4e 100644 --- a/pal/src/misc/time.cpp +++ b/pal/src/misc/time.cpp @@ -1,6 +1,6 @@ // // Copyright (c) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. // /*++ @@ -75,8 +75,8 @@ time. The system time is expressed in Coordinated Universal Time Parameters -lpSystemTime - [out] Pointer to a SYSTEMTIME structure to receive the current system date and time. +lpSystemTime + [out] Pointer to a SYSTEMTIME structure to receive the current system date and time. Return Values @@ -101,10 +101,10 @@ GetSystemTime( tt = time(NULL); - /* We can't get millisecond resolution from time(), so we get it from + /* We can't get millisecond resolution from time(), so we get it from gettimeofday() */ timeofday_retval = gettimeofday(&timeval,NULL); - + #if HAVE_GMTIME_R utPtr = &ut; if (gmtime_r(&tt, utPtr) == NULL) @@ -134,20 +134,20 @@ GetSystemTime( { int old_seconds; int new_seconds; - + lpSystemTime->wMilliseconds = timeval.tv_usec/tccMillieSecondsToMicroSeconds; - + old_seconds = utPtr->tm_sec; new_seconds = timeval.tv_sec%60; - - /* just in case we reached the next second in the interval between + + /* just in case we reached the next second in the interval between time() and gettimeofday() */ if( old_seconds!=new_seconds ) { TRACE("crossed seconds boundary; setting milliseconds to 999\n"); lpSystemTime->wMilliseconds = 999; - } - } + } + } EXIT: LOGEXIT("GetSystemTime returns void\n"); PERF_EXIT(GetSystemTime); @@ -164,7 +164,7 @@ use the GetSystemTimeAdjustment function. Parameters -This function has no parameters. +This function has no parameters. Return Values @@ -212,7 +212,7 @@ QueryPerformanceCounter( retval = FALSE; break; } - lpPerformanceCount->QuadPart = + lpPerformanceCount->QuadPart = (LONGLONG)ts.tv_sec * (LONGLONG)tccSecondsToNanoSeconds + (LONGLONG)ts.tv_nsec; } #elif HAVE_MACH_ABSOLUTE_TIME @@ -233,22 +233,22 @@ QueryPerformanceCounter( retval = FALSE; break; } - lpPerformanceCount->QuadPart = + lpPerformanceCount->QuadPart = (LONGLONG)tb.tb_high * (LONGLONG)tccSecondsToNanoSeconds + (LONGLONG)tb.tb_low; } #else { - struct timeval tv; + struct timeval tv; if (gettimeofday(&tv, NULL) == -1) { ASSERT("gettimeofday() failed; errno is %d (%s)\n", errno, strerror(errno)); retval = FALSE; break; } - lpPerformanceCount->QuadPart = - (LONGLONG)tv.tv_sec * (LONGLONG)tccSecondsToMicroSeconds + (LONGLONG)tv.tv_usec; + lpPerformanceCount->QuadPart = + (LONGLONG)tv.tv_sec * (LONGLONG)tccSecondsToMicroSeconds + (LONGLONG)tv.tv_usec; } -#endif // HAVE_CLOCK_MONOTONIC +#endif // HAVE_CLOCK_MONOTONIC while (false); LOGEXIT("QueryPerformanceCounter\n"); @@ -280,7 +280,7 @@ QueryPerformanceFrequency( } #else lpFrequency->QuadPart = (LONGLONG)tccSecondsToMicroSeconds; -#endif // HAVE_GETHRTIME || HAVE_READ_REAL_TIME || HAVE_CLOCK_MONOTONIC +#endif // HAVE_GETHRTIME || HAVE_READ_REAL_TIME || HAVE_CLOCK_MONOTONIC LOGEXIT("QueryPerformanceFrequency\n"); PERF_EXIT(QueryPerformanceFrequency); return retval; @@ -324,24 +324,14 @@ QueryThreadCycleTime( return retval; } -/*++ -Function: - GetTickCount64 - -Returns a 64-bit tick count with a millisecond resolution. It tries its best -to return monotonically increasing counts and avoid being affected by changes -to the system clock (either due to drift or due to explicit changes to system -time). ---*/ -PALAPI -ULONGLONG -GetTickCount64() +static ULONGLONG +GetTickCount64Fallback() { ULONGLONG retval = 0; #if HAVE_CLOCK_MONOTONIC_COARSE || HAVE_CLOCK_MONOTONIC { - clockid_t clockType = + clockid_t clockType = #if HAVE_CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_COARSE; // good enough resolution, fastest speed #else @@ -382,7 +372,7 @@ GetTickCount64() } #else { - struct timeval tv; + struct timeval tv; if (gettimeofday(&tv, NULL) == -1) { ASSERT("gettimeofday() failed; errno is %d (%s)\n", errno, strerror(errno)); @@ -390,8 +380,71 @@ GetTickCount64() } retval = (tv.tv_sec * tccSecondsToMillieSeconds) + (tv.tv_usec / tccMillieSecondsToMicroSeconds); } -#endif // HAVE_CLOCK_MONOTONIC -EXIT: +#endif // HAVE_CLOCK_MONOTONIC +EXIT: return retval; } +#if defined(_X86_) || defined(__AMD64__) || defined(__x86_64__) +inline ULONGLONG rdtsc() +{ + ULONGLONG H, L; + __asm volatile ("rdtsc":"=a"(L), "=d"(H)); +#ifdef _X86_ + return L; +#else + return (H << 32) | L; +#endif +} + +static double CPUFreq() +{ + struct timeval tstart, tend; + ULONGLONG start, end; + + struct timezone tzone; + memset(&tzone, 0, sizeof(tzone)); + + start = rdtsc(); + gettimeofday(&tstart, &tzone); + + usleep(1000); // 1ms + + end = rdtsc(); + gettimeofday(&tend, &tzone); + + ULONGLONG usec = ((tend.tv_sec - tstart.tv_sec)*1e6) + + (tend.tv_usec - tstart.tv_usec); + + if (!usec) return 0; + return (end - start) / usec; +} + +static ULONGLONG cpu_speed = CPUFreq() * 1e3; // 1000 * 1e6 => ns to ms +typedef ULONGLONG (*GetTickCount64FallbackCB)(void); +inline ULONGLONG FastTickCount() +{ + return rdtsc() / cpu_speed; +} +static GetTickCount64FallbackCB getTickCount64FallbackCB = cpu_speed ? FastTickCount : GetTickCount64Fallback; +#endif + +/*++ +Function: + GetTickCount64 + +Returns a 64-bit tick count with a millisecond resolution. It tries its best +to return monotonically increasing counts and avoid being affected by changes +to the system clock (either due to drift or due to explicit changes to system +time). +--*/ +PALAPI +ULONGLONG +GetTickCount64() +{ +#if defined(_X86_) || defined(__AMD64__) || defined(__x86_64__) + return getTickCount64FallbackCB(); +#else + return GetTickCount64Fallback(); +#endif +} diff --git a/pal/src/thread/pal_thread.cpp b/pal/src/thread/pal_thread.cpp index 8a73e14d864..f194d2cb0a8 100644 --- a/pal/src/thread/pal_thread.cpp +++ b/pal/src/thread/pal_thread.cpp @@ -1731,14 +1731,6 @@ CorUnix::InitializeGlobalThreadData( } } -#if !HAVE_MACH_EXCEPTIONS - // - // Initialize the thread suspension signal sets. - // - - CThreadSuspensionInfo::InitializeSignalSets(); -#endif // !HAVE_MACH_EXCEPTIONS - return palError; } diff --git a/pal/src/thread/threadsusp.cpp b/pal/src/thread/threadsusp.cpp index 69b7b5da2c1..e30078a228a 100644 --- a/pal/src/thread/threadsusp.cpp +++ b/pal/src/thread/threadsusp.cpp @@ -64,10 +64,6 @@ performing one suspension or resumption in the PAL at a time. */ static LONG g_ssSuspensionLock = 0; #endif -#if !HAVE_MACH_EXCEPTIONS -static sigset_t smDefaultmask; // masks signals that the PAL handles as exceptions. -#endif // !HAVE_MACH_EXCEPTIONS - /*++ Function: InternalSuspendNewThreadFromData @@ -770,56 +766,6 @@ CThreadSuspensionInfo::WaitOnResumeSemaphore() #endif // USE_POSIX_SEMAPHORES } -#if !HAVE_MACH_EXCEPTIONS -/*++ -Function: - InitializeSignalSets - -InitializeSignalSets initializes the signal masks used for thread -suspension operations. Each thread's signal mask is initially set -to smDefaultMask in InitializePreCreate. This mask blocks SIGUSR2, -and SIGUSR1 if suspension using signals is off. This mask -also blocks common signals so they will be handled by the PAL's -signal handling thread. ---*/ -VOID -CThreadSuspensionInfo::InitializeSignalSets() -{ - sigemptyset(&smDefaultmask); - -#ifndef DO_NOT_USE_SIGNAL_HANDLING_THREAD - // The default signal mask masks all common signals except those that represent - // synchronous exceptions in the PAL or are used by the system (e.g. SIGPROF on BSD). - // Note that SIGPROF is used by the BSD thread scheduler and masking it caused a - // significant reduction in performance. - sigaddset(&smDefaultmask, SIGHUP); - sigaddset(&smDefaultmask, SIGABRT); -#ifdef SIGEMT - sigaddset(&smDefaultmask, SIGEMT); -#endif - sigaddset(&smDefaultmask, SIGSYS); - sigaddset(&smDefaultmask, SIGALRM); - sigaddset(&smDefaultmask, SIGURG); - sigaddset(&smDefaultmask, SIGTSTP); - sigaddset(&smDefaultmask, SIGCONT); - sigaddset(&smDefaultmask, SIGCHLD); - sigaddset(&smDefaultmask, SIGTTIN); - sigaddset(&smDefaultmask, SIGTTOU); - sigaddset(&smDefaultmask, SIGIO); - sigaddset(&smDefaultmask, SIGXCPU); - sigaddset(&smDefaultmask, SIGXFSZ); - sigaddset(&smDefaultmask, SIGVTALRM); - sigaddset(&smDefaultmask, SIGWINCH); -#ifdef SIGINFO - sigaddset(&smDefaultmask, SIGINFO); -#endif - sigaddset(&smDefaultmask, SIGPIPE); - sigaddset(&smDefaultmask, SIGUSR1); - sigaddset(&smDefaultmask, SIGUSR2); -#endif // DO_NOT_USE_SIGNAL_HANDLING_THREAD -} -#endif // !HAVE_MACH_EXCEPTIONS - /*++ Function: InitializeSuspensionLock @@ -988,25 +934,6 @@ CThreadSuspensionInfo::InitializePreCreate() m_fSemaphoresInitialized = TRUE; #endif // USE_POSIX_SEMAPHORES -#if !HAVE_MACH_EXCEPTIONS - // This signal mask blocks SIGUSR2 when signal suspension is turned on - // (SIGUSR2 must be blocked for signal suspension), and masks other signals - // when the signal waiting thread is turned on. We must use SIG_SETMASK - // so all threads start with the same signal mask. Otherwise, issues can arise. - // For example, on BSD using suspension with signals, the control handler - // routine thread, spawned from the signal handling thread, inherits the - // signal handling thread's mask which blocks SIGUSR1. Thus, the - // control handler routine thread cannot be suspended. Using SETMASK - // ensures that SIGUSR1 is not blocked. - - iError = pthread_sigmask(SIG_SETMASK, &smDefaultmask, NULL); - if (iError != 0) - { - ASSERT("pthread sigmask(SIG_SETMASK, &smDefaultmask) returned %d\n", iError); - goto InitializePreCreateExit; - } -#endif // !HAVE_MACH_EXCEPTIONS - // Initialization was successful. palError = NO_ERROR; diff --git a/test/Array/Array_TypeConfusion_bugs.js b/test/Array/Array_TypeConfusion_bugs.js index 1d1ce51f959..c3661c8bf2a 100644 --- a/test/Array/Array_TypeConfusion_bugs.js +++ b/test/Array/Array_TypeConfusion_bugs.js @@ -14,226 +14,387 @@ var tests = [ name: "OS7342663:OOB writes using type confusion in InternalCopyArrayElements", body: function () { - function test() { - var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe]; - - class MyArray extends Uint32Array { } - Object.defineProperty(MyArray, Symbol.species, { value: function() { return arr1; } }); - - var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; - var test = [float_val, float_val, float_val, float_val]; - test.length = 0x1000; - test.__proto__ = new MyArray(0); - - var res = Array.prototype.slice.apply(test, []); // OOB write - assert.areEqual(0x1000, res.length, "res.length == 0x1000"); - assert.areEqual(float_val, res[0], "res[0] == float_val"); - assert.areEqual(float_val, res[1], "res[1] == float_val"); - assert.areEqual(float_val, res[2], "res[2] == float_val"); - assert.areEqual(float_val, res[3], "res[3] == float_val"); - assert.areEqual(undefined, res[4], "res[4] == float_val"); - assert.areEqual(undefined, res[0xfff], "res[0xfff] == undefined"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7342689:OOB writes using type confusion in InternalFillFromPrototypes", - body: function () - { - function test() { - var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, - 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, - 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, - 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe]; - - class MyArray extends Uint32Array { } - Object.defineProperty(MyArray, Symbol.species, { value: function() { return arr1; } }); - - var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; - var test = [{}]; - delete test[0]; - test.length = 0x1000; - var src = [float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, - float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, - float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, - float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, - float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val]; - test.__proto__ = src; - test.__proto__.__proto__ = new MyArray(0); - - //this will write 0xfffc0daddeadbabe to [arr1] + 0x1D8 - var res = Array.prototype.slice.apply(test, []) - assert.areEqual(0x1000, res.length, "res.length == 0x1000"); - assert.areEqual(float_val, res[0], "res[0] == float_val"); - assert.areEqual(float_val, res[1], "res[1] == float_val"); - assert.areEqual(float_val, res[2], "res[2] == float_val"); - assert.areEqual(float_val, res[src.length-1], "res[src.length-1] == float_val"); - assert.areEqual(undefined, res[src.length], "res[src] == undefined"); - assert.areEqual(undefined, res[0xfff], "res[0xfff] == undefined"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7307908:type confusion in Array.prototype.slice", - body: function () - { - function test() { - var arr = [1, 2] - - //Our species function will get called during chakra!Js::JavascriptArray::SliceHelper - Object.defineProperty( - arr.constructor, - Symbol.species, - { - value : function() - { - //change 'arr' from TypeIds_NativeIntArray to TypeIds_Array - arr[0] = WScript; - - //return a TypeIds_NativeIntArray so we can read back out the 64 bit pointer as two 32bit ints. - return []; - } - } - ); - - //trigger the bug and retrieve a TypeIds_NativeIntArray array containing a pointer. - var brr = arr.slice(); - - assert.areEqual(2, brr.length, "brr.length == 2"); - assert.areEqual(WScript, brr[0], "brr[0] == WScript"); - assert.areEqual(2, brr[1], "brr[0] == WScript"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7342791:type confusion in Array.from", - body: function () - { - function test() { - var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe]; - - var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; - var test = [float_val, float_val, float_val, float_val]; - delete test[0]; - delete test[1]; - delete test[2]; - - var res = Array.from.apply(function(){return arr1}, [test]); - assert.areEqual(4, res.length, "res.length == 4"); - assert.areEqual(undefined, res[0], "res[0] == undefined"); - assert.areEqual(undefined, res[1], "res[1] == undefined"); - assert.areEqual(undefined, res[2], "res[2] == undefined"); - assert.areEqual(float_val, res[3], "res[3] == float_val"); - - assert.areEqual(['1','2','3'], Array.from.apply(()=>new Array(), ["123"]), "Array.from on iterable"); - assert.areEqual([1,2,3], Array.from.apply(()=>new Array(), [{"0":1, "1":2, "2":3, "length":3}]), "Array.from on non-iterable"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7342844:type confusion in Array.of", - body: function () - { - function test() { - var brr = Array.of.call(()=>[ 1, 2, 3, 4 ], - WScript, // supply 2 copies of target so the brr array will have a length of 2 and we can read the 64bit pointer. - WScript - ); - - assert.areEqual(2, brr.length, "brr.length == 2"); - assert.areEqual(WScript, brr[0], "res[0] == WScript"); - assert.areEqual(WScript, brr[1], "res[1] == WScript"); - assert.areEqual(undefined, brr[2], "res[2] == undefined"); - assert.areEqual(undefined, brr[3], "res[3] == undefined"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7342907:type confusion in Array.prototype.map", - body: function () - { - function test() { - var arr = [ 1, 2 ]; - - Object.defineProperty( - arr.constructor, - Symbol.species, - { - value : function() - { - return []; - } - } - ); - - //The value returned from our callback is directly set into the array whose type we create via the species. - var brr = arr.map( function( v ) - { - if( v == 1 ) - return WScript; - } - ); - - assert.areEqual(2, brr.length, "brr.length == 2"); - assert.areEqual(WScript, brr[0], "brr[0] == WScript"); - assert.areEqual(undefined, brr[1], "brr[1] == undefined"); - } - test(); - test(); - test(); - } - }, - { - name: "OS7342965:type confusion in Array.prototype.splice", - body: function () - { - function test() { - //create a TypeIds_Array holding two 64 bit values (The same amount of space for four 32 bit values). - var arr = [ WScript, WScript ]; - - //Our species function will get called during chakra!Js::JavascriptArray::EntrySplice - Object.defineProperty( - arr.constructor, - Symbol.species, - { - value : function() - { - //return a TypeIds_NativeIntArray so we can read back out a 64 bit pointer as two 32bit ints. - return [ 1, 2, 3, 4 ]; - } - } - ); - - //trigger the bug and retrieve a TypeIds_NativeIntArray array containing a pointer. The helper - //method ArraySegmentSpliceHelper will directly copy over the TypeIds_Array segment data - //into the TypeIds_NativeIntArray segment. - var brr = arr.splice( 0, 2 ); - - assert.areEqual(2, brr.length, "brr.length == 2"); - assert.areEqual(WScript, brr[0], "brr[0] == WScript"); - assert.areEqual(WScript, brr[1], "brr[1] == WScript"); - assert.areEqual(undefined, brr[2], "brr[2] == undefined"); - assert.areEqual(undefined, brr[3], "brr[3] == undefined"); - } - test(); - test(); - test(); - } - }, + function test() { + var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe]; + + class MyArray extends Uint32Array { } + Object.defineProperty(MyArray, Symbol.species, { value: function() { return arr1; } }); + + var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; + var test = [float_val, float_val, float_val, float_val]; + test.length = 0x1000; + test.__proto__ = new MyArray(0); + + var res = Array.prototype.slice.apply(test, []); // OOB write + assert.areEqual(0x1000, res.length, "res.length == 0x1000"); + assert.areEqual(float_val, res[0], "res[0] == float_val"); + assert.areEqual(float_val, res[1], "res[1] == float_val"); + assert.areEqual(float_val, res[2], "res[2] == float_val"); + assert.areEqual(float_val, res[3], "res[3] == float_val"); + assert.areEqual(undefined, res[4], "res[4] == float_val"); + assert.areEqual(undefined, res[0xfff], "res[0xfff] == undefined"); + } + test(); + test(); + test(); + } + }, + { + name: "OS7342689:OOB writes using type confusion in InternalFillFromPrototypes", + body: function () + { + function test() { + var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, + 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, + 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, + 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe]; + + class MyArray extends Uint32Array { } + Object.defineProperty(MyArray, Symbol.species, { value: function() { return arr1; } }); + + var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; + var test = [{}]; + delete test[0]; + test.length = 0x1000; + var src = [float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, + float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, + float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, + float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, + float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val, float_val]; + test.__proto__ = src; + test.__proto__.__proto__ = new MyArray(0); + + //this will write 0xfffc0daddeadbabe to [arr1] + 0x1D8 + var res = Array.prototype.slice.apply(test, []) + assert.areEqual(0x1000, res.length, "res.length == 0x1000"); + assert.areEqual(float_val, res[0], "res[0] == float_val"); + assert.areEqual(float_val, res[1], "res[1] == float_val"); + assert.areEqual(float_val, res[2], "res[2] == float_val"); + assert.areEqual(float_val, res[src.length-1], "res[src.length-1] == float_val"); + assert.areEqual(undefined, res[src.length], "res[src] == undefined"); + assert.areEqual(undefined, res[0xfff], "res[0xfff] == undefined"); + } + test(); + test(); + test(); + } + }, + { + name: "OS7307908:type confusion in Array.prototype.slice", + body: function () + { + function test() { + var arr = [1, 2] + + //Our species function will get called during chakra!Js::JavascriptArray::SliceHelper + Object.defineProperty( + arr.constructor, + Symbol.species, + { + value : function() + { + //change 'arr' from TypeIds_NativeIntArray to TypeIds_Array + arr[0] = WScript; + + //return a TypeIds_NativeIntArray so we can read back out the 64 bit pointer as two 32bit ints. + return []; + } + } + ); + + //trigger the bug and retrieve a TypeIds_NativeIntArray array containing a pointer. + var brr = arr.slice(); + + assert.areEqual(2, brr.length, "brr.length == 2"); + assert.areEqual(WScript, brr[0], "brr[0] == WScript"); + assert.areEqual(2, brr[1], "brr[0] == WScript"); + } + test(); + test(); + test(); + } + }, + { + name: "OS7342791:type confusion in Array.from", + body: function () + { + function test() { + var arr1 = [0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe, 0xdead, 0xbabe]; + + var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; + var test = [float_val, float_val, float_val, float_val]; + delete test[0]; + delete test[1]; + delete test[2]; + + var res = Array.from.apply(function(){return arr1}, [test]); + assert.areEqual(4, res.length, "res.length == 4"); + assert.areEqual(undefined, res[0], "res[0] == undefined"); + assert.areEqual(undefined, res[1], "res[1] == undefined"); + assert.areEqual(undefined, res[2], "res[2] == undefined"); + assert.areEqual(float_val, res[3], "res[3] == float_val"); + + assert.areEqual(['1','2','3'], Array.from.apply(()=>new Array(), ["123"]), "Array.from on iterable"); + assert.areEqual([1,2,3], Array.from.apply(()=>new Array(), [{"0":1, "1":2, "2":3, "length":3}]), "Array.from on non-iterable"); + } + test(); + test(); + test(); + } + }, + { + name: "OS7342844:type confusion in Array.of", + body: function () + { + function test() { + var brr = Array.of.call(()=>[ 1, 2, 3, 4 ], + WScript, // supply 2 copies of target so the brr array will have a length of 2 and we can read the 64bit pointer. + WScript + ); + + assert.areEqual(2, brr.length, "brr.length == 2"); + assert.areEqual(WScript, brr[0], "res[0] == WScript"); + assert.areEqual(WScript, brr[1], "res[1] == WScript"); + assert.areEqual(undefined, brr[2], "res[2] == undefined"); + assert.areEqual(undefined, brr[3], "res[3] == undefined"); + } + test(); + test(); + test(); + } + }, + { + name: "OS7342907:type confusion in Array.prototype.map", + body: function () + { + function test() { + var arr = [ 1, 2 ]; + + Object.defineProperty( + arr.constructor, + Symbol.species, + { + value : function() + { + return []; + } + } + ); + + //The value returned from our callback is directly set into the array whose type we create via the species. + var brr = arr.map( function( v ) + { + if( v == 1 ) + return WScript; + } + ); + + assert.areEqual(2, brr.length, "brr.length == 2"); + assert.areEqual(WScript, brr[0], "brr[0] == WScript"); + assert.areEqual(undefined, brr[1], "brr[1] == undefined"); + } + test(); + test(); + test(); + } + }, + { + name: "type confusion in Array.prototype.map with Proxy", + body: function () + { + function test() { + var d = [1,2,3]; + class dummy { + constructor() { + return d; + } + } + + var handler = { + get: function(target, name) { + if(name == "length") { + return 0x100; + } + + return {[Symbol.species] : dummy}; + }, + + has: function(target, name) { + return true; + } + }; + + var p = new Proxy([], handler); + var a = new Array(1,2,3); + + function test(){ + return 0x777777777777; + } + + var o = a.map.call(p, test); + assert.areEqual(Array(0x100).fill(0x777777777777), o); + } + test(); + test(); + test(); + } + }, + { + name: "OS7342965:type confusion in Array.prototype.splice", + body: function () + { + function test() { + //create a TypeIds_Array holding two 64 bit values (The same amount of space for four 32 bit values). + var arr = [ WScript, WScript ]; + + //Our species function will get called during chakra!Js::JavascriptArray::EntrySplice + Object.defineProperty( + arr.constructor, + Symbol.species, + { + value : function() + { + //return a TypeIds_NativeIntArray so we can read back out a 64 bit pointer as two 32bit ints. + return [ 1, 2, 3, 4 ]; + } + } + ); + + //trigger the bug and retrieve a TypeIds_NativeIntArray array containing a pointer. The helper + //method ArraySegmentSpliceHelper will directly copy over the TypeIds_Array segment data + //into the TypeIds_NativeIntArray segment. + var brr = arr.splice( 0, 2 ); + + assert.areEqual(2, brr.length, "brr.length == 2"); + assert.areEqual(WScript, brr[0], "brr[0] == WScript"); + assert.areEqual(WScript, brr[1], "brr[1] == WScript"); + assert.areEqual(undefined, brr[2], "brr[2] == undefined"); + assert.areEqual(undefined, brr[3], "brr[3] == undefined"); + } + test(); + test(); + test(); + } + }, + { + name: "type confusion in Array.prototype.join", + body: function () + { + function test() { + var a = [0, 1, 2, 3]; + var b = []; + delete a[0]; + Object.setPrototypeOf(a, b) + Object.defineProperty(b, "0", + { + get: function() { + a[2] = "abc"; + return -1; + } + }); + + assert.areEqual("-1,1,abc,3", a.join()); + } + test(); + test(); + test(); + } + }, + { + name: "type confusion in Array.prototype.indexOf", + body: function () + { + function test() { + var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; + var a = [0, 1, 2, 3]; + var b = []; + delete a[1]; + Object.setPrototypeOf(a, b); + Object.defineProperty(b, "1", + { + get: function() { + a[2] = float_val; //"abc"; + return -1; + } + }); + + assert.areEqual(3, a.indexOf(3)); + } + test(); + test(); + test(); + } + }, + { + name: "type confusion in Array.prototype.lastIndexOf", + body: function () + { + function test() { + var float_val = 0xdaddeadbabe * 4.9406564584124654E-324; + var a = [3, 2, 1, 0]; + var b = []; + delete a[3]; + Object.setPrototypeOf(a, b); + Object.defineProperty(b, "3", + { + get: function() { + a[1] = float_val; //"abc"; + return -1; + } + }); + + assert.areEqual(0, a.lastIndexOf(3)); + } + test(); + test(); + test(); + } + }, + { + name: "type confusion in Function.prototype.apply", + body: function () + { + function test() { + var t = [1,2,3]; + + function f(){ + var h = []; + var a = [...arguments] + + for(item in a){ + var n = new Number(a[item]); + + if( n < 0) { + n = n + 0x100000000; + } + + h.push(n.toString(16)); + } + + return h; + } + + var q = f; + + t.length = 20; + var o = {}; + Object.defineProperty(o, '3', { + get: function() { + var ta = []; + ta.fill.call(t, "natalie"); + return 5; + } + }); + + t.__proto__ = o; + + var j = []; + assert.areEqual("1,2,3,5,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN", f.apply(null, t).toString()); + } + test(); + test(); + test(); + } + }, ]; testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" }); diff --git a/test/Array/array_includes.js b/test/Array/array_includes.js index 66d4008b2d4..1a0bbd5c546 100644 --- a/test/Array/array_includes.js +++ b/test/Array/array_includes.js @@ -144,6 +144,25 @@ var tests = [ assert.isTrue(y.includes(undefined), "includes(undefined):includes return true for search hit"); } }, + { + name: "Array.prototype.includes with proxy to validate that has is not called", + body: function () { + + var calls = 0; + var p = new Proxy({}, { + get : function(_, k) { + if (k == 'length') { + return 4; + } + calls++ + return k*2; + } + }); + + var a = [].includes.call(p, 100); + assert.areEqual(calls, 4, "Even though 'has' is not there get will be called 4 times"); + } + }, ]; testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" }); \ No newline at end of file diff --git a/test/Array/rlexe.xml b/test/Array/rlexe.xml index cbe8e1d6f9f..4b2925f17f5 100644 --- a/test/Array/rlexe.xml +++ b/test/Array/rlexe.xml @@ -158,7 +158,7 @@ bug612012.js - -maxinterpretcount:1 -loopinterpretcount:1 -force:fieldhoist -ForceArrayBTree + -maxinterpretcount:1 -loopinterpretcount:1 -force:fieldhoist -ForceArrayBTree -oopjit- exclude_ship,exclude_serialized diff --git a/test/AsmJs/rlexe.xml b/test/AsmJs/rlexe.xml index 08116f1ca70..79533d18b8d 100644 --- a/test/AsmJs/rlexe.xml +++ b/test/AsmJs/rlexe.xml @@ -4,21 +4,21 @@ ArrayView.js ArrayView.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs BasicBranching.js BasicBranching.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs BasicBranching.js BasicBranchingLinkFail.baseline - -testtrace:asmjs -simdjs -maic:0 -forceAsmJsLinkFail + -testtrace:asmjs -simdjs -forceAsmJsLinkFail @@ -26,35 +26,35 @@ basicComparisonDouble.js basicComparisonDouble.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs basicComparisonInt.js basicComparisonInt.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs basicComparisonUInt.js basicComparisonUInt.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs BasicLooping.js BasicLooping.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs basicMath.js basicMath.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs Slow @@ -62,49 +62,49 @@ basicMathIntSpecific.js basicMathIntSpecific.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs basicMathUnary.js basicMathUnary.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs BasicSwitch.js BasicSwitch.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs CompositionMathUnary.js CompositionMathUnary.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs FunctionCalls.js FunctionCalls.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs functiontablecalls.js functiontablecalls.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs MathBuiltinsCall.js MathBuiltinsCall.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -118,35 +118,35 @@ ModuleVarRead.js ModuleVarRead.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs ModuleVarWrite.js ModuleVarWrite.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs ReadArrayView.js ReadArrayView.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs ReadFixOffset.js ReadFixOffset.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs relink.js relink.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -167,14 +167,14 @@ relink.js relink.baseline - -forceserialized -testtrace:asmjs -simdjs -maic:0 + -forceserialized -testtrace:asmjs -simdjs WriteArrayView.js WriteArrayView.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs Slow @@ -182,7 +182,7 @@ WriteFixOffset.js WriteFixOffset.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs Slow @@ -191,7 +191,7 @@ ArrayView.js ArrayView.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -199,7 +199,7 @@ BasicBranching.js BasicBranching.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -207,7 +207,7 @@ basicComparisonDouble.js basicComparisonDouble.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -215,7 +215,7 @@ basicComparisonInt.js basicComparisonInt.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -223,7 +223,7 @@ basicComparisonUInt.js basicComparisonUInt.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -231,7 +231,7 @@ BasicLooping.js BasicLooping.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -239,7 +239,7 @@ basicMath.js basicMath.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -247,7 +247,7 @@ basicMathIntSpecific.js basicMathIntSpecific.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -255,7 +255,7 @@ basicMathUnary.js basicMathUnary.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -263,7 +263,7 @@ BasicSwitch.js BasicSwitch.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -271,7 +271,7 @@ CompositionMathUnary.js CompositionMathUnary.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -279,7 +279,7 @@ FunctionCalls.js FunctionCalls.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -287,7 +287,7 @@ functiontablecalls.js functiontablecalls.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -295,7 +295,7 @@ MathBuiltinsCall.js MathBuiltinsCall.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -303,7 +303,7 @@ ModuleVarRead.js ModuleVarRead.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -311,7 +311,7 @@ ModuleVarWrite.js ModuleVarWrite.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -319,7 +319,7 @@ ReadArrayView.js ReadArrayView.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -327,7 +327,7 @@ ReadFixOffset.js ReadFixOffset.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -335,7 +335,7 @@ WriteArrayView.js WriteArrayView.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -343,7 +343,7 @@ WriteFixOffset.js WriteFixOffset.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -498,14 +498,14 @@ functiontablebug.js functiontablebug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs nanbug.js nanbug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -519,28 +519,28 @@ switchbug.js switchbug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs fgpeepsbug.js fgpeepsbug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs cseBug.js cseBug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs constTest.js constTest.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -555,28 +555,28 @@ constTest.js constTest.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit ffibug.js ffibug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs ternaryfloat.js ternaryfloat.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs minintbug.js minintbug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -681,7 +681,7 @@ unityBug.js unityBug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -696,7 +696,7 @@ unityBug.js unityBug.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -704,7 +704,7 @@ argoutcapturebug.js argoutcapturebug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -718,7 +718,7 @@ clz32.js clz32.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs @@ -733,7 +733,7 @@ clz32.js clz32.baseline exclude_amd64 - -testtrace:asmjs -simdjs -enableoutofprocjit- -on:asmjsjittemplate -off:fulljit + -testtrace:asmjs -simdjs -oopjit- -on:asmjsjittemplate -off:fulljit @@ -776,7 +776,7 @@ lowererdivbug.js lowererdivbug.baseline - -testtrace:asmjs -simdjs -maic:0 + -testtrace:asmjs -simdjs diff --git a/test/Bugs/rlexe.xml b/test/Bugs/rlexe.xml index f165c0cb8bb..5c3e99aae95 100644 --- a/test/Bugs/rlexe.xml +++ b/test/Bugs/rlexe.xml @@ -210,7 +210,7 @@ SIMDExtendArgCSE.js SIMDExtendArgCSE.baseline exclude_dynapogo,exclude_ship,require_backend - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -301,9 +301,9 @@ b208_asmjs.js b208_asmjs.baseline exclude_dynapogo,exclude_ship,require_backend - -simdjs -AsmJsStopOnError -maic:0 + -simdjs -AsmJsStopOnError - + b208_asmjs.js @@ -325,7 +325,7 @@ b95.js b95.baseline exclude_dynapogo,exclude_ship,require_backend - -simdjs -testtrace:asmjs -asmjs -maic:0 + -simdjs -testtrace:asmjs -asmjs diff --git a/test/Debugger/JsDiagGetStackProperties.js.dbg.baseline b/test/Debugger/JsDiagGetStackProperties.js.dbg.baseline index bd822b821ab..263eea62c65 100644 --- a/test/Debugger/JsDiagGetStackProperties.js.dbg.baseline +++ b/test/Debugger/JsDiagGetStackProperties.js.dbg.baseline @@ -3,6 +3,8 @@ "this": "Object {...}", "{exception}": "number 1", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", @@ -13,6 +15,8 @@ "this": "Object {...}", "{exception}": "Error Caught Error", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", @@ -22,6 +26,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", @@ -49,6 +55,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", @@ -58,6 +66,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", @@ -106,6 +116,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FuncLevel1": "function ", "outerFunc1": "function ", diff --git a/test/Debugger/MultipleContextStack.js.dbg.baseline b/test/Debugger/MultipleContextStack.js.dbg.baseline index 0fef4d7424d..4f0572fe437 100644 --- a/test/Debugger/MultipleContextStack.js.dbg.baseline +++ b/test/Debugger/MultipleContextStack.js.dbg.baseline @@ -66,6 +66,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Func2": "function ", "Func3": "function ", @@ -85,6 +87,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Func2": "function ", "Func3": "function ", diff --git a/test/DebuggerCommon/ES6_intl_simple_attach.js.dbg.baseline b/test/DebuggerCommon/ES6_intl_simple_attach.js.dbg.baseline index cd246af2aac..c8fb482676b 100644 --- a/test/DebuggerCommon/ES6_intl_simple_attach.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_intl_simple_attach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "x": "undefined undefined" @@ -26,6 +28,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "x": "undefined undefined" diff --git a/test/DebuggerCommon/ES6_letconst_const_reassignment_globalscope.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_const_reassignment_globalscope.js.dbg.baseline index 3a4b01f97d5..869d20d4b16 100644 --- a/test/DebuggerCommon/ES6_letconst_const_reassignment_globalscope.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_const_reassignment_globalscope.js.dbg.baseline @@ -2,11 +2,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" }, "locals": { "a": "number 1", "b": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/ES6_letconst_eval_nonstrict.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_eval_nonstrict.js.dbg.baseline index ee4cf0cf66f..64a0124bbc7 100644 --- a/test/DebuggerCommon/ES6_letconst_eval_nonstrict.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_eval_nonstrict.js.dbg.baseline @@ -2,10 +2,26 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" }, "locals": { "a": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/ES6_letconst_eval_strict_fn.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_eval_strict_fn.js.dbg.baseline index 96f0d22f2a5..aa2f76253ba 100644 --- a/test/DebuggerCommon/ES6_letconst_eval_strict_fn.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_eval_strict_fn.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -18,6 +20,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } diff --git a/test/DebuggerCommon/ES6_letconst_for.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_for.js.dbg.baseline index f7d1a093f0f..2cb4e9de54a 100644 --- a/test/DebuggerCommon/ES6_letconst_for.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_for.js.dbg.baseline @@ -3,6 +3,8 @@ "this": "Object {...}", "locals": { "y": "number 1", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } @@ -10,12 +12,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "y": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -28,6 +46,8 @@ "this": "Object {...}", "locals": { "y": "number 2", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } @@ -35,12 +55,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "y": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -53,6 +89,8 @@ "this": "Object {...}", "locals": { "y": "number 3", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } diff --git a/test/DebuggerCommon/ES6_letconst_forin.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_forin.js.dbg.baseline index 7a89cdccd83..84433460d4b 100644 --- a/test/DebuggerCommon/ES6_letconst_forin.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_forin.js.dbg.baseline @@ -2,11 +2,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "Object {...}" }, "locals": { "y": "string x", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -22,11 +38,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "Object {...}" }, "locals": { "y": "string y", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/ES6_letconst_redcl.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_redcl.js.dbg.baseline index fbf53888ce6..a103b5cbc72 100644 --- a/test/DebuggerCommon/ES6_letconst_redcl.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_redcl.js.dbg.baseline @@ -7,11 +7,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" }, "locals": { "a": "number 100", "b": "number 200", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/ES6_letconst_shadow_eval_with.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_shadow_eval_with.js.dbg.baseline index e87d7c507c8..63bab0e6e88 100644 --- a/test/DebuggerCommon/ES6_letconst_shadow_eval_with.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_shadow_eval_with.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -18,6 +20,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -25,6 +29,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -41,6 +47,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -48,6 +56,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -64,6 +74,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -71,6 +83,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -87,6 +101,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } diff --git a/test/DebuggerCommon/ES6_letconst_trycatch_simple_fast.js.dbg.baseline b/test/DebuggerCommon/ES6_letconst_trycatch_simple_fast.js.dbg.baseline index 52727f71b8e..948d835e858 100644 --- a/test/DebuggerCommon/ES6_letconst_trycatch_simple_fast.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_letconst_trycatch_simple_fast.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Call": "function ", "bar": "function ", @@ -20,6 +22,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Call": "function ", "bar": "function ", @@ -30,6 +34,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Call": "function ", "bar": "function ", @@ -54,6 +60,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Call": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/ES6_proto_simple.js.dbg.baseline b/test/DebuggerCommon/ES6_proto_simple.js.dbg.baseline index e7a8c599ce3..e9f67734aac 100644 --- a/test/DebuggerCommon/ES6_proto_simple.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_proto_simple.js.dbg.baseline @@ -8,6 +8,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -22,6 +36,48 @@ } }, "locals": { + "read": { + "#__proto__": { + "#__proto__": "Object {...}", + "constructor": "function ", + "length": "number 0", + "name": "string ", + "apply": "function ", + "bind": "function ", + "call": "function ", + "toString": "function ", + "caller": "object null", + "arguments": "object null" + }, + "prototype": { + "#__proto__": "Object {...}", + "constructor": "function read" + }, + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": { + "#__proto__": "Object {...}", + "constructor": "function ", + "length": "number 0", + "name": "string ", + "apply": "function ", + "bind": "function ", + "call": "function ", + "toString": "function ", + "caller": "object null", + "arguments": "object null" + }, + "prototype": { + "#__proto__": "Object {...}", + "constructor": "function readbuffer" + }, + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": { "constructor": "function ", diff --git a/test/DebuggerCommon/ES6_proto_userDefinedObject.js.dbg.baseline b/test/DebuggerCommon/ES6_proto_userDefinedObject.js.dbg.baseline index 7c9ab814fab..9063c539e8b 100644 --- a/test/DebuggerCommon/ES6_proto_userDefinedObject.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_proto_userDefinedObject.js.dbg.baseline @@ -8,6 +8,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -35,6 +49,48 @@ } }, "locals": { + "read": { + "#__proto__": { + "#__proto__": "Object {...}", + "constructor": "function ", + "length": "number 0", + "name": "string ", + "apply": "function ", + "bind": "function ", + "call": "function ", + "toString": "function ", + "caller": "object null", + "arguments": "object null" + }, + "prototype": { + "#__proto__": "Object {...}", + "constructor": "function read" + }, + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": { + "#__proto__": "Object {...}", + "constructor": "function ", + "length": "number 0", + "name": "string ", + "apply": "function ", + "bind": "function ", + "call": "function ", + "toString": "function ", + "caller": "object null", + "arguments": "object null" + }, + "prototype": { + "#__proto__": "Object {...}", + "constructor": "function readbuffer" + }, + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": { "constructor": "function ", diff --git a/test/DebuggerCommon/ES6_spread.js.dbg.baseline b/test/DebuggerCommon/ES6_spread.js.dbg.baseline index 5043f594d89..22e4b541c50 100644 --- a/test/DebuggerCommon/ES6_spread.js.dbg.baseline +++ b/test/DebuggerCommon/ES6_spread.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "foo": "function ", @@ -24,6 +26,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "foo": "function ", diff --git a/test/DebuggerCommon/JIT_localsAtNativeFrame1.js.dbg.baseline b/test/DebuggerCommon/JIT_localsAtNativeFrame1.js.dbg.baseline index 01682c0be0f..f54c8ddd9bc 100644 --- a/test/DebuggerCommon/JIT_localsAtNativeFrame1.js.dbg.baseline +++ b/test/DebuggerCommon/JIT_localsAtNativeFrame1.js.dbg.baseline @@ -55,6 +55,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function ", @@ -117,6 +119,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function ", @@ -179,6 +183,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function ", @@ -241,6 +247,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function ", diff --git a/test/DebuggerCommon/JIT_localsAtNativeFrame2.js.dbg.baseline b/test/DebuggerCommon/JIT_localsAtNativeFrame2.js.dbg.baseline index d660a8fb487..c1b79e3515f 100644 --- a/test/DebuggerCommon/JIT_localsAtNativeFrame2.js.dbg.baseline +++ b/test/DebuggerCommon/JIT_localsAtNativeFrame2.js.dbg.baseline @@ -160,6 +160,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -409,6 +411,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -658,6 +662,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -907,6 +913,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", diff --git a/test/DebuggerCommon/ObjLit_step_into_out.js.dbg.baseline b/test/DebuggerCommon/ObjLit_step_into_out.js.dbg.baseline index 4b31d79cc60..557c1f23df2 100644 --- a/test/DebuggerCommon/ObjLit_step_into_out.js.dbg.baseline +++ b/test/DebuggerCommon/ObjLit_step_into_out.js.dbg.baseline @@ -103,6 +103,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "sub_expression_step_into": "function ", @@ -125,6 +127,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "sub_expression_step_into": "function ", diff --git a/test/DebuggerCommon/ObjLit_step_over.js.dbg.baseline b/test/DebuggerCommon/ObjLit_step_over.js.dbg.baseline index 59b0cdeceac..35bef227aad 100644 --- a/test/DebuggerCommon/ObjLit_step_over.js.dbg.baseline +++ b/test/DebuggerCommon/ObjLit_step_over.js.dbg.baseline @@ -59,6 +59,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "sub_expression_step_over": "function ", @@ -84,6 +86,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "sub_expression_step_over": "function ", diff --git a/test/DebuggerCommon/argument_disp.js.dbg.baseline b/test/DebuggerCommon/argument_disp.js.dbg.baseline index b8da35441ad..305b40b99b6 100644 --- a/test/DebuggerCommon/argument_disp.js.dbg.baseline +++ b/test/DebuggerCommon/argument_disp.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " @@ -19,6 +21,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " diff --git a/test/DebuggerCommon/array_protoTest.js.dbg.baseline b/test/DebuggerCommon/array_protoTest.js.dbg.baseline index 496937a8c77..304a630d7d3 100644 --- a/test/DebuggerCommon/array_protoTest.js.dbg.baseline +++ b/test/DebuggerCommon/array_protoTest.js.dbg.baseline @@ -8,6 +8,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -219,6 +233,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -230,6 +246,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -269,6 +299,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -503,6 +547,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -514,6 +560,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -547,6 +607,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -568,6 +630,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -577,6 +641,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -599,6 +665,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -608,6 +676,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -631,6 +701,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -640,6 +712,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", @@ -667,6 +741,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "foo1": "function ", diff --git a/test/DebuggerCommon/async.js.dbg.baseline b/test/DebuggerCommon/async.js.dbg.baseline index b79170c1516..2be86aa151c 100644 --- a/test/DebuggerCommon/async.js.dbg.baseline +++ b/test/DebuggerCommon/async.js.dbg.baseline @@ -83,6 +83,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "af1": "function ", diff --git a/test/DebuggerCommon/attachWithDeferParse.js.dbg.baseline b/test/DebuggerCommon/attachWithDeferParse.js.dbg.baseline index 355736451ad..c103be2a8ea 100644 --- a/test/DebuggerCommon/attachWithDeferParse.js.dbg.baseline +++ b/test/DebuggerCommon/attachWithDeferParse.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " @@ -21,6 +23,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " @@ -29,6 +33,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " @@ -62,6 +68,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " @@ -70,6 +78,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " @@ -117,6 +127,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "inEvalFunc1": "function " diff --git a/test/DebuggerCommon/blockScopeActivationObjectCapture.js.dbg.baseline b/test/DebuggerCommon/blockScopeActivationObjectCapture.js.dbg.baseline index 00fdd632939..6a2a70b7c18 100644 --- a/test/DebuggerCommon/blockScopeActivationObjectCapture.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeActivationObjectCapture.js.dbg.baseline @@ -32,6 +32,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function " @@ -50,6 +52,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function " @@ -79,6 +83,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function " diff --git a/test/DebuggerCommon/blockScopeBasicLetConstTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeBasicLetConstTest.js.dbg.baseline index 2e9be85df31..0c63a74f7d9 100644 --- a/test/DebuggerCommon/blockScopeBasicLetConstTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeBasicLetConstTest.js.dbg.baseline @@ -93,6 +93,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -104,6 +106,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/blockScopeForTest.bug183991.js.dbg.baseline b/test/DebuggerCommon/blockScopeForTest.bug183991.js.dbg.baseline index 7a89cdccd83..f151f81c6e0 100644 --- a/test/DebuggerCommon/blockScopeForTest.bug183991.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeForTest.bug183991.js.dbg.baseline @@ -2,11 +2,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "Object {...}" }, "locals": { "y": "string x", + "read": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -22,11 +38,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "Object {...}" }, "locals": { "y": "string y", + "read": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/blockScopeFunctionDeclarationGlobalTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeFunctionDeclarationGlobalTest.js.dbg.baseline index 07d2f35e6ab..b580a2c8613 100644 --- a/test/DebuggerCommon/blockScopeFunctionDeclarationGlobalTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeFunctionDeclarationGlobalTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "undefined undefined" } @@ -10,12 +12,16 @@ "this": "Object {...}", "locals": { "f": "function function f() { }", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" } }, { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "function function f() { }" } diff --git a/test/DebuggerCommon/blockScopeGlobalBlockTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeGlobalBlockTest.js.dbg.baseline index 1dc238488d4..052b776721a 100644 --- a/test/DebuggerCommon/blockScopeGlobalBlockTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeGlobalBlockTest.js.dbg.baseline @@ -2,11 +2,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" }, "locals": { "b": "number 2", "a": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -28,6 +44,8 @@ "this": "Object {...}", "locals": { "a": "number 1", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" } } diff --git a/test/DebuggerCommon/blockScopeGlobalDeadZoneTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeGlobalDeadZoneTest.js.dbg.baseline index 031af98aa26..18ed0fb6005 100644 --- a/test/DebuggerCommon/blockScopeGlobalDeadZoneTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeGlobalDeadZoneTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "undefined undefined" } @@ -9,6 +11,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "number 0" } @@ -17,6 +21,8 @@ "this": "Object {...}", "locals": { "b": "number 1", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "number 0" } @@ -26,6 +32,8 @@ "locals": { "b": "number 1", "c": "number 2", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "number 0" } diff --git a/test/DebuggerCommon/blockScopeGlobalSlotArrayTest.bug222631.js.dbg.baseline b/test/DebuggerCommon/blockScopeGlobalSlotArrayTest.bug222631.js.dbg.baseline index 50fb73d3a28..1350edf029d 100644 --- a/test/DebuggerCommon/blockScopeGlobalSlotArrayTest.bug222631.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeGlobalSlotArrayTest.bug222631.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "c": "function " }, @@ -20,6 +22,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "c": "function " } @@ -27,6 +31,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "c": "function " }, @@ -34,6 +40,20 @@ "b": "string level2", "a": "string level2level3", "e": "string level1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/blockScopeGlobalTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeGlobalTest.js.dbg.baseline index 43b718f2375..7ccef065607 100644 --- a/test/DebuggerCommon/blockScopeGlobalTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeGlobalTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeGlobalTestFunc": "function " }, @@ -16,6 +18,8 @@ "gConstB": "number 2", "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeGlobalTestFunc": "function " } @@ -23,6 +27,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "gC": "number 3", "gD": "number 4", @@ -41,6 +47,8 @@ "gD": "number 4", "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeGlobalTestFunc": "function " } diff --git a/test/DebuggerCommon/blockScopeNestedFunctionTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeNestedFunctionTest.js.dbg.baseline index 23bb0997382..77b8565c4b7 100644 --- a/test/DebuggerCommon/blockScopeNestedFunctionTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeNestedFunctionTest.js.dbg.baseline @@ -22,6 +22,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " }, @@ -50,6 +52,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " } @@ -57,6 +61,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " }, @@ -85,6 +91,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " } @@ -92,6 +100,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " }, @@ -116,6 +126,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " } @@ -123,6 +135,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " }, @@ -147,6 +161,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " } @@ -154,6 +170,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " }, @@ -182,6 +200,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeNestedFunctionTestFunc": "function " } diff --git a/test/DebuggerCommon/blockScopeSlotArrayCapture.js.dbg.baseline b/test/DebuggerCommon/blockScopeSlotArrayCapture.js.dbg.baseline index 3d0a5d35399..48dfb0048cc 100644 --- a/test/DebuggerCommon/blockScopeSlotArrayCapture.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeSlotArrayCapture.js.dbg.baseline @@ -32,6 +32,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", @@ -51,6 +53,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", @@ -77,6 +81,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", diff --git a/test/DebuggerCommon/blockScopeSlotArrayCaptureAttach.js.dbg.baseline b/test/DebuggerCommon/blockScopeSlotArrayCaptureAttach.js.dbg.baseline index 6a38d57117c..f3c237c020c 100644 --- a/test/DebuggerCommon/blockScopeSlotArrayCaptureAttach.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeSlotArrayCaptureAttach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", @@ -38,6 +40,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", @@ -57,6 +61,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", @@ -83,6 +89,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "verify": "function function verify(){}", "Run": "function ", diff --git a/test/DebuggerCommon/blockScopeSlotArrayTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeSlotArrayTest.js.dbg.baseline index fefae82ee3e..722133c1040 100644 --- a/test/DebuggerCommon/blockScopeSlotArrayTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeSlotArrayTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "g": "function " @@ -18,6 +20,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "g": "function " diff --git a/test/DebuggerCommon/blockScopeTryCatchTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeTryCatchTest.js.dbg.baseline index 6ca84d0c5fc..c760c988923 100644 --- a/test/DebuggerCommon/blockScopeTryCatchTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeTryCatchTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeTryCatchTestFunc": "function " }, @@ -19,6 +21,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeTryCatchTestFunc": "function " } @@ -26,6 +30,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeTryCatchTestFunc": "function " }, @@ -45,6 +51,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeTryCatchTestFunc": "function " } diff --git a/test/DebuggerCommon/blockScopeWithTest.js.dbg.baseline b/test/DebuggerCommon/blockScopeWithTest.js.dbg.baseline index af502054e44..24bd2853349 100644 --- a/test/DebuggerCommon/blockScopeWithTest.js.dbg.baseline +++ b/test/DebuggerCommon/blockScopeWithTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " }, @@ -25,6 +27,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " } @@ -32,6 +36,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " }, @@ -53,6 +59,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " } @@ -60,6 +68,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " }, @@ -80,6 +90,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " } @@ -87,6 +99,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " }, @@ -106,6 +120,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "blockScopeWithTestFunc": "function " } diff --git a/test/DebuggerCommon/blockscope_func_declaration_ES6.js.dbg.baseline b/test/DebuggerCommon/blockscope_func_declaration_ES6.js.dbg.baseline index a55adbb36f9..130d1d1bb3f 100644 --- a/test/DebuggerCommon/blockscope_func_declaration_ES6.js.dbg.baseline +++ b/test/DebuggerCommon/blockscope_func_declaration_ES6.js.dbg.baseline @@ -2,12 +2,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "undefined undefined", "foo": "undefined undefined", "bar": "undefined undefined" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -21,12 +37,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "foo": "function ", "bar": "function " }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/blockscope_func_expression_ES6.js.dbg.baseline b/test/DebuggerCommon/blockscope_func_expression_ES6.js.dbg.baseline index 05175ab39c5..3e9e0907dc6 100644 --- a/test/DebuggerCommon/blockscope_func_expression_ES6.js.dbg.baseline +++ b/test/DebuggerCommon/blockscope_func_expression_ES6.js.dbg.baseline @@ -2,11 +2,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "undefined undefined", "bar": "undefined undefined" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -19,11 +35,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "bar": "function " }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/blockscope_func_insidescopes.js.dbg.baseline b/test/DebuggerCommon/blockscope_func_insidescopes.js.dbg.baseline index 8bf59b0cf08..1f0f9c9109a 100644 --- a/test/DebuggerCommon/blockscope_func_insidescopes.js.dbg.baseline +++ b/test/DebuggerCommon/blockscope_func_insidescopes.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -22,6 +24,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -29,6 +33,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -60,6 +66,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -67,6 +75,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -98,6 +108,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } @@ -105,6 +117,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " }, @@ -136,6 +150,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function " } diff --git a/test/DebuggerCommon/breakpoints.js.dbg.baseline b/test/DebuggerCommon/breakpoints.js.dbg.baseline index 58df85b8e91..9132390bc98 100644 --- a/test/DebuggerCommon/breakpoints.js.dbg.baseline +++ b/test/DebuggerCommon/breakpoints.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "function " }, @@ -23,6 +25,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "function " } @@ -46,6 +50,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "function " }, @@ -67,6 +73,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f": "function " } diff --git a/test/DebuggerCommon/bug_177146.js.dbg.baseline b/test/DebuggerCommon/bug_177146.js.dbg.baseline index b8da35441ad..305b40b99b6 100644 --- a/test/DebuggerCommon/bug_177146.js.dbg.baseline +++ b/test/DebuggerCommon/bug_177146.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " @@ -19,6 +21,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " diff --git a/test/DebuggerCommon/bug_291582.js.dbg.baseline b/test/DebuggerCommon/bug_291582.js.dbg.baseline index 1da1ddc84a8..0018d74506f 100644 --- a/test/DebuggerCommon/bug_291582.js.dbg.baseline +++ b/test/DebuggerCommon/bug_291582.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "number 1", "x": "undefined undefined" diff --git a/test/DebuggerCommon/bug_592506.js.dbg.baseline b/test/DebuggerCommon/bug_592506.js.dbg.baseline index 3553bd8846b..a1c9eb91a15 100644 --- a/test/DebuggerCommon/bug_592506.js.dbg.baseline +++ b/test/DebuggerCommon/bug_592506.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "bar": "function " @@ -18,6 +20,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "bar": "function " @@ -31,6 +35,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "bar": "function ", @@ -48,6 +54,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/bug_622304.js.dbg.baseline b/test/DebuggerCommon/bug_622304.js.dbg.baseline index 7363cc0a3b8..4c7aa7afb8f 100644 --- a/test/DebuggerCommon/bug_622304.js.dbg.baseline +++ b/test/DebuggerCommon/bug_622304.js.dbg.baseline @@ -7,6 +7,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function " }, @@ -23,6 +25,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function " } diff --git a/test/DebuggerCommon/bug_os_2946365.js.dbg.baseline b/test/DebuggerCommon/bug_os_2946365.js.dbg.baseline index c6cc31b40a0..65ff319d725 100644 --- a/test/DebuggerCommon/bug_os_2946365.js.dbg.baseline +++ b/test/DebuggerCommon/bug_os_2946365.js.dbg.baseline @@ -8,6 +8,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -84,6 +98,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -95,6 +111,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/catchInspection.js.dbg.baseline b/test/DebuggerCommon/catchInspection.js.dbg.baseline index af516fb526f..86987783ce5 100644 --- a/test/DebuggerCommon/catchInspection.js.dbg.baseline +++ b/test/DebuggerCommon/catchInspection.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -39,6 +41,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -58,6 +62,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -95,6 +101,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -114,6 +122,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -155,6 +165,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -174,6 +186,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -201,6 +215,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -220,6 +236,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -256,6 +274,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -275,6 +295,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -312,6 +334,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -331,6 +355,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -368,6 +394,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -387,6 +415,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -420,6 +450,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -439,6 +471,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -472,6 +506,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -491,6 +527,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -524,6 +562,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -543,6 +583,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -577,6 +619,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -596,6 +640,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -619,6 +665,20 @@ "number": "number -2146823279", "stack": "string " }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -792,6 +852,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -825,6 +887,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -866,6 +930,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -893,6 +959,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -940,6 +1008,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", @@ -970,6 +1040,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "bar": "function ", "bar2": "function ", diff --git a/test/DebuggerCommon/detachBasicTest.js.dbg.baseline b/test/DebuggerCommon/detachBasicTest.js.dbg.baseline index 9008513adca..c5997ad82d7 100644 --- a/test/DebuggerCommon/detachBasicTest.js.dbg.baseline +++ b/test/DebuggerCommon/detachBasicTest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "detachBasicTest": "function " }, @@ -17,6 +19,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "detachBasicTest": "function " } diff --git a/test/DebuggerCommon/es6_forof_decl-2.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl-2.js.dbg.baseline index c52c0a8924e..26e04c26c34 100644 --- a/test/DebuggerCommon/es6_forof_decl-2.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl-2.js.dbg.baseline @@ -3,18 +3,36 @@ "this": "Object {...}", "locals": { "x": "number 1", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}" } }, { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -25,12 +43,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/es6_forof_decl-3.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl-3.js.dbg.baseline index 9e867b83c81..b998a57a18d 100644 --- a/test/DebuggerCommon/es6_forof_decl-3.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl-3.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } @@ -9,11 +11,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 0" }, "locals": { "z": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -25,11 +43,27 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/es6_forof_decl-4.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl-4.js.dbg.baseline index 9c1533b2b25..ca4a5c93b7e 100644 --- a/test/DebuggerCommon/es6_forof_decl-4.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl-4.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "y": "number 2", @@ -9,6 +11,20 @@ }, "locals": { "y": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -26,6 +42,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "y": "number 2", @@ -33,6 +51,20 @@ }, "locals": { "y": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/es6_forof_decl-5.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl-5.js.dbg.baseline index e4f2b8890ee..acd997c91d4 100644 --- a/test/DebuggerCommon/es6_forof_decl-5.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl-5.js.dbg.baseline @@ -3,6 +3,8 @@ "this": "Object {...}", "locals": { "x": "string ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" } @@ -10,12 +12,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, "locals": { "y": "string ", "x": "number 0", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -27,6 +45,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -34,6 +54,20 @@ "z": "number 1", "y": "number 0", "x": "number 0", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -45,6 +79,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -52,6 +88,20 @@ "z": "number 1", "y": "number 1", "x": "number 0", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -63,6 +113,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -70,6 +122,20 @@ "z": "number 1", "y": "number 2", "x": "number 0", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -81,12 +147,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, "locals": { "y": "string ", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -98,6 +180,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -105,6 +189,20 @@ "z": "number 1", "y": "number 0", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -116,6 +214,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -123,6 +223,20 @@ "z": "number 1", "y": "number 1", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -134,6 +248,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -141,6 +257,20 @@ "z": "number 1", "y": "number 2", "x": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -152,12 +282,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, "locals": { "y": "string ", "x": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -169,6 +315,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -176,6 +324,20 @@ "z": "number 1", "y": "number 0", "x": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -187,6 +349,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -194,6 +358,20 @@ "z": "number 1", "y": "number 1", "x": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -205,6 +383,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "q": "number 1" }, @@ -212,6 +392,20 @@ "z": "number 1", "y": "number 2", "x": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/es6_forof_decl-6.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl-6.js.dbg.baseline index 14c3c8a0d01..3bdb90e126c 100644 --- a/test/DebuggerCommon/es6_forof_decl-6.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl-6.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } @@ -9,12 +11,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "y": "number 0" }, "locals": { "z": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -27,12 +45,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1", "y": "number 1" }, "locals": { "z": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/es6_forof_decl.js.dbg.baseline b/test/DebuggerCommon/es6_forof_decl.js.dbg.baseline index d709e345447..8f4d8484904 100644 --- a/test/DebuggerCommon/es6_forof_decl.js.dbg.baseline +++ b/test/DebuggerCommon/es6_forof_decl.js.dbg.baseline @@ -3,6 +3,8 @@ "this": "Object {...}", "locals": { "y": "string ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" } @@ -10,12 +12,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "y": "number 0", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -27,12 +45,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "y": "number 1", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -44,12 +78,28 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "x": "number 1" }, "locals": { "z": "number 1", "y": "number 2", + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/evaluate.js.dbg.baseline b/test/DebuggerCommon/evaluate.js.dbg.baseline index 5c3b914c39d..fbe0b76326b 100644 --- a/test/DebuggerCommon/evaluate.js.dbg.baseline +++ b/test/DebuggerCommon/evaluate.js.dbg.baseline @@ -108,6 +108,8 @@ "evaluate": { " this ": { "telemetryLog": "function function telemetryLog() { [native code] }", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "not_used": "number 0" } @@ -162,6 +164,8 @@ "evaluate": { " this ": { "telemetryLog": "function function telemetryLog() { [native code] }", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "not_used": "number 0" } diff --git a/test/DebuggerCommon/funcExprCrash_150491.js.dbg.baseline b/test/DebuggerCommon/funcExprCrash_150491.js.dbg.baseline index 6f7eb59fd5c..10d6a67de5b 100644 --- a/test/DebuggerCommon/funcExprCrash_150491.js.dbg.baseline +++ b/test/DebuggerCommon/funcExprCrash_150491.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Pass": "function ", "test": "function ", @@ -32,6 +34,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Pass": "function ", "test": "function ", diff --git a/test/DebuggerCommon/funcExprName.js.dbg.baseline b/test/DebuggerCommon/funcExprName.js.dbg.baseline index 3101bf010ce..6db657880f0 100644 --- a/test/DebuggerCommon/funcExprName.js.dbg.baseline +++ b/test/DebuggerCommon/funcExprName.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -27,6 +29,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -35,6 +39,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -68,6 +74,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -76,6 +84,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -93,6 +103,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -101,6 +113,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -126,6 +140,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -134,6 +150,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " @@ -159,6 +177,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "outer": "function " diff --git a/test/DebuggerCommon/funcSource.js.dbg.baseline b/test/DebuggerCommon/funcSource.js.dbg.baseline index 54de2808a05..973a859a5f4 100644 --- a/test/DebuggerCommon/funcSource.js.dbg.baseline +++ b/test/DebuggerCommon/funcSource.js.dbg.baseline @@ -50,6 +50,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function DumpFunctionPosition", "RequestAsyncBreak": "function RequestAsyncBreak", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -61,6 +63,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function function() {\n [native code]\n}", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/getterInspection.js.dbg.baseline b/test/DebuggerCommon/getterInspection.js.dbg.baseline index b7f9e019ab4..3d2b8c8327c 100644 --- a/test/DebuggerCommon/getterInspection.js.dbg.baseline +++ b/test/DebuggerCommon/getterInspection.js.dbg.baseline @@ -30,6 +30,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function " } @@ -70,6 +72,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "test": "function " } diff --git a/test/DebuggerCommon/globalFuncVars.js.dbg.baseline b/test/DebuggerCommon/globalFuncVars.js.dbg.baseline index cebf02d0943..76449079caa 100644 --- a/test/DebuggerCommon/globalFuncVars.js.dbg.baseline +++ b/test/DebuggerCommon/globalFuncVars.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -9,6 +11,20 @@ "c": "undefined undefined" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -37,6 +53,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -51,6 +69,20 @@ "number": "number -2146823279", "stack": "string " }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -79,6 +111,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -86,6 +120,20 @@ "c": "number 10" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/indexprop.js.dbg.baseline b/test/DebuggerCommon/indexprop.js.dbg.baseline index 42a9dcddd60..72c23004f12 100644 --- a/test/DebuggerCommon/indexprop.js.dbg.baseline +++ b/test/DebuggerCommon/indexprop.js.dbg.baseline @@ -151,6 +151,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -162,6 +164,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -171,10 +187,26 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "[200]": "string 200" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/jit_exprEval1.js.dbg.baseline b/test/DebuggerCommon/jit_exprEval1.js.dbg.baseline index cfe9cebca54..98549bc0941 100644 --- a/test/DebuggerCommon/jit_exprEval1.js.dbg.baseline +++ b/test/DebuggerCommon/jit_exprEval1.js.dbg.baseline @@ -10,6 +10,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -40,6 +42,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -70,6 +74,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -103,6 +109,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -146,6 +154,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -176,6 +186,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -206,6 +218,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -239,6 +253,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -287,6 +303,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -307,6 +325,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -332,6 +352,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", @@ -354,6 +376,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F2": "function ", "F3": "function ", diff --git a/test/DebuggerCommon/multiple_argumentsdisp_safeguard.js.dbg.baseline b/test/DebuggerCommon/multiple_argumentsdisp_safeguard.js.dbg.baseline index b8da35441ad..305b40b99b6 100644 --- a/test/DebuggerCommon/multiple_argumentsdisp_safeguard.js.dbg.baseline +++ b/test/DebuggerCommon/multiple_argumentsdisp_safeguard.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " @@ -19,6 +21,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "F1": "function ", "F2": "function " diff --git a/test/DebuggerCommon/negzerotest.js.dbg.baseline b/test/DebuggerCommon/negzerotest.js.dbg.baseline index 014b8919f68..b2bdcb60a1d 100644 --- a/test/DebuggerCommon/negzerotest.js.dbg.baseline +++ b/test/DebuggerCommon/negzerotest.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": "Object {...}", "locals": { + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "y": "number 0" } diff --git a/test/DebuggerCommon/returnedvaluetests2.js.dbg.baseline b/test/DebuggerCommon/returnedvaluetests2.js.dbg.baseline index 06bee967a5b..c712eb2d58a 100644 --- a/test/DebuggerCommon/returnedvaluetests2.js.dbg.baseline +++ b/test/DebuggerCommon/returnedvaluetests2.js.dbg.baseline @@ -19,6 +19,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "A": "function ", "test1": "function ", @@ -52,6 +54,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "A": "function ", "test1": "function ", @@ -64,6 +68,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "A": "function ", "test1": "function ", @@ -91,6 +97,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "A": "function ", "test1": "function ", diff --git a/test/DebuggerCommon/setframe.js.dbg.baseline b/test/DebuggerCommon/setframe.js.dbg.baseline index a2a4e80c4c7..73c948b979b 100644 --- a/test/DebuggerCommon/setframe.js.dbg.baseline +++ b/test/DebuggerCommon/setframe.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -21,6 +23,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -30,6 +34,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -59,6 +65,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -68,6 +76,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -87,6 +97,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -134,6 +146,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -163,6 +177,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -172,6 +188,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", @@ -191,6 +209,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "FFF": "function ", "HHH": "function ", diff --git a/test/DebuggerCommon/shadow_with.js.dbg.baseline b/test/DebuggerCommon/shadow_with.js.dbg.baseline index ad66b7ed323..3af0cefc111 100644 --- a/test/DebuggerCommon/shadow_with.js.dbg.baseline +++ b/test/DebuggerCommon/shadow_with.js.dbg.baseline @@ -2,10 +2,26 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "a": "number 1" }, "locals": { + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/step_in_ES6_attach.js.dbg.baseline b/test/DebuggerCommon/step_in_ES6_attach.js.dbg.baseline index fcee4f5246d..790db102633 100644 --- a/test/DebuggerCommon/step_in_ES6_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_in_ES6_attach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -21,6 +23,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -31,6 +35,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -55,6 +61,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -65,6 +73,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -89,6 +99,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_in_from_interpreted_function_attach.js.dbg.baseline b/test/DebuggerCommon/step_in_from_interpreted_function_attach.js.dbg.baseline index 05b785786fa..b488659c673 100644 --- a/test/DebuggerCommon/step_in_from_interpreted_function_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_in_from_interpreted_function_attach.js.dbg.baseline @@ -30,6 +30,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -256,6 +270,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -267,6 +283,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/step_out_ES6.js.dbg.baseline b/test/DebuggerCommon/step_out_ES6.js.dbg.baseline index f088b79d3e8..0526cd83836 100644 --- a/test/DebuggerCommon/step_out_ES6.js.dbg.baseline +++ b/test/DebuggerCommon/step_out_ES6.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -19,6 +21,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -28,6 +32,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -45,6 +51,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_out_direct_attach.js.dbg.baseline b/test/DebuggerCommon/step_out_direct_attach.js.dbg.baseline index 1ce928ba499..aa37b961e94 100644 --- a/test/DebuggerCommon/step_out_direct_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_out_direct_attach.js.dbg.baseline @@ -18,6 +18,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -41,6 +43,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -59,6 +63,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -89,6 +95,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -113,6 +121,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -136,6 +146,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -154,6 +166,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " @@ -184,6 +198,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "Run": "function ", "bar": "function " diff --git a/test/DebuggerCommon/step_out_from_JITted_function_attach.js.dbg.baseline b/test/DebuggerCommon/step_out_from_JITted_function_attach.js.dbg.baseline index 30ee4440121..cf96671199f 100644 --- a/test/DebuggerCommon/step_out_from_JITted_function_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_out_from_JITted_function_attach.js.dbg.baseline @@ -24,6 +24,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -48,6 +50,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_out_from_catch_attach.js.dbg.baseline b/test/DebuggerCommon/step_out_from_catch_attach.js.dbg.baseline index ad676957b1f..763f8470914 100644 --- a/test/DebuggerCommon/step_out_from_catch_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_out_from_catch_attach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -26,6 +28,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_out_from_interpreted_function_attach.js.dbg.baseline b/test/DebuggerCommon/step_out_from_interpreted_function_attach.js.dbg.baseline index d325d29d98e..31bad0dc68d 100644 --- a/test/DebuggerCommon/step_out_from_interpreted_function_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_out_from_interpreted_function_attach.js.dbg.baseline @@ -30,6 +30,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -49,6 +51,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -82,6 +86,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -114,6 +120,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -125,6 +133,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -154,6 +164,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_over_ES6_attach.js.dbg.baseline b/test/DebuggerCommon/step_over_ES6_attach.js.dbg.baseline index cb8c0b4b4ef..89a3a889d86 100644 --- a/test/DebuggerCommon/step_over_ES6_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_over_ES6_attach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -20,6 +22,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/step_over_JITd_fn_from_Intrprt_fn_attach.js.dbg.baseline b/test/DebuggerCommon/step_over_JITd_fn_from_Intrprt_fn_attach.js.dbg.baseline index 8fdc4f30940..89b237f10fb 100644 --- a/test/DebuggerCommon/step_over_JITd_fn_from_Intrprt_fn_attach.js.dbg.baseline +++ b/test/DebuggerCommon/step_over_JITd_fn_from_Intrprt_fn_attach.js.dbg.baseline @@ -2,6 +2,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", @@ -27,6 +29,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "foo": "function ", "bar": "function ", diff --git a/test/DebuggerCommon/stringkeyedtypehandler.js.dbg.baseline b/test/DebuggerCommon/stringkeyedtypehandler.js.dbg.baseline index a11a8554928..66f3865bc36 100644 --- a/test/DebuggerCommon/stringkeyedtypehandler.js.dbg.baseline +++ b/test/DebuggerCommon/stringkeyedtypehandler.js.dbg.baseline @@ -68,6 +68,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -79,6 +81,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" diff --git a/test/DebuggerCommon/targeted.js.dbg.baseline b/test/DebuggerCommon/targeted.js.dbg.baseline index c5d28c0390f..5a5af71c5a0 100644 --- a/test/DebuggerCommon/targeted.js.dbg.baseline +++ b/test/DebuggerCommon/targeted.js.dbg.baseline @@ -46,6 +46,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -156,6 +170,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -167,6 +183,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -254,6 +284,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -364,6 +408,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -375,6 +421,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -462,6 +522,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -572,6 +646,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -583,6 +659,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -670,6 +760,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -780,6 +884,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -791,6 +897,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -878,6 +998,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -988,6 +1122,8 @@ "Detach": "function Detach", "DumpFunctionPosition": "function ", "RequestAsyncBreak": "function ", + "LoadBinaryFile": "function LoadBinaryFile", + "LoadTextFile": "function LoadTextFile", "Edit": "function Edit", "Platform": "Object {...}", "Arguments": "Array []" @@ -999,6 +1135,20 @@ "caller": "object null", "arguments": "object null" }, + "read": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string read", + "caller": "object null", + "arguments": "object null" + }, + "readbuffer": { + "#__proto__": "function ", + "prototype": "Object {...}", + "name": "string readbuffer", + "caller": "object null", + "arguments": "object null" + }, "console": { "#__proto__": "Object {...}", "log": "function log" @@ -1042,6 +1192,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "g": "function ", "f": "function ", @@ -1063,6 +1215,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "g": "function ", "f": "function ", @@ -1075,6 +1229,8 @@ { "this": { "telemetryLog": "function ", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "g": "function ", "f": "function ", @@ -1096,6 +1252,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "g": "function ", "f": "function ", diff --git a/test/DebuggerCommon/with_shadow.js.dbg.baseline b/test/DebuggerCommon/with_shadow.js.dbg.baseline index d12bdb6071c..cca25da5fcb 100644 --- a/test/DebuggerCommon/with_shadow.js.dbg.baseline +++ b/test/DebuggerCommon/with_shadow.js.dbg.baseline @@ -78,6 +78,8 @@ "globals": { "WScript": "Object {...}", "print": "function print", + "read": "function read", + "readbuffer": "function readbuffer", "console": "Object {...}", "f1": "function " } diff --git a/test/Error/rlexe.xml b/test/Error/rlexe.xml index 9e40f9a1366..a209a1fa7fb 100644 --- a/test/Error/rlexe.xml +++ b/test/Error/rlexe.xml @@ -171,10 +171,4 @@ -ExtendedErrorStackForTestHost -force:DeferParse - - - useruncaught.js - useruncaught.baseline - - diff --git a/test/Error/useruncaught.baseline b/test/Error/useruncaught.baseline deleted file mode 100644 index 6bdd4bf7ade..00000000000 --- a/test/Error/useruncaught.baseline +++ /dev/null @@ -1,3 +0,0 @@ -TypeError: Unable to get property 'prop5' of undefined or null reference - at func12() (useruncaught.js:9:3) - at Global code (useruncaught.js:11:1) diff --git a/test/LetConst/p.baseline b/test/LetConst/p.baseline index 08dd71b9da9..f3e9e9fda4f 100644 --- a/test/LetConst/p.baseline +++ b/test/LetConst/p.baseline @@ -1,10 +1,14 @@ WScript print +read +readbuffer console 10 20 10 WScript print +read +readbuffer console a diff --git a/test/LetConst/q.baseline b/test/LetConst/q.baseline index 5606123f86e..8666b4c2724 100644 --- a/test/LetConst/q.baseline +++ b/test/LetConst/q.baseline @@ -3,6 +3,8 @@ undefined undefined WScript print +read +readbuffer console f a diff --git a/test/PerfHint/rlexe.xml b/test/PerfHint/rlexe.xml index d362ec3be04..0d3710f0ff7 100644 --- a/test/PerfHint/rlexe.xml +++ b/test/PerfHint/rlexe.xml @@ -4,7 +4,7 @@ try_with_eval_perfhint.js try_with_eval_perfhint.baseline - -enableoutofprocjit- -trace:PerfHint -off:simplejit + -oopjit- -trace:PerfHint -off:simplejit fail_mutators,exclude_dynapogo @@ -12,7 +12,7 @@ try_with_eval_perfhint.js try_with_eval_perfhint_l2.baseline - -enableoutofprocjit- -trace:PerfHint -off:simplejit -perfhintlevel:2 + -oopjit- -trace:PerfHint -off:simplejit -perfhintlevel:2 fail_mutators,exclude_dynapogo @@ -20,7 +20,7 @@ arguments1.js arguments1.baseline - -enableoutofprocjit- -trace:PerfHint -off:simplejit + -oopjit- -trace:PerfHint -off:simplejit fail_mutators,exclude_dynapogo @@ -28,7 +28,7 @@ polymorphictest.js polymorphictest.baseline - -enableoutofprocjit- -trace:PerfHint -off:simplejit + -oopjit- -trace:PerfHint -off:simplejit fail_mutators,exclude_dynapogo diff --git a/test/SIMD.bool16x8.asmjs/rlexe.xml b/test/SIMD.bool16x8.asmjs/rlexe.xml index 184920c4236..203b1a7a260 100644 --- a/test/SIMD.bool16x8.asmjs/rlexe.xml +++ b/test/SIMD.bool16x8.asmjs/rlexe.xml @@ -29,7 +29,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -68,7 +68,7 @@ testTrue.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError diff --git a/test/SIMD.bool32x4.asmjs/rlexe.xml b/test/SIMD.bool32x4.asmjs/rlexe.xml index 184920c4236..203b1a7a260 100644 --- a/test/SIMD.bool32x4.asmjs/rlexe.xml +++ b/test/SIMD.bool32x4.asmjs/rlexe.xml @@ -29,7 +29,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -68,7 +68,7 @@ testTrue.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError diff --git a/test/SIMD.bool8x16.asmjs/rlexe.xml b/test/SIMD.bool8x16.asmjs/rlexe.xml index 57a64127a67..b4b51f12e74 100644 --- a/test/SIMD.bool8x16.asmjs/rlexe.xml +++ b/test/SIMD.bool8x16.asmjs/rlexe.xml @@ -28,7 +28,7 @@ testConstructor.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -off:simplejit -maic:0 -mic:0 -AsmJsStopOnError + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -off:simplejit -mic:0 -AsmJsStopOnError @@ -45,7 +45,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -84,7 +84,7 @@ testTrue.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -123,7 +123,7 @@ bug824.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 -mic:0 + -bgjit- -asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -mic:0 diff --git a/test/SIMD.float32x4.asmjs/rlexe.xml b/test/SIMD.float32x4.asmjs/rlexe.xml index b691b05e319..0f9e7dc4045 100644 --- a/test/SIMD.float32x4.asmjs/rlexe.xml +++ b/test/SIMD.float32x4.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testAbsNeg.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -44,7 +44,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -83,7 +83,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -122,7 +122,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -159,7 +159,7 @@ testConversion.js asmjs.baseline - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError exclude_dynapogo,exclude_ship @@ -199,7 +199,7 @@ testFields.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -238,7 +238,7 @@ testInit.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -277,7 +277,7 @@ testMinMax.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -316,7 +316,7 @@ testMulDiv.js asmjs.baseline - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError exclude_dynapogo,exclude_ship @@ -356,7 +356,7 @@ testRcpSqrt.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -395,7 +395,7 @@ testSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -433,7 +433,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -472,7 +472,7 @@ testSqrt.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -510,7 +510,7 @@ testWithLane.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -543,13 +543,13 @@ -bgjit- -simdjs -asmjs- -simd128typespec -off:simplejit -mic:1 -lic:1 - + testLoadStore-2.js testLoadStore-2.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -570,14 +570,14 @@ --> - + @@ -594,7 +594,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -627,16 +627,16 @@ -bgjit- -simdjs -asmjs- -simd128typespec -off:simplejit -mic:1 -lic:1 - + testResizeLoadStore-2.js testResizeLoadStore-2.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError - + testResizeLoadStore-2.js @@ -678,7 +678,7 @@ testResizeLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -716,7 +716,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -749,13 +749,13 @@ -bgjit- -simdjs -asmjs- -simd128typespec -off:simplejit -mic:1 -lic:1 - + testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -788,13 +788,13 @@ -bgjit- -simdjs -asmjs- -simd128typespec -off:simplejit -mic:1 -lic:1 - + testSIMDLink-1.js SIMDLink.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -819,7 +819,7 @@ testSIMDLink-2.js SIMDLink.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -843,7 +843,7 @@ testSIMDLink-3.js SIMDLink.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -863,13 +863,13 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:asmjs -testtrace:asmjsInterpreter -off:fulljit -off:backend - + testMisc.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -888,7 +888,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:asmjs -testtrace:asmjsInterpreter -off:fulljit -off:backend - + testMisc.js diff --git a/test/SIMD.int16x8.asmjs/rlexe.xml b/test/SIMD.int16x8.asmjs/rlexe.xml index c8bc6820129..a31a96a7c8c 100644 --- a/test/SIMD.int16x8.asmjs/rlexe.xml +++ b/test/SIMD.int16x8.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -24,7 +24,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testCalls.js @@ -44,7 +44,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -83,7 +83,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -121,7 +121,7 @@ testMisc.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -140,7 +140,7 @@ -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testMisc.js @@ -155,13 +155,13 @@ -bgjit- -simdjs -simd128typespec -asmjs- -off:simplejit -mic:1 - + testMisc2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -172,7 +172,7 @@ -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -lic:1 - + testMisc2.js @@ -181,7 +181,7 @@ -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testMisc2.js @@ -202,7 +202,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -241,7 +241,7 @@ testAddSubSaturate.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -280,7 +280,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -319,7 +319,7 @@ testComparisonSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -358,7 +358,7 @@ testConstructorLanes.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -397,7 +397,7 @@ testConversion-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -436,7 +436,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -475,7 +475,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -514,7 +514,7 @@ testNeg.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -553,7 +553,7 @@ testShift.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -592,7 +592,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -631,7 +631,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -670,7 +670,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -702,7 +702,7 @@ exclude_dynapogo,exclude_ship -bgjit- -simdjs -simd128typespec -asmjs- -off:simplejit -mic:1 - + testBug1.js diff --git a/test/SIMD.int32x4.asmjs/rlexe.xml b/test/SIMD.int32x4.asmjs/rlexe.xml index 8473780990e..95c14a7d2eb 100644 --- a/test/SIMD.int32x4.asmjs/rlexe.xml +++ b/test/SIMD.int32x4.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -44,7 +44,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -83,7 +83,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -121,7 +121,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -161,7 +161,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -200,7 +200,7 @@ testFields.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -238,7 +238,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -276,7 +276,7 @@ testNeg.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -315,7 +315,7 @@ testSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -353,7 +353,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -392,7 +392,7 @@ testWithLane.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -431,7 +431,7 @@ testLoadStore-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -462,7 +462,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -501,7 +501,7 @@ testResizeLoadStore-2.js testResizeLoadStore-2.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -536,7 +536,7 @@ testResizeLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -577,7 +577,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -616,7 +616,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -654,7 +654,7 @@ testBool.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -687,13 +687,13 @@ -bgjit- -simdjs -simd128typespec -off:simplejit -mic:1 - + testBoolCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError diff --git a/test/SIMD.int8x16.asmjs/rlexe.xml b/test/SIMD.int8x16.asmjs/rlexe.xml index 8966e594936..d482e1aca85 100644 --- a/test/SIMD.int8x16.asmjs/rlexe.xml +++ b/test/SIMD.int8x16.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -24,7 +24,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testCalls.js @@ -44,7 +44,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -83,7 +83,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -121,7 +121,7 @@ testMisc.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError @@ -132,7 +132,7 @@ -bgjit- -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -lic:1 - + testMisc.js @@ -141,7 +141,7 @@ -on:asmjs -simdjs -testtrace:asmjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testMisc.js @@ -162,7 +162,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -201,7 +201,7 @@ testAddSubSaturate.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -240,7 +240,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -279,7 +279,7 @@ testComparisonSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -318,7 +318,7 @@ testConstructorLanes.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -357,7 +357,7 @@ testConversion-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -396,7 +396,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -435,7 +435,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -474,7 +474,7 @@ testNeg.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -513,7 +513,7 @@ testShift.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -552,7 +552,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -591,7 +591,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -630,7 +630,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -662,5 +662,5 @@ exclude_dynapogo,exclude_ship -bgjit- -simdjs -simd128typespec -asmjs- -off:simplejit -mic:1 - + diff --git a/test/SIMD.uint16x8.asmjs/rlexe.xml b/test/SIMD.uint16x8.asmjs/rlexe.xml index f82372f681c..5be74c6dae8 100644 --- a/test/SIMD.uint16x8.asmjs/rlexe.xml +++ b/test/SIMD.uint16x8.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -24,7 +24,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testCalls.js @@ -60,7 +60,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -99,7 +99,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -138,7 +138,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -177,7 +177,7 @@ testAddSubSaturate.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -216,7 +216,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -255,7 +255,7 @@ testComparisonSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -294,7 +294,7 @@ testConstructorLanes.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -333,7 +333,7 @@ testConversion-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -372,7 +372,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -411,7 +411,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -450,7 +450,7 @@ testShift.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -489,7 +489,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -528,7 +528,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -567,7 +567,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError diff --git a/test/SIMD.uint32x4.asmjs/rlexe.xml b/test/SIMD.uint32x4.asmjs/rlexe.xml index 56dceab10ba..bdba7a8d5c7 100644 --- a/test/SIMD.uint32x4.asmjs/rlexe.xml +++ b/test/SIMD.uint32x4.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -24,7 +24,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:AsmJsInterpreter -off:fulljit -off:backend - + testCalls.js @@ -44,7 +44,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -106,7 +106,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -145,7 +145,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -184,7 +184,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -223,7 +223,7 @@ testComparisonSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -262,7 +262,7 @@ testConstructorLanes.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -301,7 +301,7 @@ testConversion-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -340,7 +340,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -379,7 +379,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -418,7 +418,7 @@ testShift.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -457,7 +457,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -496,7 +496,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -535,7 +535,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -567,7 +567,7 @@ exclude_dynapogo,exclude_ship -bgjit- -simdjs -simd128typespec -asmjs- -off:simplejit -mic:1 - + + - diff --git a/test/SIMD.uint8x16.asmjs/rlexe.xml b/test/SIMD.uint8x16.asmjs/rlexe.xml index 83cf3796cd3..22684269848 100644 --- a/test/SIMD.uint8x16.asmjs/rlexe.xml +++ b/test/SIMD.uint8x16.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testCalls.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -67,7 +67,7 @@ testComparison.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -105,7 +105,7 @@ testConversion.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -144,7 +144,7 @@ testAddSub.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -183,7 +183,7 @@ testAddSubSaturate.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -222,7 +222,7 @@ testBitwise.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -261,7 +261,7 @@ testComparisonSelect.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -300,7 +300,7 @@ testConstructorLanes.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -339,7 +339,7 @@ testConversion-2.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -378,7 +378,7 @@ testLoadStore.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -417,7 +417,7 @@ testMul.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -456,7 +456,7 @@ testShift.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -495,7 +495,7 @@ testShuffle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -534,7 +534,7 @@ testSplat.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -573,7 +573,7 @@ testSwizzle.js asmjs.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -605,5 +605,5 @@ exclude_dynapogo,exclude_ship -bgjit- -simdjs -simd128typespec -asmjs- -off:simplejit -mic:1 - + diff --git a/test/SIMD.workloads.asmjs/rlexe.xml b/test/SIMD.workloads.asmjs/rlexe.xml index cfaf01b600d..c2fa5170d26 100644 --- a/test/SIMD.workloads.asmjs/rlexe.xml +++ b/test/SIMD.workloads.asmjs/rlexe.xml @@ -5,7 +5,7 @@ testReverseHeap.js testReverseHeap.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -43,7 +43,7 @@ testMerge.js testMerge.baseline - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError exclude_dynapogo,exclude_ship @@ -82,7 +82,7 @@ testScale.js testScale.baseline - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError exclude_dynapogo,exclude_ship @@ -121,7 +121,7 @@ testLinearSearch.js testLinearSearch.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -140,7 +140,7 @@ -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -on:asmjs -testtrace:asmjsInterpreter -off:fulljit -off:backend - + testLinearSearch.js @@ -162,7 +162,7 @@ test2DMatrixAddition.js test2DMatrixAddition.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -201,7 +201,7 @@ test2DMatrixSubtraction.js test2DMatrixSubtraction.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError @@ -240,7 +240,7 @@ test2DMatrixMultiplication.js test2DMatrixMultiplication.baseline exclude_dynapogo,exclude_ship - -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError -maic:0 + -bgjit- -on:asmjs -testtrace:asmjs -simdjs -AsmJsStopOnError diff --git a/test/UnifiedRegex/rlexe.xml b/test/UnifiedRegex/rlexe.xml index 7b1fb2b9278..a127efe441a 100644 --- a/test/UnifiedRegex/rlexe.xml +++ b/test/UnifiedRegex/rlexe.xml @@ -129,7 +129,7 @@ WOOB1138949.js WOOB1138949.baseline - exclude_chk + exclude_chk,Slow diff --git a/test/WasmSpec/baselines/address.baseline b/test/WasmSpec/baselines/address.baseline new file mode 100644 index 00000000000..8d9c910317d --- /dev/null +++ b/test/WasmSpec/baselines/address.baseline @@ -0,0 +1,32 @@ +97 +98 +99 +122 +25185 +25185 +25442 +25699 +122 +1684234849 +1701077858 +1717920867 +122 +$action_0 = undefined +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +$action_1 = undefined +address.wast:32: $assert_trap_2 failed, runtime trap NYI +address.wast:33: $assert_trap_3 failed, runtime trap NYI +address.wast:34: $assert_trap_4 failed, runtime trap NYI +0/3 tests passed. diff --git a/test/WasmSpec/baselines/binary.baseline b/test/WasmSpec/baselines/binary.baseline new file mode 100644 index 00000000000..c5ec95845d8 --- /dev/null +++ b/test/WasmSpec/baselines/binary.baseline @@ -0,0 +1 @@ +0/0 tests passed. diff --git a/test/WasmSpec/baselines/block.baseline b/test/WasmSpec/baselines/block.baseline new file mode 100644 index 00000000000..13aa2d6addc --- /dev/null +++ b/test/WasmSpec/baselines/block.baseline @@ -0,0 +1 @@ +14/14 tests passed. diff --git a/test/WasmSpec/baselines/br.baseline b/test/WasmSpec/baselines/br.baseline new file mode 100644 index 00000000000..c7acd5dd96a --- /dev/null +++ b/test/WasmSpec/baselines/br.baseline @@ -0,0 +1,11 @@ +br.wast:285: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function type-i64[2] at offset 6/9: Operator I64Ctz NYI +br.wast:290: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[64] at offset 3/7: I64 return type NYI +br.wast:292: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[66] at offset 4/16: Operator I64ReinterpretF64 NYI +br.wast:313: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[81] at offset 3/7: I64 return type NYI +br.wast:339: $assert_return_42 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_42[101] at offset 3/7: I64 return type NYI +br.wast:342: $assert_return_44 unexpectedly threw: Error: Compiling wasm failed: function as-store-value[42] at offset 12/16: Operator I64StoreMem NYI +br.wast:344: $assert_return_46 unexpectedly threw: Error: Compiling wasm failed: function as-storeN-value[44] at offset 12/16: Operator I64StoreMem16 NYI +br.wast:349: $assert_return_49 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_49[108] at offset 3/7: I64 return type NYI +br.wast:356: $assert_return_53 unexpectedly threw: Error: Compiling wasm failed: function as-convert-operand[51] at offset 8/10: Operator I32ConvertI64 NYI +br.wast:358: $assert_return_54 unexpectedly threw: Error: Compiling wasm failed: function as-grow_memory-size[52] at offset 8/10: Operator GrowMemory NYI +51/61 tests passed. diff --git a/test/WasmSpec/baselines/br_if.baseline b/test/WasmSpec/baselines/br_if.baseline new file mode 100644 index 00000000000..5cd6a07e20e --- /dev/null +++ b/test/WasmSpec/baselines/br_if.baseline @@ -0,0 +1 @@ +34/34 tests passed. diff --git a/test/WasmSpec/baselines/br_table.baseline b/test/WasmSpec/baselines/br_table.baseline new file mode 100644 index 00000000000..180bbbe712f --- /dev/null +++ b/test/WasmSpec/baselines/br_table.baseline @@ -0,0 +1,11 @@ +br_table.wast:1202: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function type-i64[2] at offset 10/13: Operator I64Ctz NYI +br_table.wast:1207: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[71] at offset 3/7: I64 return type NYI +br_table.wast:1209: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[73] at offset 4/16: Operator I64ReinterpretF64 NYI +br_table.wast:1289: $assert_return_74 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_74[140] at offset 3/7: I64 return type NYI +br_table.wast:1315: $assert_return_94 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_94[160] at offset 3/7: I64 return type NYI +br_table.wast:1318: $assert_return_96 unexpectedly threw: Error: Compiling wasm failed: function as-store-value[49] at offset 15/19: Operator I64StoreMem NYI +br_table.wast:1320: $assert_return_98 unexpectedly threw: Error: Compiling wasm failed: function as-storeN-value[51] at offset 15/19: Operator I64StoreMem16 NYI +br_table.wast:1325: $assert_return_101 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_101[167] at offset 3/7: I64 return type NYI +br_table.wast:1332: $assert_return_105 unexpectedly threw: Error: Compiling wasm failed: function as-convert-operand[58] at offset 11/13: Operator I32ConvertI64 NYI +br_table.wast:1334: $assert_return_106 unexpectedly threw: Error: Compiling wasm failed: function as-grow_memory-size[59] at offset 11/13: Operator GrowMemory NYI +133/143 tests passed. diff --git a/test/WasmSpec/baselines/break-drop.baseline b/test/WasmSpec/baselines/break-drop.baseline new file mode 100644 index 00000000000..d1c36ba9fe5 --- /dev/null +++ b/test/WasmSpec/baselines/break-drop.baseline @@ -0,0 +1 @@ +3/3 tests passed. diff --git a/test/WasmSpec/baselines/call.baseline b/test/WasmSpec/baselines/call.baseline new file mode 100644 index 00000000000..fa81f093110 --- /dev/null +++ b/test/WasmSpec/baselines/call.baseline @@ -0,0 +1,30 @@ +call.wast:103: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[33] at offset 3/8: I64 return type NYI +call.wast:105: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[35] at offset 4/16: Operator I64ReinterpretF64 NYI +call.wast:108: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[37] at offset 3/8: I64 return type NYI +call.wast:110: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[39] at offset 4/16: Operator I64ReinterpretF64 NYI +call.wast:113: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[41] at offset 3/8: I64 return type NYI +call.wast:115: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_11[43] at offset 4/16: Operator I64ReinterpretF64 NYI +call.wast:117: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[44] at offset 3/9: Operator I64Const NYI +call.wast:118: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[45] at offset 3/9: Operator I64Const NYI +call.wast:119: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[46] at offset 3/10: Operator I64Const NYI +call.wast:120: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[47] at offset 3/18: Operator I64Const NYI +call.wast:121: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[48] at offset 3/11: Operator I64Const NYI +call.wast:122: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[49] at offset 3/11: Operator I64Const NYI +call.wast:123: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[50] at offset 3/12: Operator I64Const NYI +call.wast:125: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[51] at offset 3/20: Operator I64Const NYI +call.wast:129: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[52] at offset 3/9: Operator I64Const NYI +call.wast:130: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[53] at offset 3/9: Operator I64Const NYI +call.wast:131: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[54] at offset 3/9: Operator I64Const NYI +call.wast:132: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[55] at offset 3/9: Operator I64Const NYI +call.wast:133: $assert_return_24 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_24[56] at offset 3/11: Operator I64Const NYI +call.wast:135: $assert_return_25 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_25[57] at offset 3/9: Operator I64Const NYI +call.wast:136: $assert_return_26 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_26[58] at offset 3/10: Operator I64Const NYI +call.wast:137: $assert_return_27 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_27[59] at offset 4/10: Operator I64Const NYI +call.wast:138: $assert_return_28 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_28[60] at offset 4/11: Operator I64Const NYI +call.wast:139: $assert_return_29 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_29[61] at offset 3/10: Operator I64Const NYI +call.wast:140: $assert_return_30 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_30[62] at offset 3/9: Operator I64Const NYI +call.wast:141: $assert_return_31 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_31[63] at offset 4/11: Operator I64Const NYI +call.wast:142: $assert_return_32 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_32[64] at offset 4/10: Operator I64Const NYI +call.wast:144: $assert_trap_33 failed, runtime trap NYI +call.wast:145: $assert_trap_34 failed, runtime trap NYI +6/35 tests passed. diff --git a/test/WasmSpec/baselines/comments.baseline b/test/WasmSpec/baselines/comments.baseline new file mode 100644 index 00000000000..c5ec95845d8 --- /dev/null +++ b/test/WasmSpec/baselines/comments.baseline @@ -0,0 +1 @@ +0/0 tests passed. diff --git a/test/WasmSpec/baselines/endianness.baseline b/test/WasmSpec/baselines/endianness.baseline new file mode 100644 index 00000000000..d0055281d84 --- /dev/null +++ b/test/WasmSpec/baselines/endianness.baseline @@ -0,0 +1,45 @@ +endianness.wast:148: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[35] at offset 3/9: Operator I64Const NYI +endianness.wast:149: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[36] at offset 4/11: Operator I64Const NYI +endianness.wast:150: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[37] at offset 3/9: Operator I64Const NYI +endianness.wast:151: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[38] at offset 5/13: Operator I64Const NYI +endianness.wast:153: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[39] at offset 3/11: Operator I64Const NYI +endianness.wast:154: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[40] at offset 4/12: Operator I64Const NYI +endianness.wast:155: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[41] at offset 3/9: Operator I64Const NYI +endianness.wast:156: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[42] at offset 5/13: Operator I64Const NYI +endianness.wast:158: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[43] at offset 3/9: Operator I64Const NYI +endianness.wast:159: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[44] at offset 6/15: Operator I64Const NYI +endianness.wast:160: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[45] at offset 6/15: Operator I64Const NYI +endianness.wast:161: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[46] at offset 7/17: Operator I64Const NYI +endianness.wast:163: $assert_return_24 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_24[47] at offset 3/13: Operator I64Const NYI +endianness.wast:164: $assert_return_25 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_25[48] at offset 6/16: Operator I64Const NYI +endianness.wast:165: $assert_return_26 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_26[49] at offset 6/15: Operator I64Const NYI +endianness.wast:166: $assert_return_27 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_27[50] at offset 7/17: Operator I64Const NYI +endianness.wast:168: $assert_return_28 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_28[51] at offset 3/9: Operator I64Const NYI +endianness.wast:169: $assert_return_29 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_29[52] at offset 6/15: Operator I64Const NYI +endianness.wast:170: $assert_return_30 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_30[53] at offset 7/17: Operator I64Const NYI +endianness.wast:171: $assert_return_31 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_31[54] at offset 7/27: Invalid LEB128 format +endianness.wast:178: $assert_return_36 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_36[59] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:179: $assert_return_37 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_37[60] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:180: $assert_return_38 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_38[61] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:181: $assert_return_39 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_39[62] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:194: $assert_return_48 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_48[71] at offset 3/11: Operator I64Const NYI +endianness.wast:195: $assert_return_49 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_49[72] at offset 4/12: Operator I64Const NYI +endianness.wast:196: $assert_return_50 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_50[73] at offset 3/9: Operator I64Const NYI +endianness.wast:197: $assert_return_51 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_51[74] at offset 5/13: Operator I64Const NYI +endianness.wast:199: $assert_return_52 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_52[75] at offset 3/13: Operator I64Const NYI +endianness.wast:200: $assert_return_53 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_53[76] at offset 4/14: Operator I64Const NYI +endianness.wast:201: $assert_return_54 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_54[77] at offset 6/15: Operator I64Const NYI +endianness.wast:202: $assert_return_55 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_55[78] at offset 7/17: Operator I64Const NYI +endianness.wast:204: $assert_return_56 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_56[79] at offset 3/9: Operator I64Const NYI +endianness.wast:205: $assert_return_57 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_57[80] at offset 6/15: Operator I64Const NYI +endianness.wast:206: $assert_return_58 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_58[81] at offset 7/17: Operator I64Const NYI +endianness.wast:207: $assert_return_59 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_59[82] at offset 7/27: Invalid LEB128 format +endianness.wast:209: $assert_return_60 unexpectedly threw: Error: Compiling wasm failed: function f32_store[21] at offset 13/14: Operator F32ReinterpretI32 NYI +endianness.wast:210: $assert_return_61 unexpectedly threw: Error: Compiling wasm failed: function f32_store[21] at offset 13/14: Operator F32ReinterpretI32 NYI +endianness.wast:211: $assert_return_62 unexpectedly threw: Error: Compiling wasm failed: function f32_store[21] at offset 13/14: Operator F32ReinterpretI32 NYI +endianness.wast:212: $assert_return_63 unexpectedly threw: Error: Compiling wasm failed: function f32_store[21] at offset 13/14: Operator F32ReinterpretI32 NYI +endianness.wast:214: $assert_return_64 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_64[87] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:215: $assert_return_65 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_65[88] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:216: $assert_return_66 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_66[89] at offset 13/25: Operator I64ReinterpretF64 NYI +endianness.wast:217: $assert_return_67 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_67[90] at offset 13/25: Operator I64ReinterpretF64 NYI +24/68 tests passed. diff --git a/test/WasmSpec/baselines/fac.baseline b/test/WasmSpec/baselines/fac.baseline new file mode 100644 index 00000000000..ba40c75613c --- /dev/null +++ b/test/WasmSpec/baselines/fac.baseline @@ -0,0 +1,7 @@ +fac.wast:80: $assert_return_0 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_0[5] at offset 3/18: Operator I64Const NYI +fac.wast:81: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[6] at offset 3/18: Operator I64Const NYI +fac.wast:82: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[7] at offset 3/18: Operator I64Const NYI +fac.wast:83: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[8] at offset 3/18: Operator I64Const NYI +fac.wast:84: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[9] at offset 3/18: Operator I64Const NYI +fac.wast:85: $assert_trap_5 failed, runtime trap NYI +0/6 tests passed. diff --git a/test/WasmSpec/baselines/forward.baseline b/test/WasmSpec/baselines/forward.baseline new file mode 100644 index 00000000000..4e65f7582d8 --- /dev/null +++ b/test/WasmSpec/baselines/forward.baseline @@ -0,0 +1 @@ +4/4 tests passed. diff --git a/test/WasmSpec/baselines/func.baseline b/test/WasmSpec/baselines/func.baseline new file mode 100644 index 00000000000..e99c74cd905 --- /dev/null +++ b/test/WasmSpec/baselines/func.baseline @@ -0,0 +1,19 @@ +func.wast:206: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[81] at offset 3/7: I64 return type NYI +func.wast:208: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[83] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:210: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[85] at offset 3/7: I64 return type NYI +func.wast:212: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[87] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:213: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_8[88] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:219: $assert_return_10 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_10[90] at offset 3/11: Operator I64Const NYI +func.wast:225: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[92] at offset 22/34: Operator I64ReinterpretF64 NYI +func.wast:231: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[94] at offset 3/11: Operator I64Const NYI +func.wast:237: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[96] at offset 22/34: Operator I64ReinterpretF64 NYI +func.wast:241: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[97] at offset 10/38: Operator I64Const NYI +func.wast:251: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[101] at offset 3/8: I64 return type NYI +func.wast:253: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[103] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:259: $assert_return_28 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_28[108] at offset 3/8: I64 return type NYI +func.wast:261: $assert_return_30 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_30[110] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:266: $assert_return_34 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_34[114] at offset 3/8: I64 return type NYI +func.wast:268: $assert_return_36 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_36[116] at offset 4/16: Operator I64ReinterpretF64 NYI +func.wast:302: $assert_return_59 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_59[139] at offset 3/7: I64 return type NYI +func.wast:304: $assert_return_61 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_61[141] at offset 4/16: Operator I64ReinterpretF64 NYI +44/62 tests passed. diff --git a/test/WasmSpec/baselines/func_ptrs.baseline b/test/WasmSpec/baselines/func_ptrs.baseline new file mode 100644 index 00000000000..23780850821 --- /dev/null +++ b/test/WasmSpec/baselines/func_ptrs.baseline @@ -0,0 +1,9 @@ +83 +$action_3 = undefined +func_ptrs.wast:77: $assert_trap_7 failed, runtime trap NYI +func_ptrs.wast:78: $assert_trap_8 failed, runtime trap NYI +func_ptrs.wast:79: $assert_trap_9 failed, runtime trap NYI +func_ptrs.wast:88: $assert_trap_17 failed, runtime trap NYI +func_ptrs.wast:89: $assert_trap_18 failed, runtime trap NYI +func_ptrs.wast:90: $assert_trap_19 failed, runtime trap NYI +19/25 tests passed. diff --git a/test/WasmSpec/baselines/get_local.baseline b/test/WasmSpec/baselines/get_local.baseline new file mode 100644 index 00000000000..3b28a30d235 --- /dev/null +++ b/test/WasmSpec/baselines/get_local.baseline @@ -0,0 +1,7 @@ +get_local.wast:65: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[11] at offset 3/7: I64 return type NYI +get_local.wast:67: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[13] at offset 4/16: Operator I64ReinterpretF64 NYI +get_local.wast:70: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[15] at offset 3/9: Operator I64Const NYI +get_local.wast:72: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[17] at offset 13/25: Operator I64ReinterpretF64 NYI +get_local.wast:75: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_8[18] at offset 3/27: Operator I64Const NYI +get_local.wast:81: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[19] at offset 3/36: Operator I64Const NYI +4/10 tests passed. diff --git a/test/WasmSpec/baselines/globals.baseline b/test/WasmSpec/baselines/globals.baseline new file mode 100644 index 00000000000..54ec5563778 --- /dev/null +++ b/test/WasmSpec/baselines/globals.baseline @@ -0,0 +1,3 @@ +Unexpected Error while compiling globals.0.wasm +Error: Compiling wasm failed: i64 globals NYI +0/0 tests passed. diff --git a/test/WasmSpec/baselines/i32.baseline b/test/WasmSpec/baselines/i32.baseline new file mode 100644 index 00000000000..d161db1a8c1 --- /dev/null +++ b/test/WasmSpec/baselines/i32.baseline @@ -0,0 +1,10 @@ +i32.wast:61: $assert_trap_23 failed, runtime trap NYI +i32.wast:62: $assert_trap_24 failed, runtime trap NYI +i32.wast:63: $assert_trap_25 failed, runtime trap NYI +i32.wast:80: $assert_trap_41 failed, runtime trap NYI +i32.wast:81: $assert_trap_42 failed, runtime trap NYI +i32.wast:97: $assert_trap_57 failed, runtime trap NYI +i32.wast:98: $assert_trap_58 failed, runtime trap NYI +i32.wast:117: $assert_trap_76 failed, runtime trap NYI +i32.wast:118: $assert_trap_77 failed, runtime trap NYI +333/342 tests passed. diff --git a/test/WasmSpec/baselines/i64.baseline b/test/WasmSpec/baselines/i64.baseline new file mode 100644 index 00000000000..8a0c25a8f08 --- /dev/null +++ b/test/WasmSpec/baselines/i64.baseline @@ -0,0 +1,345 @@ +i64.wast:35: $assert_return_0 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_0[29] at offset 3/11: Operator I64Const NYI +i64.wast:36: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[30] at offset 3/11: Operator I64Const NYI +i64.wast:37: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[31] at offset 3/11: Operator I64Const NYI +i64.wast:38: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[32] at offset 3/11: Operator I64Const NYI +i64.wast:39: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[33] at offset 7/29: Invalid LEB128 format +i64.wast:40: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[34] at offset 7/29: Invalid LEB128 format +i64.wast:41: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[35] at offset 7/29: Invalid LEB128 format +i64.wast:42: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[36] at offset 7/19: Operator I64Const NYI +i64.wast:44: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_8[37] at offset 3/11: Operator I64Const NYI +i64.wast:45: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[38] at offset 3/11: Operator I64Const NYI +i64.wast:46: $assert_return_10 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_10[39] at offset 3/11: Operator I64Const NYI +i64.wast:47: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_11[40] at offset 7/29: Invalid LEB128 format +i64.wast:48: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[41] at offset 7/29: Invalid LEB128 format +i64.wast:49: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[42] at offset 7/29: Invalid LEB128 format +i64.wast:50: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[43] at offset 7/19: Operator I64Const NYI +i64.wast:52: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[44] at offset 3/11: Operator I64Const NYI +i64.wast:53: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[45] at offset 3/11: Operator I64Const NYI +i64.wast:54: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[46] at offset 3/11: Operator I64Const NYI +i64.wast:55: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[47] at offset 7/20: Invalid LEB128 format +i64.wast:56: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[48] at offset 7/20: Invalid LEB128 format +i64.wast:57: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[49] at offset 7/29: Invalid LEB128 format +i64.wast:58: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[50] at offset 7/29: Invalid LEB128 format +i64.wast:59: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[51] at offset 7/35: Invalid LEB128 format +i64.wast:61: $assert_trap_23 failed, runtime trap NYI +i64.wast:62: $assert_trap_24 failed, runtime trap NYI +i64.wast:63: $assert_trap_25 failed, runtime trap NYI +i64.wast:64: $assert_return_26 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_26[55] at offset 3/11: Operator I64Const NYI +i64.wast:65: $assert_return_27 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_27[56] at offset 3/11: Operator I64Const NYI +i64.wast:66: $assert_return_28 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_28[57] at offset 3/11: Operator I64Const NYI +i64.wast:67: $assert_return_29 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_29[58] at offset 7/28: Invalid LEB128 format +i64.wast:68: $assert_return_30 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_30[59] at offset 7/28: Invalid LEB128 format +i64.wast:69: $assert_return_31 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_31[60] at offset 3/11: Operator I64Const NYI +i64.wast:70: $assert_return_32 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_32[61] at offset 3/11: Operator I64Const NYI +i64.wast:71: $assert_return_33 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_33[62] at offset 3/11: Operator I64Const NYI +i64.wast:72: $assert_return_34 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_34[63] at offset 3/11: Operator I64Const NYI +i64.wast:73: $assert_return_35 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_35[64] at offset 3/11: Operator I64Const NYI +i64.wast:74: $assert_return_36 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_36[65] at offset 3/11: Operator I64Const NYI +i64.wast:75: $assert_return_37 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_37[66] at offset 3/11: Operator I64Const NYI +i64.wast:76: $assert_return_38 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_38[67] at offset 3/11: Operator I64Const NYI +i64.wast:77: $assert_return_39 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_39[68] at offset 3/11: Operator I64Const NYI +i64.wast:78: $assert_return_40 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_40[69] at offset 3/11: Operator I64Const NYI +i64.wast:80: $assert_trap_41 failed, runtime trap NYI +i64.wast:81: $assert_trap_42 failed, runtime trap NYI +i64.wast:82: $assert_return_43 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_43[72] at offset 3/11: Operator I64Const NYI +i64.wast:83: $assert_return_44 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_44[73] at offset 3/11: Operator I64Const NYI +i64.wast:84: $assert_return_45 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_45[74] at offset 3/11: Operator I64Const NYI +i64.wast:85: $assert_return_46 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_46[75] at offset 7/20: Invalid LEB128 format +i64.wast:86: $assert_return_47 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_47[76] at offset 7/29: Invalid LEB128 format +i64.wast:87: $assert_return_48 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_48[77] at offset 7/28: Invalid LEB128 format +i64.wast:88: $assert_return_49 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_49[78] at offset 7/28: Invalid LEB128 format +i64.wast:89: $assert_return_50 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_50[79] at offset 3/11: Operator I64Const NYI +i64.wast:90: $assert_return_51 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_51[80] at offset 3/20: Operator I64Const NYI +i64.wast:91: $assert_return_52 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_52[81] at offset 3/11: Operator I64Const NYI +i64.wast:92: $assert_return_53 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_53[82] at offset 3/11: Operator I64Const NYI +i64.wast:93: $assert_return_54 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_54[83] at offset 3/11: Operator I64Const NYI +i64.wast:94: $assert_return_55 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_55[84] at offset 3/11: Operator I64Const NYI +i64.wast:95: $assert_return_56 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_56[85] at offset 3/11: Operator I64Const NYI +i64.wast:97: $assert_trap_57 failed, runtime trap NYI +i64.wast:98: $assert_trap_58 failed, runtime trap NYI +i64.wast:99: $assert_return_59 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_59[88] at offset 7/20: Invalid LEB128 format +i64.wast:100: $assert_return_60 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_60[89] at offset 3/11: Operator I64Const NYI +i64.wast:101: $assert_return_61 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_61[90] at offset 3/11: Operator I64Const NYI +i64.wast:102: $assert_return_62 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_62[91] at offset 3/11: Operator I64Const NYI +i64.wast:103: $assert_return_63 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_63[92] at offset 7/20: Invalid LEB128 format +i64.wast:104: $assert_return_64 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_64[93] at offset 7/20: Invalid LEB128 format +i64.wast:105: $assert_return_65 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_65[94] at offset 7/22: Invalid LEB128 format +i64.wast:106: $assert_return_66 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_66[95] at offset 3/11: Operator I64Const NYI +i64.wast:107: $assert_return_67 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_67[96] at offset 3/11: Operator I64Const NYI +i64.wast:108: $assert_return_68 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_68[97] at offset 3/11: Operator I64Const NYI +i64.wast:109: $assert_return_69 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_69[98] at offset 3/11: Operator I64Const NYI +i64.wast:110: $assert_return_70 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_70[99] at offset 3/11: Operator I64Const NYI +i64.wast:111: $assert_return_71 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_71[100] at offset 3/11: Operator I64Const NYI +i64.wast:112: $assert_return_72 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_72[101] at offset 3/11: Operator I64Const NYI +i64.wast:113: $assert_return_73 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_73[102] at offset 3/11: Operator I64Const NYI +i64.wast:114: $assert_return_74 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_74[103] at offset 3/11: Operator I64Const NYI +i64.wast:115: $assert_return_75 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_75[104] at offset 3/11: Operator I64Const NYI +i64.wast:117: $assert_trap_76 failed, runtime trap NYI +i64.wast:118: $assert_trap_77 failed, runtime trap NYI +i64.wast:119: $assert_return_78 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_78[107] at offset 3/11: Operator I64Const NYI +i64.wast:120: $assert_return_79 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_79[108] at offset 3/11: Operator I64Const NYI +i64.wast:121: $assert_return_80 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_80[109] at offset 3/11: Operator I64Const NYI +i64.wast:122: $assert_return_81 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_81[110] at offset 7/29: Invalid LEB128 format +i64.wast:123: $assert_return_82 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_82[111] at offset 7/20: Invalid LEB128 format +i64.wast:124: $assert_return_83 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_83[112] at offset 7/28: Invalid LEB128 format +i64.wast:125: $assert_return_84 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_84[113] at offset 7/22: Invalid LEB128 format +i64.wast:126: $assert_return_85 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_85[114] at offset 3/11: Operator I64Const NYI +i64.wast:127: $assert_return_86 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_86[115] at offset 3/11: Operator I64Const NYI +i64.wast:128: $assert_return_87 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_87[116] at offset 3/11: Operator I64Const NYI +i64.wast:129: $assert_return_88 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_88[117] at offset 3/11: Operator I64Const NYI +i64.wast:130: $assert_return_89 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_89[118] at offset 3/11: Operator I64Const NYI +i64.wast:131: $assert_return_90 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_90[119] at offset 3/11: Operator I64Const NYI +i64.wast:132: $assert_return_91 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_91[120] at offset 3/11: Operator I64Const NYI +i64.wast:134: $assert_return_92 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_92[121] at offset 3/11: Operator I64Const NYI +i64.wast:135: $assert_return_93 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_93[122] at offset 3/11: Operator I64Const NYI +i64.wast:136: $assert_return_94 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_94[123] at offset 3/11: Operator I64Const NYI +i64.wast:137: $assert_return_95 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_95[124] at offset 3/11: Operator I64Const NYI +i64.wast:138: $assert_return_96 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_96[125] at offset 7/29: Invalid LEB128 format +i64.wast:139: $assert_return_97 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_97[126] at offset 7/29: Invalid LEB128 format +i64.wast:140: $assert_return_98 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_98[127] at offset 7/23: Operator I64Const NYI +i64.wast:141: $assert_return_99 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_99[128] at offset 3/11: Operator I64Const NYI +i64.wast:143: $assert_return_100 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_100[129] at offset 3/11: Operator I64Const NYI +i64.wast:144: $assert_return_101 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_101[130] at offset 3/11: Operator I64Const NYI +i64.wast:145: $assert_return_102 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_102[131] at offset 3/11: Operator I64Const NYI +i64.wast:146: $assert_return_103 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_103[132] at offset 3/11: Operator I64Const NYI +i64.wast:147: $assert_return_104 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_104[133] at offset 7/29: Invalid LEB128 format +i64.wast:148: $assert_return_105 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_105[134] at offset 7/29: Invalid LEB128 format +i64.wast:149: $assert_return_106 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_106[135] at offset 7/23: Operator I64Const NYI +i64.wast:150: $assert_return_107 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_107[136] at offset 3/11: Operator I64Const NYI +i64.wast:152: $assert_return_108 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_108[137] at offset 3/11: Operator I64Const NYI +i64.wast:153: $assert_return_109 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_109[138] at offset 3/11: Operator I64Const NYI +i64.wast:154: $assert_return_110 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_110[139] at offset 3/11: Operator I64Const NYI +i64.wast:155: $assert_return_111 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_111[140] at offset 3/11: Operator I64Const NYI +i64.wast:156: $assert_return_112 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_112[141] at offset 7/29: Invalid LEB128 format +i64.wast:157: $assert_return_113 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_113[142] at offset 7/29: Invalid LEB128 format +i64.wast:158: $assert_return_114 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_114[143] at offset 3/29: Operator I64Const NYI +i64.wast:159: $assert_return_115 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_115[144] at offset 3/29: Operator I64Const NYI +i64.wast:160: $assert_return_116 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_116[145] at offset 7/23: Operator I64Const NYI +i64.wast:161: $assert_return_117 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_117[146] at offset 3/11: Operator I64Const NYI +i64.wast:163: $assert_return_118 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_118[147] at offset 3/11: Operator I64Const NYI +i64.wast:164: $assert_return_119 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_119[148] at offset 3/11: Operator I64Const NYI +i64.wast:165: $assert_return_120 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_120[149] at offset 7/20: Invalid LEB128 format +i64.wast:166: $assert_return_121 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_121[150] at offset 3/11: Operator I64Const NYI +i64.wast:167: $assert_return_122 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_122[151] at offset 7/20: Invalid LEB128 format +i64.wast:168: $assert_return_123 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_123[152] at offset 7/29: Invalid LEB128 format +i64.wast:169: $assert_return_124 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_124[153] at offset 3/20: Operator I64Const NYI +i64.wast:170: $assert_return_125 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_125[154] at offset 3/12: Operator I64Const NYI +i64.wast:171: $assert_return_126 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_126[155] at offset 3/12: Operator I64Const NYI +i64.wast:172: $assert_return_127 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_127[156] at offset 3/20: Operator I64Const NYI +i64.wast:173: $assert_return_128 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_128[157] at offset 3/29: Operator I64Const NYI +i64.wast:175: $assert_return_129 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_129[158] at offset 3/11: Operator I64Const NYI +i64.wast:176: $assert_return_130 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_130[159] at offset 3/11: Operator I64Const NYI +i64.wast:177: $assert_return_131 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_131[160] at offset 3/11: Operator I64Const NYI +i64.wast:178: $assert_return_132 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_132[161] at offset 7/28: Invalid LEB128 format +i64.wast:179: $assert_return_133 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_133[162] at offset 7/28: Invalid LEB128 format +i64.wast:180: $assert_return_134 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_134[163] at offset 7/28: Invalid LEB128 format +i64.wast:181: $assert_return_135 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_135[164] at offset 3/12: Operator I64Const NYI +i64.wast:182: $assert_return_136 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_136[165] at offset 3/12: Operator I64Const NYI +i64.wast:183: $assert_return_137 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_137[166] at offset 3/11: Operator I64Const NYI +i64.wast:184: $assert_return_138 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_138[167] at offset 3/20: Operator I64Const NYI +i64.wast:185: $assert_return_139 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_139[168] at offset 3/20: Operator I64Const NYI +i64.wast:186: $assert_return_140 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_140[169] at offset 7/20: Invalid LEB128 format +i64.wast:187: $assert_return_141 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_141[170] at offset 3/12: Operator I64Const NYI +i64.wast:188: $assert_return_142 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_142[171] at offset 3/12: Operator I64Const NYI +i64.wast:189: $assert_return_143 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_143[172] at offset 3/11: Operator I64Const NYI +i64.wast:190: $assert_return_144 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_144[173] at offset 3/20: Operator I64Const NYI +i64.wast:191: $assert_return_145 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_145[174] at offset 3/20: Operator I64Const NYI +i64.wast:193: $assert_return_146 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_146[175] at offset 3/11: Operator I64Const NYI +i64.wast:194: $assert_return_147 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_147[176] at offset 3/11: Operator I64Const NYI +i64.wast:195: $assert_return_148 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_148[177] at offset 3/20: Operator I64Const NYI +i64.wast:196: $assert_return_149 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_149[178] at offset 7/28: Invalid LEB128 format +i64.wast:197: $assert_return_150 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_150[179] at offset 7/29: Invalid LEB128 format +i64.wast:198: $assert_return_151 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_151[180] at offset 7/28: Invalid LEB128 format +i64.wast:199: $assert_return_152 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_152[181] at offset 3/12: Operator I64Const NYI +i64.wast:200: $assert_return_153 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_153[182] at offset 3/12: Operator I64Const NYI +i64.wast:201: $assert_return_154 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_154[183] at offset 3/11: Operator I64Const NYI +i64.wast:202: $assert_return_155 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_155[184] at offset 3/20: Operator I64Const NYI +i64.wast:203: $assert_return_156 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_156[185] at offset 3/20: Operator I64Const NYI +i64.wast:204: $assert_return_157 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_157[186] at offset 7/20: Invalid LEB128 format +i64.wast:205: $assert_return_158 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_158[187] at offset 3/12: Operator I64Const NYI +i64.wast:206: $assert_return_159 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_159[188] at offset 3/21: Operator I64Const NYI +i64.wast:207: $assert_return_160 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_160[189] at offset 3/11: Operator I64Const NYI +i64.wast:208: $assert_return_161 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_161[190] at offset 3/20: Operator I64Const NYI +i64.wast:209: $assert_return_162 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_162[191] at offset 3/20: Operator I64Const NYI +i64.wast:211: $assert_return_163 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_163[192] at offset 3/11: Operator I64Const NYI +i64.wast:212: $assert_return_164 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_164[193] at offset 3/11: Operator I64Const NYI +i64.wast:213: $assert_return_165 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_165[194] at offset 3/11: Operator I64Const NYI +i64.wast:214: $assert_return_166 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_166[195] at offset 7/29: Invalid LEB128 format +i64.wast:215: $assert_return_167 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_167[196] at offset 7/38: Invalid LEB128 format +i64.wast:216: $assert_return_168 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_168[197] at offset 3/20: Operator I64Const NYI +i64.wast:217: $assert_return_169 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_169[198] at offset 7/20: Invalid LEB128 format +i64.wast:219: $assert_return_170 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_170[199] at offset 3/20: Operator I64Const NYI +i64.wast:220: $assert_return_171 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_171[200] at offset 3/11: Operator I64Const NYI +i64.wast:221: $assert_return_172 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_172[201] at offset 3/11: Operator I64Const NYI +i64.wast:222: $assert_return_173 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_173[202] at offset 7/29: Invalid LEB128 format +i64.wast:223: $assert_return_174 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_174[203] at offset 7/29: Invalid LEB128 format +i64.wast:224: $assert_return_175 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_175[204] at offset 7/30: Invalid LEB128 format +i64.wast:225: $assert_return_176 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_176[205] at offset 3/20: Operator I64Const NYI +i64.wast:226: $assert_return_177 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_177[206] at offset 7/20: Invalid LEB128 format +i64.wast:228: $assert_return_178 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_178[207] at offset 3/9: Operator I64Const NYI +i64.wast:229: $assert_return_179 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_179[208] at offset 3/10: Operator I64Const NYI +i64.wast:230: $assert_return_180 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_180[209] at offset 5/11: Operator I64Const NYI +i64.wast:231: $assert_return_181 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_181[210] at offset 4/10: Operator I64Const NYI +i64.wast:232: $assert_return_182 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_182[211] at offset 7/18: Invalid LEB128 format +i64.wast:233: $assert_return_183 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_183[212] at offset 3/9: Operator I64Const NYI +i64.wast:234: $assert_return_184 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_184[213] at offset 3/9: Operator I64Const NYI +i64.wast:235: $assert_return_185 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_185[214] at offset 7/18: Invalid LEB128 format +i64.wast:237: $assert_return_186 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_186[215] at offset 3/9: Operator I64Const NYI +i64.wast:238: $assert_return_187 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_187[216] at offset 3/10: Operator I64Const NYI +i64.wast:239: $assert_return_188 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_188[217] at offset 5/11: Operator I64Const NYI +i64.wast:240: $assert_return_189 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_189[218] at offset 5/11: Operator I64Const NYI +i64.wast:241: $assert_return_190 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_190[219] at offset 7/18: Invalid LEB128 format +i64.wast:242: $assert_return_191 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_191[220] at offset 7/18: Invalid LEB128 format +i64.wast:244: $assert_return_192 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_192[221] at offset 3/10: Operator I64Const NYI +i64.wast:245: $assert_return_193 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_193[222] at offset 3/9: Operator I64Const NYI +i64.wast:246: $assert_return_194 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_194[223] at offset 5/11: Operator I64Const NYI +i64.wast:247: $assert_return_195 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_195[224] at offset 7/18: Invalid LEB128 format +i64.wast:248: $assert_return_196 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_196[225] at offset 7/18: Invalid LEB128 format +i64.wast:249: $assert_return_197 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_197[226] at offset 7/18: Invalid LEB128 format +i64.wast:250: $assert_return_198 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_198[227] at offset 7/18: Invalid LEB128 format +i64.wast:251: $assert_return_199 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_199[228] at offset 7/17: Invalid LEB128 format +i64.wast:253: $assert_return_200 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_200[229] at offset 3/9: Operator I64Const NYI +i64.wast:254: $assert_return_201 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_201[230] at offset 3/9: Operator I64Const NYI +i64.wast:255: $assert_return_202 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_202[231] at offset 7/18: Invalid LEB128 format +i64.wast:256: $assert_return_203 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_203[232] at offset 7/18: Invalid LEB128 format +i64.wast:258: $assert_return_204 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_204[233] at offset 3/11: Operator I64Const NYI +i64.wast:259: $assert_return_205 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_205[234] at offset 3/11: Operator I64Const NYI +i64.wast:260: $assert_return_206 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_206[235] at offset 3/11: Operator I64Const NYI +i64.wast:261: $assert_return_207 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_207[236] at offset 7/29: Invalid LEB128 format +i64.wast:262: $assert_return_208 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_208[237] at offset 7/29: Invalid LEB128 format +i64.wast:263: $assert_return_209 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_209[238] at offset 3/11: Operator I64Const NYI +i64.wast:264: $assert_return_210 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_210[239] at offset 3/11: Operator I64Const NYI +i64.wast:265: $assert_return_211 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_211[240] at offset 3/11: Operator I64Const NYI +i64.wast:266: $assert_return_212 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_212[241] at offset 7/20: Invalid LEB128 format +i64.wast:267: $assert_return_213 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_213[242] at offset 3/20: Operator I64Const NYI +i64.wast:268: $assert_return_214 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_214[243] at offset 7/20: Invalid LEB128 format +i64.wast:269: $assert_return_215 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_215[244] at offset 3/20: Operator I64Const NYI +i64.wast:270: $assert_return_216 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_216[245] at offset 7/29: Invalid LEB128 format +i64.wast:271: $assert_return_217 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_217[246] at offset 7/29: Invalid LEB128 format +i64.wast:273: $assert_return_218 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_218[247] at offset 3/11: Operator I64Const NYI +i64.wast:274: $assert_return_219 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_219[248] at offset 3/11: Operator I64Const NYI +i64.wast:275: $assert_return_220 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_220[249] at offset 3/11: Operator I64Const NYI +i64.wast:276: $assert_return_221 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_221[250] at offset 7/29: Invalid LEB128 format +i64.wast:277: $assert_return_222 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_222[251] at offset 7/29: Invalid LEB128 format +i64.wast:278: $assert_return_223 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_223[252] at offset 3/11: Operator I64Const NYI +i64.wast:279: $assert_return_224 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_224[253] at offset 3/11: Operator I64Const NYI +i64.wast:280: $assert_return_225 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_225[254] at offset 3/11: Operator I64Const NYI +i64.wast:281: $assert_return_226 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_226[255] at offset 7/20: Invalid LEB128 format +i64.wast:282: $assert_return_227 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_227[256] at offset 3/20: Operator I64Const NYI +i64.wast:283: $assert_return_228 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_228[257] at offset 7/20: Invalid LEB128 format +i64.wast:284: $assert_return_229 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_229[258] at offset 3/20: Operator I64Const NYI +i64.wast:285: $assert_return_230 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_230[259] at offset 7/29: Invalid LEB128 format +i64.wast:286: $assert_return_231 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_231[260] at offset 7/29: Invalid LEB128 format +i64.wast:288: $assert_return_232 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_232[261] at offset 3/11: Operator I64Const NYI +i64.wast:289: $assert_return_233 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_233[262] at offset 3/11: Operator I64Const NYI +i64.wast:290: $assert_return_234 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_234[263] at offset 3/11: Operator I64Const NYI +i64.wast:291: $assert_return_235 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_235[264] at offset 7/29: Invalid LEB128 format +i64.wast:292: $assert_return_236 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_236[265] at offset 7/29: Invalid LEB128 format +i64.wast:293: $assert_return_237 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_237[266] at offset 3/11: Operator I64Const NYI +i64.wast:294: $assert_return_238 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_238[267] at offset 3/11: Operator I64Const NYI +i64.wast:295: $assert_return_239 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_239[268] at offset 3/11: Operator I64Const NYI +i64.wast:296: $assert_return_240 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_240[269] at offset 7/20: Invalid LEB128 format +i64.wast:297: $assert_return_241 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_241[270] at offset 3/20: Operator I64Const NYI +i64.wast:298: $assert_return_242 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_242[271] at offset 7/20: Invalid LEB128 format +i64.wast:299: $assert_return_243 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_243[272] at offset 3/20: Operator I64Const NYI +i64.wast:300: $assert_return_244 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_244[273] at offset 7/29: Invalid LEB128 format +i64.wast:301: $assert_return_245 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_245[274] at offset 7/29: Invalid LEB128 format +i64.wast:303: $assert_return_246 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_246[275] at offset 3/11: Operator I64Const NYI +i64.wast:304: $assert_return_247 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_247[276] at offset 3/11: Operator I64Const NYI +i64.wast:305: $assert_return_248 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_248[277] at offset 3/11: Operator I64Const NYI +i64.wast:306: $assert_return_249 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_249[278] at offset 7/29: Invalid LEB128 format +i64.wast:307: $assert_return_250 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_250[279] at offset 7/29: Invalid LEB128 format +i64.wast:308: $assert_return_251 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_251[280] at offset 3/11: Operator I64Const NYI +i64.wast:309: $assert_return_252 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_252[281] at offset 3/11: Operator I64Const NYI +i64.wast:310: $assert_return_253 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_253[282] at offset 3/11: Operator I64Const NYI +i64.wast:311: $assert_return_254 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_254[283] at offset 7/20: Invalid LEB128 format +i64.wast:312: $assert_return_255 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_255[284] at offset 3/20: Operator I64Const NYI +i64.wast:313: $assert_return_256 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_256[285] at offset 7/20: Invalid LEB128 format +i64.wast:314: $assert_return_257 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_257[286] at offset 3/20: Operator I64Const NYI +i64.wast:315: $assert_return_258 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_258[287] at offset 7/29: Invalid LEB128 format +i64.wast:316: $assert_return_259 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_259[288] at offset 7/29: Invalid LEB128 format +i64.wast:318: $assert_return_260 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_260[289] at offset 3/11: Operator I64Const NYI +i64.wast:319: $assert_return_261 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_261[290] at offset 3/11: Operator I64Const NYI +i64.wast:320: $assert_return_262 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_262[291] at offset 3/11: Operator I64Const NYI +i64.wast:321: $assert_return_263 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_263[292] at offset 7/29: Invalid LEB128 format +i64.wast:322: $assert_return_264 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_264[293] at offset 7/29: Invalid LEB128 format +i64.wast:323: $assert_return_265 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_265[294] at offset 3/11: Operator I64Const NYI +i64.wast:324: $assert_return_266 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_266[295] at offset 3/11: Operator I64Const NYI +i64.wast:325: $assert_return_267 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_267[296] at offset 3/11: Operator I64Const NYI +i64.wast:326: $assert_return_268 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_268[297] at offset 7/20: Invalid LEB128 format +i64.wast:327: $assert_return_269 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_269[298] at offset 3/20: Operator I64Const NYI +i64.wast:328: $assert_return_270 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_270[299] at offset 7/20: Invalid LEB128 format +i64.wast:329: $assert_return_271 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_271[300] at offset 3/20: Operator I64Const NYI +i64.wast:330: $assert_return_272 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_272[301] at offset 7/29: Invalid LEB128 format +i64.wast:331: $assert_return_273 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_273[302] at offset 7/29: Invalid LEB128 format +i64.wast:333: $assert_return_274 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_274[303] at offset 3/11: Operator I64Const NYI +i64.wast:334: $assert_return_275 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_275[304] at offset 3/11: Operator I64Const NYI +i64.wast:335: $assert_return_276 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_276[305] at offset 3/11: Operator I64Const NYI +i64.wast:336: $assert_return_277 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_277[306] at offset 7/29: Invalid LEB128 format +i64.wast:337: $assert_return_278 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_278[307] at offset 7/29: Invalid LEB128 format +i64.wast:338: $assert_return_279 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_279[308] at offset 3/11: Operator I64Const NYI +i64.wast:339: $assert_return_280 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_280[309] at offset 3/11: Operator I64Const NYI +i64.wast:340: $assert_return_281 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_281[310] at offset 3/11: Operator I64Const NYI +i64.wast:341: $assert_return_282 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_282[311] at offset 7/20: Invalid LEB128 format +i64.wast:342: $assert_return_283 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_283[312] at offset 3/20: Operator I64Const NYI +i64.wast:343: $assert_return_284 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_284[313] at offset 7/20: Invalid LEB128 format +i64.wast:344: $assert_return_285 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_285[314] at offset 3/20: Operator I64Const NYI +i64.wast:345: $assert_return_286 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_286[315] at offset 7/29: Invalid LEB128 format +i64.wast:346: $assert_return_287 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_287[316] at offset 7/29: Invalid LEB128 format +i64.wast:348: $assert_return_288 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_288[317] at offset 3/11: Operator I64Const NYI +i64.wast:349: $assert_return_289 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_289[318] at offset 3/11: Operator I64Const NYI +i64.wast:350: $assert_return_290 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_290[319] at offset 3/11: Operator I64Const NYI +i64.wast:351: $assert_return_291 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_291[320] at offset 7/29: Invalid LEB128 format +i64.wast:352: $assert_return_292 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_292[321] at offset 7/29: Invalid LEB128 format +i64.wast:353: $assert_return_293 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_293[322] at offset 3/11: Operator I64Const NYI +i64.wast:354: $assert_return_294 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_294[323] at offset 3/11: Operator I64Const NYI +i64.wast:355: $assert_return_295 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_295[324] at offset 3/11: Operator I64Const NYI +i64.wast:356: $assert_return_296 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_296[325] at offset 7/20: Invalid LEB128 format +i64.wast:357: $assert_return_297 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_297[326] at offset 3/20: Operator I64Const NYI +i64.wast:358: $assert_return_298 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_298[327] at offset 7/20: Invalid LEB128 format +i64.wast:359: $assert_return_299 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_299[328] at offset 3/20: Operator I64Const NYI +i64.wast:360: $assert_return_300 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_300[329] at offset 7/29: Invalid LEB128 format +i64.wast:361: $assert_return_301 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_301[330] at offset 7/29: Invalid LEB128 format +i64.wast:363: $assert_return_302 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_302[331] at offset 3/11: Operator I64Const NYI +i64.wast:364: $assert_return_303 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_303[332] at offset 3/11: Operator I64Const NYI +i64.wast:365: $assert_return_304 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_304[333] at offset 3/11: Operator I64Const NYI +i64.wast:366: $assert_return_305 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_305[334] at offset 7/29: Invalid LEB128 format +i64.wast:367: $assert_return_306 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_306[335] at offset 7/29: Invalid LEB128 format +i64.wast:368: $assert_return_307 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_307[336] at offset 3/11: Operator I64Const NYI +i64.wast:369: $assert_return_308 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_308[337] at offset 3/11: Operator I64Const NYI +i64.wast:370: $assert_return_309 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_309[338] at offset 3/11: Operator I64Const NYI +i64.wast:371: $assert_return_310 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_310[339] at offset 7/20: Invalid LEB128 format +i64.wast:372: $assert_return_311 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_311[340] at offset 3/20: Operator I64Const NYI +i64.wast:373: $assert_return_312 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_312[341] at offset 7/20: Invalid LEB128 format +i64.wast:374: $assert_return_313 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_313[342] at offset 3/20: Operator I64Const NYI +i64.wast:375: $assert_return_314 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_314[343] at offset 7/29: Invalid LEB128 format +i64.wast:376: $assert_return_315 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_315[344] at offset 7/29: Invalid LEB128 format +i64.wast:378: $assert_return_316 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_316[345] at offset 3/11: Operator I64Const NYI +i64.wast:379: $assert_return_317 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_317[346] at offset 3/11: Operator I64Const NYI +i64.wast:380: $assert_return_318 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_318[347] at offset 3/11: Operator I64Const NYI +i64.wast:381: $assert_return_319 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_319[348] at offset 7/29: Invalid LEB128 format +i64.wast:382: $assert_return_320 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_320[349] at offset 7/29: Invalid LEB128 format +i64.wast:383: $assert_return_321 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_321[350] at offset 3/11: Operator I64Const NYI +i64.wast:384: $assert_return_322 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_322[351] at offset 3/11: Operator I64Const NYI +i64.wast:385: $assert_return_323 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_323[352] at offset 3/11: Operator I64Const NYI +i64.wast:386: $assert_return_324 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_324[353] at offset 7/20: Invalid LEB128 format +i64.wast:387: $assert_return_325 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_325[354] at offset 3/20: Operator I64Const NYI +i64.wast:388: $assert_return_326 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_326[355] at offset 7/20: Invalid LEB128 format +i64.wast:389: $assert_return_327 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_327[356] at offset 3/20: Operator I64Const NYI +i64.wast:390: $assert_return_328 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_328[357] at offset 7/29: Invalid LEB128 format +i64.wast:391: $assert_return_329 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_329[358] at offset 7/29: Invalid LEB128 format +i64.wast:393: $assert_return_330 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_330[359] at offset 3/11: Operator I64Const NYI +i64.wast:394: $assert_return_331 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_331[360] at offset 3/11: Operator I64Const NYI +i64.wast:395: $assert_return_332 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_332[361] at offset 3/11: Operator I64Const NYI +i64.wast:396: $assert_return_333 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_333[362] at offset 7/29: Invalid LEB128 format +i64.wast:397: $assert_return_334 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_334[363] at offset 7/29: Invalid LEB128 format +i64.wast:398: $assert_return_335 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_335[364] at offset 3/11: Operator I64Const NYI +i64.wast:399: $assert_return_336 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_336[365] at offset 3/11: Operator I64Const NYI +i64.wast:400: $assert_return_337 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_337[366] at offset 3/11: Operator I64Const NYI +i64.wast:401: $assert_return_338 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_338[367] at offset 7/20: Invalid LEB128 format +i64.wast:402: $assert_return_339 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_339[368] at offset 3/20: Operator I64Const NYI +i64.wast:403: $assert_return_340 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_340[369] at offset 7/20: Invalid LEB128 format +i64.wast:404: $assert_return_341 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_341[370] at offset 3/20: Operator I64Const NYI +i64.wast:405: $assert_return_342 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_342[371] at offset 7/29: Invalid LEB128 format +i64.wast:406: $assert_return_343 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_343[372] at offset 7/29: Invalid LEB128 format +0/344 tests passed. diff --git a/test/WasmSpec/baselines/import-after-func.fail.baseline b/test/WasmSpec/baselines/import-after-func.fail.baseline new file mode 100644 index 00000000000..d59d34b9d4f --- /dev/null +++ b/test/WasmSpec/baselines/import-after-func.fail.baseline @@ -0,0 +1,3 @@ +Unexpected Error while compiling import-after-func.fail.0.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +0/0 tests passed. diff --git a/test/WasmSpec/baselines/import-after-global.fail.baseline b/test/WasmSpec/baselines/import-after-global.fail.baseline new file mode 100644 index 00000000000..a14d2744fd1 --- /dev/null +++ b/test/WasmSpec/baselines/import-after-global.fail.baseline @@ -0,0 +1,3 @@ +Unexpected Error while compiling import-after-global.fail.0.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +0/0 tests passed. diff --git a/test/WasmSpec/baselines/import-after-memory.fail.baseline b/test/WasmSpec/baselines/import-after-memory.fail.baseline new file mode 100644 index 00000000000..ab22430795c --- /dev/null +++ b/test/WasmSpec/baselines/import-after-memory.fail.baseline @@ -0,0 +1,3 @@ +Unexpected Error while compiling import-after-memory.fail.0.wasm +Error: Compiling wasm failed: Import global . (0) isn't a valid javascript number +0/0 tests passed. diff --git a/test/WasmSpec/baselines/import-after-table.fail.baseline b/test/WasmSpec/baselines/import-after-table.fail.baseline new file mode 100644 index 00000000000..e45b63a27fb --- /dev/null +++ b/test/WasmSpec/baselines/import-after-table.fail.baseline @@ -0,0 +1,3 @@ +Unexpected Error while compiling import-after-table.fail.0.wasm +Error: Compiling wasm failed: FunctionSignatures section missing before IndirectFunctionTable +0/0 tests passed. diff --git a/test/WasmSpec/baselines/imports.baseline b/test/WasmSpec/baselines/imports.baseline new file mode 100644 index 00000000000..55f81a5799c --- /dev/null +++ b/test/WasmSpec/baselines/imports.baseline @@ -0,0 +1,73 @@ +Unexpected Error while compiling imports.0.wasm +Error: Compiling wasm failed: Exported Kind Table, NYI +Unexpected Error while compiling imports.1.wasm +Error: Compiling wasm failed: Import functions in the table NYI +Unexpected Error while compiling imports.2.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.3.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.4.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.5.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.6.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.7.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.8.wasm +Error: Compiling wasm failed: I64 Globals, NYI +Unexpected Error while compiling imports.9.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.10.wasm +Error: Compiling wasm failed: Import module test is invalid +Unexpected Error while compiling imports.11.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.12.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.13.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.14.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.15.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.16.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.17.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.18.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.19.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.20.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.21.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.22.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.23.wasm +Error: Compiling wasm failed: Imported Kind Table, NYI +Unexpected Error while compiling imports.24.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.25.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.26.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.27.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.28.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.29.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.30.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.31.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.32.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.33.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.34.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +Unexpected Error while compiling imports.35.wasm +Error: Compiling wasm failed: Imported Kind Memory, NYI +0/0 tests passed. diff --git a/test/WasmSpec/baselines/int_exprs.baseline b/test/WasmSpec/baselines/int_exprs.baseline new file mode 100644 index 00000000000..2757d04bed5 --- /dev/null +++ b/test/WasmSpec/baselines/int_exprs.baseline @@ -0,0 +1,44 @@ +int_exprs.wast:20: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[6] at offset 7/20: Invalid LEB128 format +int_exprs.wast:21: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[7] at offset 3/11: Operator I64Const NYI +int_exprs.wast:30: $assert_return_0 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_0[1] at offset 7/20: Invalid LEB128 format +int_exprs.wast:31: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[2] at offset 7/21: Invalid LEB128 format +int_exprs.wast:40: $assert_return_0 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_0[1] at offset 7/20: Invalid LEB128 format +int_exprs.wast:58: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[6] at offset 7/18: Invalid LEB128 format +int_exprs.wast:59: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[7] at offset 7/18: Invalid LEB128 format +int_exprs.wast:77: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[6] at offset 3/9: Operator I64Const NYI +int_exprs.wast:78: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[7] at offset 3/9: Operator I64Const NYI +int_exprs.wast:96: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[6] at offset 3/9: Operator I64Const NYI +int_exprs.wast:97: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[7] at offset 3/9: Operator I64Const NYI +int_exprs.wast:115: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[6] at offset 7/18: Invalid LEB128 format +int_exprs.wast:116: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[7] at offset 7/18: Invalid LEB128 format +int_exprs.wast:129: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[3] at offset 3/9: Operator I64Const NYI +int_exprs.wast:142: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[3] at offset 3/9: Operator I64Const NYI +int_exprs.wast:158: $assert_trap_0 failed, runtime trap NYI +int_exprs.wast:159: $assert_trap_1 failed, runtime trap NYI +int_exprs.wast:160: $assert_trap_2 failed, runtime trap NYI +int_exprs.wast:161: $assert_trap_3 failed, runtime trap NYI +int_exprs.wast:181: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:182: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/25: Invalid LEB128 format +int_exprs.wast:183: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:184: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/26: Invalid LEB128 format +int_exprs.wast:204: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:205: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/26: Invalid LEB128 format +int_exprs.wast:206: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:207: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/26: Invalid LEB128 format +int_exprs.wast:227: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:228: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/26: Invalid LEB128 format +int_exprs.wast:229: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:230: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/25: Invalid LEB128 format +int_exprs.wast:250: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:251: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/17: Invalid LEB128 format +int_exprs.wast:252: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:253: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/17: Invalid LEB128 format +int_exprs.wast:273: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:274: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/18: Invalid LEB128 format +int_exprs.wast:275: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:276: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/18: Invalid LEB128 format +int_exprs.wast:296: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_4[8] at offset 4/10: Operator I64Const NYI +int_exprs.wast:297: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[9] at offset 7/18: Invalid LEB128 format +int_exprs.wast:298: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[10] at offset 4/10: Operator I64Const NYI +int_exprs.wast:299: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[11] at offset 7/17: Invalid LEB128 format +36/79 tests passed. diff --git a/test/WasmSpec/baselines/int_literals.baseline b/test/WasmSpec/baselines/int_literals.baseline new file mode 100644 index 00000000000..bf965635228 --- /dev/null +++ b/test/WasmSpec/baselines/int_literals.baseline @@ -0,0 +1,12 @@ +int_literals.wast:39: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_11[33] at offset 3/15: I64 return type NYI +int_literals.wast:40: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[34] at offset 3/7: I64 return type NYI +int_literals.wast:41: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[35] at offset 3/16: I64 return type NYI +int_literals.wast:42: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[36] at offset 3/16: I64 return type NYI +int_literals.wast:43: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[37] at offset 3/16: I64 return type NYI +int_literals.wast:44: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[38] at offset 3/16: I64 return type NYI +int_literals.wast:45: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[39] at offset 3/16: I64 return type NYI +int_literals.wast:46: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[40] at offset 3/7: I64 return type NYI +int_literals.wast:47: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[41] at offset 3/7: I64 return type NYI +int_literals.wast:48: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[42] at offset 3/7: I64 return type NYI +int_literals.wast:49: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[43] at offset 3/7: I64 return type NYI +11/22 tests passed. diff --git a/test/WasmSpec/baselines/labels.baseline b/test/WasmSpec/baselines/labels.baseline new file mode 100644 index 00000000000..8072d723d1d --- /dev/null +++ b/test/WasmSpec/baselines/labels.baseline @@ -0,0 +1 @@ +24/24 tests passed. diff --git a/test/WasmSpec/baselines/left-to-right.baseline b/test/WasmSpec/baselines/left-to-right.baseline new file mode 100644 index 00000000000..188a4158e12 --- /dev/null +++ b/test/WasmSpec/baselines/left-to-right.baseline @@ -0,0 +1,31 @@ +left-to-right.wast:181: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function i64_add[64] at offset 5/12: I64 return type NYI +left-to-right.wast:182: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function i64_sub[65] at offset 5/12: I64 return type NYI +left-to-right.wast:183: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function i64_mul[66] at offset 5/12: I64 return type NYI +left-to-right.wast:184: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function i64_div_s[67] at offset 5/12: I64 return type NYI +left-to-right.wast:185: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function i64_div_u[68] at offset 5/12: I64 return type NYI +left-to-right.wast:186: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function i64_rem_s[69] at offset 5/12: I64 return type NYI +left-to-right.wast:187: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function i64_rem_u[70] at offset 5/12: I64 return type NYI +left-to-right.wast:188: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function i64_and[71] at offset 5/12: I64 return type NYI +left-to-right.wast:189: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function i64_or[72] at offset 5/12: I64 return type NYI +left-to-right.wast:190: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function i64_xor[73] at offset 5/12: I64 return type NYI +left-to-right.wast:191: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function i64_shl[74] at offset 5/12: I64 return type NYI +left-to-right.wast:192: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function i64_shr_u[75] at offset 5/12: I64 return type NYI +left-to-right.wast:193: $assert_return_25 unexpectedly threw: Error: Compiling wasm failed: function i64_shr_s[76] at offset 5/12: I64 return type NYI +left-to-right.wast:194: $assert_return_27 unexpectedly threw: Error: Compiling wasm failed: function i64_eq[77] at offset 5/12: I64 return type NYI +left-to-right.wast:195: $assert_return_29 unexpectedly threw: Error: Compiling wasm failed: function i64_ne[78] at offset 5/12: I64 return type NYI +left-to-right.wast:196: $assert_return_31 unexpectedly threw: Error: Compiling wasm failed: function i64_lt_s[79] at offset 5/12: I64 return type NYI +left-to-right.wast:197: $assert_return_33 unexpectedly threw: Error: Compiling wasm failed: function i64_le_s[80] at offset 5/12: I64 return type NYI +left-to-right.wast:198: $assert_return_35 unexpectedly threw: Error: Compiling wasm failed: function i64_lt_u[81] at offset 5/12: I64 return type NYI +left-to-right.wast:199: $assert_return_37 unexpectedly threw: Error: Compiling wasm failed: function i64_le_u[82] at offset 5/12: I64 return type NYI +left-to-right.wast:200: $assert_return_39 unexpectedly threw: Error: Compiling wasm failed: function i64_gt_s[83] at offset 5/12: I64 return type NYI +left-to-right.wast:201: $assert_return_41 unexpectedly threw: Error: Compiling wasm failed: function i64_ge_s[84] at offset 5/12: I64 return type NYI +left-to-right.wast:202: $assert_return_43 unexpectedly threw: Error: Compiling wasm failed: function i64_gt_u[85] at offset 5/12: I64 return type NYI +left-to-right.wast:203: $assert_return_45 unexpectedly threw: Error: Compiling wasm failed: function i64_ge_u[86] at offset 5/12: I64 return type NYI +left-to-right.wast:204: $assert_return_47 unexpectedly threw: Error: Compiling wasm failed: function i64_store[87] at offset 7/13: I64 return type NYI +left-to-right.wast:205: $assert_return_49 unexpectedly threw: Error: Compiling wasm failed: function i64_store8[88] at offset 7/13: I64 return type NYI +left-to-right.wast:206: $assert_return_51 unexpectedly threw: Error: Compiling wasm failed: function i64_store16[89] at offset 7/13: I64 return type NYI +left-to-right.wast:207: $assert_return_52 unexpectedly threw: Error: Compiling wasm failed: function i64_store32[90] at offset 7/13: I64 return type NYI +left-to-right.wast:208: $assert_return_54 unexpectedly threw: Error: Compiling wasm failed: function i64_call[91] at offset 5/12: I64 return type NYI +left-to-right.wast:210: $assert_return_56 unexpectedly threw: Error: Compiling wasm failed: function i64_call_indirect[92] at offset 5/15: I64 return type NYI +left-to-right.wast:211: $assert_return_58 unexpectedly threw: Error: Compiling wasm failed: function i64_select[93] at offset 5/14: I64 return type NYI +65/95 tests passed. diff --git a/test/WasmSpec/baselines/loop.baseline b/test/WasmSpec/baselines/loop.baseline new file mode 100644 index 00000000000..096b7fd80cf --- /dev/null +++ b/test/WasmSpec/baselines/loop.baseline @@ -0,0 +1,13 @@ +loop.wast:194: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[33] at offset 3/9: Operator I64Const NYI +loop.wast:195: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[34] at offset 3/9: Operator I64Const NYI +loop.wast:196: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[35] at offset 3/9: Operator I64Const NYI +loop.wast:197: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[36] at offset 3/9: Operator I64Const NYI +loop.wast:198: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[37] at offset 3/10: Operator I64Const NYI +loop.wast:199: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[38] at offset 3/17: Operator I64Const NYI +loop.wast:201: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[39] at offset 3/9: Operator I64Const NYI +loop.wast:202: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[40] at offset 3/9: Operator I64Const NYI +loop.wast:203: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[41] at offset 3/9: Operator I64Const NYI +loop.wast:204: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[42] at offset 3/9: Operator I64Const NYI +loop.wast:205: $assert_return_24 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_24[43] at offset 3/10: Operator I64Const NYI +loop.wast:206: $assert_return_25 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_25[44] at offset 3/17: Operator I64Const NYI +30/42 tests passed. diff --git a/test/WasmSpec/baselines/memory.baseline b/test/WasmSpec/baselines/memory.baseline new file mode 100644 index 00000000000..bf76d3092bf --- /dev/null +++ b/test/WasmSpec/baselines/memory.baseline @@ -0,0 +1,14 @@ +memory.wast:305: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[17] at offset 4/16: Operator I64ReinterpretF64 NYI +memory.wast:317: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[26] at offset 3/9: Operator I64Const NYI +memory.wast:318: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[27] at offset 3/10: Operator I64Const NYI +memory.wast:319: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[28] at offset 3/9: Operator I64Const NYI +memory.wast:320: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[29] at offset 3/11: Operator I64Const NYI +memory.wast:321: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[30] at offset 3/9: Operator I64Const NYI +memory.wast:322: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[31] at offset 3/13: Operator I64Const NYI +memory.wast:324: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[32] at offset 4/11: Operator I64Const NYI +memory.wast:325: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[33] at offset 4/11: Operator I64Const NYI +memory.wast:326: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[34] at offset 5/13: Operator I64Const NYI +memory.wast:327: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[35] at offset 5/13: Operator I64Const NYI +memory.wast:328: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[36] at offset 5/13: Operator I64Const NYI +memory.wast:329: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[37] at offset 5/13: Operator I64Const NYI +14/27 tests passed. diff --git a/test/WasmSpec/baselines/memory_redundancy.baseline b/test/WasmSpec/baselines/memory_redundancy.baseline new file mode 100644 index 00000000000..f618b066507 --- /dev/null +++ b/test/WasmSpec/baselines/memory_redundancy.baseline @@ -0,0 +1,3 @@ +$action_1 = undefined +$action_3 = undefined +3/3 tests passed. diff --git a/test/WasmSpec/baselines/memory_trap.baseline b/test/WasmSpec/baselines/memory_trap.baseline new file mode 100644 index 00000000000..aaf6b830409 --- /dev/null +++ b/test/WasmSpec/baselines/memory_trap.baseline @@ -0,0 +1,12 @@ +memory_trap.wast:23: $assert_trap_2 failed, runtime trap NYI +memory_trap.wast:24: $assert_trap_3 failed, runtime trap NYI +memory_trap.wast:25: $assert_trap_4 failed, runtime trap NYI +memory_trap.wast:26: $assert_trap_5 failed, runtime trap NYI +memory_trap.wast:27: $assert_trap_6 failed, runtime trap NYI +memory_trap.wast:28: $assert_trap_7 failed, runtime trap NYI +memory_trap.wast:29: $assert_trap_8 failed, runtime trap NYI +memory_trap.wast:30: $assert_trap_9 failed, runtime trap NYI +memory_trap.wast:31: $assert_trap_10 failed, runtime trap NYI +memory_trap.wast:32: $assert_trap_11 failed, runtime trap NYI +memory_trap.wast:33: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function grow_memory[3] at offset 4/5: Operator GrowMemory NYI +2/13 tests passed. diff --git a/test/WasmSpec/baselines/names.baseline b/test/WasmSpec/baselines/names.baseline new file mode 100644 index 00000000000..89a4d7b757b --- /dev/null +++ b/test/WasmSpec/baselines/names.baseline @@ -0,0 +1,4 @@ +42 +123 +$action_0 = undefined +14/14 tests passed. diff --git a/test/WasmSpec/baselines/nop.baseline b/test/WasmSpec/baselines/nop.baseline new file mode 100644 index 00000000000..65915486cb3 --- /dev/null +++ b/test/WasmSpec/baselines/nop.baseline @@ -0,0 +1,3 @@ +nop.wast:242: $assert_return_48 unexpectedly threw: Error: Compiling wasm failed: function as-grow_memory-last[47] at offset 5/6: Operator GrowMemory NYI +nop.wast:243: $assert_return_49 unexpectedly threw: Error: Compiling wasm failed: function as-grow_memory-everywhere[48] at offset 8/9: Operator GrowMemory NYI +48/50 tests passed. diff --git a/test/WasmSpec/baselines/return.baseline b/test/WasmSpec/baselines/return.baseline new file mode 100644 index 00000000000..92ce6a6c401 --- /dev/null +++ b/test/WasmSpec/baselines/return.baseline @@ -0,0 +1,11 @@ +return.wast:187: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function type-i64[2] at offset 3/5: Operator I64Ctz NYI +return.wast:192: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[60] at offset 4/16: Operator I64ReinterpretF64 NYI +return.wast:214: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[76] at offset 3/7: I64 return type NYI +return.wast:218: $assert_return_24 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_24[79] at offset 3/7: I64 return type NYI +return.wast:244: $assert_return_44 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_44[99] at offset 3/7: I64 return type NYI +return.wast:247: $assert_return_46 unexpectedly threw: Error: Compiling wasm failed: function as-store-value[44] at offset 9/12: Operator I64StoreMem NYI +return.wast:249: $assert_return_48 unexpectedly threw: Error: Compiling wasm failed: function as-storeN-value[46] at offset 9/12: Operator I64StoreMem16 NYI +return.wast:254: $assert_return_51 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_51[106] at offset 3/7: I64 return type NYI +return.wast:261: $assert_return_55 unexpectedly threw: Error: Compiling wasm failed: function as-convert-operand[53] at offset 5/6: Operator I32ConvertI64 NYI +return.wast:263: $assert_return_56 unexpectedly threw: Error: Compiling wasm failed: function as-grow_memory-size[54] at offset 5/6: Operator GrowMemory NYI +47/57 tests passed. diff --git a/test/WasmSpec/baselines/select.baseline b/test/WasmSpec/baselines/select.baseline new file mode 100644 index 00000000000..b5e33fcc000 --- /dev/null +++ b/test/WasmSpec/baselines/select.baseline @@ -0,0 +1,17 @@ +select.wast:22: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[7] at offset 3/13: Operator I64Const NYI +select.wast:24: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[9] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:28: $assert_return_6 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_6[12] at offset 3/13: Operator I64Const NYI +select.wast:29: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[13] at offset 3/17: Operator I64Const NYI +select.wast:40: $assert_return_16 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_16[22] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:41: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_17[23] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:42: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_18[24] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:43: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_19[25] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:44: $assert_return_20 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_20[26] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:45: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_21[27] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:46: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_22[28] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:47: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_23[29] at offset 24/36: Operator I64ReinterpretF64 NYI +select.wast:49: $assert_trap_24 failed, runtime trap NYI +select.wast:50: $assert_trap_25 failed, runtime trap NYI +select.wast:51: $assert_trap_26 failed, runtime trap NYI +select.wast:52: $assert_trap_27 failed, runtime trap NYI +12/28 tests passed. diff --git a/test/WasmSpec/baselines/set_local.baseline b/test/WasmSpec/baselines/set_local.baseline new file mode 100644 index 00000000000..0d192035002 --- /dev/null +++ b/test/WasmSpec/baselines/set_local.baseline @@ -0,0 +1,5 @@ +set_local.wast:69: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function type-local-i64[1] at offset 3/8: I64 support NYI +set_local.wast:74: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[15] at offset 3/9: Operator I64Const NYI +set_local.wast:79: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_8[18] at offset 3/27: Operator I64Const NYI +set_local.wast:85: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[19] at offset 3/27: Operator I64Const NYI +6/10 tests passed. diff --git a/test/WasmSpec/baselines/skip-stack-guard-page.baseline b/test/WasmSpec/baselines/skip-stack-guard-page.baseline new file mode 100644 index 00000000000..3dff618d1a2 --- /dev/null +++ b/test/WasmSpec/baselines/skip-stack-guard-page.baseline @@ -0,0 +1,11 @@ +skip-stack-guard-page.wast:2275: $assert_trap_0 failed, runtime trap NYI +skip-stack-guard-page.wast:2276: $assert_trap_1 failed, runtime trap NYI +skip-stack-guard-page.wast:2277: $assert_trap_2 failed, runtime trap NYI +skip-stack-guard-page.wast:2278: $assert_trap_3 failed, runtime trap NYI +skip-stack-guard-page.wast:2279: $assert_trap_4 failed, runtime trap NYI +skip-stack-guard-page.wast:2280: $assert_trap_5 failed, runtime trap NYI +skip-stack-guard-page.wast:2281: $assert_trap_6 failed, runtime trap NYI +skip-stack-guard-page.wast:2282: $assert_trap_7 failed, runtime trap NYI +skip-stack-guard-page.wast:2283: $assert_trap_8 failed, runtime trap NYI +skip-stack-guard-page.wast:2284: $assert_trap_9 failed, runtime trap NYI +0/10 tests passed. diff --git a/test/WasmSpec/baselines/stack.baseline b/test/WasmSpec/baselines/stack.baseline new file mode 100644 index 00000000000..ce2fe1623da --- /dev/null +++ b/test/WasmSpec/baselines/stack.baseline @@ -0,0 +1,4 @@ +stack.wast:130: $assert_return_0 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_0[5] at offset 3/18: Operator I64Const NYI +stack.wast:131: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[6] at offset 3/18: Operator I64Const NYI +stack.wast:132: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_2[7] at offset 3/18: Operator I64Const NYI +0/3 tests passed. diff --git a/test/WasmSpec/baselines/start.baseline b/test/WasmSpec/baselines/start.baseline new file mode 100644 index 00000000000..9f35f7cbc02 --- /dev/null +++ b/test/WasmSpec/baselines/start.baseline @@ -0,0 +1,5 @@ +$action_1 = undefined +$action_3 = undefined +$action_1 = undefined +$action_3 = undefined +6/6 tests passed. diff --git a/test/WasmSpec/baselines/store_retval.baseline b/test/WasmSpec/baselines/store_retval.baseline new file mode 100644 index 00000000000..c5ec95845d8 --- /dev/null +++ b/test/WasmSpec/baselines/store_retval.baseline @@ -0,0 +1 @@ +0/0 tests passed. diff --git a/test/WasmSpec/baselines/switch.baseline b/test/WasmSpec/baselines/switch.baseline new file mode 100644 index 00000000000..d518d18b986 --- /dev/null +++ b/test/WasmSpec/baselines/switch.baseline @@ -0,0 +1,8 @@ +switch.wast:130: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[13] at offset 3/9: Operator I64Const NYI +switch.wast:131: $assert_return_10 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_10[14] at offset 3/9: Operator I64Const NYI +switch.wast:132: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_11[15] at offset 3/9: Operator I64Const NYI +switch.wast:133: $assert_return_12 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_12[16] at offset 3/9: Operator I64Const NYI +switch.wast:134: $assert_return_13 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_13[17] at offset 3/10: Operator I64Const NYI +switch.wast:135: $assert_return_14 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_14[18] at offset 3/9: Operator I64Const NYI +switch.wast:136: $assert_return_15 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_15[19] at offset 3/10: Operator I64Const NYI +19/26 tests passed. diff --git a/test/WasmSpec/baselines/tee_local.baseline b/test/WasmSpec/baselines/tee_local.baseline new file mode 100644 index 00000000000..683e2199e37 --- /dev/null +++ b/test/WasmSpec/baselines/tee_local.baseline @@ -0,0 +1,8 @@ +tee_local.wast:99: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_1[12] at offset 3/7: I64 return type NYI +tee_local.wast:101: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_3[14] at offset 4/16: Operator I64ReinterpretF64 NYI +tee_local.wast:104: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_5[16] at offset 3/9: Operator I64Const NYI +tee_local.wast:106: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_7[18] at offset 13/25: Operator I64ReinterpretF64 NYI +tee_local.wast:109: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_8[19] at offset 3/27: Operator I64Const NYI +tee_local.wast:115: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_9[20] at offset 3/27: Operator I64Const NYI +tee_local.wast:122: $assert_return_10 unexpectedly threw: Error: Compiling wasm failed: function $assert_return_10[21] at offset 3/36: Operator I64Const NYI +4/11 tests passed. diff --git a/test/WasmSpec/baselines/traps.baseline b/test/WasmSpec/baselines/traps.baseline new file mode 100644 index 00000000000..b19fbcd6662 --- /dev/null +++ b/test/WasmSpec/baselines/traps.baseline @@ -0,0 +1,21 @@ +traps.wast:16: $assert_trap_0 failed, runtime trap NYI +traps.wast:17: $assert_trap_1 failed, runtime trap NYI +traps.wast:18: $assert_trap_2 failed, runtime trap NYI +traps.wast:19: $assert_trap_3 failed, runtime trap NYI +traps.wast:32: $assert_trap_0 failed, runtime trap NYI +traps.wast:33: $assert_trap_1 failed, runtime trap NYI +traps.wast:34: $assert_trap_2 failed, runtime trap NYI +traps.wast:35: $assert_trap_3 failed, runtime trap NYI +traps.wast:48: $assert_trap_0 failed, runtime trap NYI +traps.wast:49: $assert_trap_1 failed, runtime trap NYI +traps.wast:50: $assert_trap_2 failed, runtime trap NYI +traps.wast:51: $assert_trap_3 failed, runtime trap NYI +traps.wast:52: $assert_trap_4 failed, runtime trap NYI +traps.wast:53: $assert_trap_5 failed, runtime trap NYI +traps.wast:54: $assert_trap_6 failed, runtime trap NYI +traps.wast:55: $assert_trap_7 failed, runtime trap NYI +traps.wast:66: $assert_trap_0 failed, runtime trap NYI +traps.wast:67: $assert_trap_1 failed, runtime trap NYI +traps.wast:68: $assert_trap_2 failed, runtime trap NYI +traps.wast:69: $assert_trap_3 failed, runtime trap NYI +0/20 tests passed. diff --git a/test/WasmSpec/baselines/typecheck.baseline b/test/WasmSpec/baselines/typecheck.baseline new file mode 100644 index 00000000000..c5ec95845d8 --- /dev/null +++ b/test/WasmSpec/baselines/typecheck.baseline @@ -0,0 +1 @@ +0/0 tests passed. diff --git a/test/WasmSpec/baselines/unwind.baseline b/test/WasmSpec/baselines/unwind.baseline new file mode 100644 index 00000000000..f4cc75ed252 --- /dev/null +++ b/test/WasmSpec/baselines/unwind.baseline @@ -0,0 +1,24 @@ +unwind.wast:130: $assert_trap_0 failed, runtime trap NYI +unwind.wast:131: $assert_return_1 unexpectedly threw: Error: Compiling wasm failed: function block-unwind-by-br[1] at offset 7/13: Operator I64Const NYI +unwind.wast:132: $assert_return_2 unexpectedly threw: Error: Compiling wasm failed: function block-unwind-by-br-value[2] at offset 7/13: Operator I64Const NYI +unwind.wast:133: $assert_return_3 unexpectedly threw: Error: Compiling wasm failed: function block-unwind-by-br_table[3] at offset 7/16: Operator I64Const NYI +unwind.wast:134: $assert_return_4 unexpectedly threw: Error: Compiling wasm failed: function block-unwind-by-br_table-value[4] at offset 7/16: Operator I64Const NYI +unwind.wast:135: $assert_return_5 unexpectedly threw: Error: Compiling wasm failed: function block-unwind-by-return[5] at offset 7/12: Operator I64Const NYI +unwind.wast:137: $assert_trap_6 failed, runtime trap NYI +unwind.wast:138: $assert_return_7 unexpectedly threw: Error: Compiling wasm failed: function block-nested-unwind-by-br[7] at offset 9/17: Operator I64Const NYI +unwind.wast:139: $assert_return_8 unexpectedly threw: Error: Compiling wasm failed: function block-nested-unwind-by-br-value[8] at offset 9/16: Operator I64Const NYI +unwind.wast:140: $assert_return_9 unexpectedly threw: Error: Compiling wasm failed: function block-nested-unwind-by-br_table[9] at offset 9/20: Operator I64Const NYI +unwind.wast:141: $assert_return_10 unexpectedly threw: Error: Compiling wasm failed: function block-nested-unwind-by-br_table-value[10] at offset 9/19: Operator I64Const NYI +unwind.wast:142: $assert_return_11 unexpectedly threw: Error: Compiling wasm failed: function block-nested-unwind-by-return[11] at offset 9/15: Operator I64Const NYI +unwind.wast:144: $assert_trap_12 failed, runtime trap NYI +unwind.wast:149: $assert_trap_16 failed, runtime trap NYI +unwind.wast:150: $assert_return_17 unexpectedly threw: Error: Compiling wasm failed: function binary-after-br[17] at offset 22/24: Operator I64Eq NYI +unwind.wast:151: $assert_return_18 unexpectedly threw: Error: Compiling wasm failed: function binary-after-br_table[18] at offset 25/27: Operator I64Eq NYI +unwind.wast:152: $assert_return_19 unexpectedly threw: Error: Compiling wasm failed: function binary-after-return[19] at offset 19/20: Operator I64Eq NYI +unwind.wast:154: $assert_trap_20 failed, runtime trap NYI +unwind.wast:155: $assert_return_21 unexpectedly threw: Error: Compiling wasm failed: function select-after-br[21] at offset 19/26: Operator I64Const NYI +unwind.wast:156: $assert_return_22 unexpectedly threw: Error: Compiling wasm failed: function select-after-br_table[22] at offset 19/29: Operator I64Const NYI +unwind.wast:157: $assert_return_23 unexpectedly threw: Error: Compiling wasm failed: function select-after-return[23] at offset 17/22: Operator I64Const NYI +unwind.wast:159: $assert_trap_24 failed, runtime trap NYI +unwind.wast:164: $assert_trap_28 failed, runtime trap NYI +9/32 tests passed. diff --git a/test/WasmSpec/convert-test-suite/.gitignore b/test/WasmSpec/convert-test-suite/.gitignore new file mode 100644 index 00000000000..07e6e472cc7 --- /dev/null +++ b/test/WasmSpec/convert-test-suite/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/test/WasmSpec/convert-test-suite/index.js b/test/WasmSpec/convert-test-suite/index.js new file mode 100644 index 00000000000..35f27cf8d98 --- /dev/null +++ b/test/WasmSpec/convert-test-suite/index.js @@ -0,0 +1,189 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const path = require("path"); +const jsBeautify = require("js-beautify"); +const fs = require("fs-extra"); +const stringArgv = require("string-argv"); +const {execFile, spawn} = require("child_process"); + +const rlRoot = path.join(__dirname, ".."); +const baselineDir = path.join(rlRoot, "baselines"); + +const argv = require("yargs") + .options({ + bin: { + string: true, + alias: "b", + description: "Path to sexpr-wasm exe", + demand: true, + }, + suite: { + string: true, + alias: "s", + description: "Path to the test suite", + default: path.join(rlRoot, "testsuite"), + demand: true, + }, + output: { + string: true, + alias: "o", + description: "Output path of the converted suite", + default: path.join(rlRoot, "testsuite-bin"), + demand: true, + }, + excludes: { + array: true, + alias: "e", + description: "Spec tests to exclude from the conversion (use for known failures)", + default: [ + "call_indirect", + "conversions", + "f32", + "f32_cmp", + "f64", + "f64_cmp", + "float_literals", + "float_exprs", + "float_memory", + "float_misc", + "resizing", + "unreachable", + ] + }, + rebase: { + string: true, + description: "Path to host to run the test create/update the baselines" + } + }) + .argv; + +// Make sure all arguments are valid +argv.output = path.resolve(argv.output); +fs.statSync(argv.bin).isFile(); +fs.statSync(argv.suite).isDirectory(); + +function convertTest(filename) { + return new Promise(resolve => { + execFile(argv.bin, [ + filename, + "--spec", + "-o", path.join(argv.output, `${path.basename(filename, ".wast")}.json`) + ], () => { + // If an error occurs here, handle manually + // There are official test files that raise errors when converting and it's normal + resolve(); + }); + }); +} + +function hostFlags(specFile, {fullpath} = {}) { + return `-on:wasm -on:wasmlazytrap -args ${ + fullpath ? specFile : path.relative(rlRoot, specFile) + } -endargs`; +} + +function getBaselinePath(specFile) { + return `${path.relative(rlRoot, path.join(baselineDir, path.basename(specFile, ".json")))}.baseline`; +} + +function main() { + return new Promise((resolve, reject) => { + fs.remove(argv.output, err => { + // ENOENT is the error code if the folder is missing + if (err && err.code !== "ENOENT") { + return reject(err); + } + resolve(); + }); + }).then(() => new Promise((resolve, reject) => { + fs.ensureDirSync(argv.output); + const conversions = []; + fs.walk(argv.suite) + .on("data", item => { + if ( + path.extname(item.path) === ".wast" && + !argv.excludes.includes(path.basename(item.path, ".wast")) + ) { + conversions.push(convertTest(item.path)); + } + }) + .on("end", () => { + Promise.all(conversions).then(resolve, reject); + }); + })).then(() => new Promise((resolve, reject) => + fs.readdir(argv.output, (err, files) => { + if (err) { + return reject(err); + } + resolve(files + .filter(file => path.extname(file) === ".json") + .map(file => path.join(argv.output, file)) + ); + }) + )).then(specFiles => { + const cleanFullPaths = specFiles.map(specFile => new Promise((resolve, reject) => { + const specDescription = require(specFile); + for (const module of specDescription.modules) { + for (const command of module.commands) { + // Remove hardcoded path here + command.file = path.basename(command.file); + } + } + fs.writeFile( + specFile, + jsBeautify( + JSON.stringify(specDescription), + {indent_size: 2, end_with_newline: true} + ), err => { + if (err) { + return reject(err); + } + resolve(); + } + ); + })); + const rlexe = ( +` + +${ + specFiles.map(specFile => ` + + + spec.js + ${getBaselinePath(specFile)} + ${hostFlags(specFile)} -on:wasmdeferred + + ` + ).join("") +} + +`); + fs.writeFileSync(path.join(__dirname, "..", "rlexe.xml"), rlexe); + return Promise.all(cleanFullPaths).then(() => Promise.resolve(specFiles)); + }).then(specFiles => { + if (!argv.rebase) { + return; + } + fs.removeSync(baselineDir); + fs.ensureDirSync(baselineDir); + return Promise.all(specFiles.map(specFile => new Promise((resolve, reject) => { + const baseline = fs.createWriteStream(getBaselinePath(specFile)); + const args = [path.resolve(rlRoot, "spec.js"), "-nonative"].concat(stringArgv(hostFlags(specFile, {fullpath: true}))); + console.log(argv.rebase, args.join(" ")); + const engine = spawn( + argv.rebase, + args, + {cwd: rlRoot} + ); + engine.stdout.pipe(baseline); + engine.stderr.pipe(baseline); + engine.on("error", reject); + engine.on("close", resolve); + }))); + }); +} + +main().then(() => console.log("done"), err => console.error(err)); diff --git a/test/WasmSpec/convert-test-suite/package.json b/test/WasmSpec/convert-test-suite/package.json new file mode 100644 index 00000000000..f83f8e16e0c --- /dev/null +++ b/test/WasmSpec/convert-test-suite/package.json @@ -0,0 +1,17 @@ +{ + "name": "convert-test-suite", + "version": "1.0.0", + "description": "Convert official WebAssembly Test suite to run with ch.exe", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Michael Ferris", + "license": "MIT", + "dependencies": { + "fs-extra": "^0.30.0", + "js-beautify": "^1.6.3", + "string-argv": "0.0.2", + "yargs": "^4.7.1" + } +} diff --git a/test/WasmSpec/rlexe.xml b/test/WasmSpec/rlexe.xml new file mode 100644 index 00000000000..bb5fe241bb1 --- /dev/null +++ b/test/WasmSpec/rlexe.xml @@ -0,0 +1,291 @@ + + + + + + spec.js + baselines\address.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\address.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\binary.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\binary.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\block.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\block.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\br.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\br.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\br_if.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\br_if.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\br_table.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\br_table.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\break-drop.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\break-drop.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\call.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\call.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\comments.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\comments.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\endianness.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\endianness.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\fac.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\fac.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\forward.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\forward.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\func.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\func.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\func_ptrs.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\func_ptrs.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\get_local.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\get_local.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\globals.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\globals.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\i32.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\i32.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\i64.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\i64.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\imports.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\imports.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\int_exprs.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\int_exprs.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\int_literals.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\int_literals.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\labels.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\labels.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\left-to-right.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\left-to-right.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\loop.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\loop.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\memory.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\memory.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\memory_redundancy.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\memory_redundancy.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\memory_trap.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\memory_trap.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\names.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\names.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\nop.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\nop.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\return.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\return.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\select.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\select.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\set_local.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\set_local.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\skip-stack-guard-page.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\skip-stack-guard-page.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\stack.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\stack.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\start.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\start.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\store_retval.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\store_retval.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\switch.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\switch.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\tee_local.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\tee_local.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\traps.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\traps.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\typecheck.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\typecheck.json -endargs -on:wasmdeferred + + + + + spec.js + baselines\unwind.baseline + -on:wasm -on:wasmlazytrap -args testsuite-bin\unwind.json -endargs -on:wasmdeferred + + + diff --git a/test/WasmSpec/spec.js b/test/WasmSpec/spec.js new file mode 100644 index 00000000000..08926bb02e0 --- /dev/null +++ b/test/WasmSpec/spec.js @@ -0,0 +1,170 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +// This file has been modified by Microsoft on [07/2016]. + +/* + * Copyright 2016 WebAssembly Community Group participants + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* polyfill from SM/CH to D8 */ +if (typeof arguments == 'undefined') { + if (typeof scriptArgs != 'undefined') { + arguments = scriptArgs; + } else if(typeof WScript != 'undefined') { + arguments = WScript.Arguments || []; + } +} + +if (typeof quit == 'undefined') { + if (typeof WScript != 'undefined') { + quit = WScript.quit; + } +} + +if (typeof readbuffer == 'undefined') { + readbuffer = function(path) { return read(path, 'binary'); }; +} + +if (arguments.length < 1) { + print('usage: spec.js -args [start index] [end index] [-v] -endargs'); + quit(0); +} + +var passed = 0; +var failed = 0; +const iVerbose = arguments.indexOf("-v"); +var verbose = iVerbose !== -1; +if (verbose) { + arguments.splice(iVerbose, 1) +} +run(arguments[0], arguments[1]|0, arguments[2] === undefined ? undefined : arguments[2]|0); + +function getCommandStr({file, line, name}) { + return `${file}:${line}: ${name}`; +} + +function run(inPath, iStart, iEnd) { + var lastSlash = Math.max(inPath.lastIndexOf('/'), inPath.lastIndexOf('\\')); + var inDir = lastSlash == -1 ? '.' : inPath.slice(0, lastSlash); + var data = read(inPath); + var jsonData = JSON.parse(data); + + var iTest = 0; + for (var i = 0; i < jsonData.modules.length; ++i) { + var module = jsonData.modules[i] || {}; + try { + var moduleFile = readbuffer(inDir + '/' + module.filename); + var m = createModule(moduleFile); + for (var j = 0; j < module.commands.length; ++j, ++iTest) { + var command = module.commands[j]; + if (iTest < iStart || iTest > iEnd) { + if (verbose) { + print(`${getCommandStr(command)}: Skipped`); + } + continue; + } + switch (command.type) { + case 'action': + invoke(m, command); + break; + + case 'assert_return': + assertReturn(m, command); + break; + + case 'assert_return_nan': + assertReturn(m, command); + break; + + case 'assert_trap': + // NYI implemented + // assertTrap(m, command.name, command.file, command.line); + failed++; + print(`${getCommandStr(command)} failed, runtime trap NYI`); + break; + } + } + } catch (e) { + print("Unexpected Error while compiling " + module.filename); + print(e); + } + } + end(); +} + +function createModule(a) { + var memory = null; + var u8a = new Uint8Array(a); + var ffi = {spectest: {print: print, global : 666}}; + var module = Wasm.instantiateModule(u8a, ffi); + memory = module.memory; + return module; +} + +function assertReturn(m, command) { + const {file, line, name} = command; + try { + var result = m.exports[name](); + } catch(e) { + print(`${getCommandStr(command)} unexpectedly threw: ${e}`); + failed++; + return; + } + + if (result == 1) { + passed++; + if (verbose) { + print(`${getCommandStr(command)} passed.`); + } + } else { + print(`${getCommandStr(command)} failed.`); + failed++; + } +} + +function assertTrap(m, command) { + const {file, line, name} = command; + var threw = false; + try { + m.exports[name](); + } catch (e) { + threw = true; + } + + if (threw) { + passed++; + print(`${getCommandStr(command)} passed.`); + } else { + print(`${getCommandStr(command)} failed, didn't throw`); + failed++; + } +} + +function invoke(m, command) { + const {file, line, name} = command; + try { + var invokeResult = m.exports[name](); + } catch(e) { + print(`${getCommandStr(command)} unexpectedly threw: ${e}`); + } + + print(name + " = " + invokeResult); +} + +function end() { + print(passed + "/" + (passed + failed) + " tests passed."); +} diff --git a/test/WasmSpec/testsuite-bin/address.0.wasm b/test/WasmSpec/testsuite-bin/address.0.wasm new file mode 100644 index 00000000000..2c516bdb514 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/address.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/address.json b/test/WasmSpec/testsuite-bin/address.json new file mode 100644 index 00000000000..d728b3e6d45 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/address.json @@ -0,0 +1,31 @@ +{ + "modules": [{ + "filename": "address.0.wasm", + "commands": [{ + "type": "action", + "name": "$action_0", + "file": "address.wast", + "line": 30 + }, { + "type": "action", + "name": "$action_1", + "file": "address.wast", + "line": 31 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "address.wast", + "line": 32 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "address.wast", + "line": 33 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "address.wast", + "line": 34 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/binary.0.wasm b/test/WasmSpec/testsuite-bin/binary.0.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/binary.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/binary.1.wasm b/test/WasmSpec/testsuite-bin/binary.1.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/binary.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/binary.2.wasm b/test/WasmSpec/testsuite-bin/binary.2.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/binary.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/binary.3.wasm b/test/WasmSpec/testsuite-bin/binary.3.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/binary.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/binary.json b/test/WasmSpec/testsuite-bin/binary.json new file mode 100644 index 00000000000..6a233695ba2 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/binary.json @@ -0,0 +1,15 @@ +{ + "modules": [{ + "filename": "binary.0.wasm", + "commands": [] + }, { + "filename": "binary.1.wasm", + "commands": [] + }, { + "filename": "binary.2.wasm", + "commands": [] + }, { + "filename": "binary.3.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/block.0.wasm b/test/WasmSpec/testsuite-bin/block.0.wasm new file mode 100644 index 00000000000..afd4c067712 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/block.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/block.json b/test/WasmSpec/testsuite-bin/block.json new file mode 100644 index 00000000000..62132269fdc --- /dev/null +++ b/test/WasmSpec/testsuite-bin/block.json @@ -0,0 +1,76 @@ +{ + "modules": [{ + "filename": "block.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "block.wast", + "line": 114 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "block.wast", + "line": 115 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "block.wast", + "line": 116 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "block.wast", + "line": 117 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "block.wast", + "line": 118 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "block.wast", + "line": 120 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "block.wast", + "line": 121 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "block.wast", + "line": 122 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "block.wast", + "line": 123 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "block.wast", + "line": 125 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "block.wast", + "line": 126 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "block.wast", + "line": 127 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "block.wast", + "line": 128 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "block.wast", + "line": 130 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/br.0.wasm b/test/WasmSpec/testsuite-bin/br.0.wasm new file mode 100644 index 00000000000..6dc3b4fcf2f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/br.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/br.1.wasm b/test/WasmSpec/testsuite-bin/br.1.wasm new file mode 100644 index 00000000000..940832d1dc3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/br.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/br.json b/test/WasmSpec/testsuite-bin/br.json new file mode 100644 index 00000000000..bf3932a6d95 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/br.json @@ -0,0 +1,314 @@ +{ + "modules": [{ + "filename": "br.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "br.wast", + "line": 284 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "br.wast", + "line": 285 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "br.wast", + "line": 286 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "br.wast", + "line": 287 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "br.wast", + "line": 289 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "br.wast", + "line": 290 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "br.wast", + "line": 291 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "br.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "br.wast", + "line": 294 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "br.wast", + "line": 295 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "br.wast", + "line": 296 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "br.wast", + "line": 297 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "br.wast", + "line": 299 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "br.wast", + "line": 300 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "br.wast", + "line": 301 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "br.wast", + "line": 303 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "br.wast", + "line": 305 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "br.wast", + "line": 306 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "br.wast", + "line": 307 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "br.wast", + "line": 309 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "br.wast", + "line": 310 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "br.wast", + "line": 311 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "br.wast", + "line": 313 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "br.wast", + "line": 315 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "br.wast", + "line": 316 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "br.wast", + "line": 317 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "br.wast", + "line": 318 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "br.wast", + "line": 319 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "br.wast", + "line": 321 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "br.wast", + "line": 322 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "br.wast", + "line": 323 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "br.wast", + "line": 324 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "br.wast", + "line": 325 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "br.wast", + "line": 327 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "br.wast", + "line": 328 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "br.wast", + "line": 329 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "br.wast", + "line": 331 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "br.wast", + "line": 332 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "br.wast", + "line": 333 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "br.wast", + "line": 334 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "br.wast", + "line": 336 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "br.wast", + "line": 338 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "br.wast", + "line": 339 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "br.wast", + "line": 341 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "br.wast", + "line": 342 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "br.wast", + "line": 343 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "br.wast", + "line": 344 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "br.wast", + "line": 346 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "br.wast", + "line": 348 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "br.wast", + "line": 349 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "br.wast", + "line": 351 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "br.wast", + "line": 353 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "br.wast", + "line": 354 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "br.wast", + "line": 356 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "br.wast", + "line": 358 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "br.wast", + "line": 360 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "br.wast", + "line": 361 + }, { + "type": "assert_return", + "name": "$assert_return_57", + "file": "br.wast", + "line": 362 + }, { + "type": "assert_return", + "name": "$assert_return_58", + "file": "br.wast", + "line": 363 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "br.wast", + "line": 364 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "br.wast", + "line": 365 + }] + }, { + "filename": "br.1.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/br_if.0.wasm b/test/WasmSpec/testsuite-bin/br_if.0.wasm new file mode 100644 index 00000000000..6656fb69038 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/br_if.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/br_if.json b/test/WasmSpec/testsuite-bin/br_if.json new file mode 100644 index 00000000000..c64a1de79be --- /dev/null +++ b/test/WasmSpec/testsuite-bin/br_if.json @@ -0,0 +1,176 @@ +{ + "modules": [{ + "filename": "br_if.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "br_if.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "br_if.wast", + "line": 133 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "br_if.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "br_if.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "br_if.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "br_if.wast", + "line": 137 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "br_if.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "br_if.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "br_if.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "br_if.wast", + "line": 142 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "br_if.wast", + "line": 143 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "br_if.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "br_if.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "br_if.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "br_if.wast", + "line": 148 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "br_if.wast", + "line": 149 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "br_if.wast", + "line": 150 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "br_if.wast", + "line": 151 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "br_if.wast", + "line": 152 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "br_if.wast", + "line": 153 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "br_if.wast", + "line": 154 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "br_if.wast", + "line": 155 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "br_if.wast", + "line": 157 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "br_if.wast", + "line": 158 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "br_if.wast", + "line": 159 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "br_if.wast", + "line": 160 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "br_if.wast", + "line": 161 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "br_if.wast", + "line": 162 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "br_if.wast", + "line": 163 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "br_if.wast", + "line": 164 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "br_if.wast", + "line": 165 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "br_if.wast", + "line": 166 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "br_if.wast", + "line": 167 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "br_if.wast", + "line": 168 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/br_table.0.wasm b/test/WasmSpec/testsuite-bin/br_table.0.wasm new file mode 100644 index 00000000000..7d891c21bf8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/br_table.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/br_table.json b/test/WasmSpec/testsuite-bin/br_table.json new file mode 100644 index 00000000000..07df4aa445f --- /dev/null +++ b/test/WasmSpec/testsuite-bin/br_table.json @@ -0,0 +1,721 @@ +{ + "modules": [{ + "filename": "br_table.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "br_table.wast", + "line": 1201 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "br_table.wast", + "line": 1202 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "br_table.wast", + "line": 1203 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "br_table.wast", + "line": 1204 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "br_table.wast", + "line": 1206 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "br_table.wast", + "line": 1207 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "br_table.wast", + "line": 1208 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "br_table.wast", + "line": 1209 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "br_table.wast", + "line": 1211 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "br_table.wast", + "line": 1212 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "br_table.wast", + "line": 1213 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "br_table.wast", + "line": 1214 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "br_table.wast", + "line": 1215 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "br_table.wast", + "line": 1216 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "br_table.wast", + "line": 1218 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "br_table.wast", + "line": 1219 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "br_table.wast", + "line": 1220 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "br_table.wast", + "line": 1221 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "br_table.wast", + "line": 1222 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "br_table.wast", + "line": 1223 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "br_table.wast", + "line": 1225 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "br_table.wast", + "line": 1226 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "br_table.wast", + "line": 1227 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "br_table.wast", + "line": 1228 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "br_table.wast", + "line": 1229 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "br_table.wast", + "line": 1230 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "br_table.wast", + "line": 1232 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "br_table.wast", + "line": 1233 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "br_table.wast", + "line": 1234 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "br_table.wast", + "line": 1235 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "br_table.wast", + "line": 1236 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "br_table.wast", + "line": 1237 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "br_table.wast", + "line": 1239 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "br_table.wast", + "line": 1240 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "br_table.wast", + "line": 1241 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "br_table.wast", + "line": 1242 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "br_table.wast", + "line": 1243 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "br_table.wast", + "line": 1244 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "br_table.wast", + "line": 1245 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "br_table.wast", + "line": 1246 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "br_table.wast", + "line": 1247 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "br_table.wast", + "line": 1248 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "br_table.wast", + "line": 1250 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "br_table.wast", + "line": 1251 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "br_table.wast", + "line": 1252 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "br_table.wast", + "line": 1253 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "br_table.wast", + "line": 1254 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "br_table.wast", + "line": 1255 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "br_table.wast", + "line": 1256 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "br_table.wast", + "line": 1257 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "br_table.wast", + "line": 1258 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "br_table.wast", + "line": 1259 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "br_table.wast", + "line": 1261 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "br_table.wast", + "line": 1262 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "br_table.wast", + "line": 1263 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "br_table.wast", + "line": 1264 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "br_table.wast", + "line": 1265 + }, { + "type": "assert_return", + "name": "$assert_return_57", + "file": "br_table.wast", + "line": 1266 + }, { + "type": "assert_return", + "name": "$assert_return_58", + "file": "br_table.wast", + "line": 1267 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "br_table.wast", + "line": 1268 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "br_table.wast", + "line": 1270 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "br_table.wast", + "line": 1271 + }, { + "type": "assert_return", + "name": "$assert_return_62", + "file": "br_table.wast", + "line": 1272 + }, { + "type": "assert_return", + "name": "$assert_return_63", + "file": "br_table.wast", + "line": 1273 + }, { + "type": "assert_return", + "name": "$assert_return_64", + "file": "br_table.wast", + "line": 1275 + }, { + "type": "assert_return", + "name": "$assert_return_65", + "file": "br_table.wast", + "line": 1276 + }, { + "type": "assert_return", + "name": "$assert_return_66", + "file": "br_table.wast", + "line": 1277 + }, { + "type": "assert_return", + "name": "$assert_return_67", + "file": "br_table.wast", + "line": 1279 + }, { + "type": "assert_return", + "name": "$assert_return_68", + "file": "br_table.wast", + "line": 1281 + }, { + "type": "assert_return", + "name": "$assert_return_69", + "file": "br_table.wast", + "line": 1282 + }, { + "type": "assert_return", + "name": "$assert_return_70", + "file": "br_table.wast", + "line": 1283 + }, { + "type": "assert_return", + "name": "$assert_return_71", + "file": "br_table.wast", + "line": 1285 + }, { + "type": "assert_return", + "name": "$assert_return_72", + "file": "br_table.wast", + "line": 1286 + }, { + "type": "assert_return", + "name": "$assert_return_73", + "file": "br_table.wast", + "line": 1287 + }, { + "type": "assert_return", + "name": "$assert_return_74", + "file": "br_table.wast", + "line": 1289 + }, { + "type": "assert_return", + "name": "$assert_return_75", + "file": "br_table.wast", + "line": 1291 + }, { + "type": "assert_return", + "name": "$assert_return_76", + "file": "br_table.wast", + "line": 1292 + }, { + "type": "assert_return", + "name": "$assert_return_77", + "file": "br_table.wast", + "line": 1293 + }, { + "type": "assert_return", + "name": "$assert_return_78", + "file": "br_table.wast", + "line": 1294 + }, { + "type": "assert_return", + "name": "$assert_return_79", + "file": "br_table.wast", + "line": 1295 + }, { + "type": "assert_return", + "name": "$assert_return_80", + "file": "br_table.wast", + "line": 1297 + }, { + "type": "assert_return", + "name": "$assert_return_81", + "file": "br_table.wast", + "line": 1298 + }, { + "type": "assert_return", + "name": "$assert_return_82", + "file": "br_table.wast", + "line": 1299 + }, { + "type": "assert_return", + "name": "$assert_return_83", + "file": "br_table.wast", + "line": 1300 + }, { + "type": "assert_return", + "name": "$assert_return_84", + "file": "br_table.wast", + "line": 1301 + }, { + "type": "assert_return", + "name": "$assert_return_85", + "file": "br_table.wast", + "line": 1303 + }, { + "type": "assert_return", + "name": "$assert_return_86", + "file": "br_table.wast", + "line": 1304 + }, { + "type": "assert_return", + "name": "$assert_return_87", + "file": "br_table.wast", + "line": 1305 + }, { + "type": "assert_return", + "name": "$assert_return_88", + "file": "br_table.wast", + "line": 1307 + }, { + "type": "assert_return", + "name": "$assert_return_89", + "file": "br_table.wast", + "line": 1308 + }, { + "type": "assert_return", + "name": "$assert_return_90", + "file": "br_table.wast", + "line": 1309 + }, { + "type": "assert_return", + "name": "$assert_return_91", + "file": "br_table.wast", + "line": 1310 + }, { + "type": "assert_return", + "name": "$assert_return_92", + "file": "br_table.wast", + "line": 1312 + }, { + "type": "assert_return", + "name": "$assert_return_93", + "file": "br_table.wast", + "line": 1314 + }, { + "type": "assert_return", + "name": "$assert_return_94", + "file": "br_table.wast", + "line": 1315 + }, { + "type": "assert_return", + "name": "$assert_return_95", + "file": "br_table.wast", + "line": 1317 + }, { + "type": "assert_return", + "name": "$assert_return_96", + "file": "br_table.wast", + "line": 1318 + }, { + "type": "assert_return", + "name": "$assert_return_97", + "file": "br_table.wast", + "line": 1319 + }, { + "type": "assert_return", + "name": "$assert_return_98", + "file": "br_table.wast", + "line": 1320 + }, { + "type": "assert_return", + "name": "$assert_return_99", + "file": "br_table.wast", + "line": 1322 + }, { + "type": "assert_return", + "name": "$assert_return_100", + "file": "br_table.wast", + "line": 1324 + }, { + "type": "assert_return", + "name": "$assert_return_101", + "file": "br_table.wast", + "line": 1325 + }, { + "type": "assert_return", + "name": "$assert_return_102", + "file": "br_table.wast", + "line": 1327 + }, { + "type": "assert_return", + "name": "$assert_return_103", + "file": "br_table.wast", + "line": 1329 + }, { + "type": "assert_return", + "name": "$assert_return_104", + "file": "br_table.wast", + "line": 1330 + }, { + "type": "assert_return", + "name": "$assert_return_105", + "file": "br_table.wast", + "line": 1332 + }, { + "type": "assert_return", + "name": "$assert_return_106", + "file": "br_table.wast", + "line": 1334 + }, { + "type": "assert_return", + "name": "$assert_return_107", + "file": "br_table.wast", + "line": 1336 + }, { + "type": "assert_return", + "name": "$assert_return_108", + "file": "br_table.wast", + "line": 1337 + }, { + "type": "assert_return", + "name": "$assert_return_109", + "file": "br_table.wast", + "line": 1338 + }, { + "type": "assert_return", + "name": "$assert_return_110", + "file": "br_table.wast", + "line": 1339 + }, { + "type": "assert_return", + "name": "$assert_return_111", + "file": "br_table.wast", + "line": 1340 + }, { + "type": "assert_return", + "name": "$assert_return_112", + "file": "br_table.wast", + "line": 1341 + }, { + "type": "assert_return", + "name": "$assert_return_113", + "file": "br_table.wast", + "line": 1343 + }, { + "type": "assert_return", + "name": "$assert_return_114", + "file": "br_table.wast", + "line": 1344 + }, { + "type": "assert_return", + "name": "$assert_return_115", + "file": "br_table.wast", + "line": 1345 + }, { + "type": "assert_return", + "name": "$assert_return_116", + "file": "br_table.wast", + "line": 1346 + }, { + "type": "assert_return", + "name": "$assert_return_117", + "file": "br_table.wast", + "line": 1347 + }, { + "type": "assert_return", + "name": "$assert_return_118", + "file": "br_table.wast", + "line": 1348 + }, { + "type": "assert_return", + "name": "$assert_return_119", + "file": "br_table.wast", + "line": 1350 + }, { + "type": "assert_return", + "name": "$assert_return_120", + "file": "br_table.wast", + "line": 1351 + }, { + "type": "assert_return", + "name": "$assert_return_121", + "file": "br_table.wast", + "line": 1352 + }, { + "type": "assert_return", + "name": "$assert_return_122", + "file": "br_table.wast", + "line": 1353 + }, { + "type": "assert_return", + "name": "$assert_return_123", + "file": "br_table.wast", + "line": 1354 + }, { + "type": "assert_return", + "name": "$assert_return_124", + "file": "br_table.wast", + "line": 1355 + }, { + "type": "assert_return", + "name": "$assert_return_125", + "file": "br_table.wast", + "line": 1357 + }, { + "type": "assert_return", + "name": "$assert_return_126", + "file": "br_table.wast", + "line": 1358 + }, { + "type": "assert_return", + "name": "$assert_return_127", + "file": "br_table.wast", + "line": 1359 + }, { + "type": "assert_return", + "name": "$assert_return_128", + "file": "br_table.wast", + "line": 1360 + }, { + "type": "assert_return", + "name": "$assert_return_129", + "file": "br_table.wast", + "line": 1361 + }, { + "type": "assert_return", + "name": "$assert_return_130", + "file": "br_table.wast", + "line": 1362 + }, { + "type": "assert_return", + "name": "$assert_return_131", + "file": "br_table.wast", + "line": 1364 + }, { + "type": "assert_return", + "name": "$assert_return_132", + "file": "br_table.wast", + "line": 1365 + }, { + "type": "assert_return", + "name": "$assert_return_133", + "file": "br_table.wast", + "line": 1366 + }, { + "type": "assert_return", + "name": "$assert_return_134", + "file": "br_table.wast", + "line": 1367 + }, { + "type": "assert_return", + "name": "$assert_return_135", + "file": "br_table.wast", + "line": 1368 + }, { + "type": "assert_return", + "name": "$assert_return_136", + "file": "br_table.wast", + "line": 1369 + }, { + "type": "assert_return", + "name": "$assert_return_137", + "file": "br_table.wast", + "line": 1371 + }, { + "type": "assert_return", + "name": "$assert_return_138", + "file": "br_table.wast", + "line": 1372 + }, { + "type": "assert_return", + "name": "$assert_return_139", + "file": "br_table.wast", + "line": 1373 + }, { + "type": "assert_return", + "name": "$assert_return_140", + "file": "br_table.wast", + "line": 1374 + }, { + "type": "assert_return", + "name": "$assert_return_141", + "file": "br_table.wast", + "line": 1375 + }, { + "type": "assert_return", + "name": "$assert_return_142", + "file": "br_table.wast", + "line": 1376 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/break-drop.0.wasm b/test/WasmSpec/testsuite-bin/break-drop.0.wasm new file mode 100644 index 00000000000..472bca22795 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/break-drop.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/break-drop.json b/test/WasmSpec/testsuite-bin/break-drop.json new file mode 100644 index 00000000000..ba535b90542 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/break-drop.json @@ -0,0 +1,21 @@ +{ + "modules": [{ + "filename": "break-drop.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "break-drop.wast", + "line": 7 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "break-drop.wast", + "line": 8 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "break-drop.wast", + "line": 9 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/call.0.wasm b/test/WasmSpec/testsuite-bin/call.0.wasm new file mode 100644 index 00000000000..0831c0130b8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/call.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/call.json b/test/WasmSpec/testsuite-bin/call.json new file mode 100644 index 00000000000..e6026c10671 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/call.json @@ -0,0 +1,181 @@ +{ + "modules": [{ + "filename": "call.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "call.wast", + "line": 102 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "call.wast", + "line": 103 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "call.wast", + "line": 104 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "call.wast", + "line": 105 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "call.wast", + "line": 107 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "call.wast", + "line": 108 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "call.wast", + "line": 109 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "call.wast", + "line": 110 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "call.wast", + "line": 112 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "call.wast", + "line": 113 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "call.wast", + "line": 114 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "call.wast", + "line": 115 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "call.wast", + "line": 117 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "call.wast", + "line": 118 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "call.wast", + "line": 119 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "call.wast", + "line": 120 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "call.wast", + "line": 121 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "call.wast", + "line": 122 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "call.wast", + "line": 123 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "call.wast", + "line": 125 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "call.wast", + "line": 129 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "call.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "call.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "call.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "call.wast", + "line": 133 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "call.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "call.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "call.wast", + "line": 137 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "call.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "call.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "call.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "call.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "call.wast", + "line": 142 + }, { + "type": "assert_trap", + "name": "$assert_trap_33", + "file": "call.wast", + "line": 144 + }, { + "type": "assert_trap", + "name": "$assert_trap_34", + "file": "call.wast", + "line": 145 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/comments.0.wasm b/test/WasmSpec/testsuite-bin/comments.0.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/comments.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/comments.1.wasm b/test/WasmSpec/testsuite-bin/comments.1.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/comments.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/comments.2.wasm b/test/WasmSpec/testsuite-bin/comments.2.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/comments.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/comments.3.wasm b/test/WasmSpec/testsuite-bin/comments.3.wasm new file mode 100644 index 00000000000..d08cf78d7fe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/comments.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/comments.json b/test/WasmSpec/testsuite-bin/comments.json new file mode 100644 index 00000000000..e4e69876a2d --- /dev/null +++ b/test/WasmSpec/testsuite-bin/comments.json @@ -0,0 +1,15 @@ +{ + "modules": [{ + "filename": "comments.0.wasm", + "commands": [] + }, { + "filename": "comments.1.wasm", + "commands": [] + }, { + "filename": "comments.2.wasm", + "commands": [] + }, { + "filename": "comments.3.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/endianness.0.wasm b/test/WasmSpec/testsuite-bin/endianness.0.wasm new file mode 100644 index 00000000000..9240fe0605e Binary files /dev/null and b/test/WasmSpec/testsuite-bin/endianness.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/endianness.json b/test/WasmSpec/testsuite-bin/endianness.json new file mode 100644 index 00000000000..d070f58753c --- /dev/null +++ b/test/WasmSpec/testsuite-bin/endianness.json @@ -0,0 +1,346 @@ +{ + "modules": [{ + "filename": "endianness.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "endianness.wast", + "line": 133 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "endianness.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "endianness.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "endianness.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "endianness.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "endianness.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "endianness.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "endianness.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "endianness.wast", + "line": 143 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "endianness.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "endianness.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "endianness.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "endianness.wast", + "line": 148 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "endianness.wast", + "line": 149 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "endianness.wast", + "line": 150 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "endianness.wast", + "line": 151 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "endianness.wast", + "line": 153 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "endianness.wast", + "line": 154 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "endianness.wast", + "line": 155 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "endianness.wast", + "line": 156 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "endianness.wast", + "line": 158 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "endianness.wast", + "line": 159 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "endianness.wast", + "line": 160 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "endianness.wast", + "line": 161 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "endianness.wast", + "line": 163 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "endianness.wast", + "line": 164 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "endianness.wast", + "line": 165 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "endianness.wast", + "line": 166 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "endianness.wast", + "line": 168 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "endianness.wast", + "line": 169 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "endianness.wast", + "line": 170 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "endianness.wast", + "line": 171 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "endianness.wast", + "line": 173 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "endianness.wast", + "line": 174 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "endianness.wast", + "line": 175 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "endianness.wast", + "line": 176 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "endianness.wast", + "line": 178 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "endianness.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "endianness.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "endianness.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "endianness.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "endianness.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "endianness.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "endianness.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "endianness.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "endianness.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "endianness.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "endianness.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "endianness.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "endianness.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "endianness.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "endianness.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "endianness.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "endianness.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "endianness.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "endianness.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "endianness.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_57", + "file": "endianness.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_58", + "file": "endianness.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "endianness.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "endianness.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "endianness.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_62", + "file": "endianness.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_63", + "file": "endianness.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_64", + "file": "endianness.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_65", + "file": "endianness.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_66", + "file": "endianness.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_67", + "file": "endianness.wast", + "line": 217 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/fac.0.wasm b/test/WasmSpec/testsuite-bin/fac.0.wasm new file mode 100644 index 00000000000..c4a705cd087 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/fac.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/fac.json b/test/WasmSpec/testsuite-bin/fac.json new file mode 100644 index 00000000000..7227abab8be --- /dev/null +++ b/test/WasmSpec/testsuite-bin/fac.json @@ -0,0 +1,36 @@ +{ + "modules": [{ + "filename": "fac.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "fac.wast", + "line": 80 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "fac.wast", + "line": 81 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "fac.wast", + "line": 82 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "fac.wast", + "line": 83 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "fac.wast", + "line": 84 + }, { + "type": "assert_trap", + "name": "$assert_trap_5", + "file": "fac.wast", + "line": 85 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/forward.0.wasm b/test/WasmSpec/testsuite-bin/forward.0.wasm new file mode 100644 index 00000000000..0c435d2d9ad Binary files /dev/null and b/test/WasmSpec/testsuite-bin/forward.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/forward.json b/test/WasmSpec/testsuite-bin/forward.json new file mode 100644 index 00000000000..6a118997756 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/forward.json @@ -0,0 +1,26 @@ +{ + "modules": [{ + "filename": "forward.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "forward.wast", + "line": 17 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "forward.wast", + "line": 18 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "forward.wast", + "line": 19 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "forward.wast", + "line": 20 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/func.0.wasm b/test/WasmSpec/testsuite-bin/func.0.wasm new file mode 100644 index 00000000000..871372d15c3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func.1.wasm b/test/WasmSpec/testsuite-bin/func.1.wasm new file mode 100644 index 00000000000..ae6121004a7 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func.2.wasm b/test/WasmSpec/testsuite-bin/func.2.wasm new file mode 100644 index 00000000000..21e0b2df6e3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func.json b/test/WasmSpec/testsuite-bin/func.json new file mode 100644 index 00000000000..a8bbf38a842 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/func.json @@ -0,0 +1,322 @@ +{ + "modules": [{ + "filename": "func.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "func.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "func.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "func.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "func.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "func.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "func.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "func.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "func.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "func.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "func.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "func.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "func.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "func.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "func.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "func.wast", + "line": 231 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "func.wast", + "line": 234 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "func.wast", + "line": 237 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "func.wast", + "line": 241 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "func.wast", + "line": 248 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "func.wast", + "line": 249 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "func.wast", + "line": 250 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "func.wast", + "line": 251 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "func.wast", + "line": 252 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "func.wast", + "line": 253 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "func.wast", + "line": 254 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "func.wast", + "line": 255 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "func.wast", + "line": 257 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "func.wast", + "line": 258 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "func.wast", + "line": 259 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "func.wast", + "line": 260 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "func.wast", + "line": 261 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "func.wast", + "line": 262 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "func.wast", + "line": 264 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "func.wast", + "line": 265 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "func.wast", + "line": 266 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "func.wast", + "line": 267 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "func.wast", + "line": 268 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "func.wast", + "line": 269 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "func.wast", + "line": 271 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "func.wast", + "line": 272 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "func.wast", + "line": 273 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "func.wast", + "line": 274 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "func.wast", + "line": 276 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "func.wast", + "line": 277 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "func.wast", + "line": 278 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "func.wast", + "line": 279 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "func.wast", + "line": 280 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "func.wast", + "line": 281 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "func.wast", + "line": 282 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "func.wast", + "line": 283 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "func.wast", + "line": 284 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "func.wast", + "line": 285 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "func.wast", + "line": 286 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "func.wast", + "line": 287 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "func.wast", + "line": 289 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "func.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "func.wast", + "line": 295 + }, { + "type": "assert_return", + "name": "$assert_return_57", + "file": "func.wast", + "line": 298 + }, { + "type": "assert_return", + "name": "$assert_return_58", + "file": "func.wast", + "line": 301 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "func.wast", + "line": 302 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "func.wast", + "line": 303 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "func.wast", + "line": 304 + }] + }, { + "filename": "func.1.wasm", + "commands": [] + }, { + "filename": "func.2.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/func_ptrs.0.wasm b/test/WasmSpec/testsuite-bin/func_ptrs.0.wasm new file mode 100644 index 00000000000..e93bdffdfd8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func_ptrs.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func_ptrs.1.wasm b/test/WasmSpec/testsuite-bin/func_ptrs.1.wasm new file mode 100644 index 00000000000..914c7699fe4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func_ptrs.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func_ptrs.2.wasm b/test/WasmSpec/testsuite-bin/func_ptrs.2.wasm new file mode 100644 index 00000000000..9eeb9c3f965 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/func_ptrs.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/func_ptrs.json b/test/WasmSpec/testsuite-bin/func_ptrs.json new file mode 100644 index 00000000000..d9c045c7358 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/func_ptrs.json @@ -0,0 +1,142 @@ +{ + "modules": [{ + "filename": "func_ptrs.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "func_ptrs.wast", + "line": 26 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "func_ptrs.wast", + "line": 27 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "func_ptrs.wast", + "line": 28 + }, { + "type": "action", + "name": "$action_3", + "file": "func_ptrs.wast", + "line": 29 + }] + }, { + "filename": "func_ptrs.1.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "func_ptrs.wast", + "line": 70 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "func_ptrs.wast", + "line": 71 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "func_ptrs.wast", + "line": 72 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "func_ptrs.wast", + "line": 73 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "func_ptrs.wast", + "line": 74 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "func_ptrs.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "func_ptrs.wast", + "line": 76 + }, { + "type": "assert_trap", + "name": "$assert_trap_7", + "file": "func_ptrs.wast", + "line": 77 + }, { + "type": "assert_trap", + "name": "$assert_trap_8", + "file": "func_ptrs.wast", + "line": 78 + }, { + "type": "assert_trap", + "name": "$assert_trap_9", + "file": "func_ptrs.wast", + "line": 79 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "func_ptrs.wast", + "line": 81 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "func_ptrs.wast", + "line": 82 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "func_ptrs.wast", + "line": 83 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "func_ptrs.wast", + "line": 84 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "func_ptrs.wast", + "line": 85 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "func_ptrs.wast", + "line": 86 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "func_ptrs.wast", + "line": 87 + }, { + "type": "assert_trap", + "name": "$assert_trap_17", + "file": "func_ptrs.wast", + "line": 88 + }, { + "type": "assert_trap", + "name": "$assert_trap_18", + "file": "func_ptrs.wast", + "line": 89 + }, { + "type": "assert_trap", + "name": "$assert_trap_19", + "file": "func_ptrs.wast", + "line": 90 + }] + }, { + "filename": "func_ptrs.2.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "func_ptrs.wast", + "line": 104 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "func_ptrs.wast", + "line": 105 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/get_local.0.wasm b/test/WasmSpec/testsuite-bin/get_local.0.wasm new file mode 100644 index 00000000000..c94edbf31b3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/get_local.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/get_local.json b/test/WasmSpec/testsuite-bin/get_local.json new file mode 100644 index 00000000000..7e73968c411 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/get_local.json @@ -0,0 +1,56 @@ +{ + "modules": [{ + "filename": "get_local.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "get_local.wast", + "line": 64 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "get_local.wast", + "line": 65 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "get_local.wast", + "line": 66 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "get_local.wast", + "line": 67 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "get_local.wast", + "line": 69 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "get_local.wast", + "line": 70 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "get_local.wast", + "line": 71 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "get_local.wast", + "line": 72 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "get_local.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "get_local.wast", + "line": 81 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/globals.0.wasm b/test/WasmSpec/testsuite-bin/globals.0.wasm new file mode 100644 index 00000000000..6774bbef2ef Binary files /dev/null and b/test/WasmSpec/testsuite-bin/globals.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/globals.json b/test/WasmSpec/testsuite-bin/globals.json new file mode 100644 index 00000000000..e69f2a8d25e --- /dev/null +++ b/test/WasmSpec/testsuite-bin/globals.json @@ -0,0 +1,86 @@ +{ + "modules": [{ + "filename": "globals.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "globals.wast", + "line": 29 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "globals.wast", + "line": 30 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "globals.wast", + "line": 31 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "globals.wast", + "line": 32 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "globals.wast", + "line": 34 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "globals.wast", + "line": 35 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "globals.wast", + "line": 36 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "globals.wast", + "line": 37 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "globals.wast", + "line": 39 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "globals.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "globals.wast", + "line": 41 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "globals.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "globals.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "globals.wast", + "line": 45 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "globals.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "globals.wast", + "line": 47 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/i32.0.wasm b/test/WasmSpec/testsuite-bin/i32.0.wasm new file mode 100644 index 00000000000..e5d1abe8ad6 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/i32.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/i32.json b/test/WasmSpec/testsuite-bin/i32.json new file mode 100644 index 00000000000..06b1ffed037 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/i32.json @@ -0,0 +1,1716 @@ +{ + "modules": [{ + "filename": "i32.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "i32.wast", + "line": 35 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "i32.wast", + "line": 36 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "i32.wast", + "line": 37 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "i32.wast", + "line": 38 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "i32.wast", + "line": 39 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "i32.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "i32.wast", + "line": 41 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "i32.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "i32.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "i32.wast", + "line": 45 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "i32.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "i32.wast", + "line": 47 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "i32.wast", + "line": 48 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "i32.wast", + "line": 49 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "i32.wast", + "line": 50 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "i32.wast", + "line": 52 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "i32.wast", + "line": 53 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "i32.wast", + "line": 54 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "i32.wast", + "line": 55 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "i32.wast", + "line": 56 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "i32.wast", + "line": 57 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "i32.wast", + "line": 58 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "i32.wast", + "line": 59 + }, { + "type": "assert_trap", + "name": "$assert_trap_23", + "file": "i32.wast", + "line": 61 + }, { + "type": "assert_trap", + "name": "$assert_trap_24", + "file": "i32.wast", + "line": 62 + }, { + "type": "assert_trap", + "name": "$assert_trap_25", + "file": "i32.wast", + "line": 63 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "i32.wast", + "line": 64 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "i32.wast", + "line": 65 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "i32.wast", + "line": 66 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "i32.wast", + "line": 67 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "i32.wast", + "line": 68 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "i32.wast", + "line": 69 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "i32.wast", + "line": 70 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "i32.wast", + "line": 71 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "i32.wast", + "line": 72 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "i32.wast", + "line": 73 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "i32.wast", + "line": 74 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "i32.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "i32.wast", + "line": 76 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "i32.wast", + "line": 77 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "i32.wast", + "line": 78 + }, { + "type": "assert_trap", + "name": "$assert_trap_41", + "file": "i32.wast", + "line": 80 + }, { + "type": "assert_trap", + "name": "$assert_trap_42", + "file": "i32.wast", + "line": 81 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "i32.wast", + "line": 82 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "i32.wast", + "line": 83 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "i32.wast", + "line": 84 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "i32.wast", + "line": 85 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "i32.wast", + "line": 86 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "i32.wast", + "line": 87 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "i32.wast", + "line": 88 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "i32.wast", + "line": 89 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "i32.wast", + "line": 90 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "i32.wast", + "line": 91 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "i32.wast", + "line": 92 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "i32.wast", + "line": 93 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "i32.wast", + "line": 94 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "i32.wast", + "line": 95 + }, { + "type": "assert_trap", + "name": "$assert_trap_57", + "file": "i32.wast", + "line": 97 + }, { + "type": "assert_trap", + "name": "$assert_trap_58", + "file": "i32.wast", + "line": 98 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "i32.wast", + "line": 99 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "i32.wast", + "line": 100 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "i32.wast", + "line": 101 + }, { + "type": "assert_return", + "name": "$assert_return_62", + "file": "i32.wast", + "line": 102 + }, { + "type": "assert_return", + "name": "$assert_return_63", + "file": "i32.wast", + "line": 103 + }, { + "type": "assert_return", + "name": "$assert_return_64", + "file": "i32.wast", + "line": 104 + }, { + "type": "assert_return", + "name": "$assert_return_65", + "file": "i32.wast", + "line": 105 + }, { + "type": "assert_return", + "name": "$assert_return_66", + "file": "i32.wast", + "line": 106 + }, { + "type": "assert_return", + "name": "$assert_return_67", + "file": "i32.wast", + "line": 107 + }, { + "type": "assert_return", + "name": "$assert_return_68", + "file": "i32.wast", + "line": 108 + }, { + "type": "assert_return", + "name": "$assert_return_69", + "file": "i32.wast", + "line": 109 + }, { + "type": "assert_return", + "name": "$assert_return_70", + "file": "i32.wast", + "line": 110 + }, { + "type": "assert_return", + "name": "$assert_return_71", + "file": "i32.wast", + "line": 111 + }, { + "type": "assert_return", + "name": "$assert_return_72", + "file": "i32.wast", + "line": 112 + }, { + "type": "assert_return", + "name": "$assert_return_73", + "file": "i32.wast", + "line": 113 + }, { + "type": "assert_return", + "name": "$assert_return_74", + "file": "i32.wast", + "line": 114 + }, { + "type": "assert_return", + "name": "$assert_return_75", + "file": "i32.wast", + "line": 115 + }, { + "type": "assert_trap", + "name": "$assert_trap_76", + "file": "i32.wast", + "line": 117 + }, { + "type": "assert_trap", + "name": "$assert_trap_77", + "file": "i32.wast", + "line": 118 + }, { + "type": "assert_return", + "name": "$assert_return_78", + "file": "i32.wast", + "line": 119 + }, { + "type": "assert_return", + "name": "$assert_return_79", + "file": "i32.wast", + "line": 120 + }, { + "type": "assert_return", + "name": "$assert_return_80", + "file": "i32.wast", + "line": 121 + }, { + "type": "assert_return", + "name": "$assert_return_81", + "file": "i32.wast", + "line": 122 + }, { + "type": "assert_return", + "name": "$assert_return_82", + "file": "i32.wast", + "line": 123 + }, { + "type": "assert_return", + "name": "$assert_return_83", + "file": "i32.wast", + "line": 124 + }, { + "type": "assert_return", + "name": "$assert_return_84", + "file": "i32.wast", + "line": 125 + }, { + "type": "assert_return", + "name": "$assert_return_85", + "file": "i32.wast", + "line": 126 + }, { + "type": "assert_return", + "name": "$assert_return_86", + "file": "i32.wast", + "line": 127 + }, { + "type": "assert_return", + "name": "$assert_return_87", + "file": "i32.wast", + "line": 128 + }, { + "type": "assert_return", + "name": "$assert_return_88", + "file": "i32.wast", + "line": 129 + }, { + "type": "assert_return", + "name": "$assert_return_89", + "file": "i32.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_90", + "file": "i32.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_91", + "file": "i32.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_92", + "file": "i32.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_93", + "file": "i32.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_94", + "file": "i32.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_95", + "file": "i32.wast", + "line": 137 + }, { + "type": "assert_return", + "name": "$assert_return_96", + "file": "i32.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_97", + "file": "i32.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_98", + "file": "i32.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_99", + "file": "i32.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_100", + "file": "i32.wast", + "line": 143 + }, { + "type": "assert_return", + "name": "$assert_return_101", + "file": "i32.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_102", + "file": "i32.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_103", + "file": "i32.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_104", + "file": "i32.wast", + "line": 147 + }, { + "type": "assert_return", + "name": "$assert_return_105", + "file": "i32.wast", + "line": 148 + }, { + "type": "assert_return", + "name": "$assert_return_106", + "file": "i32.wast", + "line": 149 + }, { + "type": "assert_return", + "name": "$assert_return_107", + "file": "i32.wast", + "line": 150 + }, { + "type": "assert_return", + "name": "$assert_return_108", + "file": "i32.wast", + "line": 152 + }, { + "type": "assert_return", + "name": "$assert_return_109", + "file": "i32.wast", + "line": 153 + }, { + "type": "assert_return", + "name": "$assert_return_110", + "file": "i32.wast", + "line": 154 + }, { + "type": "assert_return", + "name": "$assert_return_111", + "file": "i32.wast", + "line": 155 + }, { + "type": "assert_return", + "name": "$assert_return_112", + "file": "i32.wast", + "line": 156 + }, { + "type": "assert_return", + "name": "$assert_return_113", + "file": "i32.wast", + "line": 157 + }, { + "type": "assert_return", + "name": "$assert_return_114", + "file": "i32.wast", + "line": 158 + }, { + "type": "assert_return", + "name": "$assert_return_115", + "file": "i32.wast", + "line": 159 + }, { + "type": "assert_return", + "name": "$assert_return_116", + "file": "i32.wast", + "line": 160 + }, { + "type": "assert_return", + "name": "$assert_return_117", + "file": "i32.wast", + "line": 161 + }, { + "type": "assert_return", + "name": "$assert_return_118", + "file": "i32.wast", + "line": 163 + }, { + "type": "assert_return", + "name": "$assert_return_119", + "file": "i32.wast", + "line": 164 + }, { + "type": "assert_return", + "name": "$assert_return_120", + "file": "i32.wast", + "line": 165 + }, { + "type": "assert_return", + "name": "$assert_return_121", + "file": "i32.wast", + "line": 166 + }, { + "type": "assert_return", + "name": "$assert_return_122", + "file": "i32.wast", + "line": 167 + }, { + "type": "assert_return", + "name": "$assert_return_123", + "file": "i32.wast", + "line": 168 + }, { + "type": "assert_return", + "name": "$assert_return_124", + "file": "i32.wast", + "line": 169 + }, { + "type": "assert_return", + "name": "$assert_return_125", + "file": "i32.wast", + "line": 170 + }, { + "type": "assert_return", + "name": "$assert_return_126", + "file": "i32.wast", + "line": 171 + }, { + "type": "assert_return", + "name": "$assert_return_127", + "file": "i32.wast", + "line": 172 + }, { + "type": "assert_return", + "name": "$assert_return_128", + "file": "i32.wast", + "line": 173 + }, { + "type": "assert_return", + "name": "$assert_return_129", + "file": "i32.wast", + "line": 175 + }, { + "type": "assert_return", + "name": "$assert_return_130", + "file": "i32.wast", + "line": 176 + }, { + "type": "assert_return", + "name": "$assert_return_131", + "file": "i32.wast", + "line": 177 + }, { + "type": "assert_return", + "name": "$assert_return_132", + "file": "i32.wast", + "line": 178 + }, { + "type": "assert_return", + "name": "$assert_return_133", + "file": "i32.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_134", + "file": "i32.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_135", + "file": "i32.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_136", + "file": "i32.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_137", + "file": "i32.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_138", + "file": "i32.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_139", + "file": "i32.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_140", + "file": "i32.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_141", + "file": "i32.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_142", + "file": "i32.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_143", + "file": "i32.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_144", + "file": "i32.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_145", + "file": "i32.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_146", + "file": "i32.wast", + "line": 193 + }, { + "type": "assert_return", + "name": "$assert_return_147", + "file": "i32.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_148", + "file": "i32.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_149", + "file": "i32.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_150", + "file": "i32.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_151", + "file": "i32.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_152", + "file": "i32.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_153", + "file": "i32.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_154", + "file": "i32.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_155", + "file": "i32.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_156", + "file": "i32.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_157", + "file": "i32.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_158", + "file": "i32.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_159", + "file": "i32.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_160", + "file": "i32.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_161", + "file": "i32.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_162", + "file": "i32.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_163", + "file": "i32.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_164", + "file": "i32.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_165", + "file": "i32.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_166", + "file": "i32.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_167", + "file": "i32.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_168", + "file": "i32.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_169", + "file": "i32.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_170", + "file": "i32.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_171", + "file": "i32.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_172", + "file": "i32.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_173", + "file": "i32.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_174", + "file": "i32.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_175", + "file": "i32.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_176", + "file": "i32.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_177", + "file": "i32.wast", + "line": 227 + }, { + "type": "assert_return", + "name": "$assert_return_178", + "file": "i32.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_179", + "file": "i32.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_180", + "file": "i32.wast", + "line": 230 + }, { + "type": "assert_return", + "name": "$assert_return_181", + "file": "i32.wast", + "line": 231 + }, { + "type": "assert_return", + "name": "$assert_return_182", + "file": "i32.wast", + "line": 232 + }, { + "type": "assert_return", + "name": "$assert_return_183", + "file": "i32.wast", + "line": 233 + }, { + "type": "assert_return", + "name": "$assert_return_184", + "file": "i32.wast", + "line": 235 + }, { + "type": "assert_return", + "name": "$assert_return_185", + "file": "i32.wast", + "line": 236 + }, { + "type": "assert_return", + "name": "$assert_return_186", + "file": "i32.wast", + "line": 237 + }, { + "type": "assert_return", + "name": "$assert_return_187", + "file": "i32.wast", + "line": 238 + }, { + "type": "assert_return", + "name": "$assert_return_188", + "file": "i32.wast", + "line": 239 + }, { + "type": "assert_return", + "name": "$assert_return_189", + "file": "i32.wast", + "line": 240 + }, { + "type": "assert_return", + "name": "$assert_return_190", + "file": "i32.wast", + "line": 242 + }, { + "type": "assert_return", + "name": "$assert_return_191", + "file": "i32.wast", + "line": 243 + }, { + "type": "assert_return", + "name": "$assert_return_192", + "file": "i32.wast", + "line": 244 + }, { + "type": "assert_return", + "name": "$assert_return_193", + "file": "i32.wast", + "line": 245 + }, { + "type": "assert_return", + "name": "$assert_return_194", + "file": "i32.wast", + "line": 246 + }, { + "type": "assert_return", + "name": "$assert_return_195", + "file": "i32.wast", + "line": 247 + }, { + "type": "assert_return", + "name": "$assert_return_196", + "file": "i32.wast", + "line": 248 + }, { + "type": "assert_return", + "name": "$assert_return_197", + "file": "i32.wast", + "line": 249 + }, { + "type": "assert_return", + "name": "$assert_return_198", + "file": "i32.wast", + "line": 251 + }, { + "type": "assert_return", + "name": "$assert_return_199", + "file": "i32.wast", + "line": 252 + }, { + "type": "assert_return", + "name": "$assert_return_200", + "file": "i32.wast", + "line": 253 + }, { + "type": "assert_return", + "name": "$assert_return_201", + "file": "i32.wast", + "line": 254 + }, { + "type": "assert_return", + "name": "$assert_return_202", + "file": "i32.wast", + "line": 256 + }, { + "type": "assert_return", + "name": "$assert_return_203", + "file": "i32.wast", + "line": 257 + }, { + "type": "assert_return", + "name": "$assert_return_204", + "file": "i32.wast", + "line": 258 + }, { + "type": "assert_return", + "name": "$assert_return_205", + "file": "i32.wast", + "line": 259 + }, { + "type": "assert_return", + "name": "$assert_return_206", + "file": "i32.wast", + "line": 260 + }, { + "type": "assert_return", + "name": "$assert_return_207", + "file": "i32.wast", + "line": 261 + }, { + "type": "assert_return", + "name": "$assert_return_208", + "file": "i32.wast", + "line": 262 + }, { + "type": "assert_return", + "name": "$assert_return_209", + "file": "i32.wast", + "line": 263 + }, { + "type": "assert_return", + "name": "$assert_return_210", + "file": "i32.wast", + "line": 264 + }, { + "type": "assert_return", + "name": "$assert_return_211", + "file": "i32.wast", + "line": 265 + }, { + "type": "assert_return", + "name": "$assert_return_212", + "file": "i32.wast", + "line": 266 + }, { + "type": "assert_return", + "name": "$assert_return_213", + "file": "i32.wast", + "line": 267 + }, { + "type": "assert_return", + "name": "$assert_return_214", + "file": "i32.wast", + "line": 268 + }, { + "type": "assert_return", + "name": "$assert_return_215", + "file": "i32.wast", + "line": 269 + }, { + "type": "assert_return", + "name": "$assert_return_216", + "file": "i32.wast", + "line": 271 + }, { + "type": "assert_return", + "name": "$assert_return_217", + "file": "i32.wast", + "line": 272 + }, { + "type": "assert_return", + "name": "$assert_return_218", + "file": "i32.wast", + "line": 273 + }, { + "type": "assert_return", + "name": "$assert_return_219", + "file": "i32.wast", + "line": 274 + }, { + "type": "assert_return", + "name": "$assert_return_220", + "file": "i32.wast", + "line": 275 + }, { + "type": "assert_return", + "name": "$assert_return_221", + "file": "i32.wast", + "line": 276 + }, { + "type": "assert_return", + "name": "$assert_return_222", + "file": "i32.wast", + "line": 277 + }, { + "type": "assert_return", + "name": "$assert_return_223", + "file": "i32.wast", + "line": 278 + }, { + "type": "assert_return", + "name": "$assert_return_224", + "file": "i32.wast", + "line": 279 + }, { + "type": "assert_return", + "name": "$assert_return_225", + "file": "i32.wast", + "line": 280 + }, { + "type": "assert_return", + "name": "$assert_return_226", + "file": "i32.wast", + "line": 281 + }, { + "type": "assert_return", + "name": "$assert_return_227", + "file": "i32.wast", + "line": 282 + }, { + "type": "assert_return", + "name": "$assert_return_228", + "file": "i32.wast", + "line": 283 + }, { + "type": "assert_return", + "name": "$assert_return_229", + "file": "i32.wast", + "line": 284 + }, { + "type": "assert_return", + "name": "$assert_return_230", + "file": "i32.wast", + "line": 286 + }, { + "type": "assert_return", + "name": "$assert_return_231", + "file": "i32.wast", + "line": 287 + }, { + "type": "assert_return", + "name": "$assert_return_232", + "file": "i32.wast", + "line": 288 + }, { + "type": "assert_return", + "name": "$assert_return_233", + "file": "i32.wast", + "line": 289 + }, { + "type": "assert_return", + "name": "$assert_return_234", + "file": "i32.wast", + "line": 290 + }, { + "type": "assert_return", + "name": "$assert_return_235", + "file": "i32.wast", + "line": 291 + }, { + "type": "assert_return", + "name": "$assert_return_236", + "file": "i32.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_237", + "file": "i32.wast", + "line": 293 + }, { + "type": "assert_return", + "name": "$assert_return_238", + "file": "i32.wast", + "line": 294 + }, { + "type": "assert_return", + "name": "$assert_return_239", + "file": "i32.wast", + "line": 295 + }, { + "type": "assert_return", + "name": "$assert_return_240", + "file": "i32.wast", + "line": 296 + }, { + "type": "assert_return", + "name": "$assert_return_241", + "file": "i32.wast", + "line": 297 + }, { + "type": "assert_return", + "name": "$assert_return_242", + "file": "i32.wast", + "line": 298 + }, { + "type": "assert_return", + "name": "$assert_return_243", + "file": "i32.wast", + "line": 299 + }, { + "type": "assert_return", + "name": "$assert_return_244", + "file": "i32.wast", + "line": 301 + }, { + "type": "assert_return", + "name": "$assert_return_245", + "file": "i32.wast", + "line": 302 + }, { + "type": "assert_return", + "name": "$assert_return_246", + "file": "i32.wast", + "line": 303 + }, { + "type": "assert_return", + "name": "$assert_return_247", + "file": "i32.wast", + "line": 304 + }, { + "type": "assert_return", + "name": "$assert_return_248", + "file": "i32.wast", + "line": 305 + }, { + "type": "assert_return", + "name": "$assert_return_249", + "file": "i32.wast", + "line": 306 + }, { + "type": "assert_return", + "name": "$assert_return_250", + "file": "i32.wast", + "line": 307 + }, { + "type": "assert_return", + "name": "$assert_return_251", + "file": "i32.wast", + "line": 308 + }, { + "type": "assert_return", + "name": "$assert_return_252", + "file": "i32.wast", + "line": 309 + }, { + "type": "assert_return", + "name": "$assert_return_253", + "file": "i32.wast", + "line": 310 + }, { + "type": "assert_return", + "name": "$assert_return_254", + "file": "i32.wast", + "line": 311 + }, { + "type": "assert_return", + "name": "$assert_return_255", + "file": "i32.wast", + "line": 312 + }, { + "type": "assert_return", + "name": "$assert_return_256", + "file": "i32.wast", + "line": 313 + }, { + "type": "assert_return", + "name": "$assert_return_257", + "file": "i32.wast", + "line": 314 + }, { + "type": "assert_return", + "name": "$assert_return_258", + "file": "i32.wast", + "line": 316 + }, { + "type": "assert_return", + "name": "$assert_return_259", + "file": "i32.wast", + "line": 317 + }, { + "type": "assert_return", + "name": "$assert_return_260", + "file": "i32.wast", + "line": 318 + }, { + "type": "assert_return", + "name": "$assert_return_261", + "file": "i32.wast", + "line": 319 + }, { + "type": "assert_return", + "name": "$assert_return_262", + "file": "i32.wast", + "line": 320 + }, { + "type": "assert_return", + "name": "$assert_return_263", + "file": "i32.wast", + "line": 321 + }, { + "type": "assert_return", + "name": "$assert_return_264", + "file": "i32.wast", + "line": 322 + }, { + "type": "assert_return", + "name": "$assert_return_265", + "file": "i32.wast", + "line": 323 + }, { + "type": "assert_return", + "name": "$assert_return_266", + "file": "i32.wast", + "line": 324 + }, { + "type": "assert_return", + "name": "$assert_return_267", + "file": "i32.wast", + "line": 325 + }, { + "type": "assert_return", + "name": "$assert_return_268", + "file": "i32.wast", + "line": 326 + }, { + "type": "assert_return", + "name": "$assert_return_269", + "file": "i32.wast", + "line": 327 + }, { + "type": "assert_return", + "name": "$assert_return_270", + "file": "i32.wast", + "line": 328 + }, { + "type": "assert_return", + "name": "$assert_return_271", + "file": "i32.wast", + "line": 329 + }, { + "type": "assert_return", + "name": "$assert_return_272", + "file": "i32.wast", + "line": 331 + }, { + "type": "assert_return", + "name": "$assert_return_273", + "file": "i32.wast", + "line": 332 + }, { + "type": "assert_return", + "name": "$assert_return_274", + "file": "i32.wast", + "line": 333 + }, { + "type": "assert_return", + "name": "$assert_return_275", + "file": "i32.wast", + "line": 334 + }, { + "type": "assert_return", + "name": "$assert_return_276", + "file": "i32.wast", + "line": 335 + }, { + "type": "assert_return", + "name": "$assert_return_277", + "file": "i32.wast", + "line": 336 + }, { + "type": "assert_return", + "name": "$assert_return_278", + "file": "i32.wast", + "line": 337 + }, { + "type": "assert_return", + "name": "$assert_return_279", + "file": "i32.wast", + "line": 338 + }, { + "type": "assert_return", + "name": "$assert_return_280", + "file": "i32.wast", + "line": 339 + }, { + "type": "assert_return", + "name": "$assert_return_281", + "file": "i32.wast", + "line": 340 + }, { + "type": "assert_return", + "name": "$assert_return_282", + "file": "i32.wast", + "line": 341 + }, { + "type": "assert_return", + "name": "$assert_return_283", + "file": "i32.wast", + "line": 342 + }, { + "type": "assert_return", + "name": "$assert_return_284", + "file": "i32.wast", + "line": 343 + }, { + "type": "assert_return", + "name": "$assert_return_285", + "file": "i32.wast", + "line": 344 + }, { + "type": "assert_return", + "name": "$assert_return_286", + "file": "i32.wast", + "line": 346 + }, { + "type": "assert_return", + "name": "$assert_return_287", + "file": "i32.wast", + "line": 347 + }, { + "type": "assert_return", + "name": "$assert_return_288", + "file": "i32.wast", + "line": 348 + }, { + "type": "assert_return", + "name": "$assert_return_289", + "file": "i32.wast", + "line": 349 + }, { + "type": "assert_return", + "name": "$assert_return_290", + "file": "i32.wast", + "line": 350 + }, { + "type": "assert_return", + "name": "$assert_return_291", + "file": "i32.wast", + "line": 351 + }, { + "type": "assert_return", + "name": "$assert_return_292", + "file": "i32.wast", + "line": 352 + }, { + "type": "assert_return", + "name": "$assert_return_293", + "file": "i32.wast", + "line": 353 + }, { + "type": "assert_return", + "name": "$assert_return_294", + "file": "i32.wast", + "line": 354 + }, { + "type": "assert_return", + "name": "$assert_return_295", + "file": "i32.wast", + "line": 355 + }, { + "type": "assert_return", + "name": "$assert_return_296", + "file": "i32.wast", + "line": 356 + }, { + "type": "assert_return", + "name": "$assert_return_297", + "file": "i32.wast", + "line": 357 + }, { + "type": "assert_return", + "name": "$assert_return_298", + "file": "i32.wast", + "line": 358 + }, { + "type": "assert_return", + "name": "$assert_return_299", + "file": "i32.wast", + "line": 359 + }, { + "type": "assert_return", + "name": "$assert_return_300", + "file": "i32.wast", + "line": 361 + }, { + "type": "assert_return", + "name": "$assert_return_301", + "file": "i32.wast", + "line": 362 + }, { + "type": "assert_return", + "name": "$assert_return_302", + "file": "i32.wast", + "line": 363 + }, { + "type": "assert_return", + "name": "$assert_return_303", + "file": "i32.wast", + "line": 364 + }, { + "type": "assert_return", + "name": "$assert_return_304", + "file": "i32.wast", + "line": 365 + }, { + "type": "assert_return", + "name": "$assert_return_305", + "file": "i32.wast", + "line": 366 + }, { + "type": "assert_return", + "name": "$assert_return_306", + "file": "i32.wast", + "line": 367 + }, { + "type": "assert_return", + "name": "$assert_return_307", + "file": "i32.wast", + "line": 368 + }, { + "type": "assert_return", + "name": "$assert_return_308", + "file": "i32.wast", + "line": 369 + }, { + "type": "assert_return", + "name": "$assert_return_309", + "file": "i32.wast", + "line": 370 + }, { + "type": "assert_return", + "name": "$assert_return_310", + "file": "i32.wast", + "line": 371 + }, { + "type": "assert_return", + "name": "$assert_return_311", + "file": "i32.wast", + "line": 372 + }, { + "type": "assert_return", + "name": "$assert_return_312", + "file": "i32.wast", + "line": 373 + }, { + "type": "assert_return", + "name": "$assert_return_313", + "file": "i32.wast", + "line": 374 + }, { + "type": "assert_return", + "name": "$assert_return_314", + "file": "i32.wast", + "line": 376 + }, { + "type": "assert_return", + "name": "$assert_return_315", + "file": "i32.wast", + "line": 377 + }, { + "type": "assert_return", + "name": "$assert_return_316", + "file": "i32.wast", + "line": 378 + }, { + "type": "assert_return", + "name": "$assert_return_317", + "file": "i32.wast", + "line": 379 + }, { + "type": "assert_return", + "name": "$assert_return_318", + "file": "i32.wast", + "line": 380 + }, { + "type": "assert_return", + "name": "$assert_return_319", + "file": "i32.wast", + "line": 381 + }, { + "type": "assert_return", + "name": "$assert_return_320", + "file": "i32.wast", + "line": 382 + }, { + "type": "assert_return", + "name": "$assert_return_321", + "file": "i32.wast", + "line": 383 + }, { + "type": "assert_return", + "name": "$assert_return_322", + "file": "i32.wast", + "line": 384 + }, { + "type": "assert_return", + "name": "$assert_return_323", + "file": "i32.wast", + "line": 385 + }, { + "type": "assert_return", + "name": "$assert_return_324", + "file": "i32.wast", + "line": 386 + }, { + "type": "assert_return", + "name": "$assert_return_325", + "file": "i32.wast", + "line": 387 + }, { + "type": "assert_return", + "name": "$assert_return_326", + "file": "i32.wast", + "line": 388 + }, { + "type": "assert_return", + "name": "$assert_return_327", + "file": "i32.wast", + "line": 389 + }, { + "type": "assert_return", + "name": "$assert_return_328", + "file": "i32.wast", + "line": 391 + }, { + "type": "assert_return", + "name": "$assert_return_329", + "file": "i32.wast", + "line": 392 + }, { + "type": "assert_return", + "name": "$assert_return_330", + "file": "i32.wast", + "line": 393 + }, { + "type": "assert_return", + "name": "$assert_return_331", + "file": "i32.wast", + "line": 394 + }, { + "type": "assert_return", + "name": "$assert_return_332", + "file": "i32.wast", + "line": 395 + }, { + "type": "assert_return", + "name": "$assert_return_333", + "file": "i32.wast", + "line": 396 + }, { + "type": "assert_return", + "name": "$assert_return_334", + "file": "i32.wast", + "line": 397 + }, { + "type": "assert_return", + "name": "$assert_return_335", + "file": "i32.wast", + "line": 398 + }, { + "type": "assert_return", + "name": "$assert_return_336", + "file": "i32.wast", + "line": 399 + }, { + "type": "assert_return", + "name": "$assert_return_337", + "file": "i32.wast", + "line": 400 + }, { + "type": "assert_return", + "name": "$assert_return_338", + "file": "i32.wast", + "line": 401 + }, { + "type": "assert_return", + "name": "$assert_return_339", + "file": "i32.wast", + "line": 402 + }, { + "type": "assert_return", + "name": "$assert_return_340", + "file": "i32.wast", + "line": 403 + }, { + "type": "assert_return", + "name": "$assert_return_341", + "file": "i32.wast", + "line": 404 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/i64.0.wasm b/test/WasmSpec/testsuite-bin/i64.0.wasm new file mode 100644 index 00000000000..7d21a31ea46 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/i64.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/i64.json b/test/WasmSpec/testsuite-bin/i64.json new file mode 100644 index 00000000000..e03e248d801 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/i64.json @@ -0,0 +1,1726 @@ +{ + "modules": [{ + "filename": "i64.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "i64.wast", + "line": 35 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "i64.wast", + "line": 36 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "i64.wast", + "line": 37 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "i64.wast", + "line": 38 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "i64.wast", + "line": 39 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "i64.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "i64.wast", + "line": 41 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "i64.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "i64.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "i64.wast", + "line": 45 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "i64.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "i64.wast", + "line": 47 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "i64.wast", + "line": 48 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "i64.wast", + "line": 49 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "i64.wast", + "line": 50 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "i64.wast", + "line": 52 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "i64.wast", + "line": 53 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "i64.wast", + "line": 54 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "i64.wast", + "line": 55 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "i64.wast", + "line": 56 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "i64.wast", + "line": 57 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "i64.wast", + "line": 58 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "i64.wast", + "line": 59 + }, { + "type": "assert_trap", + "name": "$assert_trap_23", + "file": "i64.wast", + "line": 61 + }, { + "type": "assert_trap", + "name": "$assert_trap_24", + "file": "i64.wast", + "line": 62 + }, { + "type": "assert_trap", + "name": "$assert_trap_25", + "file": "i64.wast", + "line": 63 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "i64.wast", + "line": 64 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "i64.wast", + "line": 65 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "i64.wast", + "line": 66 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "i64.wast", + "line": 67 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "i64.wast", + "line": 68 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "i64.wast", + "line": 69 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "i64.wast", + "line": 70 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "i64.wast", + "line": 71 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "i64.wast", + "line": 72 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "i64.wast", + "line": 73 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "i64.wast", + "line": 74 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "i64.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "i64.wast", + "line": 76 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "i64.wast", + "line": 77 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "i64.wast", + "line": 78 + }, { + "type": "assert_trap", + "name": "$assert_trap_41", + "file": "i64.wast", + "line": 80 + }, { + "type": "assert_trap", + "name": "$assert_trap_42", + "file": "i64.wast", + "line": 81 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "i64.wast", + "line": 82 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "i64.wast", + "line": 83 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "i64.wast", + "line": 84 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "i64.wast", + "line": 85 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "i64.wast", + "line": 86 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "i64.wast", + "line": 87 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "i64.wast", + "line": 88 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "i64.wast", + "line": 89 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "i64.wast", + "line": 90 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "i64.wast", + "line": 91 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "i64.wast", + "line": 92 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "i64.wast", + "line": 93 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "i64.wast", + "line": 94 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "i64.wast", + "line": 95 + }, { + "type": "assert_trap", + "name": "$assert_trap_57", + "file": "i64.wast", + "line": 97 + }, { + "type": "assert_trap", + "name": "$assert_trap_58", + "file": "i64.wast", + "line": 98 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "i64.wast", + "line": 99 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "i64.wast", + "line": 100 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "i64.wast", + "line": 101 + }, { + "type": "assert_return", + "name": "$assert_return_62", + "file": "i64.wast", + "line": 102 + }, { + "type": "assert_return", + "name": "$assert_return_63", + "file": "i64.wast", + "line": 103 + }, { + "type": "assert_return", + "name": "$assert_return_64", + "file": "i64.wast", + "line": 104 + }, { + "type": "assert_return", + "name": "$assert_return_65", + "file": "i64.wast", + "line": 105 + }, { + "type": "assert_return", + "name": "$assert_return_66", + "file": "i64.wast", + "line": 106 + }, { + "type": "assert_return", + "name": "$assert_return_67", + "file": "i64.wast", + "line": 107 + }, { + "type": "assert_return", + "name": "$assert_return_68", + "file": "i64.wast", + "line": 108 + }, { + "type": "assert_return", + "name": "$assert_return_69", + "file": "i64.wast", + "line": 109 + }, { + "type": "assert_return", + "name": "$assert_return_70", + "file": "i64.wast", + "line": 110 + }, { + "type": "assert_return", + "name": "$assert_return_71", + "file": "i64.wast", + "line": 111 + }, { + "type": "assert_return", + "name": "$assert_return_72", + "file": "i64.wast", + "line": 112 + }, { + "type": "assert_return", + "name": "$assert_return_73", + "file": "i64.wast", + "line": 113 + }, { + "type": "assert_return", + "name": "$assert_return_74", + "file": "i64.wast", + "line": 114 + }, { + "type": "assert_return", + "name": "$assert_return_75", + "file": "i64.wast", + "line": 115 + }, { + "type": "assert_trap", + "name": "$assert_trap_76", + "file": "i64.wast", + "line": 117 + }, { + "type": "assert_trap", + "name": "$assert_trap_77", + "file": "i64.wast", + "line": 118 + }, { + "type": "assert_return", + "name": "$assert_return_78", + "file": "i64.wast", + "line": 119 + }, { + "type": "assert_return", + "name": "$assert_return_79", + "file": "i64.wast", + "line": 120 + }, { + "type": "assert_return", + "name": "$assert_return_80", + "file": "i64.wast", + "line": 121 + }, { + "type": "assert_return", + "name": "$assert_return_81", + "file": "i64.wast", + "line": 122 + }, { + "type": "assert_return", + "name": "$assert_return_82", + "file": "i64.wast", + "line": 123 + }, { + "type": "assert_return", + "name": "$assert_return_83", + "file": "i64.wast", + "line": 124 + }, { + "type": "assert_return", + "name": "$assert_return_84", + "file": "i64.wast", + "line": 125 + }, { + "type": "assert_return", + "name": "$assert_return_85", + "file": "i64.wast", + "line": 126 + }, { + "type": "assert_return", + "name": "$assert_return_86", + "file": "i64.wast", + "line": 127 + }, { + "type": "assert_return", + "name": "$assert_return_87", + "file": "i64.wast", + "line": 128 + }, { + "type": "assert_return", + "name": "$assert_return_88", + "file": "i64.wast", + "line": 129 + }, { + "type": "assert_return", + "name": "$assert_return_89", + "file": "i64.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_90", + "file": "i64.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_91", + "file": "i64.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_92", + "file": "i64.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_93", + "file": "i64.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_94", + "file": "i64.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_95", + "file": "i64.wast", + "line": 137 + }, { + "type": "assert_return", + "name": "$assert_return_96", + "file": "i64.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_97", + "file": "i64.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_98", + "file": "i64.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_99", + "file": "i64.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_100", + "file": "i64.wast", + "line": 143 + }, { + "type": "assert_return", + "name": "$assert_return_101", + "file": "i64.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_102", + "file": "i64.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_103", + "file": "i64.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_104", + "file": "i64.wast", + "line": 147 + }, { + "type": "assert_return", + "name": "$assert_return_105", + "file": "i64.wast", + "line": 148 + }, { + "type": "assert_return", + "name": "$assert_return_106", + "file": "i64.wast", + "line": 149 + }, { + "type": "assert_return", + "name": "$assert_return_107", + "file": "i64.wast", + "line": 150 + }, { + "type": "assert_return", + "name": "$assert_return_108", + "file": "i64.wast", + "line": 152 + }, { + "type": "assert_return", + "name": "$assert_return_109", + "file": "i64.wast", + "line": 153 + }, { + "type": "assert_return", + "name": "$assert_return_110", + "file": "i64.wast", + "line": 154 + }, { + "type": "assert_return", + "name": "$assert_return_111", + "file": "i64.wast", + "line": 155 + }, { + "type": "assert_return", + "name": "$assert_return_112", + "file": "i64.wast", + "line": 156 + }, { + "type": "assert_return", + "name": "$assert_return_113", + "file": "i64.wast", + "line": 157 + }, { + "type": "assert_return", + "name": "$assert_return_114", + "file": "i64.wast", + "line": 158 + }, { + "type": "assert_return", + "name": "$assert_return_115", + "file": "i64.wast", + "line": 159 + }, { + "type": "assert_return", + "name": "$assert_return_116", + "file": "i64.wast", + "line": 160 + }, { + "type": "assert_return", + "name": "$assert_return_117", + "file": "i64.wast", + "line": 161 + }, { + "type": "assert_return", + "name": "$assert_return_118", + "file": "i64.wast", + "line": 163 + }, { + "type": "assert_return", + "name": "$assert_return_119", + "file": "i64.wast", + "line": 164 + }, { + "type": "assert_return", + "name": "$assert_return_120", + "file": "i64.wast", + "line": 165 + }, { + "type": "assert_return", + "name": "$assert_return_121", + "file": "i64.wast", + "line": 166 + }, { + "type": "assert_return", + "name": "$assert_return_122", + "file": "i64.wast", + "line": 167 + }, { + "type": "assert_return", + "name": "$assert_return_123", + "file": "i64.wast", + "line": 168 + }, { + "type": "assert_return", + "name": "$assert_return_124", + "file": "i64.wast", + "line": 169 + }, { + "type": "assert_return", + "name": "$assert_return_125", + "file": "i64.wast", + "line": 170 + }, { + "type": "assert_return", + "name": "$assert_return_126", + "file": "i64.wast", + "line": 171 + }, { + "type": "assert_return", + "name": "$assert_return_127", + "file": "i64.wast", + "line": 172 + }, { + "type": "assert_return", + "name": "$assert_return_128", + "file": "i64.wast", + "line": 173 + }, { + "type": "assert_return", + "name": "$assert_return_129", + "file": "i64.wast", + "line": 175 + }, { + "type": "assert_return", + "name": "$assert_return_130", + "file": "i64.wast", + "line": 176 + }, { + "type": "assert_return", + "name": "$assert_return_131", + "file": "i64.wast", + "line": 177 + }, { + "type": "assert_return", + "name": "$assert_return_132", + "file": "i64.wast", + "line": 178 + }, { + "type": "assert_return", + "name": "$assert_return_133", + "file": "i64.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_134", + "file": "i64.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_135", + "file": "i64.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_136", + "file": "i64.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_137", + "file": "i64.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_138", + "file": "i64.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_139", + "file": "i64.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_140", + "file": "i64.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_141", + "file": "i64.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_142", + "file": "i64.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_143", + "file": "i64.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_144", + "file": "i64.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_145", + "file": "i64.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_146", + "file": "i64.wast", + "line": 193 + }, { + "type": "assert_return", + "name": "$assert_return_147", + "file": "i64.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_148", + "file": "i64.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_149", + "file": "i64.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_150", + "file": "i64.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_151", + "file": "i64.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_152", + "file": "i64.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_153", + "file": "i64.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_154", + "file": "i64.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_155", + "file": "i64.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_156", + "file": "i64.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_157", + "file": "i64.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_158", + "file": "i64.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_159", + "file": "i64.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_160", + "file": "i64.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_161", + "file": "i64.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_162", + "file": "i64.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_163", + "file": "i64.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_164", + "file": "i64.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_165", + "file": "i64.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_166", + "file": "i64.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_167", + "file": "i64.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_168", + "file": "i64.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_169", + "file": "i64.wast", + "line": 217 + }, { + "type": "assert_return", + "name": "$assert_return_170", + "file": "i64.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_171", + "file": "i64.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_172", + "file": "i64.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_173", + "file": "i64.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_174", + "file": "i64.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_175", + "file": "i64.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_176", + "file": "i64.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_177", + "file": "i64.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_178", + "file": "i64.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_179", + "file": "i64.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_180", + "file": "i64.wast", + "line": 230 + }, { + "type": "assert_return", + "name": "$assert_return_181", + "file": "i64.wast", + "line": 231 + }, { + "type": "assert_return", + "name": "$assert_return_182", + "file": "i64.wast", + "line": 232 + }, { + "type": "assert_return", + "name": "$assert_return_183", + "file": "i64.wast", + "line": 233 + }, { + "type": "assert_return", + "name": "$assert_return_184", + "file": "i64.wast", + "line": 234 + }, { + "type": "assert_return", + "name": "$assert_return_185", + "file": "i64.wast", + "line": 235 + }, { + "type": "assert_return", + "name": "$assert_return_186", + "file": "i64.wast", + "line": 237 + }, { + "type": "assert_return", + "name": "$assert_return_187", + "file": "i64.wast", + "line": 238 + }, { + "type": "assert_return", + "name": "$assert_return_188", + "file": "i64.wast", + "line": 239 + }, { + "type": "assert_return", + "name": "$assert_return_189", + "file": "i64.wast", + "line": 240 + }, { + "type": "assert_return", + "name": "$assert_return_190", + "file": "i64.wast", + "line": 241 + }, { + "type": "assert_return", + "name": "$assert_return_191", + "file": "i64.wast", + "line": 242 + }, { + "type": "assert_return", + "name": "$assert_return_192", + "file": "i64.wast", + "line": 244 + }, { + "type": "assert_return", + "name": "$assert_return_193", + "file": "i64.wast", + "line": 245 + }, { + "type": "assert_return", + "name": "$assert_return_194", + "file": "i64.wast", + "line": 246 + }, { + "type": "assert_return", + "name": "$assert_return_195", + "file": "i64.wast", + "line": 247 + }, { + "type": "assert_return", + "name": "$assert_return_196", + "file": "i64.wast", + "line": 248 + }, { + "type": "assert_return", + "name": "$assert_return_197", + "file": "i64.wast", + "line": 249 + }, { + "type": "assert_return", + "name": "$assert_return_198", + "file": "i64.wast", + "line": 250 + }, { + "type": "assert_return", + "name": "$assert_return_199", + "file": "i64.wast", + "line": 251 + }, { + "type": "assert_return", + "name": "$assert_return_200", + "file": "i64.wast", + "line": 253 + }, { + "type": "assert_return", + "name": "$assert_return_201", + "file": "i64.wast", + "line": 254 + }, { + "type": "assert_return", + "name": "$assert_return_202", + "file": "i64.wast", + "line": 255 + }, { + "type": "assert_return", + "name": "$assert_return_203", + "file": "i64.wast", + "line": 256 + }, { + "type": "assert_return", + "name": "$assert_return_204", + "file": "i64.wast", + "line": 258 + }, { + "type": "assert_return", + "name": "$assert_return_205", + "file": "i64.wast", + "line": 259 + }, { + "type": "assert_return", + "name": "$assert_return_206", + "file": "i64.wast", + "line": 260 + }, { + "type": "assert_return", + "name": "$assert_return_207", + "file": "i64.wast", + "line": 261 + }, { + "type": "assert_return", + "name": "$assert_return_208", + "file": "i64.wast", + "line": 262 + }, { + "type": "assert_return", + "name": "$assert_return_209", + "file": "i64.wast", + "line": 263 + }, { + "type": "assert_return", + "name": "$assert_return_210", + "file": "i64.wast", + "line": 264 + }, { + "type": "assert_return", + "name": "$assert_return_211", + "file": "i64.wast", + "line": 265 + }, { + "type": "assert_return", + "name": "$assert_return_212", + "file": "i64.wast", + "line": 266 + }, { + "type": "assert_return", + "name": "$assert_return_213", + "file": "i64.wast", + "line": 267 + }, { + "type": "assert_return", + "name": "$assert_return_214", + "file": "i64.wast", + "line": 268 + }, { + "type": "assert_return", + "name": "$assert_return_215", + "file": "i64.wast", + "line": 269 + }, { + "type": "assert_return", + "name": "$assert_return_216", + "file": "i64.wast", + "line": 270 + }, { + "type": "assert_return", + "name": "$assert_return_217", + "file": "i64.wast", + "line": 271 + }, { + "type": "assert_return", + "name": "$assert_return_218", + "file": "i64.wast", + "line": 273 + }, { + "type": "assert_return", + "name": "$assert_return_219", + "file": "i64.wast", + "line": 274 + }, { + "type": "assert_return", + "name": "$assert_return_220", + "file": "i64.wast", + "line": 275 + }, { + "type": "assert_return", + "name": "$assert_return_221", + "file": "i64.wast", + "line": 276 + }, { + "type": "assert_return", + "name": "$assert_return_222", + "file": "i64.wast", + "line": 277 + }, { + "type": "assert_return", + "name": "$assert_return_223", + "file": "i64.wast", + "line": 278 + }, { + "type": "assert_return", + "name": "$assert_return_224", + "file": "i64.wast", + "line": 279 + }, { + "type": "assert_return", + "name": "$assert_return_225", + "file": "i64.wast", + "line": 280 + }, { + "type": "assert_return", + "name": "$assert_return_226", + "file": "i64.wast", + "line": 281 + }, { + "type": "assert_return", + "name": "$assert_return_227", + "file": "i64.wast", + "line": 282 + }, { + "type": "assert_return", + "name": "$assert_return_228", + "file": "i64.wast", + "line": 283 + }, { + "type": "assert_return", + "name": "$assert_return_229", + "file": "i64.wast", + "line": 284 + }, { + "type": "assert_return", + "name": "$assert_return_230", + "file": "i64.wast", + "line": 285 + }, { + "type": "assert_return", + "name": "$assert_return_231", + "file": "i64.wast", + "line": 286 + }, { + "type": "assert_return", + "name": "$assert_return_232", + "file": "i64.wast", + "line": 288 + }, { + "type": "assert_return", + "name": "$assert_return_233", + "file": "i64.wast", + "line": 289 + }, { + "type": "assert_return", + "name": "$assert_return_234", + "file": "i64.wast", + "line": 290 + }, { + "type": "assert_return", + "name": "$assert_return_235", + "file": "i64.wast", + "line": 291 + }, { + "type": "assert_return", + "name": "$assert_return_236", + "file": "i64.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_237", + "file": "i64.wast", + "line": 293 + }, { + "type": "assert_return", + "name": "$assert_return_238", + "file": "i64.wast", + "line": 294 + }, { + "type": "assert_return", + "name": "$assert_return_239", + "file": "i64.wast", + "line": 295 + }, { + "type": "assert_return", + "name": "$assert_return_240", + "file": "i64.wast", + "line": 296 + }, { + "type": "assert_return", + "name": "$assert_return_241", + "file": "i64.wast", + "line": 297 + }, { + "type": "assert_return", + "name": "$assert_return_242", + "file": "i64.wast", + "line": 298 + }, { + "type": "assert_return", + "name": "$assert_return_243", + "file": "i64.wast", + "line": 299 + }, { + "type": "assert_return", + "name": "$assert_return_244", + "file": "i64.wast", + "line": 300 + }, { + "type": "assert_return", + "name": "$assert_return_245", + "file": "i64.wast", + "line": 301 + }, { + "type": "assert_return", + "name": "$assert_return_246", + "file": "i64.wast", + "line": 303 + }, { + "type": "assert_return", + "name": "$assert_return_247", + "file": "i64.wast", + "line": 304 + }, { + "type": "assert_return", + "name": "$assert_return_248", + "file": "i64.wast", + "line": 305 + }, { + "type": "assert_return", + "name": "$assert_return_249", + "file": "i64.wast", + "line": 306 + }, { + "type": "assert_return", + "name": "$assert_return_250", + "file": "i64.wast", + "line": 307 + }, { + "type": "assert_return", + "name": "$assert_return_251", + "file": "i64.wast", + "line": 308 + }, { + "type": "assert_return", + "name": "$assert_return_252", + "file": "i64.wast", + "line": 309 + }, { + "type": "assert_return", + "name": "$assert_return_253", + "file": "i64.wast", + "line": 310 + }, { + "type": "assert_return", + "name": "$assert_return_254", + "file": "i64.wast", + "line": 311 + }, { + "type": "assert_return", + "name": "$assert_return_255", + "file": "i64.wast", + "line": 312 + }, { + "type": "assert_return", + "name": "$assert_return_256", + "file": "i64.wast", + "line": 313 + }, { + "type": "assert_return", + "name": "$assert_return_257", + "file": "i64.wast", + "line": 314 + }, { + "type": "assert_return", + "name": "$assert_return_258", + "file": "i64.wast", + "line": 315 + }, { + "type": "assert_return", + "name": "$assert_return_259", + "file": "i64.wast", + "line": 316 + }, { + "type": "assert_return", + "name": "$assert_return_260", + "file": "i64.wast", + "line": 318 + }, { + "type": "assert_return", + "name": "$assert_return_261", + "file": "i64.wast", + "line": 319 + }, { + "type": "assert_return", + "name": "$assert_return_262", + "file": "i64.wast", + "line": 320 + }, { + "type": "assert_return", + "name": "$assert_return_263", + "file": "i64.wast", + "line": 321 + }, { + "type": "assert_return", + "name": "$assert_return_264", + "file": "i64.wast", + "line": 322 + }, { + "type": "assert_return", + "name": "$assert_return_265", + "file": "i64.wast", + "line": 323 + }, { + "type": "assert_return", + "name": "$assert_return_266", + "file": "i64.wast", + "line": 324 + }, { + "type": "assert_return", + "name": "$assert_return_267", + "file": "i64.wast", + "line": 325 + }, { + "type": "assert_return", + "name": "$assert_return_268", + "file": "i64.wast", + "line": 326 + }, { + "type": "assert_return", + "name": "$assert_return_269", + "file": "i64.wast", + "line": 327 + }, { + "type": "assert_return", + "name": "$assert_return_270", + "file": "i64.wast", + "line": 328 + }, { + "type": "assert_return", + "name": "$assert_return_271", + "file": "i64.wast", + "line": 329 + }, { + "type": "assert_return", + "name": "$assert_return_272", + "file": "i64.wast", + "line": 330 + }, { + "type": "assert_return", + "name": "$assert_return_273", + "file": "i64.wast", + "line": 331 + }, { + "type": "assert_return", + "name": "$assert_return_274", + "file": "i64.wast", + "line": 333 + }, { + "type": "assert_return", + "name": "$assert_return_275", + "file": "i64.wast", + "line": 334 + }, { + "type": "assert_return", + "name": "$assert_return_276", + "file": "i64.wast", + "line": 335 + }, { + "type": "assert_return", + "name": "$assert_return_277", + "file": "i64.wast", + "line": 336 + }, { + "type": "assert_return", + "name": "$assert_return_278", + "file": "i64.wast", + "line": 337 + }, { + "type": "assert_return", + "name": "$assert_return_279", + "file": "i64.wast", + "line": 338 + }, { + "type": "assert_return", + "name": "$assert_return_280", + "file": "i64.wast", + "line": 339 + }, { + "type": "assert_return", + "name": "$assert_return_281", + "file": "i64.wast", + "line": 340 + }, { + "type": "assert_return", + "name": "$assert_return_282", + "file": "i64.wast", + "line": 341 + }, { + "type": "assert_return", + "name": "$assert_return_283", + "file": "i64.wast", + "line": 342 + }, { + "type": "assert_return", + "name": "$assert_return_284", + "file": "i64.wast", + "line": 343 + }, { + "type": "assert_return", + "name": "$assert_return_285", + "file": "i64.wast", + "line": 344 + }, { + "type": "assert_return", + "name": "$assert_return_286", + "file": "i64.wast", + "line": 345 + }, { + "type": "assert_return", + "name": "$assert_return_287", + "file": "i64.wast", + "line": 346 + }, { + "type": "assert_return", + "name": "$assert_return_288", + "file": "i64.wast", + "line": 348 + }, { + "type": "assert_return", + "name": "$assert_return_289", + "file": "i64.wast", + "line": 349 + }, { + "type": "assert_return", + "name": "$assert_return_290", + "file": "i64.wast", + "line": 350 + }, { + "type": "assert_return", + "name": "$assert_return_291", + "file": "i64.wast", + "line": 351 + }, { + "type": "assert_return", + "name": "$assert_return_292", + "file": "i64.wast", + "line": 352 + }, { + "type": "assert_return", + "name": "$assert_return_293", + "file": "i64.wast", + "line": 353 + }, { + "type": "assert_return", + "name": "$assert_return_294", + "file": "i64.wast", + "line": 354 + }, { + "type": "assert_return", + "name": "$assert_return_295", + "file": "i64.wast", + "line": 355 + }, { + "type": "assert_return", + "name": "$assert_return_296", + "file": "i64.wast", + "line": 356 + }, { + "type": "assert_return", + "name": "$assert_return_297", + "file": "i64.wast", + "line": 357 + }, { + "type": "assert_return", + "name": "$assert_return_298", + "file": "i64.wast", + "line": 358 + }, { + "type": "assert_return", + "name": "$assert_return_299", + "file": "i64.wast", + "line": 359 + }, { + "type": "assert_return", + "name": "$assert_return_300", + "file": "i64.wast", + "line": 360 + }, { + "type": "assert_return", + "name": "$assert_return_301", + "file": "i64.wast", + "line": 361 + }, { + "type": "assert_return", + "name": "$assert_return_302", + "file": "i64.wast", + "line": 363 + }, { + "type": "assert_return", + "name": "$assert_return_303", + "file": "i64.wast", + "line": 364 + }, { + "type": "assert_return", + "name": "$assert_return_304", + "file": "i64.wast", + "line": 365 + }, { + "type": "assert_return", + "name": "$assert_return_305", + "file": "i64.wast", + "line": 366 + }, { + "type": "assert_return", + "name": "$assert_return_306", + "file": "i64.wast", + "line": 367 + }, { + "type": "assert_return", + "name": "$assert_return_307", + "file": "i64.wast", + "line": 368 + }, { + "type": "assert_return", + "name": "$assert_return_308", + "file": "i64.wast", + "line": 369 + }, { + "type": "assert_return", + "name": "$assert_return_309", + "file": "i64.wast", + "line": 370 + }, { + "type": "assert_return", + "name": "$assert_return_310", + "file": "i64.wast", + "line": 371 + }, { + "type": "assert_return", + "name": "$assert_return_311", + "file": "i64.wast", + "line": 372 + }, { + "type": "assert_return", + "name": "$assert_return_312", + "file": "i64.wast", + "line": 373 + }, { + "type": "assert_return", + "name": "$assert_return_313", + "file": "i64.wast", + "line": 374 + }, { + "type": "assert_return", + "name": "$assert_return_314", + "file": "i64.wast", + "line": 375 + }, { + "type": "assert_return", + "name": "$assert_return_315", + "file": "i64.wast", + "line": 376 + }, { + "type": "assert_return", + "name": "$assert_return_316", + "file": "i64.wast", + "line": 378 + }, { + "type": "assert_return", + "name": "$assert_return_317", + "file": "i64.wast", + "line": 379 + }, { + "type": "assert_return", + "name": "$assert_return_318", + "file": "i64.wast", + "line": 380 + }, { + "type": "assert_return", + "name": "$assert_return_319", + "file": "i64.wast", + "line": 381 + }, { + "type": "assert_return", + "name": "$assert_return_320", + "file": "i64.wast", + "line": 382 + }, { + "type": "assert_return", + "name": "$assert_return_321", + "file": "i64.wast", + "line": 383 + }, { + "type": "assert_return", + "name": "$assert_return_322", + "file": "i64.wast", + "line": 384 + }, { + "type": "assert_return", + "name": "$assert_return_323", + "file": "i64.wast", + "line": 385 + }, { + "type": "assert_return", + "name": "$assert_return_324", + "file": "i64.wast", + "line": 386 + }, { + "type": "assert_return", + "name": "$assert_return_325", + "file": "i64.wast", + "line": 387 + }, { + "type": "assert_return", + "name": "$assert_return_326", + "file": "i64.wast", + "line": 388 + }, { + "type": "assert_return", + "name": "$assert_return_327", + "file": "i64.wast", + "line": 389 + }, { + "type": "assert_return", + "name": "$assert_return_328", + "file": "i64.wast", + "line": 390 + }, { + "type": "assert_return", + "name": "$assert_return_329", + "file": "i64.wast", + "line": 391 + }, { + "type": "assert_return", + "name": "$assert_return_330", + "file": "i64.wast", + "line": 393 + }, { + "type": "assert_return", + "name": "$assert_return_331", + "file": "i64.wast", + "line": 394 + }, { + "type": "assert_return", + "name": "$assert_return_332", + "file": "i64.wast", + "line": 395 + }, { + "type": "assert_return", + "name": "$assert_return_333", + "file": "i64.wast", + "line": 396 + }, { + "type": "assert_return", + "name": "$assert_return_334", + "file": "i64.wast", + "line": 397 + }, { + "type": "assert_return", + "name": "$assert_return_335", + "file": "i64.wast", + "line": 398 + }, { + "type": "assert_return", + "name": "$assert_return_336", + "file": "i64.wast", + "line": 399 + }, { + "type": "assert_return", + "name": "$assert_return_337", + "file": "i64.wast", + "line": 400 + }, { + "type": "assert_return", + "name": "$assert_return_338", + "file": "i64.wast", + "line": 401 + }, { + "type": "assert_return", + "name": "$assert_return_339", + "file": "i64.wast", + "line": 402 + }, { + "type": "assert_return", + "name": "$assert_return_340", + "file": "i64.wast", + "line": 403 + }, { + "type": "assert_return", + "name": "$assert_return_341", + "file": "i64.wast", + "line": 404 + }, { + "type": "assert_return", + "name": "$assert_return_342", + "file": "i64.wast", + "line": 405 + }, { + "type": "assert_return", + "name": "$assert_return_343", + "file": "i64.wast", + "line": 406 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/imports.0.wasm b/test/WasmSpec/testsuite-bin/imports.0.wasm new file mode 100644 index 00000000000..78af5750a6b Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.1.wasm b/test/WasmSpec/testsuite-bin/imports.1.wasm new file mode 100644 index 00000000000..72ccc5367c7 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.10.wasm b/test/WasmSpec/testsuite-bin/imports.10.wasm new file mode 100644 index 00000000000..28c5c01d642 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.10.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.11.wasm b/test/WasmSpec/testsuite-bin/imports.11.wasm new file mode 100644 index 00000000000..0e437b3ba5a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.11.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.12.wasm b/test/WasmSpec/testsuite-bin/imports.12.wasm new file mode 100644 index 00000000000..0e437b3ba5a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.12.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.13.wasm b/test/WasmSpec/testsuite-bin/imports.13.wasm new file mode 100644 index 00000000000..dd8f3608acc Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.13.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.14.wasm b/test/WasmSpec/testsuite-bin/imports.14.wasm new file mode 100644 index 00000000000..cccc276ea85 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.14.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.15.wasm b/test/WasmSpec/testsuite-bin/imports.15.wasm new file mode 100644 index 00000000000..ec2f04d9856 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.15.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.16.wasm b/test/WasmSpec/testsuite-bin/imports.16.wasm new file mode 100644 index 00000000000..6d9f4259b23 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.16.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.17.wasm b/test/WasmSpec/testsuite-bin/imports.17.wasm new file mode 100644 index 00000000000..90522076352 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.17.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.18.wasm b/test/WasmSpec/testsuite-bin/imports.18.wasm new file mode 100644 index 00000000000..87d80166b23 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.18.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.19.wasm b/test/WasmSpec/testsuite-bin/imports.19.wasm new file mode 100644 index 00000000000..03e80a4abe1 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.19.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.2.wasm b/test/WasmSpec/testsuite-bin/imports.2.wasm new file mode 100644 index 00000000000..2ec5a63f3e1 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.20.wasm b/test/WasmSpec/testsuite-bin/imports.20.wasm new file mode 100644 index 00000000000..ec7219298bf Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.20.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.21.wasm b/test/WasmSpec/testsuite-bin/imports.21.wasm new file mode 100644 index 00000000000..2099d24188f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.21.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.22.wasm b/test/WasmSpec/testsuite-bin/imports.22.wasm new file mode 100644 index 00000000000..b36f702b4e4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.22.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.23.wasm b/test/WasmSpec/testsuite-bin/imports.23.wasm new file mode 100644 index 00000000000..5bd2694fa87 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.23.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.24.wasm b/test/WasmSpec/testsuite-bin/imports.24.wasm new file mode 100644 index 00000000000..bfea0ac136f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.24.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.25.wasm b/test/WasmSpec/testsuite-bin/imports.25.wasm new file mode 100644 index 00000000000..bfea0ac136f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.25.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.26.wasm b/test/WasmSpec/testsuite-bin/imports.26.wasm new file mode 100644 index 00000000000..b0ff16b8b9a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.26.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.27.wasm b/test/WasmSpec/testsuite-bin/imports.27.wasm new file mode 100644 index 00000000000..54730ce7702 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.27.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.28.wasm b/test/WasmSpec/testsuite-bin/imports.28.wasm new file mode 100644 index 00000000000..d76fa1b7048 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.28.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.29.wasm b/test/WasmSpec/testsuite-bin/imports.29.wasm new file mode 100644 index 00000000000..d2a29974623 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.29.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.3.wasm b/test/WasmSpec/testsuite-bin/imports.3.wasm new file mode 100644 index 00000000000..d2c1a3b3f4c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.30.wasm b/test/WasmSpec/testsuite-bin/imports.30.wasm new file mode 100644 index 00000000000..c2666b687c0 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.30.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.31.wasm b/test/WasmSpec/testsuite-bin/imports.31.wasm new file mode 100644 index 00000000000..54fcc56b94c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.31.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.32.wasm b/test/WasmSpec/testsuite-bin/imports.32.wasm new file mode 100644 index 00000000000..5d610bd44b4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.32.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.33.wasm b/test/WasmSpec/testsuite-bin/imports.33.wasm new file mode 100644 index 00000000000..c3e8dfb833f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.33.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.34.wasm b/test/WasmSpec/testsuite-bin/imports.34.wasm new file mode 100644 index 00000000000..aa4c9fca717 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.34.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.35.wasm b/test/WasmSpec/testsuite-bin/imports.35.wasm new file mode 100644 index 00000000000..6be4aeac75a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.35.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.4.wasm b/test/WasmSpec/testsuite-bin/imports.4.wasm new file mode 100644 index 00000000000..816cb1b7f4f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.4.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.5.wasm b/test/WasmSpec/testsuite-bin/imports.5.wasm new file mode 100644 index 00000000000..5ec249ce06a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.5.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.6.wasm b/test/WasmSpec/testsuite-bin/imports.6.wasm new file mode 100644 index 00000000000..e39305b3411 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.6.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.7.wasm b/test/WasmSpec/testsuite-bin/imports.7.wasm new file mode 100644 index 00000000000..83e62711b32 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.7.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.8.wasm b/test/WasmSpec/testsuite-bin/imports.8.wasm new file mode 100644 index 00000000000..f7c676518d9 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.8.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.9.wasm b/test/WasmSpec/testsuite-bin/imports.9.wasm new file mode 100644 index 00000000000..8dff0860ab2 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/imports.9.wasm differ diff --git a/test/WasmSpec/testsuite-bin/imports.json b/test/WasmSpec/testsuite-bin/imports.json new file mode 100644 index 00000000000..b276b5b1d0c --- /dev/null +++ b/test/WasmSpec/testsuite-bin/imports.json @@ -0,0 +1,256 @@ +{ + "modules": [{ + "filename": "imports.0.wasm", + "commands": [] + }, { + "filename": "imports.1.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "imports.wast", + "line": 61 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 62 + }] + }, { + "filename": "imports.2.wasm", + "commands": [] + }, { + "filename": "imports.3.wasm", + "commands": [] + }, { + "filename": "imports.4.wasm", + "commands": [] + }, { + "filename": "imports.5.wasm", + "commands": [] + }, { + "filename": "imports.6.wasm", + "commands": [] + }, { + "filename": "imports.7.wasm", + "commands": [] + }, { + "filename": "imports.8.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "imports.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "imports.wast", + "line": 193 + }] + }, { + "filename": "imports.9.wasm", + "commands": [] + }, { + "filename": "imports.10.wasm", + "commands": [] + }, { + "filename": "imports.11.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "imports.wast", + "line": 245 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 246 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 247 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "imports.wast", + "line": 248 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "imports.wast", + "line": 249 + }] + }, { + "filename": "imports.12.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "imports.wast", + "line": 262 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 263 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 264 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "imports.wast", + "line": 265 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "imports.wast", + "line": 266 + }] + }, { + "filename": "imports.13.wasm", + "commands": [] + }, { + "filename": "imports.14.wasm", + "commands": [] + }, { + "filename": "imports.15.wasm", + "commands": [] + }, { + "filename": "imports.16.wasm", + "commands": [] + }, { + "filename": "imports.17.wasm", + "commands": [] + }, { + "filename": "imports.18.wasm", + "commands": [] + }, { + "filename": "imports.19.wasm", + "commands": [] + }, { + "filename": "imports.20.wasm", + "commands": [] + }, { + "filename": "imports.21.wasm", + "commands": [] + }, { + "filename": "imports.22.wasm", + "commands": [] + }, { + "filename": "imports.23.wasm", + "commands": [] + }, { + "filename": "imports.24.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "imports.wast", + "line": 348 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 349 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 350 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "imports.wast", + "line": 351 + }] + }, { + "filename": "imports.25.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "imports.wast", + "line": 359 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 360 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 361 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "imports.wast", + "line": 362 + }] + }, { + "filename": "imports.26.wasm", + "commands": [] + }, { + "filename": "imports.27.wasm", + "commands": [] + }, { + "filename": "imports.28.wasm", + "commands": [] + }, { + "filename": "imports.29.wasm", + "commands": [] + }, { + "filename": "imports.30.wasm", + "commands": [] + }, { + "filename": "imports.31.wasm", + "commands": [] + }, { + "filename": "imports.32.wasm", + "commands": [] + }, { + "filename": "imports.33.wasm", + "commands": [] + }, { + "filename": "imports.34.wasm", + "commands": [] + }, { + "filename": "imports.35.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "imports.wast", + "line": 451 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "imports.wast", + "line": 452 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "imports.wast", + "line": 453 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "imports.wast", + "line": 454 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "imports.wast", + "line": 455 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/int_exprs.0.wasm b/test/WasmSpec/testsuite-bin/int_exprs.0.wasm new file mode 100644 index 00000000000..2a328a759bb Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.1.wasm b/test/WasmSpec/testsuite-bin/int_exprs.1.wasm new file mode 100644 index 00000000000..1e4be3a9532 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.10.wasm b/test/WasmSpec/testsuite-bin/int_exprs.10.wasm new file mode 100644 index 00000000000..57ff1029c16 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.10.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.11.wasm b/test/WasmSpec/testsuite-bin/int_exprs.11.wasm new file mode 100644 index 00000000000..068177ab64f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.11.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.12.wasm b/test/WasmSpec/testsuite-bin/int_exprs.12.wasm new file mode 100644 index 00000000000..7b9d439187c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.12.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.13.wasm b/test/WasmSpec/testsuite-bin/int_exprs.13.wasm new file mode 100644 index 00000000000..040c78f40da Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.13.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.14.wasm b/test/WasmSpec/testsuite-bin/int_exprs.14.wasm new file mode 100644 index 00000000000..337a10fc237 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.14.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.15.wasm b/test/WasmSpec/testsuite-bin/int_exprs.15.wasm new file mode 100644 index 00000000000..ab9ea06bd4a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.15.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.2.wasm b/test/WasmSpec/testsuite-bin/int_exprs.2.wasm new file mode 100644 index 00000000000..1422b54dbbe Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.3.wasm b/test/WasmSpec/testsuite-bin/int_exprs.3.wasm new file mode 100644 index 00000000000..c289b82f451 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.4.wasm b/test/WasmSpec/testsuite-bin/int_exprs.4.wasm new file mode 100644 index 00000000000..d5a92db8346 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.4.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.5.wasm b/test/WasmSpec/testsuite-bin/int_exprs.5.wasm new file mode 100644 index 00000000000..b6d2f47c354 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.5.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.6.wasm b/test/WasmSpec/testsuite-bin/int_exprs.6.wasm new file mode 100644 index 00000000000..041deab493c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.6.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.7.wasm b/test/WasmSpec/testsuite-bin/int_exprs.7.wasm new file mode 100644 index 00000000000..b37d3cba619 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.7.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.8.wasm b/test/WasmSpec/testsuite-bin/int_exprs.8.wasm new file mode 100644 index 00000000000..a28f6582630 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.8.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.9.wasm b/test/WasmSpec/testsuite-bin/int_exprs.9.wasm new file mode 100644 index 00000000000..70e1385dd2f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_exprs.9.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_exprs.json b/test/WasmSpec/testsuite-bin/int_exprs.json new file mode 100644 index 00000000000..e145a82205e --- /dev/null +++ b/test/WasmSpec/testsuite-bin/int_exprs.json @@ -0,0 +1,446 @@ +{ + "modules": [{ + "filename": "int_exprs.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 18 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 19 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 20 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 21 + }] + }, { + "filename": "int_exprs.1.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 30 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 31 + }] + }, { + "filename": "int_exprs.2.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 40 + }] + }, { + "filename": "int_exprs.3.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 56 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 57 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 58 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 59 + }] + }, { + "filename": "int_exprs.4.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 76 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 77 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 78 + }] + }, { + "filename": "int_exprs.5.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 94 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 95 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 96 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 97 + }] + }, { + "filename": "int_exprs.6.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 113 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 114 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 115 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 116 + }] + }, { + "filename": "int_exprs.7.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 128 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 129 + }] + }, { + "filename": "int_exprs.8.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 142 + }] + }, { + "filename": "int_exprs.9.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "int_exprs.wast", + "line": 158 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "int_exprs.wast", + "line": 159 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "int_exprs.wast", + "line": 160 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "int_exprs.wast", + "line": 161 + }] + }, { + "filename": "int_exprs.10.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 177 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 178 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 184 + }] + }, { + "filename": "int_exprs.11.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 207 + }] + }, { + "filename": "int_exprs.12.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 227 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 230 + }] + }, { + "filename": "int_exprs.13.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 246 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 247 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 248 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 249 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 250 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 251 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 252 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 253 + }] + }, { + "filename": "int_exprs.14.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 269 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 270 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 271 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 272 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 273 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 274 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 275 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 276 + }] + }, { + "filename": "int_exprs.15.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_exprs.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_exprs.wast", + "line": 293 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_exprs.wast", + "line": 294 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_exprs.wast", + "line": 295 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_exprs.wast", + "line": 296 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_exprs.wast", + "line": 297 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_exprs.wast", + "line": 298 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_exprs.wast", + "line": 299 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/int_literals.0.wasm b/test/WasmSpec/testsuite-bin/int_literals.0.wasm new file mode 100644 index 00000000000..4feda257cd2 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/int_literals.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/int_literals.json b/test/WasmSpec/testsuite-bin/int_literals.json new file mode 100644 index 00000000000..8cbb72255cb --- /dev/null +++ b/test/WasmSpec/testsuite-bin/int_literals.json @@ -0,0 +1,116 @@ +{ + "modules": [{ + "filename": "int_literals.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "int_literals.wast", + "line": 27 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "int_literals.wast", + "line": 28 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "int_literals.wast", + "line": 29 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "int_literals.wast", + "line": 30 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "int_literals.wast", + "line": 31 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "int_literals.wast", + "line": 32 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "int_literals.wast", + "line": 33 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "int_literals.wast", + "line": 34 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "int_literals.wast", + "line": 35 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "int_literals.wast", + "line": 36 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "int_literals.wast", + "line": 37 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "int_literals.wast", + "line": 39 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "int_literals.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "int_literals.wast", + "line": 41 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "int_literals.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "int_literals.wast", + "line": 43 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "int_literals.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "int_literals.wast", + "line": 45 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "int_literals.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "int_literals.wast", + "line": 47 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "int_literals.wast", + "line": 48 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "int_literals.wast", + "line": 49 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/labels.0.wasm b/test/WasmSpec/testsuite-bin/labels.0.wasm new file mode 100644 index 00000000000..4bdaa461d87 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/labels.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/labels.json b/test/WasmSpec/testsuite-bin/labels.json new file mode 100644 index 00000000000..eb0135df479 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/labels.json @@ -0,0 +1,126 @@ +{ + "modules": [{ + "filename": "labels.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "labels.wast", + "line": 272 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "labels.wast", + "line": 273 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "labels.wast", + "line": 274 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "labels.wast", + "line": 275 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "labels.wast", + "line": 276 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "labels.wast", + "line": 277 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "labels.wast", + "line": 278 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "labels.wast", + "line": 279 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "labels.wast", + "line": 280 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "labels.wast", + "line": 281 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "labels.wast", + "line": 282 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "labels.wast", + "line": 283 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "labels.wast", + "line": 284 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "labels.wast", + "line": 285 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "labels.wast", + "line": 286 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "labels.wast", + "line": 287 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "labels.wast", + "line": 288 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "labels.wast", + "line": 289 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "labels.wast", + "line": 290 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "labels.wast", + "line": 291 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "labels.wast", + "line": 292 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "labels.wast", + "line": 293 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "labels.wast", + "line": 294 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "labels.wast", + "line": 295 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/left-to-right.0.wasm b/test/WasmSpec/testsuite-bin/left-to-right.0.wasm new file mode 100644 index 00000000000..22a01c3af1e Binary files /dev/null and b/test/WasmSpec/testsuite-bin/left-to-right.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/left-to-right.json b/test/WasmSpec/testsuite-bin/left-to-right.json new file mode 100644 index 00000000000..fea0fa8719e --- /dev/null +++ b/test/WasmSpec/testsuite-bin/left-to-right.json @@ -0,0 +1,481 @@ +{ + "modules": [{ + "filename": "left-to-right.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "left-to-right.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "left-to-right.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "left-to-right.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "left-to-right.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "left-to-right.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "left-to-right.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "left-to-right.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "left-to-right.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "left-to-right.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "left-to-right.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "left-to-right.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "left-to-right.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "left-to-right.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "left-to-right.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "left-to-right.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "left-to-right.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "left-to-right.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "left-to-right.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "left-to-right.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "left-to-right.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "left-to-right.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "left-to-right.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "left-to-right.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "left-to-right.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "left-to-right.wast", + "line": 193 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "left-to-right.wast", + "line": 193 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "left-to-right.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "left-to-right.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "left-to-right.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "left-to-right.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "left-to-right.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "left-to-right.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "left-to-right.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "left-to-right.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "left-to-right.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "left-to-right.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "left-to-right.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "left-to-right.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "left-to-right.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "left-to-right.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "left-to-right.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "left-to-right.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "left-to-right.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "left-to-right.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "left-to-right.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "left-to-right.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "left-to-right.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "left-to-right.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "left-to-right.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "left-to-right.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "left-to-right.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "left-to-right.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "left-to-right.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "left-to-right.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "left-to-right.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "left-to-right.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "left-to-right.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_57", + "file": "left-to-right.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_58", + "file": "left-to-right.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_59", + "file": "left-to-right.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_60", + "file": "left-to-right.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_61", + "file": "left-to-right.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_62", + "file": "left-to-right.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_63", + "file": "left-to-right.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_64", + "file": "left-to-right.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_65", + "file": "left-to-right.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_66", + "file": "left-to-right.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_67", + "file": "left-to-right.wast", + "line": 217 + }, { + "type": "assert_return", + "name": "$assert_return_68", + "file": "left-to-right.wast", + "line": 217 + }, { + "type": "assert_return", + "name": "$assert_return_69", + "file": "left-to-right.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_70", + "file": "left-to-right.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_71", + "file": "left-to-right.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_72", + "file": "left-to-right.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_73", + "file": "left-to-right.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_74", + "file": "left-to-right.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_75", + "file": "left-to-right.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_76", + "file": "left-to-right.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_77", + "file": "left-to-right.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_78", + "file": "left-to-right.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_79", + "file": "left-to-right.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_80", + "file": "left-to-right.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_81", + "file": "left-to-right.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_82", + "file": "left-to-right.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_83", + "file": "left-to-right.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_84", + "file": "left-to-right.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_85", + "file": "left-to-right.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_86", + "file": "left-to-right.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_87", + "file": "left-to-right.wast", + "line": 227 + }, { + "type": "assert_return", + "name": "$assert_return_88", + "file": "left-to-right.wast", + "line": 227 + }, { + "type": "assert_return", + "name": "$assert_return_89", + "file": "left-to-right.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_90", + "file": "left-to-right.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_91", + "file": "left-to-right.wast", + "line": 230 + }, { + "type": "assert_return", + "name": "$assert_return_92", + "file": "left-to-right.wast", + "line": 230 + }, { + "type": "assert_return", + "name": "$assert_return_93", + "file": "left-to-right.wast", + "line": 232 + }, { + "type": "assert_return", + "name": "$assert_return_94", + "file": "left-to-right.wast", + "line": 233 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/loop.0.wasm b/test/WasmSpec/testsuite-bin/loop.0.wasm new file mode 100644 index 00000000000..d1dd63ca57e Binary files /dev/null and b/test/WasmSpec/testsuite-bin/loop.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/loop.json b/test/WasmSpec/testsuite-bin/loop.json new file mode 100644 index 00000000000..7c7e3a75644 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/loop.json @@ -0,0 +1,216 @@ +{ + "modules": [{ + "filename": "loop.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "loop.wast", + "line": 176 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "loop.wast", + "line": 177 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "loop.wast", + "line": 178 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "loop.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "loop.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "loop.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "loop.wast", + "line": 183 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "loop.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "loop.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "loop.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "loop.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "loop.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "loop.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "loop.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "loop.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "loop.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "loop.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "loop.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "loop.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "loop.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "loop.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "loop.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "loop.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "loop.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "loop.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "loop.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "loop.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "loop.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "loop.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "loop.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "loop.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "loop.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "loop.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "loop.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "loop.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "loop.wast", + "line": 217 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "loop.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "loop.wast", + "line": 219 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "loop.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "loop.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "loop.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "loop.wast", + "line": 223 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/memory.0.wasm b/test/WasmSpec/testsuite-bin/memory.0.wasm new file mode 100644 index 00000000000..1c521e414d2 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.1.wasm b/test/WasmSpec/testsuite-bin/memory.1.wasm new file mode 100644 index 00000000000..3cb1ef412b4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.10.wasm b/test/WasmSpec/testsuite-bin/memory.10.wasm new file mode 100644 index 00000000000..74a3b7bcd69 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.10.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.11.wasm b/test/WasmSpec/testsuite-bin/memory.11.wasm new file mode 100644 index 00000000000..74a3b7bcd69 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.11.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.12.wasm b/test/WasmSpec/testsuite-bin/memory.12.wasm new file mode 100644 index 00000000000..74a3b7bcd69 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.12.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.13.wasm b/test/WasmSpec/testsuite-bin/memory.13.wasm new file mode 100644 index 00000000000..fd522366dd1 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.13.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.14.wasm b/test/WasmSpec/testsuite-bin/memory.14.wasm new file mode 100644 index 00000000000..fd522366dd1 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.14.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.15.wasm b/test/WasmSpec/testsuite-bin/memory.15.wasm new file mode 100644 index 00000000000..a6abe5f0b0c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.15.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.16.wasm b/test/WasmSpec/testsuite-bin/memory.16.wasm new file mode 100644 index 00000000000..9660ca80846 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.16.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.17.wasm b/test/WasmSpec/testsuite-bin/memory.17.wasm new file mode 100644 index 00000000000..d7cc0d1ff54 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.17.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.18.wasm b/test/WasmSpec/testsuite-bin/memory.18.wasm new file mode 100644 index 00000000000..df5c375d26b Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.18.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.19.wasm b/test/WasmSpec/testsuite-bin/memory.19.wasm new file mode 100644 index 00000000000..cdeb94370a2 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.19.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.2.wasm b/test/WasmSpec/testsuite-bin/memory.2.wasm new file mode 100644 index 00000000000..e0fcf49e5d3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.20.wasm b/test/WasmSpec/testsuite-bin/memory.20.wasm new file mode 100644 index 00000000000..b3602cc0ae4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.20.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.21.wasm b/test/WasmSpec/testsuite-bin/memory.21.wasm new file mode 100644 index 00000000000..c72c2dfe1ad Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.21.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.22.wasm b/test/WasmSpec/testsuite-bin/memory.22.wasm new file mode 100644 index 00000000000..1a32ab6fdcc Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.22.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.23.wasm b/test/WasmSpec/testsuite-bin/memory.23.wasm new file mode 100644 index 00000000000..948889b1f02 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.23.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.24.wasm b/test/WasmSpec/testsuite-bin/memory.24.wasm new file mode 100644 index 00000000000..eff3ae6f697 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.24.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.25.wasm b/test/WasmSpec/testsuite-bin/memory.25.wasm new file mode 100644 index 00000000000..15f3396897e Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.25.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.3.wasm b/test/WasmSpec/testsuite-bin/memory.3.wasm new file mode 100644 index 00000000000..bb9a5622f2c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.4.wasm b/test/WasmSpec/testsuite-bin/memory.4.wasm new file mode 100644 index 00000000000..9660ca80846 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.4.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.5.wasm b/test/WasmSpec/testsuite-bin/memory.5.wasm new file mode 100644 index 00000000000..9660ca80846 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.5.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.6.wasm b/test/WasmSpec/testsuite-bin/memory.6.wasm new file mode 100644 index 00000000000..81fe83279f2 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.6.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.7.wasm b/test/WasmSpec/testsuite-bin/memory.7.wasm new file mode 100644 index 00000000000..61fc05131b5 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.7.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.8.wasm b/test/WasmSpec/testsuite-bin/memory.8.wasm new file mode 100644 index 00000000000..18a833b6949 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.8.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.9.wasm b/test/WasmSpec/testsuite-bin/memory.9.wasm new file mode 100644 index 00000000000..74a3b7bcd69 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory.9.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory.json b/test/WasmSpec/testsuite-bin/memory.json new file mode 100644 index 00000000000..d60486df2c5 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/memory.json @@ -0,0 +1,216 @@ +{ + "modules": [{ + "filename": "memory.0.wasm", + "commands": [] + }, { + "filename": "memory.1.wasm", + "commands": [] + }, { + "filename": "memory.2.wasm", + "commands": [] + }, { + "filename": "memory.3.wasm", + "commands": [] + }, { + "filename": "memory.4.wasm", + "commands": [] + }, { + "filename": "memory.5.wasm", + "commands": [] + }, { + "filename": "memory.6.wasm", + "commands": [] + }, { + "filename": "memory.7.wasm", + "commands": [] + }, { + "filename": "memory.8.wasm", + "commands": [] + }, { + "filename": "memory.9.wasm", + "commands": [] + }, { + "filename": "memory.10.wasm", + "commands": [] + }, { + "filename": "memory.11.wasm", + "commands": [] + }, { + "filename": "memory.12.wasm", + "commands": [] + }, { + "filename": "memory.13.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory.wast", + "line": 19 + }] + }, { + "filename": "memory.14.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory.wast", + "line": 21 + }] + }, { + "filename": "memory.15.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory.wast", + "line": 23 + }] + }, { + "filename": "memory.16.wasm", + "commands": [] + }, { + "filename": "memory.17.wasm", + "commands": [] + }, { + "filename": "memory.18.wasm", + "commands": [] + }, { + "filename": "memory.19.wasm", + "commands": [] + }, { + "filename": "memory.20.wasm", + "commands": [] + }, { + "filename": "memory.21.wasm", + "commands": [] + }, { + "filename": "memory.22.wasm", + "commands": [] + }, { + "filename": "memory.23.wasm", + "commands": [] + }, { + "filename": "memory.24.wasm", + "commands": [] + }, { + "filename": "memory.25.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory.wast", + "line": 302 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "memory.wast", + "line": 303 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "memory.wast", + "line": 304 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "memory.wast", + "line": 305 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "memory.wast", + "line": 307 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "memory.wast", + "line": 308 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "memory.wast", + "line": 309 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "memory.wast", + "line": 310 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "memory.wast", + "line": 312 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "memory.wast", + "line": 313 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "memory.wast", + "line": 314 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "memory.wast", + "line": 315 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "memory.wast", + "line": 317 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "memory.wast", + "line": 318 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "memory.wast", + "line": 319 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "memory.wast", + "line": 320 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "memory.wast", + "line": 321 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "memory.wast", + "line": 322 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "memory.wast", + "line": 324 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "memory.wast", + "line": 325 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "memory.wast", + "line": 326 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "memory.wast", + "line": 327 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "memory.wast", + "line": 328 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "memory.wast", + "line": 329 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/memory_redundancy.0.wasm b/test/WasmSpec/testsuite-bin/memory_redundancy.0.wasm new file mode 100644 index 00000000000..c5ff2787de4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory_redundancy.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory_redundancy.json b/test/WasmSpec/testsuite-bin/memory_redundancy.json new file mode 100644 index 00000000000..c98a6f38112 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/memory_redundancy.json @@ -0,0 +1,31 @@ +{ + "modules": [{ + "filename": "memory_redundancy.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory_redundancy.wast", + "line": 39 + }, { + "type": "action", + "name": "$action_1", + "file": "memory_redundancy.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "memory_redundancy.wast", + "line": 41 + }, { + "type": "action", + "name": "$action_3", + "file": "memory_redundancy.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "memory_redundancy.wast", + "line": 43 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/memory_trap.0.wasm b/test/WasmSpec/testsuite-bin/memory_trap.0.wasm new file mode 100644 index 00000000000..a842a76c73c Binary files /dev/null and b/test/WasmSpec/testsuite-bin/memory_trap.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/memory_trap.json b/test/WasmSpec/testsuite-bin/memory_trap.json new file mode 100644 index 00000000000..569a437ff64 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/memory_trap.json @@ -0,0 +1,71 @@ +{ + "modules": [{ + "filename": "memory_trap.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "memory_trap.wast", + "line": 21 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "memory_trap.wast", + "line": 22 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "memory_trap.wast", + "line": 23 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "memory_trap.wast", + "line": 24 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "memory_trap.wast", + "line": 25 + }, { + "type": "assert_trap", + "name": "$assert_trap_5", + "file": "memory_trap.wast", + "line": 26 + }, { + "type": "assert_trap", + "name": "$assert_trap_6", + "file": "memory_trap.wast", + "line": 27 + }, { + "type": "assert_trap", + "name": "$assert_trap_7", + "file": "memory_trap.wast", + "line": 28 + }, { + "type": "assert_trap", + "name": "$assert_trap_8", + "file": "memory_trap.wast", + "line": 29 + }, { + "type": "assert_trap", + "name": "$assert_trap_9", + "file": "memory_trap.wast", + "line": 30 + }, { + "type": "assert_trap", + "name": "$assert_trap_10", + "file": "memory_trap.wast", + "line": 31 + }, { + "type": "assert_trap", + "name": "$assert_trap_11", + "file": "memory_trap.wast", + "line": 32 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "memory_trap.wast", + "line": 33 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/names.0.wasm b/test/WasmSpec/testsuite-bin/names.0.wasm new file mode 100644 index 00000000000..129e67173ba Binary files /dev/null and b/test/WasmSpec/testsuite-bin/names.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/names.1.wasm b/test/WasmSpec/testsuite-bin/names.1.wasm new file mode 100644 index 00000000000..af695afff29 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/names.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/names.2.wasm b/test/WasmSpec/testsuite-bin/names.2.wasm new file mode 100644 index 00000000000..c8a2a3ed3b1 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/names.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/names.3.wasm b/test/WasmSpec/testsuite-bin/names.3.wasm new file mode 100644 index 00000000000..7b87736ef1f Binary files /dev/null and b/test/WasmSpec/testsuite-bin/names.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/names.json b/test/WasmSpec/testsuite-bin/names.json new file mode 100644 index 00000000000..33fe59ddba3 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/names.json @@ -0,0 +1,90 @@ +{ + "modules": [{ + "filename": "names.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "names.wast", + "line": 8 + }] + }, { + "filename": "names.1.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "names.wast", + "line": 16 + }] + }, { + "filename": "names.2.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "names.wast", + "line": 51 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "names.wast", + "line": 52 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "names.wast", + "line": 53 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "names.wast", + "line": 54 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "names.wast", + "line": 55 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "names.wast", + "line": 56 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "names.wast", + "line": 57 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "names.wast", + "line": 58 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "names.wast", + "line": 59 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "names.wast", + "line": 60 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "names.wast", + "line": 61 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "names.wast", + "line": 62 + }] + }, { + "filename": "names.3.wasm", + "commands": [{ + "type": "action", + "name": "$action_0", + "file": "names.wast", + "line": 76 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/nop.0.wasm b/test/WasmSpec/testsuite-bin/nop.0.wasm new file mode 100644 index 00000000000..20afb2c1a2a Binary files /dev/null and b/test/WasmSpec/testsuite-bin/nop.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/nop.json b/test/WasmSpec/testsuite-bin/nop.json new file mode 100644 index 00000000000..14bd72667fa --- /dev/null +++ b/test/WasmSpec/testsuite-bin/nop.json @@ -0,0 +1,256 @@ +{ + "modules": [{ + "filename": "nop.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "nop.wast", + "line": 179 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "nop.wast", + "line": 180 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "nop.wast", + "line": 181 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "nop.wast", + "line": 182 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "nop.wast", + "line": 184 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "nop.wast", + "line": 185 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "nop.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "nop.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "nop.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "nop.wast", + "line": 190 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "nop.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "nop.wast", + "line": 193 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "nop.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "nop.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "nop.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "nop.wast", + "line": 198 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "nop.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "nop.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "nop.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "nop.wast", + "line": 203 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "nop.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "nop.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "nop.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "nop.wast", + "line": 207 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "nop.wast", + "line": 209 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "nop.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "nop.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "nop.wast", + "line": 213 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "nop.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "nop.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "nop.wast", + "line": 217 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "nop.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "nop.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "nop.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "nop.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "nop.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "nop.wast", + "line": 225 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "nop.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "nop.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "nop.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "nop.wast", + "line": 231 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "nop.wast", + "line": 232 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "nop.wast", + "line": 233 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "nop.wast", + "line": 235 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "nop.wast", + "line": 236 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "nop.wast", + "line": 238 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "nop.wast", + "line": 239 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "nop.wast", + "line": 240 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "nop.wast", + "line": 242 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "nop.wast", + "line": 243 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/return.0.wasm b/test/WasmSpec/testsuite-bin/return.0.wasm new file mode 100644 index 00000000000..8ac20eb2da3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/return.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/return.1.wasm b/test/WasmSpec/testsuite-bin/return.1.wasm new file mode 100644 index 00000000000..ae6121004a7 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/return.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/return.2.wasm b/test/WasmSpec/testsuite-bin/return.2.wasm new file mode 100644 index 00000000000..21e0b2df6e3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/return.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/return.json b/test/WasmSpec/testsuite-bin/return.json new file mode 100644 index 00000000000..91ab43c8cb1 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/return.json @@ -0,0 +1,297 @@ +{ + "modules": [{ + "filename": "return.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "return.wast", + "line": 186 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "return.wast", + "line": 187 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "return.wast", + "line": 188 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "return.wast", + "line": 189 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "return.wast", + "line": 191 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "return.wast", + "line": 192 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "return.wast", + "line": 194 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "return.wast", + "line": 195 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "return.wast", + "line": 196 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "return.wast", + "line": 197 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "return.wast", + "line": 199 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "return.wast", + "line": 200 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "return.wast", + "line": 201 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "return.wast", + "line": 202 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "return.wast", + "line": 204 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "return.wast", + "line": 205 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "return.wast", + "line": 206 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "return.wast", + "line": 208 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "return.wast", + "line": 210 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "return.wast", + "line": 211 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "return.wast", + "line": 212 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "return.wast", + "line": 214 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "return.wast", + "line": 215 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "return.wast", + "line": 216 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "return.wast", + "line": 218 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "return.wast", + "line": 220 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "return.wast", + "line": 221 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "return.wast", + "line": 222 + }, { + "type": "assert_return", + "name": "$assert_return_28", + "file": "return.wast", + "line": 223 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "return.wast", + "line": 224 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "return.wast", + "line": 226 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "return.wast", + "line": 227 + }, { + "type": "assert_return", + "name": "$assert_return_32", + "file": "return.wast", + "line": 228 + }, { + "type": "assert_return", + "name": "$assert_return_33", + "file": "return.wast", + "line": 229 + }, { + "type": "assert_return", + "name": "$assert_return_34", + "file": "return.wast", + "line": 230 + }, { + "type": "assert_return", + "name": "$assert_return_35", + "file": "return.wast", + "line": 232 + }, { + "type": "assert_return", + "name": "$assert_return_36", + "file": "return.wast", + "line": 233 + }, { + "type": "assert_return", + "name": "$assert_return_37", + "file": "return.wast", + "line": 234 + }, { + "type": "assert_return", + "name": "$assert_return_38", + "file": "return.wast", + "line": 236 + }, { + "type": "assert_return", + "name": "$assert_return_39", + "file": "return.wast", + "line": 237 + }, { + "type": "assert_return", + "name": "$assert_return_40", + "file": "return.wast", + "line": 238 + }, { + "type": "assert_return", + "name": "$assert_return_41", + "file": "return.wast", + "line": 239 + }, { + "type": "assert_return", + "name": "$assert_return_42", + "file": "return.wast", + "line": 241 + }, { + "type": "assert_return", + "name": "$assert_return_43", + "file": "return.wast", + "line": 243 + }, { + "type": "assert_return", + "name": "$assert_return_44", + "file": "return.wast", + "line": 244 + }, { + "type": "assert_return", + "name": "$assert_return_45", + "file": "return.wast", + "line": 246 + }, { + "type": "assert_return", + "name": "$assert_return_46", + "file": "return.wast", + "line": 247 + }, { + "type": "assert_return", + "name": "$assert_return_47", + "file": "return.wast", + "line": 248 + }, { + "type": "assert_return", + "name": "$assert_return_48", + "file": "return.wast", + "line": 249 + }, { + "type": "assert_return", + "name": "$assert_return_49", + "file": "return.wast", + "line": 251 + }, { + "type": "assert_return", + "name": "$assert_return_50", + "file": "return.wast", + "line": 253 + }, { + "type": "assert_return", + "name": "$assert_return_51", + "file": "return.wast", + "line": 254 + }, { + "type": "assert_return", + "name": "$assert_return_52", + "file": "return.wast", + "line": 256 + }, { + "type": "assert_return", + "name": "$assert_return_53", + "file": "return.wast", + "line": 258 + }, { + "type": "assert_return", + "name": "$assert_return_54", + "file": "return.wast", + "line": 259 + }, { + "type": "assert_return", + "name": "$assert_return_55", + "file": "return.wast", + "line": 261 + }, { + "type": "assert_return", + "name": "$assert_return_56", + "file": "return.wast", + "line": 263 + }] + }, { + "filename": "return.1.wasm", + "commands": [] + }, { + "filename": "return.2.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/select.0.wasm b/test/WasmSpec/testsuite-bin/select.0.wasm new file mode 100644 index 00000000000..39a993907db Binary files /dev/null and b/test/WasmSpec/testsuite-bin/select.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/select.json b/test/WasmSpec/testsuite-bin/select.json new file mode 100644 index 00000000000..2bcdfc88a66 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/select.json @@ -0,0 +1,146 @@ +{ + "modules": [{ + "filename": "select.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "select.wast", + "line": 21 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "select.wast", + "line": 22 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "select.wast", + "line": 23 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "select.wast", + "line": 24 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "select.wast", + "line": 26 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "select.wast", + "line": 27 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "select.wast", + "line": 28 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "select.wast", + "line": 29 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "select.wast", + "line": 31 + }, { + "type": "assert_return_nan", + "name": "$assert_return_nan_9", + "file": "select.wast", + "line": 32 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "select.wast", + "line": 33 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "select.wast", + "line": 34 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "select.wast", + "line": 35 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "select.wast", + "line": 36 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "select.wast", + "line": 37 + }, { + "type": "assert_return_nan", + "name": "$assert_return_nan_15", + "file": "select.wast", + "line": 38 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "select.wast", + "line": 40 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "select.wast", + "line": 41 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "select.wast", + "line": 42 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "select.wast", + "line": 43 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "select.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "select.wast", + "line": 45 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "select.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "select.wast", + "line": 47 + }, { + "type": "assert_trap", + "name": "$assert_trap_24", + "file": "select.wast", + "line": 49 + }, { + "type": "assert_trap", + "name": "$assert_trap_25", + "file": "select.wast", + "line": 50 + }, { + "type": "assert_trap", + "name": "$assert_trap_26", + "file": "select.wast", + "line": 51 + }, { + "type": "assert_trap", + "name": "$assert_trap_27", + "file": "select.wast", + "line": 52 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/set_local.0.wasm b/test/WasmSpec/testsuite-bin/set_local.0.wasm new file mode 100644 index 00000000000..d632f177ab0 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/set_local.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/set_local.json b/test/WasmSpec/testsuite-bin/set_local.json new file mode 100644 index 00000000000..ac761a1f4cf --- /dev/null +++ b/test/WasmSpec/testsuite-bin/set_local.json @@ -0,0 +1,56 @@ +{ + "modules": [{ + "filename": "set_local.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "set_local.wast", + "line": 68 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "set_local.wast", + "line": 69 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "set_local.wast", + "line": 70 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "set_local.wast", + "line": 71 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "set_local.wast", + "line": 73 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "set_local.wast", + "line": 74 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "set_local.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "set_local.wast", + "line": 76 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "set_local.wast", + "line": 79 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "set_local.wast", + "line": 85 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/skip-stack-guard-page.0.wasm b/test/WasmSpec/testsuite-bin/skip-stack-guard-page.0.wasm new file mode 100644 index 00000000000..6d7a30e5937 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/skip-stack-guard-page.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/skip-stack-guard-page.json b/test/WasmSpec/testsuite-bin/skip-stack-guard-page.json new file mode 100644 index 00000000000..2bc40dd8684 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/skip-stack-guard-page.json @@ -0,0 +1,56 @@ +{ + "modules": [{ + "filename": "skip-stack-guard-page.0.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "skip-stack-guard-page.wast", + "line": 2275 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "skip-stack-guard-page.wast", + "line": 2276 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "skip-stack-guard-page.wast", + "line": 2277 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "skip-stack-guard-page.wast", + "line": 2278 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "skip-stack-guard-page.wast", + "line": 2279 + }, { + "type": "assert_trap", + "name": "$assert_trap_5", + "file": "skip-stack-guard-page.wast", + "line": 2280 + }, { + "type": "assert_trap", + "name": "$assert_trap_6", + "file": "skip-stack-guard-page.wast", + "line": 2281 + }, { + "type": "assert_trap", + "name": "$assert_trap_7", + "file": "skip-stack-guard-page.wast", + "line": 2282 + }, { + "type": "assert_trap", + "name": "$assert_trap_8", + "file": "skip-stack-guard-page.wast", + "line": 2283 + }, { + "type": "assert_trap", + "name": "$assert_trap_9", + "file": "skip-stack-guard-page.wast", + "line": 2284 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/stack.0.wasm b/test/WasmSpec/testsuite-bin/stack.0.wasm new file mode 100644 index 00000000000..a8be361c9e8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/stack.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/stack.1.wasm b/test/WasmSpec/testsuite-bin/stack.1.wasm new file mode 100644 index 00000000000..efb7e6d9c62 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/stack.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/stack.json b/test/WasmSpec/testsuite-bin/stack.json new file mode 100644 index 00000000000..38377022585 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/stack.json @@ -0,0 +1,24 @@ +{ + "modules": [{ + "filename": "stack.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "stack.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "stack.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "stack.wast", + "line": 132 + }] + }, { + "filename": "stack.1.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/start.0.wasm b/test/WasmSpec/testsuite-bin/start.0.wasm new file mode 100644 index 00000000000..37528649298 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/start.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/start.1.wasm b/test/WasmSpec/testsuite-bin/start.1.wasm new file mode 100644 index 00000000000..37528649298 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/start.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/start.2.wasm b/test/WasmSpec/testsuite-bin/start.2.wasm new file mode 100644 index 00000000000..bfe6d022bab Binary files /dev/null and b/test/WasmSpec/testsuite-bin/start.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/start.3.wasm b/test/WasmSpec/testsuite-bin/start.3.wasm new file mode 100644 index 00000000000..7133e3de6b8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/start.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/start.json b/test/WasmSpec/testsuite-bin/start.json new file mode 100644 index 00000000000..dee2df65e77 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/start.json @@ -0,0 +1,65 @@ +{ + "modules": [{ + "filename": "start.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "start.wast", + "line": 43 + }, { + "type": "action", + "name": "$action_1", + "file": "start.wast", + "line": 44 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "start.wast", + "line": 45 + }, { + "type": "action", + "name": "$action_3", + "file": "start.wast", + "line": 46 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "start.wast", + "line": 47 + }] + }, { + "filename": "start.1.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "start.wast", + "line": 72 + }, { + "type": "action", + "name": "$action_1", + "file": "start.wast", + "line": 73 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "start.wast", + "line": 74 + }, { + "type": "action", + "name": "$action_3", + "file": "start.wast", + "line": 75 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "start.wast", + "line": 76 + }] + }, { + "filename": "start.2.wasm", + "commands": [] + }, { + "filename": "start.3.wasm", + "commands": [] + }] +} diff --git a/test/WasmSpec/testsuite-bin/store_retval.json b/test/WasmSpec/testsuite-bin/store_retval.json new file mode 100644 index 00000000000..c02ade53278 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/store_retval.json @@ -0,0 +1,3 @@ +{ + "modules": [] +} diff --git a/test/WasmSpec/testsuite-bin/switch.0.wasm b/test/WasmSpec/testsuite-bin/switch.0.wasm new file mode 100644 index 00000000000..d9d202decc3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/switch.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/switch.json b/test/WasmSpec/testsuite-bin/switch.json new file mode 100644 index 00000000000..81c6867b444 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/switch.json @@ -0,0 +1,136 @@ +{ + "modules": [{ + "filename": "switch.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "switch.wast", + "line": 120 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "switch.wast", + "line": 121 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "switch.wast", + "line": 122 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "switch.wast", + "line": 123 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "switch.wast", + "line": 124 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "switch.wast", + "line": 125 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "switch.wast", + "line": 126 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "switch.wast", + "line": 127 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "switch.wast", + "line": 128 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "switch.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "switch.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "switch.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_12", + "file": "switch.wast", + "line": 133 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "switch.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "switch.wast", + "line": 135 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "switch.wast", + "line": 136 + }, { + "type": "assert_return", + "name": "$assert_return_16", + "file": "switch.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "switch.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "switch.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "switch.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_20", + "file": "switch.wast", + "line": 142 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "switch.wast", + "line": 143 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "switch.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "switch.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_24", + "file": "switch.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "switch.wast", + "line": 148 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/tee_local.0.wasm b/test/WasmSpec/testsuite-bin/tee_local.0.wasm new file mode 100644 index 00000000000..f0568caeaf4 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/tee_local.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/tee_local.json b/test/WasmSpec/testsuite-bin/tee_local.json new file mode 100644 index 00000000000..9e5a207d03e --- /dev/null +++ b/test/WasmSpec/testsuite-bin/tee_local.json @@ -0,0 +1,61 @@ +{ + "modules": [{ + "filename": "tee_local.0.wasm", + "commands": [{ + "type": "assert_return", + "name": "$assert_return_0", + "file": "tee_local.wast", + "line": 98 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "tee_local.wast", + "line": 99 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "tee_local.wast", + "line": 100 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "tee_local.wast", + "line": 101 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "tee_local.wast", + "line": 103 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "tee_local.wast", + "line": 104 + }, { + "type": "assert_return", + "name": "$assert_return_6", + "file": "tee_local.wast", + "line": 105 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "tee_local.wast", + "line": 106 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "tee_local.wast", + "line": 109 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "tee_local.wast", + "line": 115 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "tee_local.wast", + "line": 122 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/traps.0.wasm b/test/WasmSpec/testsuite-bin/traps.0.wasm new file mode 100644 index 00000000000..e66cb0bacd3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/traps.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/traps.1.wasm b/test/WasmSpec/testsuite-bin/traps.1.wasm new file mode 100644 index 00000000000..0382ceee3a3 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/traps.1.wasm differ diff --git a/test/WasmSpec/testsuite-bin/traps.2.wasm b/test/WasmSpec/testsuite-bin/traps.2.wasm new file mode 100644 index 00000000000..fb798d523a7 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/traps.2.wasm differ diff --git a/test/WasmSpec/testsuite-bin/traps.3.wasm b/test/WasmSpec/testsuite-bin/traps.3.wasm new file mode 100644 index 00000000000..a5bbd5e11d5 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/traps.3.wasm differ diff --git a/test/WasmSpec/testsuite-bin/traps.json b/test/WasmSpec/testsuite-bin/traps.json new file mode 100644 index 00000000000..ba30a2f5e52 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/traps.json @@ -0,0 +1,115 @@ +{ + "modules": [{ + "filename": "traps.0.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "traps.wast", + "line": 16 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "traps.wast", + "line": 17 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "traps.wast", + "line": 18 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "traps.wast", + "line": 19 + }] + }, { + "filename": "traps.1.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "traps.wast", + "line": 32 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "traps.wast", + "line": 33 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "traps.wast", + "line": 34 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "traps.wast", + "line": 35 + }] + }, { + "filename": "traps.2.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "traps.wast", + "line": 48 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "traps.wast", + "line": 49 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "traps.wast", + "line": 50 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "traps.wast", + "line": 51 + }, { + "type": "assert_trap", + "name": "$assert_trap_4", + "file": "traps.wast", + "line": 52 + }, { + "type": "assert_trap", + "name": "$assert_trap_5", + "file": "traps.wast", + "line": 53 + }, { + "type": "assert_trap", + "name": "$assert_trap_6", + "file": "traps.wast", + "line": 54 + }, { + "type": "assert_trap", + "name": "$assert_trap_7", + "file": "traps.wast", + "line": 55 + }] + }, { + "filename": "traps.3.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "traps.wast", + "line": 66 + }, { + "type": "assert_trap", + "name": "$assert_trap_1", + "file": "traps.wast", + "line": 67 + }, { + "type": "assert_trap", + "name": "$assert_trap_2", + "file": "traps.wast", + "line": 68 + }, { + "type": "assert_trap", + "name": "$assert_trap_3", + "file": "traps.wast", + "line": 69 + }] + }] +} diff --git a/test/WasmSpec/testsuite-bin/typecheck.json b/test/WasmSpec/testsuite-bin/typecheck.json new file mode 100644 index 00000000000..c02ade53278 --- /dev/null +++ b/test/WasmSpec/testsuite-bin/typecheck.json @@ -0,0 +1,3 @@ +{ + "modules": [] +} diff --git a/test/WasmSpec/testsuite-bin/unwind.0.wasm b/test/WasmSpec/testsuite-bin/unwind.0.wasm new file mode 100644 index 00000000000..0149b5801b8 Binary files /dev/null and b/test/WasmSpec/testsuite-bin/unwind.0.wasm differ diff --git a/test/WasmSpec/testsuite-bin/unwind.json b/test/WasmSpec/testsuite-bin/unwind.json new file mode 100644 index 00000000000..f1824a6751f --- /dev/null +++ b/test/WasmSpec/testsuite-bin/unwind.json @@ -0,0 +1,166 @@ +{ + "modules": [{ + "filename": "unwind.0.wasm", + "commands": [{ + "type": "assert_trap", + "name": "$assert_trap_0", + "file": "unwind.wast", + "line": 130 + }, { + "type": "assert_return", + "name": "$assert_return_1", + "file": "unwind.wast", + "line": 131 + }, { + "type": "assert_return", + "name": "$assert_return_2", + "file": "unwind.wast", + "line": 132 + }, { + "type": "assert_return", + "name": "$assert_return_3", + "file": "unwind.wast", + "line": 133 + }, { + "type": "assert_return", + "name": "$assert_return_4", + "file": "unwind.wast", + "line": 134 + }, { + "type": "assert_return", + "name": "$assert_return_5", + "file": "unwind.wast", + "line": 135 + }, { + "type": "assert_trap", + "name": "$assert_trap_6", + "file": "unwind.wast", + "line": 137 + }, { + "type": "assert_return", + "name": "$assert_return_7", + "file": "unwind.wast", + "line": 138 + }, { + "type": "assert_return", + "name": "$assert_return_8", + "file": "unwind.wast", + "line": 139 + }, { + "type": "assert_return", + "name": "$assert_return_9", + "file": "unwind.wast", + "line": 140 + }, { + "type": "assert_return", + "name": "$assert_return_10", + "file": "unwind.wast", + "line": 141 + }, { + "type": "assert_return", + "name": "$assert_return_11", + "file": "unwind.wast", + "line": 142 + }, { + "type": "assert_trap", + "name": "$assert_trap_12", + "file": "unwind.wast", + "line": 144 + }, { + "type": "assert_return", + "name": "$assert_return_13", + "file": "unwind.wast", + "line": 145 + }, { + "type": "assert_return", + "name": "$assert_return_14", + "file": "unwind.wast", + "line": 146 + }, { + "type": "assert_return", + "name": "$assert_return_15", + "file": "unwind.wast", + "line": 147 + }, { + "type": "assert_trap", + "name": "$assert_trap_16", + "file": "unwind.wast", + "line": 149 + }, { + "type": "assert_return", + "name": "$assert_return_17", + "file": "unwind.wast", + "line": 150 + }, { + "type": "assert_return", + "name": "$assert_return_18", + "file": "unwind.wast", + "line": 151 + }, { + "type": "assert_return", + "name": "$assert_return_19", + "file": "unwind.wast", + "line": 152 + }, { + "type": "assert_trap", + "name": "$assert_trap_20", + "file": "unwind.wast", + "line": 154 + }, { + "type": "assert_return", + "name": "$assert_return_21", + "file": "unwind.wast", + "line": 155 + }, { + "type": "assert_return", + "name": "$assert_return_22", + "file": "unwind.wast", + "line": 156 + }, { + "type": "assert_return", + "name": "$assert_return_23", + "file": "unwind.wast", + "line": 157 + }, { + "type": "assert_trap", + "name": "$assert_trap_24", + "file": "unwind.wast", + "line": 159 + }, { + "type": "assert_return", + "name": "$assert_return_25", + "file": "unwind.wast", + "line": 160 + }, { + "type": "assert_return", + "name": "$assert_return_26", + "file": "unwind.wast", + "line": 161 + }, { + "type": "assert_return", + "name": "$assert_return_27", + "file": "unwind.wast", + "line": 162 + }, { + "type": "assert_trap", + "name": "$assert_trap_28", + "file": "unwind.wast", + "line": 164 + }, { + "type": "assert_return", + "name": "$assert_return_29", + "file": "unwind.wast", + "line": 165 + }, { + "type": "assert_return", + "name": "$assert_return_30", + "file": "unwind.wast", + "line": 166 + }, { + "type": "assert_return", + "name": "$assert_return_31", + "file": "unwind.wast", + "line": 167 + }] + }] +} diff --git a/test/WasmSpec/testsuite/LICENSE b/test/WasmSpec/testsuite/LICENSE new file mode 100644 index 00000000000..fc190477e67 --- /dev/null +++ b/test/WasmSpec/testsuite/LICENSE @@ -0,0 +1,229 @@ +-------------------------- START OF THIRD PARTY NOTICE ------------------------- +This file is based on or incorporates material from the projects listed below +(Third Party IP). The original copyright notice and the license under which +Microsoft received such Third Party IP, are set forth below. Such licenses and +notices are provided for informational purposes only. Microsoft licenses the +Third Party IP to you under the licensing terms for the Microsoft product. +Microsoft reserves all other rights not expressly granted under this agreement, +whether by implication, estoppel or otherwise. + +WebAssembly/testsuite + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Provided for Informational Purposes Only + Apache 2.0 License + +Licensed under the Apache License, Version 2.0 (the License); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +--------------------------- END OF THIRD PARTY NOTICE -------------------------- diff --git a/test/WasmSpec/testsuite/address-offset-range.fail.wast b/test/WasmSpec/testsuite/address-offset-range.fail.wast new file mode 100644 index 00000000000..127327a260d --- /dev/null +++ b/test/WasmSpec/testsuite/address-offset-range.fail.wast @@ -0,0 +1,4 @@ +(module + (memory 1) + (func $bad (drop (i32.load offset=4294967296 (i32.const 0)))) +) diff --git a/test/WasmSpec/testsuite/address.wast b/test/WasmSpec/testsuite/address.wast new file mode 100644 index 00000000000..4f8e3498281 --- /dev/null +++ b/test/WasmSpec/testsuite/address.wast @@ -0,0 +1,34 @@ +(module + (import "spectest" "print" (func $print (param i32))) + + (memory 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "good") (param $i i32) + (call $print (i32.load8_u offset=0 (get_local $i))) ;; 97 'a' + (call $print (i32.load8_u offset=1 (get_local $i))) ;; 98 'b' + (call $print (i32.load8_u offset=2 (get_local $i))) ;; 99 'c' + (call $print (i32.load8_u offset=25 (get_local $i))) ;; 122 'z' + + (call $print (i32.load16_u offset=0 (get_local $i))) ;; 25185 'ab' + (call $print (i32.load16_u align=1 (get_local $i))) ;; 25185 'ab' + (call $print (i32.load16_u offset=1 align=1 (get_local $i))) ;; 25442 'bc' + (call $print (i32.load16_u offset=2 (get_local $i))) ;; 25699 'cd' + (call $print (i32.load16_u offset=25 align=1 (get_local $i))) ;; 122 'z\0' + + (call $print (i32.load offset=0 (get_local $i))) ;; 1684234849 'abcd' + (call $print (i32.load offset=1 align=1 (get_local $i))) ;; 1701077858 'bcde' + (call $print (i32.load offset=2 align=2 (get_local $i))) ;; 1717920867 'cdef' + (call $print (i32.load offset=25 align=1 (get_local $i))) ;; 122 'z\0\0\0' + ) + + (func (export "bad") (param $i i32) + (drop (i32.load offset=4294967295 (get_local $i))) + ) +) + +(invoke "good" (i32.const 0)) +(invoke "good" (i32.const 65507)) +(assert_trap (invoke "good" (i32.const 65508)) "out of bounds memory access") +(assert_trap (invoke "bad" (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "bad" (i32.const 1)) "out of bounds memory access") diff --git a/test/WasmSpec/testsuite/binary.wast b/test/WasmSpec/testsuite/binary.wast new file mode 100644 index 00000000000..07fc114a9be --- /dev/null +++ b/test/WasmSpec/testsuite/binary.wast @@ -0,0 +1,15 @@ +(module "\00asm\0c\00\00\00") +(module "\00asm" "\0c\00\00\00") +(module $M1 "\00asm\0c\00\00\00") +(module $M2 "\00asm" "\0c\00\00\00") + +(assert_malformed (module "") "unexpected end") +(assert_malformed (module "\01") "unexpected end") +(assert_malformed (module "\00as") "unexpected end") +(assert_malformed (module "\01") "unexpected end") +(assert_malformed (module "asm\00") "magic header not detected") + +(assert_malformed (module "\00asm") "unexpected end") +(assert_malformed (module "\00asm\0c") "unexpected end") +(assert_malformed (module "\00asm\0c\00\00") "unexpected end") +(assert_malformed (module "\00asm\10\00\00\00") "unknown binary version") diff --git a/test/WasmSpec/testsuite/block.wast b/test/WasmSpec/testsuite/block.wast new file mode 100644 index 00000000000..389a71a376f --- /dev/null +++ b/test/WasmSpec/testsuite/block.wast @@ -0,0 +1,284 @@ +;; Test `block` operator + +(module + ;; Auxiliary definition + (func $dummy) + + (func (export "empty") + (block) + (block $l) + ) + + (func (export "singular") (result i32) + (block (nop)) + (block i32 (i32.const 7)) + ) + + (func (export "multi") (result i32) + (block (call $dummy) (call $dummy) (call $dummy) (call $dummy)) + (block i32 (call $dummy) (call $dummy) (call $dummy) (i32.const 8)) + ) + + (func (export "nested") (result i32) + (block i32 + (block (call $dummy) (block) (nop)) + (block i32 (call $dummy) (i32.const 9)) + ) + ) + + (func (export "deep") (result i32) + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (block i32 (block i32 (block i32 (block i32 + (block i32 (block i32 (call $dummy) (i32.const 150))) + )))))) + )))))) + )))))) + )))))) + )))))) + )))))) + ) + + (func (export "as-unary-operand") (result i32) + (i32.ctz (block i32 (call $dummy) (i32.const 13))) + ) + (func (export "as-binary-operand") (result i32) + (i32.mul + (block i32 (call $dummy) (i32.const 3)) + (block i32 (call $dummy) (i32.const 4)) + ) + ) + (func (export "as-test-operand") (result i32) + (i32.eqz (block i32 (call $dummy) (i32.const 13))) + ) + (func (export "as-compare-operand") (result i32) + (f32.gt + (block f32 (call $dummy) (f32.const 3)) + (block f32 (call $dummy) (f32.const 3)) + ) + ) + + (func (export "break-bare") (result i32) + (block (br 0) (unreachable)) + (block (br_if 0 (i32.const 1)) (unreachable)) + (block (br_table 0 (i32.const 0)) (unreachable)) + (block (br_table 0 0 0 (i32.const 1)) (unreachable)) + (i32.const 19) + ) + (func (export "break-value") (result i32) + (block i32 (br 0 (i32.const 18)) (i32.const 19)) + ) + (func (export "break-repeated") (result i32) + (block i32 + (br 0 (i32.const 18)) + (br 0 (i32.const 19)) + (drop (br_if 0 (i32.const 20) (i32.const 0))) + (drop (br_if 0 (i32.const 20) (i32.const 1))) + (br 0 (i32.const 21)) + (br_table 0 (i32.const 22) (i32.const 4)) + (br_table 0 0 0 (i32.const 23) (i32.const 1)) + (i32.const 21) + ) + ) + (func (export "break-inner") (result i32) + (local i32) + (set_local 0 (i32.const 0)) + (set_local 0 (i32.add (get_local 0) (block i32 (block i32 (br 1 (i32.const 0x1)))))) + (set_local 0 (i32.add (get_local 0) (block i32 (block (br 0)) (i32.const 0x2)))) + (set_local 0 + (i32.add (get_local 0) (block i32 (i32.ctz (br 0 (i32.const 0x4))))) + ) + (set_local 0 + (i32.add (get_local 0) (block i32 (i32.ctz (block i32 (br 1 (i32.const 0x8)))))) + ) + (get_local 0) + ) + + (func (export "effects") (result i32) + (local i32) + (block + (set_local 0 (i32.const 1)) + (set_local 0 (i32.mul (get_local 0) (i32.const 3))) + (set_local 0 (i32.sub (get_local 0) (i32.const 5))) + (set_local 0 (i32.mul (get_local 0) (i32.const 7))) + (br 0) + (set_local 0 (i32.mul (get_local 0) (i32.const 100))) + ) + (i32.eq (get_local 0) (i32.const -14)) + ) +) + +(assert_return (invoke "empty")) +(assert_return (invoke "singular") (i32.const 7)) +(assert_return (invoke "multi") (i32.const 8)) +(assert_return (invoke "nested") (i32.const 9)) +(assert_return (invoke "deep") (i32.const 150)) + +(assert_return (invoke "as-unary-operand") (i32.const 0)) +(assert_return (invoke "as-binary-operand") (i32.const 12)) +(assert_return (invoke "as-test-operand") (i32.const 0)) +(assert_return (invoke "as-compare-operand") (i32.const 0)) + +(assert_return (invoke "break-bare") (i32.const 19)) +(assert_return (invoke "break-value") (i32.const 18)) +(assert_return (invoke "break-repeated") (i32.const 18)) +(assert_return (invoke "break-inner") (i32.const 0xf)) + +(assert_return (invoke "effects") (i32.const 1)) + +(assert_invalid + (module (func $type-empty-i32 (result i32) (block))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-i64 (result i64) (block))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-f32 (result f32) (block))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-f64 (result f64) (block))) + "type mismatch" +) + +(assert_invalid + (module (func $type-value-num-vs-void + (block (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-void-vs-num (result i32) + (block (nop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num (result i32) + (block (f32.const 0)) + )) + "type mismatch" +) + +(; TODO(stack): soft failure +(assert_invalid + (module (func $type-value-num-vs-void-after-break + (block (br 0) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-void-vs-num-after-break (result i32) + (block (i32.const 1) (br 0) (nop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num-after-break (result i32) + (block (i32.const 1) (br 0) (f32.const 0)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-second-void-vs-num (result i32) + (block i32 (br 0 (i32.const 1)) (br 0 (nop))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-second-num-vs-num (result i32) + (block i32 (br 0 (i32.const 1)) (br 0 (f64.const 1))) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-break-last-void-vs-num (result i32) + (block i32 (br 0)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-void-vs-num (result i32) + (block i32 (br 0) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-break-void-vs-num (result i32) + (block (br 0 (nop)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-num-vs-num (result i32) + (block (br 0 (i64.const 1)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-first-void-vs-num (result i32) + (block (br 0 (nop)) (br 0 (i32.const 1))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-first-num-vs-num (result i32) + (block (br 0 (i64.const 1)) (br 0 (i32.const 1))) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-break-nested-num-vs-void + (block i32 (block i32 (br 1 (i32.const 1))) (br 0)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-nested-empty-vs-num (result i32) + (block (block (br 1)) (br 0 (i32.const 1))) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-break-nested-void-vs-num (result i32) + (block (block (br 1 (nop))) (br 0 (i32.const 1))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-nested-num-vs-num (result i32) + (block (block (br 1 (i64.const 1))) (br 0 (i32.const 1))) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-break-operand-empty-vs-num (result i32) + (i32.ctz (block (br 0))) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-break-operand-void-vs-num (result i32) + (i64.ctz (block (br 0 (nop)))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-operand-num-vs-num (result i32) + (i64.ctz (block (br 0 (i64.const 9)))) + )) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/br.wast b/test/WasmSpec/testsuite/br.wast new file mode 100644 index 00000000000..034e6ff391b --- /dev/null +++ b/test/WasmSpec/testsuite/br.wast @@ -0,0 +1,412 @@ +;; Test `br` operator + +(module + ;; Auxiliary definition + (func $dummy) + + (func (export "type-i32") (block (drop (i32.ctz (br 0))))) + (func (export "type-i64") (block (drop (i64.ctz (br 0))))) + (func (export "type-f32") (block (drop (f32.neg (br 0))))) + (func (export "type-f64") (block (drop (f64.neg (br 0))))) + + (func (export "type-i32-value") (result i32) + (block i32 (i32.ctz (br 0 (i32.const 1)))) + ) + (func (export "type-i64-value") (result i64) + (block i64 (i64.ctz (br 0 (i64.const 2)))) + ) + (func (export "type-f32-value") (result f32) + (block f32 (f32.neg (br 0 (f32.const 3)))) + ) + (func (export "type-f64-value") (result f64) + (block f64 (f64.neg (br 0 (f64.const 4)))) + ) + + (func (export "as-block-first") + (block (br 0) (call $dummy)) + ) + (func (export "as-block-mid") + (block (call $dummy) (br 0) (call $dummy)) + ) + (func (export "as-block-last") + (block (nop) (call $dummy) (br 0)) + ) + (func (export "as-block-value") (result i32) + (block i32 (nop) (call $dummy) (br 0 (i32.const 2))) + ) + + (func (export "as-loop-first") (result i32) + (block i32 (loop i32 (br 1 (i32.const 3)) (i32.const 2))) + ) + (func (export "as-loop-mid") (result i32) + (block i32 (loop i32 (call $dummy) (br 1 (i32.const 4)) (i32.const 2))) + ) + (func (export "as-loop-last") (result i32) + (block i32 (loop i32 (nop) (call $dummy) (br 1 (i32.const 5)))) + ) + + (func (export "as-br-value") (result i32) + (block i32 (br 0 (br 0 (i32.const 9)))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (br 0))) + ) + (func (export "as-br_if-value") (result i32) + (block i32 (br_if 0 (br 0 (i32.const 8)) (i32.const 1)) (i32.const 7)) + ) + (func (export "as-br_if-value-cond") (result i32) + (block i32 (drop (br_if 0 (i32.const 6) (br 0 (i32.const 9)))) (i32.const 7)) + ) + + (func (export "as-br_table-index") + (block (br_table 0 0 0 (br 0))) + ) + (func (export "as-br_table-value") (result i32) + (block i32 + (br_table 0 0 0 (br 0 (i32.const 10)) (i32.const 1)) (i32.const 7) + ) + ) + (func (export "as-br_table-value-index") (result i32) + (block i32 + (br_table 0 0 (i32.const 6) (br 0 (i32.const 11))) (i32.const 7) + ) + ) + + (func (export "as-return-value") (result i64) + (block i64 (return (br 0 (i64.const 7)))) + ) + + (func (export "as-if-cond") (result i32) + (block i32 (if i32 (br 0 (i32.const 2)) (i32.const 0) (i32.const 1))) + ) + (func (export "as-if-then") (param i32 i32) (result i32) + (block i32 (if i32 (get_local 0) (br 1 (i32.const 3)) (get_local 1))) + ) + (func (export "as-if-else") (param i32 i32) (result i32) + (block i32 (if i32 (get_local 0) (get_local 1) (br 1 (i32.const 4)))) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (block i32 (select (br 0 (i32.const 5)) (get_local 0) (get_local 1))) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (block i32 (select (get_local 0) (br 0 (i32.const 6)) (get_local 1))) + ) + (func (export "as-select-cond") (result i32) + (block i32 (select (i32.const 0) (i32.const 1) (br 0 (i32.const 7)))) + ) + + (func $f (param i32 i32 i32) (result i32) (i32.const -1)) + (func (export "as-call-first") (result i32) + (block i32 (call $f (br 0 (i32.const 12)) (i32.const 2) (i32.const 3))) + ) + (func (export "as-call-mid") (result i32) + (block i32 (call $f (i32.const 1) (br 0 (i32.const 13)) (i32.const 3))) + ) + (func (export "as-call-last") (result i32) + (block i32 (call $f (i32.const 1) (i32.const 2) (br 0 (i32.const 14)))) + ) + + (type $sig (func (param i32 i32 i32) (result i32))) + (table anyfunc (elem $f)) + (func (export "as-call_indirect-func") (result i32) + (block i32 + (call_indirect $sig + (br 0 (i32.const 20)) + (i32.const 1) (i32.const 2) (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-first") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) + (br 0 (i32.const 21)) (i32.const 2) (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-mid") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) + (i32.const 1) (br 0 (i32.const 22)) (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-last") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) + (i32.const 1) (i32.const 2) (br 0 (i32.const 23)) + ) + ) + ) + + (func (export "as-set_local-value") (result i32) (local f32) + (block i32 (set_local 0 (br 0 (i32.const 17))) (i32.const -1)) + ) + + (memory 1) + (func (export "as-load-address") (result f32) + (block f32 (f32.load (br 0 (f32.const 1.7)))) + ) + (func (export "as-loadN-address") (result i64) + (block i64 (i64.load8_s (br 0 (i64.const 30)))) + ) + + (func (export "as-store-address") (result i32) + (block i32 (f64.store (br 0 (i32.const 30)) (f64.const 7)) (i32.const -1)) + ) + (func (export "as-store-value") (result i32) + (block i32 (i64.store (i32.const 2) (br 0 (i32.const 31))) (i32.const -1)) + ) + + (func (export "as-storeN-address") (result i32) + (block i32 (i32.store8 (br 0 (i32.const 32)) (i32.const 7)) (i32.const -1)) + ) + (func (export "as-storeN-value") (result i32) + (block i32 (i64.store16 (i32.const 2) (br 0 (i32.const 33))) (i32.const -1)) + ) + + (func (export "as-unary-operand") (result f32) + (block f32 (f32.neg (br 0 (f32.const 3.4)))) + ) + + (func (export "as-binary-left") (result i32) + (block i32 (i32.add (br 0 (i32.const 3)) (i32.const 10))) + ) + (func (export "as-binary-right") (result i64) + (block i64 (i64.sub (i64.const 10) (br 0 (i64.const 45)))) + ) + + (func (export "as-test-operand") (result i32) + (block i32 (i32.eqz (br 0 (i32.const 44)))) + ) + + (func (export "as-compare-left") (result i32) + (block i32 (f64.le (br 0 (i32.const 43)) (f64.const 10))) + ) + (func (export "as-compare-right") (result i32) + (block i32 (f32.ne (f32.const 10) (br 0 (i32.const 42)))) + ) + + (func (export "as-convert-operand") (result i32) + (block i32 (i32.wrap/i64 (br 0 (i32.const 41)))) + ) + + (func (export "as-grow_memory-size") (result i32) + (block i32 (grow_memory (br 0 (i32.const 40)))) + ) + + (func (export "nested-block-value") (result i32) + (i32.add + (i32.const 1) + (block i32 + (call $dummy) + (i32.add (i32.const 4) (br 0 (i32.const 8))) + ) + ) + ) + + (func (export "nested-br-value") (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br 0 (br 1 (i32.const 8))) + ) + ) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_if-value") (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br_if 0 (br 1 (i32.const 8)) (i32.const 1)) + (i32.const 32) + ) + ) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_if-value-cond") (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop (br_if 0 (i32.const 4) (br 0 (i32.const 8)))) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_table-value") (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br_table 0 (br 1 (i32.const 8)) (i32.const 1)) + ) + ) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_table-value-index") (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (br_table 0 (i32.const 4) (br 0 (i32.const 8))) + (i32.const 16) + ) + ) + ) +) + +(assert_return (invoke "type-i32")) +(assert_return (invoke "type-i64")) +(assert_return (invoke "type-f32")) +(assert_return (invoke "type-f64")) + +(assert_return (invoke "type-i32-value") (i32.const 1)) +(assert_return (invoke "type-i64-value") (i64.const 2)) +(assert_return (invoke "type-f32-value") (f32.const 3)) +(assert_return (invoke "type-f64-value") (f64.const 4)) + +(assert_return (invoke "as-block-first")) +(assert_return (invoke "as-block-mid")) +(assert_return (invoke "as-block-last")) +(assert_return (invoke "as-block-value") (i32.const 2)) + +(assert_return (invoke "as-loop-first") (i32.const 3)) +(assert_return (invoke "as-loop-mid") (i32.const 4)) +(assert_return (invoke "as-loop-last") (i32.const 5)) + +(assert_return (invoke "as-br-value") (i32.const 9)) + +(assert_return (invoke "as-br_if-cond")) +(assert_return (invoke "as-br_if-value") (i32.const 8)) +(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) + +(assert_return (invoke "as-br_table-index")) +(assert_return (invoke "as-br_table-value") (i32.const 10)) +(assert_return (invoke "as-br_table-value-index") (i32.const 11)) + +(assert_return (invoke "as-return-value") (i64.const 7)) + +(assert_return (invoke "as-if-cond") (i32.const 2)) +(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) +(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) + +(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-cond") (i32.const 7)) + +(assert_return (invoke "as-call-first") (i32.const 12)) +(assert_return (invoke "as-call-mid") (i32.const 13)) +(assert_return (invoke "as-call-last") (i32.const 14)) + +(assert_return (invoke "as-call_indirect-func") (i32.const 20)) +(assert_return (invoke "as-call_indirect-first") (i32.const 21)) +(assert_return (invoke "as-call_indirect-mid") (i32.const 22)) +(assert_return (invoke "as-call_indirect-last") (i32.const 23)) + +(assert_return (invoke "as-set_local-value") (i32.const 17)) + +(assert_return (invoke "as-load-address") (f32.const 1.7)) +(assert_return (invoke "as-loadN-address") (i64.const 30)) + +(assert_return (invoke "as-store-address") (i32.const 30)) +(assert_return (invoke "as-store-value") (i32.const 31)) +(assert_return (invoke "as-storeN-address") (i32.const 32)) +(assert_return (invoke "as-storeN-value") (i32.const 33)) + +(assert_return (invoke "as-unary-operand") (f32.const 3.4)) + +(assert_return (invoke "as-binary-left") (i32.const 3)) +(assert_return (invoke "as-binary-right") (i64.const 45)) + +(assert_return (invoke "as-test-operand") (i32.const 44)) + +(assert_return (invoke "as-compare-left") (i32.const 43)) +(assert_return (invoke "as-compare-right") (i32.const 42)) + +(assert_return (invoke "as-convert-operand") (i32.const 41)) + +(assert_return (invoke "as-grow_memory-size") (i32.const 40)) + +(assert_return (invoke "nested-block-value") (i32.const 9)) +(assert_return (invoke "nested-br-value") (i32.const 9)) +(assert_return (invoke "nested-br_if-value") (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond") (i32.const 9)) +(assert_return (invoke "nested-br_table-value") (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index") (i32.const 9)) + +(assert_invalid + (module (func $type-arg-empty-vs-num (result i32) + (block (br 0) (i32.const 1)) + )) + "type mismatch" +) + +;; TODO(stack): move this elsewhere +(module (func $type-arg-num-vs-void + (block (drop (i32.const 0)) (br 0)) +)) + +(; TODO(stack): soft failure +(assert_invalid + (module (func $type-arg-poly-vs-empty + (block (br 0 (unreachable))) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-arg-void-vs-num (result i32) + (block (br 0 (nop)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-num-vs-num (result i32) + (block (br 0 (i64.const 1)) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $unbound-label (br 1))) + "unknown label" +) +(assert_invalid + (module (func $unbound-nested-label (block (block (br 5))))) + "unknown label" +) +(assert_invalid + (module (func $large-label (br 0x10000001))) + "unknown label" +) diff --git a/test/WasmSpec/testsuite/br_if.wast b/test/WasmSpec/testsuite/br_if.wast new file mode 100644 index 00000000000..d115fcbc50e --- /dev/null +++ b/test/WasmSpec/testsuite/br_if.wast @@ -0,0 +1,306 @@ +;; Test `br_if` operator + +(module + (func $dummy) + + (func (export "as-block-first") (param i32) (result i32) + (block (br_if 0 (get_local 0)) (return (i32.const 2))) (i32.const 3) + ) + (func (export "as-block-mid") (param i32) (result i32) + (block (call $dummy) (br_if 0 (get_local 0)) (return (i32.const 2))) + (i32.const 3) + ) + (func (export "as-block-last") (param i32) + (block (call $dummy) (call $dummy) (br_if 0 (get_local 0))) + ) + (func (export "as-block-first-value") (param i32) (result i32) + (block i32 (drop (br_if 0 (i32.const 10) (get_local 0))) (return (i32.const 11))) + ) + (func (export "as-block-mid-value") (param i32) (result i32) + (block i32 (call $dummy) (drop (br_if 0 (i32.const 20) (get_local 0))) (return (i32.const 21))) + ) + (func (export "as-block-last-value") (param i32) (result i32) + (block i32 + (call $dummy) (call $dummy) (br_if 0 (i32.const 11) (get_local 0)) + ) + ) + + (func (export "as-loop-first") (param i32) (result i32) + (block (loop (br_if 1 (get_local 0)) (return (i32.const 2)))) (i32.const 3) + ) + (func (export "as-loop-mid") (param i32) (result i32) + (block (loop (call $dummy) (br_if 1 (get_local 0)) (return (i32.const 2)))) + (i32.const 4) + ) + (func (export "as-loop-last") (param i32) + (loop (call $dummy) (br_if 1 (get_local 0))) + ) + + (func (export "as-if-then") (param i32 i32) + (block (if (get_local 0) (br_if 1 (get_local 1)) (call $dummy))) + ) + (func (export "as-if-else") (param i32 i32) + (block (if (get_local 0) (call $dummy) (br_if 1 (get_local 1)))) + ) + + (func (export "nested-block-value") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (i32.add + (i32.const 4) + (block i32 + (drop (br_if 1 (i32.const 8) (get_local 0))) + (i32.const 16) + ) + ) + ) + ) + ) + + (func (export "nested-br-value") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (br 0 + (block i32 (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4)) + ) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_if-value") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop (br_if 0 + (block i32 (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4)) + (i32.const 1) + )) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_if-value-cond") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop (br_if 0 + (i32.const 4) + (block i32 (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 1)) + )) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_table-value") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (br_table 0 + (block i32 (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 4)) + (i32.const 1) + ) + (i32.const 16) + ) + ) + ) + + (func (export "nested-br_table-value-index") (param i32) (result i32) + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (br_table 0 + (i32.const 4) + (block i32 (drop (br_if 1 (i32.const 8) (get_local 0))) (i32.const 1)) + ) + (i32.const 16) + ) + ) + ) +) + +(assert_return (invoke "as-block-first" (i32.const 0)) (i32.const 2)) +(assert_return (invoke "as-block-first" (i32.const 1)) (i32.const 3)) +(assert_return (invoke "as-block-mid" (i32.const 0)) (i32.const 2)) +(assert_return (invoke "as-block-mid" (i32.const 1)) (i32.const 3)) +(assert_return (invoke "as-block-last" (i32.const 0))) +(assert_return (invoke "as-block-last" (i32.const 1))) +(assert_return (invoke "as-block-last-value" (i32.const 0)) (i32.const 11)) +(assert_return (invoke "as-block-last-value" (i32.const 1)) (i32.const 11)) + +(assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 2)) +(assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 3)) +(assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 2)) +(assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 4)) +(assert_return (invoke "as-loop-last" (i32.const 0))) +(assert_return (invoke "as-loop-last" (i32.const 1))) + +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 0))) +(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 0))) +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 1))) +(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 1))) +(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 0))) +(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 0))) +(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 1))) +(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 1))) + +(assert_return (invoke "nested-block-value" (i32.const 0)) (i32.const 21)) +(assert_return (invoke "nested-block-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br-value" (i32.const 0)) (i32.const 5)) +(assert_return (invoke "nested-br-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value" (i32.const 0)) (i32.const 5)) +(assert_return (invoke "nested-br_if-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 0)) (i32.const 5)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value" (i32.const 0)) (i32.const 5)) +(assert_return (invoke "nested-br_table-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 0)) (i32.const 5)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 1)) (i32.const 9)) + +(assert_invalid + (module (func $type-false-i32 (block (i32.ctz (br_if 0 (i32.const 0)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-false-i64 (block (i64.ctz (br_if 0 (i32.const 0)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-false-f32 (block (f32.neg (br_if 0 (i32.const 0)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-false-f64 (block (f64.neg (br_if 0 (i32.const 0)))))) + "type mismatch" +) + +(assert_invalid + (module (func $type-true-i32 (block (i32.ctz (br_if 0 (i32.const 1)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-true-i64 (block (i64.ctz (br_if 0 (i64.const 1)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-true-f32 (block (f32.neg (br_if 0 (f32.const 1)))))) + "type mismatch" +) +(assert_invalid + (module (func $type-true-f64 (block (f64.neg (br_if 0 (i64.const 1)))))) + "type mismatch" +) + +(assert_invalid + (module (func $type-false-arg-void-vs-num (result i32) + (block i32 (br_if 0 (i32.const 0)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-true-arg-void-vs-num (result i32) + (block i32 (br_if 0 (i32.const 1)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-false-arg-num-vs-void + (block (br_if 0 (i32.const 0) (i32.const 0))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-true-arg-num-vs-void + (block (br_if 0 (i32.const 0) (i32.const 1))) + )) + "type mismatch" +) + +(; TODO(stack): soft failure +(assert_invalid + (module (func $type-false-arg-poly-vs-empty + (block (br_if 0 (unreachable) (i32.const 0))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-true-arg-poly-vs-empty + (block (br_if 0 (unreachable) (i32.const 1))) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-false-arg-void-vs-num (result i32) + (block i32 (br_if 0 (nop) (i32.const 0)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-true-arg-void-vs-num (result i32) + (block i32 (br_if 0 (nop) (i32.const 1)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-false-arg-num-vs-num (result i32) + (block i32 (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-true-arg-num-vs-num (result i32) + (block i32 (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-cond-void-vs-i32 + (block (br_if 0 (nop))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-cond-num-vs-i32 + (block (br_if 0 (i64.const 0))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-cond-void-vs-i32 (result i32) + (block i32 (br_if 0 (i32.const 0) (nop)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-cond-num-vs-i32 (result i32) + (block i32 (br_if 0 (i32.const 0) (i64.const 0)) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $unbound-label (br_if 1 (i32.const 1)))) + "unknown label" +) +(assert_invalid + (module (func $unbound-nested-label (block (block (br_if 5 (i32.const 1)))))) + "unknown label" +) +(assert_invalid + (module (func $large-label (br_if 0x10000001 (i32.const 1)))) + "unknown label" +) + diff --git a/test/WasmSpec/testsuite/br_table.wast b/test/WasmSpec/testsuite/br_table.wast new file mode 100644 index 00000000000..04d565e047f --- /dev/null +++ b/test/WasmSpec/testsuite/br_table.wast @@ -0,0 +1,1469 @@ +;; Test `br_table` operator + +(module + ;; Auxiliary definition + (func $dummy) + + (func (export "type-i32") + (block (drop (i32.ctz (br_table 0 0 (i32.const 0))))) + ) + (func (export "type-i64") + (block (drop (i64.ctz (br_table 0 0 (i32.const 0))))) + ) + (func (export "type-f32") + (block (drop (f32.neg (br_table 0 0 (i32.const 0))))) + ) + (func (export "type-f64") + (block (drop (f64.neg (br_table 0 0 (i32.const 0))))) + ) + + (func (export "type-i32-value") (result i32) + (block i32 (i32.ctz (br_table 0 0 (i32.const 1) (i32.const 0)))) + ) + (func (export "type-i64-value") (result i64) + (block i64 (i64.ctz (br_table 0 0 (i64.const 2) (i32.const 0)))) + ) + (func (export "type-f32-value") (result f32) + (block f32 (f32.neg (br_table 0 0 (f32.const 3) (i32.const 0)))) + ) + (func (export "type-f64-value") (result f64) + (block f64 (f64.neg (br_table 0 0 (f64.const 4) (i32.const 0)))) + ) + + (func (export "empty") (param i32) (result i32) + (block (br_table 0 (get_local 0)) (return (i32.const 21))) + (i32.const 22) + ) + (func (export "empty-value") (param i32) (result i32) + (block i32 (br_table 0 (i32.const 33) (get_local 0)) (i32.const 31)) + ) + + (func (export "singleton") (param i32) (result i32) + (block + (block + (br_table 1 0 (get_local 0)) + (return (i32.const 21)) + ) + (return (i32.const 20)) + ) + (i32.const 22) + ) + + (func (export "singleton-value") (param i32) (result i32) + (block i32 + (drop + (block i32 + (br_table 0 1 (i32.const 33) (get_local 0)) + (return (i32.const 31)) + ) + ) + (i32.const 32) + ) + ) + + (func (export "multiple") (param i32) (result i32) + (block + (block + (block + (block + (block + (br_table 3 2 1 0 4 (get_local 0)) + (return (i32.const 99)) + ) + (return (i32.const 100)) + ) + (return (i32.const 101)) + ) + (return (i32.const 102)) + ) + (return (i32.const 103)) + ) + (i32.const 104) + ) + + (func (export "multiple-value") (param i32) (result i32) + (local i32) + (set_local 1 (block i32 + (set_local 1 (block i32 + (set_local 1 (block i32 + (set_local 1 (block i32 + (set_local 1 (block i32 + (br_table 3 2 1 0 4 (i32.const 200) (get_local 0)) + (return (i32.add (get_local 1) (i32.const 99))) + )) + (return (i32.add (get_local 1) (i32.const 10))) + )) + (return (i32.add (get_local 1) (i32.const 11))) + )) + (return (i32.add (get_local 1) (i32.const 12))) + )) + (return (i32.add (get_local 1) (i32.const 13))) + )) + (i32.add (get_local 1) (i32.const 14)) + ) + + (func (export "large") (param i32) (result i32) + (block + (block + (br_table + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 + (get_local 0) + ) + (return (i32.const -1)) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + + (func (export "as-block-first") + (block (br_table 0 0 0 (i32.const 0)) (call $dummy)) + ) + (func (export "as-block-mid") + (block (call $dummy) (br_table 0 0 0 (i32.const 0)) (call $dummy)) + ) + (func (export "as-block-last") + (block (nop) (call $dummy) (br_table 0 0 0 (i32.const 0))) + ) + (func (export "as-block-value") (result i32) + (block i32 (nop) (call $dummy) (br_table 0 0 0 (i32.const 2) (i32.const 0))) + ) + + (func (export "as-loop-first") (result i32) + (loop i32 (br_table 1 1 (i32.const 3) (i32.const 0)) (i32.const 1)) + ) + (func (export "as-loop-mid") (result i32) + (loop i32 + (call $dummy) + (br_table 1 1 1 (i32.const 4) (i32.const -1)) + (i32.const 2) + ) + ) + (func (export "as-loop-last") (result i32) + (loop i32 (nop) (call $dummy) (br_table 1 1 1 (i32.const 5) (i32.const 1))) + ) + + (func (export "as-br-value") (result i32) + (block i32 (br 0 (br 0 (i32.const 9)))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (br_table 0 0 0 (i32.const 1)))) + ) + (func (export "as-br_if-value") (result i32) + (block i32 + (br_if 0 (br_table 0 (i32.const 8) (i32.const 0)) (i32.const 1)) + (i32.const 7) + ) + ) + (func (export "as-br_if-value-cond") (result i32) + (block i32 + (drop (br_if 0 (i32.const 6) (br_table 0 0 (i32.const 9) (i32.const 0)))) + (i32.const 7) + ) + ) + + (func (export "as-br_table-index") + (block (br_table 0 0 0 (br_table 0 (i32.const 1)))) + ) + (func (export "as-br_table-value") (result i32) + (block i32 + (br_table 0 0 0 (br_table 0 (i32.const 10) (i32.const 0)) (i32.const 1)) + (i32.const 7) + ) + ) + (func (export "as-br_table-value-index") (result i32) + (block i32 + (br_table 0 0 (i32.const 6) (br_table 0 (i32.const 11) (i32.const 1))) + (i32.const 7) + ) + ) + + (func (export "as-return-value") (result i64) + (block i64 (return (br_table 0 (i64.const 7) (i32.const 0)))) + ) + + (func (export "as-if-cond") (result i32) + (block i32 + (if i32 + (br_table 0 (i32.const 2) (i32.const 0)) + (i32.const 0) + (i32.const 1) + ) + ) + ) + (func (export "as-if-then") (param i32 i32) (result i32) + (block i32 + (if i32 + (get_local 0) + (br_table 1 (i32.const 3) (i32.const 0)) + (get_local 1) + ) + ) + ) + (func (export "as-if-else") (param i32 i32) (result i32) + (block i32 + (if i32 + (get_local 0) + (get_local 1) + (br_table 1 0 (i32.const 4) (i32.const 0)) + ) + ) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (block i32 + (select + (br_table 0 (i32.const 5) (i32.const 0)) (get_local 0) (get_local 1) + ) + ) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (block i32 + (select + (get_local 0) (br_table 0 (i32.const 6) (i32.const 1)) (get_local 1) + ) + ) + ) + (func (export "as-select-cond") (result i32) + (block i32 + (select + (i32.const 0) (i32.const 1) (br_table 0 (i32.const 7) (i32.const 1)) + ) + ) + ) + + (func $f (param i32 i32 i32) (result i32) (i32.const -1)) + (func (export "as-call-first") (result i32) + (block i32 + (call $f + (br_table 0 (i32.const 12) (i32.const 1)) (i32.const 2) (i32.const 3) + ) + ) + ) + (func (export "as-call-mid") (result i32) + (block i32 + (call $f + (i32.const 1) (br_table 0 (i32.const 13) (i32.const 1)) (i32.const 3) + ) + ) + ) + (func (export "as-call-last") (result i32) + (block i32 + (call $f + (i32.const 1) (i32.const 2) (br_table 0 (i32.const 14) (i32.const 1)) + ) + ) + ) + + (type $sig (func (param i32 i32 i32) (result i32))) + (table anyfunc (elem $f)) + (func (export "as-call_indirect-first") (result i32) + (block i32 + (call_indirect $sig + (br_table 0 (i32.const 20) (i32.const 1)) (i32.const 1) (i32.const 2) + (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-mid") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) (br_table 0 (i32.const 21) (i32.const 1)) (i32.const 2) + (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-last") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) (i32.const 1) (br_table 0 (i32.const 22) (i32.const 1)) + (i32.const 3) + ) + ) + ) + (func (export "as-call_indirect-func") (result i32) + (block i32 + (call_indirect $sig + (i32.const 0) (i32.const 1) (i32.const 2) + (br_table 0 (i32.const 23) (i32.const 1)) + ) + ) + ) + + (func (export "as-set_local-value") (result i32) + (local f32) + (block i32 + (set_local 0 (br_table 0 (i32.const 17) (i32.const 1))) + (i32.const -1) + ) + ) + + (memory 1) + (func (export "as-load-address") (result f32) + (block f32 (f32.load (br_table 0 (f32.const 1.7) (i32.const 1)))) + ) + (func (export "as-loadN-address") (result i64) + (block i64 (i64.load8_s (br_table 0 (i64.const 30) (i32.const 1)))) + ) + + (func (export "as-store-address") (result i32) + (block i32 + (f64.store (br_table 0 (i32.const 30) (i32.const 1)) (f64.const 7)) + (i32.const -1) + ) + ) + (func (export "as-store-value") (result i32) + (block i32 + (i64.store (i32.const 2) (br_table 0 (i32.const 31) (i32.const 1))) + (i32.const -1) + ) + ) + + (func (export "as-storeN-address") (result i32) + (block i32 + (i32.store8 (br_table 0 (i32.const 32) (i32.const 0)) (i32.const 7)) + (i32.const -1) + ) + ) + (func (export "as-storeN-value") (result i32) + (block i32 + (i64.store16 (i32.const 2) (br_table 0 (i32.const 33) (i32.const 0))) + (i32.const -1) + ) + ) + + (func (export "as-unary-operand") (result f32) + (block f32 (f32.neg (br_table 0 (f32.const 3.4) (i32.const 0)))) + ) + + (func (export "as-binary-left") (result i32) + (block i32 + (i32.add (br_table 0 0 (i32.const 3) (i32.const 0)) (i32.const 10)) + ) + ) + (func (export "as-binary-right") (result i64) + (block i64 + (i64.sub (i64.const 10) (br_table 0 (i64.const 45) (i32.const 0))) + ) + ) + + (func (export "as-test-operand") (result i32) + (block i32 (i32.eqz (br_table 0 (i32.const 44) (i32.const 0)))) + ) + + (func (export "as-compare-left") (result i32) + (block i32 + (f64.le (br_table 0 0 (i32.const 43) (i32.const 0)) (f64.const 10)) + ) + ) + (func (export "as-compare-right") (result i32) + (block i32 + (f32.ne (f32.const 10) (br_table 0 (i32.const 42) (i32.const 0))) + ) + ) + + (func (export "as-convert-operand") (result i32) + (block i32 (i32.wrap/i64 (br_table 0 (i32.const 41) (i32.const 0)))) + ) + + (func (export "as-grow_memory-size") (result i32) + (block i32 (grow_memory (br_table 0 (i32.const 40) (i32.const 0)))) + ) + + (func (export "nested-block-value") (param i32) (result i32) + (block i32 + (drop (i32.const -1)) + (i32.add + (i32.const 1) + (block i32 + (i32.add + (i32.const 2) + (block i32 + (drop (i32.const 4)) + (i32.add + (i32.const 8) + (br_table 0 1 2 (i32.const 16) (get_local 0)) + ) + ) + ) + ) + ) + ) + ) + + (func (export "nested-br-value") (param i32) (result i32) + (block i32 + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br 0 (br_table 2 1 0 (i32.const 8) (get_local 0))) + ) + ) + (i32.const 16) + ) + ) + ) + ) + + (func (export "nested-br_if-value") (param i32) (result i32) + (block i32 + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br_if 0 (br_table 0 1 2 (i32.const 8) (get_local 0)) (i32.const 1)) + (i32.const 32) + ) + ) + (i32.const 16) + ) + ) + ) + ) + + (func (export "nested-br_if-value-cond") (param i32) (result i32) + (block i32 + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop (br_if 0 (i32.const 4) (br_table 0 1 0 (i32.const 8) (get_local 0)))) + (i32.const 16) + ) + ) + ) + ) + + (func (export "nested-br_table-value") (param i32) (result i32) + (block i32 + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (drop + (block i32 + (drop (i32.const 4)) + (br_table 0 (br_table 0 1 2 (i32.const 8) (get_local 0)) (i32.const 1)) + (i32.const 32) + ) + ) + (i32.const 16) + ) + ) + ) + ) + + (func (export "nested-br_table-value-index") (param i32) (result i32) + (block i32 + (i32.add + (i32.const 1) + (block i32 + (drop (i32.const 2)) + (br_table 0 (i32.const 4) (br_table 0 1 0 (i32.const 8) (get_local 0))) + (i32.const 16) + ) + ) + ) + ) +) + +(assert_return (invoke "type-i32")) +(assert_return (invoke "type-i64")) +(assert_return (invoke "type-f32")) +(assert_return (invoke "type-f64")) + +(assert_return (invoke "type-i32-value") (i32.const 1)) +(assert_return (invoke "type-i64-value") (i64.const 2)) +(assert_return (invoke "type-f32-value") (f32.const 3)) +(assert_return (invoke "type-f64-value") (f64.const 4)) + +(assert_return (invoke "empty" (i32.const 0)) (i32.const 22)) +(assert_return (invoke "empty" (i32.const 1)) (i32.const 22)) +(assert_return (invoke "empty" (i32.const 11)) (i32.const 22)) +(assert_return (invoke "empty" (i32.const -1)) (i32.const 22)) +(assert_return (invoke "empty" (i32.const -100)) (i32.const 22)) +(assert_return (invoke "empty" (i32.const 0xffffffff)) (i32.const 22)) + +(assert_return (invoke "empty-value" (i32.const 0)) (i32.const 33)) +(assert_return (invoke "empty-value" (i32.const 1)) (i32.const 33)) +(assert_return (invoke "empty-value" (i32.const 11)) (i32.const 33)) +(assert_return (invoke "empty-value" (i32.const -1)) (i32.const 33)) +(assert_return (invoke "empty-value" (i32.const -100)) (i32.const 33)) +(assert_return (invoke "empty-value" (i32.const 0xffffffff)) (i32.const 33)) + +(assert_return (invoke "singleton" (i32.const 0)) (i32.const 22)) +(assert_return (invoke "singleton" (i32.const 1)) (i32.const 20)) +(assert_return (invoke "singleton" (i32.const 11)) (i32.const 20)) +(assert_return (invoke "singleton" (i32.const -1)) (i32.const 20)) +(assert_return (invoke "singleton" (i32.const -100)) (i32.const 20)) +(assert_return (invoke "singleton" (i32.const 0xffffffff)) (i32.const 20)) + +(assert_return (invoke "singleton-value" (i32.const 0)) (i32.const 32)) +(assert_return (invoke "singleton-value" (i32.const 1)) (i32.const 33)) +(assert_return (invoke "singleton-value" (i32.const 11)) (i32.const 33)) +(assert_return (invoke "singleton-value" (i32.const -1)) (i32.const 33)) +(assert_return (invoke "singleton-value" (i32.const -100)) (i32.const 33)) +(assert_return (invoke "singleton-value" (i32.const 0xffffffff)) (i32.const 33)) + +(assert_return (invoke "multiple" (i32.const 0)) (i32.const 103)) +(assert_return (invoke "multiple" (i32.const 1)) (i32.const 102)) +(assert_return (invoke "multiple" (i32.const 2)) (i32.const 101)) +(assert_return (invoke "multiple" (i32.const 3)) (i32.const 100)) +(assert_return (invoke "multiple" (i32.const 4)) (i32.const 104)) +(assert_return (invoke "multiple" (i32.const 5)) (i32.const 104)) +(assert_return (invoke "multiple" (i32.const 6)) (i32.const 104)) +(assert_return (invoke "multiple" (i32.const 10)) (i32.const 104)) +(assert_return (invoke "multiple" (i32.const -1)) (i32.const 104)) +(assert_return (invoke "multiple" (i32.const 0xffffffff)) (i32.const 104)) + +(assert_return (invoke "multiple-value" (i32.const 0)) (i32.const 213)) +(assert_return (invoke "multiple-value" (i32.const 1)) (i32.const 212)) +(assert_return (invoke "multiple-value" (i32.const 2)) (i32.const 211)) +(assert_return (invoke "multiple-value" (i32.const 3)) (i32.const 210)) +(assert_return (invoke "multiple-value" (i32.const 4)) (i32.const 214)) +(assert_return (invoke "multiple-value" (i32.const 5)) (i32.const 214)) +(assert_return (invoke "multiple-value" (i32.const 6)) (i32.const 214)) +(assert_return (invoke "multiple-value" (i32.const 10)) (i32.const 214)) +(assert_return (invoke "multiple-value" (i32.const -1)) (i32.const 214)) +(assert_return (invoke "multiple-value" (i32.const 0xffffffff)) (i32.const 214)) + +(assert_return (invoke "large" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "large" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "large" (i32.const 100)) (i32.const 0)) +(assert_return (invoke "large" (i32.const 101)) (i32.const 1)) +(assert_return (invoke "large" (i32.const 10000)) (i32.const 0)) +(assert_return (invoke "large" (i32.const 10001)) (i32.const 1)) +(assert_return (invoke "large" (i32.const 1000000)) (i32.const 1)) +(assert_return (invoke "large" (i32.const 1000001)) (i32.const 1)) + +(assert_return (invoke "as-block-first")) +(assert_return (invoke "as-block-mid")) +(assert_return (invoke "as-block-last")) +(assert_return (invoke "as-block-value") (i32.const 2)) + +(assert_return (invoke "as-loop-first") (i32.const 3)) +(assert_return (invoke "as-loop-mid") (i32.const 4)) +(assert_return (invoke "as-loop-last") (i32.const 5)) + +(assert_return (invoke "as-br-value") (i32.const 9)) + +(assert_return (invoke "as-br_if-cond")) +(assert_return (invoke "as-br_if-value") (i32.const 8)) +(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) + +(assert_return (invoke "as-br_table-index")) +(assert_return (invoke "as-br_table-value") (i32.const 10)) +(assert_return (invoke "as-br_table-value-index") (i32.const 11)) + +(assert_return (invoke "as-return-value") (i64.const 7)) + +(assert_return (invoke "as-if-cond") (i32.const 2)) +(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) +(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) + +(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-cond") (i32.const 7)) + +(assert_return (invoke "as-call-first") (i32.const 12)) +(assert_return (invoke "as-call-mid") (i32.const 13)) +(assert_return (invoke "as-call-last") (i32.const 14)) + +(assert_return (invoke "as-call_indirect-first") (i32.const 20)) +(assert_return (invoke "as-call_indirect-mid") (i32.const 21)) +(assert_return (invoke "as-call_indirect-last") (i32.const 22)) +(assert_return (invoke "as-call_indirect-func") (i32.const 23)) + +(assert_return (invoke "as-set_local-value") (i32.const 17)) + +(assert_return (invoke "as-load-address") (f32.const 1.7)) +(assert_return (invoke "as-loadN-address") (i64.const 30)) + +(assert_return (invoke "as-store-address") (i32.const 30)) +(assert_return (invoke "as-store-value") (i32.const 31)) +(assert_return (invoke "as-storeN-address") (i32.const 32)) +(assert_return (invoke "as-storeN-value") (i32.const 33)) + +(assert_return (invoke "as-unary-operand") (f32.const 3.4)) + +(assert_return (invoke "as-binary-left") (i32.const 3)) +(assert_return (invoke "as-binary-right") (i64.const 45)) + +(assert_return (invoke "as-test-operand") (i32.const 44)) + +(assert_return (invoke "as-compare-left") (i32.const 43)) +(assert_return (invoke "as-compare-right") (i32.const 42)) + +(assert_return (invoke "as-convert-operand") (i32.const 41)) + +(assert_return (invoke "as-grow_memory-size") (i32.const 40)) + +(assert_return (invoke "nested-block-value" (i32.const 0)) (i32.const 19)) +(assert_return (invoke "nested-block-value" (i32.const 1)) (i32.const 17)) +(assert_return (invoke "nested-block-value" (i32.const 2)) (i32.const 16)) +(assert_return (invoke "nested-block-value" (i32.const 10)) (i32.const 16)) +(assert_return (invoke "nested-block-value" (i32.const -1)) (i32.const 16)) +(assert_return (invoke "nested-block-value" (i32.const 100000)) (i32.const 16)) + +(assert_return (invoke "nested-br-value" (i32.const 0)) (i32.const 8)) +(assert_return (invoke "nested-br-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br-value" (i32.const 2)) (i32.const 17)) +(assert_return (invoke "nested-br-value" (i32.const 11)) (i32.const 17)) +(assert_return (invoke "nested-br-value" (i32.const -4)) (i32.const 17)) +(assert_return (invoke "nested-br-value" (i32.const 10213210)) (i32.const 17)) + +(assert_return (invoke "nested-br_if-value" (i32.const 0)) (i32.const 17)) +(assert_return (invoke "nested-br_if-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value" (i32.const 2)) (i32.const 8)) +(assert_return (invoke "nested-br_if-value" (i32.const 9)) (i32.const 8)) +(assert_return (invoke "nested-br_if-value" (i32.const -9)) (i32.const 8)) +(assert_return (invoke "nested-br_if-value" (i32.const 999999)) (i32.const 8)) + +(assert_return (invoke "nested-br_if-value-cond" (i32.const 0)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 1)) (i32.const 8)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 2)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 3)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const -1000000)) (i32.const 9)) +(assert_return (invoke "nested-br_if-value-cond" (i32.const 9423975)) (i32.const 9)) + +(assert_return (invoke "nested-br_table-value" (i32.const 0)) (i32.const 17)) +(assert_return (invoke "nested-br_table-value" (i32.const 1)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value" (i32.const 2)) (i32.const 8)) +(assert_return (invoke "nested-br_table-value" (i32.const 9)) (i32.const 8)) +(assert_return (invoke "nested-br_table-value" (i32.const -9)) (i32.const 8)) +(assert_return (invoke "nested-br_table-value" (i32.const 999999)) (i32.const 8)) + +(assert_return (invoke "nested-br_table-value-index" (i32.const 0)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 1)) (i32.const 8)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 2)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 3)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index" (i32.const -1000000)) (i32.const 9)) +(assert_return (invoke "nested-br_table-value-index" (i32.const 9423975)) (i32.const 9)) + +(assert_invalid + (module (func $type-arg-void-vs-num (result i32) + (block (br_table 0 (i32.const 1)) (i32.const 1)) + )) + "type mismatch" +) + +(; TODO(stack): soft failure +(assert_invalid + (module (func $type-arg-poly-vs-empty + (block (br_table 0 (unreachable) (i32.const 1))) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-arg-void-vs-num (result i32) + (block i32 (br_table 0 (nop) (i32.const 1)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-num-vs-num (result i32) + (block i32 (br_table 0 0 0 (i64.const 1) (i32.const 1)) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-index-void-vs-i32 + (block (br_table 0 0 0 (nop))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-index-num-vs-i32 + (block (br_table 0 (i64.const 0))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-index-void-vs-i32 (result i32) + (block i32 (br_table 0 0 (i32.const 0) (nop)) (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-arg-index-num-vs-i32 (result i32) + (block i32 (br_table 0 0 (i32.const 0) (i64.const 0)) (i32.const 1)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $unbound-label + (block (br_table 2 1 (i32.const 1))) + )) + "unknown label" +) +(assert_invalid + (module (func $unbound-nested-label + (block (block (br_table 0 5 (i32.const 1)))) + )) + "unknown label" +) +(assert_invalid + (module (func $large-label + (block (br_table 0 0x10000001 0 (i32.const 1))) + )) + "unknown label" +) + +(assert_invalid + (module (func $unbound-label-default + (block (br_table 1 2 (i32.const 1))) + )) + "unknown label" +) +(assert_invalid + (module (func $unbound-nested-label-default + (block (block (br_table 0 5 (i32.const 1)))) + )) + "unknown label" +) +(assert_invalid + (module (func $large-label-default + (block (br_table 0 0 0x10000001 (i32.const 1))) + )) + "unknown label" +) + diff --git a/test/WasmSpec/testsuite/break-drop.wast b/test/WasmSpec/testsuite/break-drop.wast new file mode 100644 index 00000000000..e10df667154 --- /dev/null +++ b/test/WasmSpec/testsuite/break-drop.wast @@ -0,0 +1,9 @@ +(module + (func (export "br") (block (br 0))) + (func (export "br_if") (block (br_if 0 (i32.const 1)))) + (func (export "br_table") (block (br_table 0 (i32.const 0)))) +) + +(assert_return (invoke "br")) +(assert_return (invoke "br_if")) +(assert_return (invoke "br_table")) diff --git a/test/WasmSpec/testsuite/call.wast b/test/WasmSpec/testsuite/call.wast new file mode 100644 index 00000000000..b47eba89e0b --- /dev/null +++ b/test/WasmSpec/testsuite/call.wast @@ -0,0 +1,233 @@ +;; Test `call` operator + +(module + ;; Auxiliary definitions + (func $const-i32 (result i32) (i32.const 0x132)) + (func $const-i64 (result i64) (i64.const 0x164)) + (func $const-f32 (result f32) (f32.const 0xf32)) + (func $const-f64 (result f64) (f64.const 0xf64)) + + (func $id-i32 (param i32) (result i32) (get_local 0)) + (func $id-i64 (param i64) (result i64) (get_local 0)) + (func $id-f32 (param f32) (result f32) (get_local 0)) + (func $id-f64 (param f64) (result f64) (get_local 0)) + + (func $f32-i32 (param f32 i32) (result i32) (get_local 1)) + (func $i32-i64 (param i32 i64) (result i64) (get_local 1)) + (func $f64-f32 (param f64 f32) (result f32) (get_local 1)) + (func $i64-f64 (param i64 f64) (result f64) (get_local 1)) + + ;; Typing + + (func (export "type-i32") (result i32) (call $const-i32)) + (func (export "type-i64") (result i64) (call $const-i64)) + (func (export "type-f32") (result f32) (call $const-f32)) + (func (export "type-f64") (result f64) (call $const-f64)) + + (func (export "type-first-i32") (result i32) (call $id-i32 (i32.const 32))) + (func (export "type-first-i64") (result i64) (call $id-i64 (i64.const 64))) + (func (export "type-first-f32") (result f32) (call $id-f32 (f32.const 1.32))) + (func (export "type-first-f64") (result f64) (call $id-f64 (f64.const 1.64))) + + (func (export "type-second-i32") (result i32) + (call $f32-i32 (f32.const 32.1) (i32.const 32)) + ) + (func (export "type-second-i64") (result i64) + (call $i32-i64 (i32.const 32) (i64.const 64)) + ) + (func (export "type-second-f32") (result f32) + (call $f64-f32 (f64.const 64) (f32.const 32)) + ) + (func (export "type-second-f64") (result f64) + (call $i64-f64 (i64.const 64) (f64.const 64.1)) + ) + + ;; Recursion + + (func $fac (export "fac") (param i64) (result i64) + (if i64 (i64.eqz (get_local 0)) + (i64.const 1) + (i64.mul (get_local 0) (call $fac (i64.sub (get_local 0) (i64.const 1)))) + ) + ) + + (func $fac-acc (export "fac-acc") (param i64 i64) (result i64) + (if i64 (i64.eqz (get_local 0)) + (get_local 1) + (call $fac-acc + (i64.sub (get_local 0) (i64.const 1)) + (i64.mul (get_local 0) (get_local 1)) + ) + ) + ) + + (func $fib (export "fib") (param i64) (result i64) + (if i64 (i64.le_u (get_local 0) (i64.const 1)) + (i64.const 1) + (i64.add + (call $fib (i64.sub (get_local 0) (i64.const 2))) + (call $fib (i64.sub (get_local 0) (i64.const 1))) + ) + ) + ) + + (func $even (export "even") (param i64) (result i32) + (if i32 (i64.eqz (get_local 0)) + (i32.const 44) + (call $odd (i64.sub (get_local 0) (i64.const 1))) + ) + ) + (func $odd (export "odd") (param i64) (result i32) + (if i32 (i64.eqz (get_local 0)) + (i32.const 99) + (call $even (i64.sub (get_local 0) (i64.const 1))) + ) + ) + + ;; Stack exhaustion + + ;; Implementations are required to have every call consume some abstract + ;; resource towards exhausting some abstract finite limit, such that + ;; infinitely recursive test cases reliably trap in finite time. This is + ;; because otherwise applications could come to depend on it on those + ;; implementations and be incompatible with implementations that don't do + ;; it (or don't do it under the same circumstances). + + (func $runaway (export "runaway") (call $runaway)) + + (func $mutual-runaway1 (export "mutual-runaway") (call $mutual-runaway2)) + (func $mutual-runaway2 (call $mutual-runaway1)) +) + +(assert_return (invoke "type-i32") (i32.const 0x132)) +(assert_return (invoke "type-i64") (i64.const 0x164)) +(assert_return (invoke "type-f32") (f32.const 0xf32)) +(assert_return (invoke "type-f64") (f64.const 0xf64)) + +(assert_return (invoke "type-first-i32") (i32.const 32)) +(assert_return (invoke "type-first-i64") (i64.const 64)) +(assert_return (invoke "type-first-f32") (f32.const 1.32)) +(assert_return (invoke "type-first-f64") (f64.const 1.64)) + +(assert_return (invoke "type-second-i32") (i32.const 32)) +(assert_return (invoke "type-second-i64") (i64.const 64)) +(assert_return (invoke "type-second-f32") (f32.const 32)) +(assert_return (invoke "type-second-f64") (f64.const 64.1)) + +(assert_return (invoke "fac" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "fac" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fac" (i64.const 5)) (i64.const 120)) +(assert_return (invoke "fac" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-acc" (i64.const 0) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fac-acc" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fac-acc" (i64.const 5) (i64.const 1)) (i64.const 120)) +(assert_return + (invoke "fac-acc" (i64.const 25) (i64.const 1)) + (i64.const 7034535277573963776) +) + +(assert_return (invoke "fib" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "fib" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fib" (i64.const 2)) (i64.const 2)) +(assert_return (invoke "fib" (i64.const 5)) (i64.const 8)) +(assert_return (invoke "fib" (i64.const 20)) (i64.const 10946)) + +(assert_return (invoke "even" (i64.const 0)) (i32.const 44)) +(assert_return (invoke "even" (i64.const 1)) (i32.const 99)) +(assert_return (invoke "even" (i64.const 100)) (i32.const 44)) +(assert_return (invoke "even" (i64.const 77)) (i32.const 99)) +(assert_return (invoke "odd" (i64.const 0)) (i32.const 99)) +(assert_return (invoke "odd" (i64.const 1)) (i32.const 44)) +(assert_return (invoke "odd" (i64.const 200)) (i32.const 99)) +(assert_return (invoke "odd" (i64.const 77)) (i32.const 44)) + +(assert_trap (invoke "runaway") "call stack exhausted") +(assert_trap (invoke "mutual-runaway") "call stack exhausted") + + +;; Invalid typing + +(assert_invalid + (module + (func $type-void-vs-num (i32.eqz (call 1))) + (func) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-num-vs-num (i32.eqz (call 1))) + (func (result i64) (i64.const 1)) + ) + "type mismatch" +) + +(assert_invalid + (module + (func $arity-0-vs-1 (call 1)) + (func (param i32)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $arity-0-vs-2 (call 1)) + (func (param f64 i32)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $arity-1-vs-0 (call 1 (i32.const 1))) + (func) + ) + "type mismatch" +) +(assert_invalid + (module + (func $arity-2-vs-0 (call 1 (f64.const 2) (i32.const 1))) + (func) + ) + "type mismatch" +) + +(assert_invalid + (module + (func $type-first-void-vs-num (call 1 (nop) (i32.const 1))) + (func (param i32 i32)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-second-void-vs-num (call 1 (i32.const 1) (nop))) + (func (param i32 i32)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-first-num-vs-num (call 1 (f64.const 1) (i32.const 1))) + (func (param i32 f64)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-second-num-vs-num (call 1 (i32.const 1) (f64.const 1))) + (func (param f64 i32)) + ) + "type mismatch" +) + + +;; Unbound function + +(assert_invalid + (module (func $unbound-func (call 1))) + "unknown function" +) +(assert_invalid + (module (func $large-func (call 1012321300))) + "unknown function" +) diff --git a/test/WasmSpec/testsuite/call_indirect.wast b/test/WasmSpec/testsuite/call_indirect.wast new file mode 100644 index 00000000000..78243ce0084 --- /dev/null +++ b/test/WasmSpec/testsuite/call_indirect.wast @@ -0,0 +1,362 @@ +;; Test `call_indirect` operator + +(module + ;; Auxiliary definitions + (type $proc (func)) + (type $out-i32 (func (result i32))) + (type $out-i64 (func (result i64))) + (type $out-f32 (func (result f32))) + (type $out-f64 (func (result f64))) + (type $over-i32 (func (param i32) (result i32))) + (type $over-i64 (func (param i64) (result i64))) + (type $over-f32 (func (param f32) (result f32))) + (type $over-f64 (func (param f64) (result f64))) + (type $f32-i32 (func (param f32 i32) (result i32))) + (type $i32-i64 (func (param i32 i64) (result i64))) + (type $f64-f32 (func (param f64 f32) (result f32))) + (type $i64-f64 (func (param i64 f64) (result f64))) + (type $over-i32-duplicate (func (param i32) (result i32))) + (type $over-i64-duplicate (func (param i64) (result i64))) + (type $over-f32-duplicate (func (param f32) (result f32))) + (type $over-f64-duplicate (func (param f64) (result f64))) + + (func $const-i32 (type $out-i32) (i32.const 0x132)) + (func $const-i64 (type $out-i64) (i64.const 0x164)) + (func $const-f32 (type $out-f32) (f32.const 0xf32)) + (func $const-f64 (type $out-f64) (f64.const 0xf64)) + + (func $id-i32 (type $over-i32) (get_local 0)) + (func $id-i64 (type $over-i64) (get_local 0)) + (func $id-f32 (type $over-f32) (get_local 0)) + (func $id-f64 (type $over-f64) (get_local 0)) + + (func $i32-i64 (type $i32-i64) (get_local 1)) + (func $i64-f64 (type $i64-f64) (get_local 1)) + (func $f32-i32 (type $f32-i32) (get_local 1)) + (func $f64-f32 (type $f64-f32) (get_local 1)) + + (func $over-i32-duplicate (type $over-i32-duplicate) (get_local 0)) + (func $over-i64-duplicate (type $over-i64-duplicate) (get_local 0)) + (func $over-f32-duplicate (type $over-f32-duplicate) (get_local 0)) + (func $over-f64-duplicate (type $over-f64-duplicate) (get_local 0)) + + (table anyfunc + (elem + $const-i32 $const-i64 $const-f32 $const-f64 + $id-i32 $id-i64 $id-f32 $id-f64 + $f32-i32 $i32-i64 $f64-f32 $i64-f64 + $fac $fib $even $odd + $runaway $mutual-runaway1 $mutual-runaway2 + $over-i32-duplicate $over-i64-duplicate + $over-f32-duplicate $over-f64-duplicate + ) + ) + + ;; Typing + + (func (export "type-i32") (result i32) (call_indirect $out-i32 (i32.const 0))) + (func (export "type-i64") (result i64) (call_indirect $out-i64 (i32.const 1))) + (func (export "type-f32") (result f32) (call_indirect $out-f32 (i32.const 2))) + (func (export "type-f64") (result f64) (call_indirect $out-f64 (i32.const 3))) + + (func (export "type-index") (result i64) + (call_indirect $over-i64 (i64.const 100) (i32.const 5)) + ) + + (func (export "type-first-i32") (result i32) + (call_indirect $over-i32 (i32.const 32) (i32.const 4)) + ) + (func (export "type-first-i64") (result i64) + (call_indirect $over-i64 (i64.const 64) (i32.const 5)) + ) + (func (export "type-first-f32") (result f32) + (call_indirect $over-f32 (f32.const 1.32) (i32.const 6)) + ) + (func (export "type-first-f64") (result f64) + (call_indirect $over-f64 (f64.const 1.64) (i32.const 7)) + ) + + (func (export "type-second-i32") (result i32) + (call_indirect $f32-i32 (f32.const 32.1) (i32.const 32) (i32.const 8)) + ) + (func (export "type-second-i64") (result i64) + (call_indirect $i32-i64 (i32.const 32) (i64.const 64) (i32.const 9)) + ) + (func (export "type-second-f32") (result f32) + (call_indirect $f64-f32 (f64.const 64) (f32.const 32) (i32.const 10)) + ) + (func (export "type-second-f64") (result f64) + (call_indirect $i64-f64 (i64.const 64) (f64.const 64.1) (i32.const 11)) + ) + + ;; Dispatch + + (func (export "dispatch") (param i32 i64) (result i64) + (call_indirect $over-i64 (get_local 1) (get_local 0)) + ) + + (func (export "dispatch-structural") (param i32) (result i64) + (call_indirect $over-i64-duplicate (i64.const 9) (get_local 0)) + ) + + ;; Recursion + + (func $fac (export "fac") (type $over-i64) + (if i64 (i64.eqz (get_local 0)) + (i64.const 1) + (i64.mul + (get_local 0) + (call_indirect $over-i64 + (i64.sub (get_local 0) (i64.const 1)) + (i32.const 12) + ) + ) + ) + ) + + (func $fib (export "fib") (type $over-i64) + (if i64 (i64.le_u (get_local 0) (i64.const 1)) + (i64.const 1) + (i64.add + (call_indirect $over-i64 + (i64.sub (get_local 0) (i64.const 2)) + (i32.const 13) + ) + (call_indirect $over-i64 + (i64.sub (get_local 0) (i64.const 1)) + (i32.const 13) + ) + ) + ) + ) + + (func $even (export "even") (param i32) (result i32) + (if i32 (i32.eqz (get_local 0)) + (i32.const 44) + (call_indirect $over-i32 + (i32.sub (get_local 0) (i32.const 1)) + (i32.const 15) + ) + ) + ) + (func $odd (export "odd") (param i32) (result i32) + (if i32 (i32.eqz (get_local 0)) + (i32.const 99) + (call_indirect $over-i32 + (i32.sub (get_local 0) (i32.const 1)) + (i32.const 14) + ) + ) + ) + + ;; Stack exhaustion + + ;; Implementations are required to have every call consume some abstract + ;; resource towards exhausting some abstract finite limit, such that + ;; infinitely recursive test cases reliably trap in finite time. This is + ;; because otherwise applications could come to depend on it on those + ;; implementations and be incompatible with implementations that don't do + ;; it (or don't do it under the same circumstances). + + (func $runaway (export "runaway") (call_indirect $proc (i32.const 16))) + + (func $mutual-runaway1 (export "mutual-runaway") (call_indirect $proc (i32.const 18))) + (func $mutual-runaway2 (call_indirect $proc (i32.const 17))) +) + +(assert_return (invoke "type-i32") (i32.const 0x132)) +(assert_return (invoke "type-i64") (i64.const 0x164)) +(assert_return (invoke "type-f32") (f32.const 0xf32)) +(assert_return (invoke "type-f64") (f64.const 0xf64)) + +(assert_return (invoke "type-index") (i64.const 100)) + +(assert_return (invoke "type-first-i32") (i32.const 32)) +(assert_return (invoke "type-first-i64") (i64.const 64)) +(assert_return (invoke "type-first-f32") (f32.const 1.32)) +(assert_return (invoke "type-first-f64") (f64.const 1.64)) + +(assert_return (invoke "type-second-i32") (i32.const 32)) +(assert_return (invoke "type-second-i64") (i64.const 64)) +(assert_return (invoke "type-second-f32") (f32.const 32)) +(assert_return (invoke "type-second-f64") (f64.const 64.1)) + +(assert_return (invoke "dispatch" (i32.const 5) (i64.const 2)) (i64.const 2)) +(assert_return (invoke "dispatch" (i32.const 5) (i64.const 5)) (i64.const 5)) +(assert_return (invoke "dispatch" (i32.const 12) (i64.const 5)) (i64.const 120)) +(assert_return (invoke "dispatch" (i32.const 13) (i64.const 5)) (i64.const 8)) +(assert_return (invoke "dispatch" (i32.const 20) (i64.const 2)) (i64.const 2)) +(assert_trap (invoke "dispatch" (i32.const 0) (i64.const 2)) "indirect call signature mismatch") +(assert_trap (invoke "dispatch" (i32.const 15) (i64.const 2)) "indirect call signature mismatch") +(assert_trap (invoke "dispatch" (i32.const 23) (i64.const 2)) "undefined element") +(assert_trap (invoke "dispatch" (i32.const -1) (i64.const 2)) "undefined element") +(assert_trap (invoke "dispatch" (i32.const 1213432423) (i64.const 2)) "undefined element") + +(assert_return (invoke "dispatch-structural" (i32.const 5)) (i64.const 9)) +(assert_return (invoke "dispatch-structural" (i32.const 5)) (i64.const 9)) +(assert_return (invoke "dispatch-structural" (i32.const 12)) (i64.const 362880)) +(assert_return (invoke "dispatch-structural" (i32.const 20)) (i64.const 9)) +(assert_trap (invoke "dispatch-structural" (i32.const 11)) "indirect call signature mismatch") +(assert_trap (invoke "dispatch-structural" (i32.const 22)) "indirect call signature mismatch") + +(assert_return (invoke "fac" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "fac" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fac" (i64.const 5)) (i64.const 120)) +(assert_return (invoke "fac" (i64.const 25)) (i64.const 7034535277573963776)) + +(assert_return (invoke "fib" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "fib" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "fib" (i64.const 2)) (i64.const 2)) +(assert_return (invoke "fib" (i64.const 5)) (i64.const 8)) +(assert_return (invoke "fib" (i64.const 20)) (i64.const 10946)) + +(assert_return (invoke "even" (i32.const 0)) (i32.const 44)) +(assert_return (invoke "even" (i32.const 1)) (i32.const 99)) +(assert_return (invoke "even" (i32.const 100)) (i32.const 44)) +(assert_return (invoke "even" (i32.const 77)) (i32.const 99)) +(assert_return (invoke "odd" (i32.const 0)) (i32.const 99)) +(assert_return (invoke "odd" (i32.const 1)) (i32.const 44)) +(assert_return (invoke "odd" (i32.const 200)) (i32.const 99)) +(assert_return (invoke "odd" (i32.const 77)) (i32.const 44)) + +(assert_trap (invoke "runaway") "call stack exhausted") +(assert_trap (invoke "mutual-runaway") "call stack exhausted") + + +;; Invalid typing + +(assert_invalid + (module + (type (func)) + (func $no-table (call_indirect 0 (i32.const 0))) + ) + "unknown table" +) + +(assert_invalid + (module + (type (func)) + (table 0 anyfunc) + (func $type-void-vs-num (i32.eqz (call_indirect 0 (i32.const 0)))) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (result i64))) + (table 0 anyfunc) + (func $type-num-vs-num (i32.eqz (call_indirect 0 (i32.const 0)))) + ) + "type mismatch" +) + +(assert_invalid + (module + (type (func (param i32))) + (table 0 anyfunc) + (func $arity-0-vs-1 (call_indirect 0 (i32.const 0))) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (param f64 i32))) + (table 0 anyfunc) + (func $arity-0-vs-2 (call_indirect 0 (i32.const 0))) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func)) + (table 0 anyfunc) + (func $arity-1-vs-0 (call_indirect 0 (i32.const 1) (i32.const 0))) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func)) + (table 0 anyfunc) + (func $arity-2-vs-0 + (call_indirect 0 (f64.const 2) (i32.const 1) (i32.const 0)) + ) + ) + "type mismatch" +) + +(assert_invalid + (module + (type (func (param i32))) + (table 0 anyfunc) + (func $type-func-void-vs-i32 (call_indirect 0 (i32.const 1) (nop))) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (param i32))) + (table 0 anyfunc) + (func $type-func-num-vs-i32 (call_indirect 0 (i32.const 0) (i64.const 1))) + ) + "type mismatch" +) + +(assert_invalid + (module + (type (func (param i32 i32))) + (table 0 anyfunc) + (func $type-first-void-vs-num + (call_indirect 0 (nop) (i32.const 1) (i32.const 0)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (param i32 i32))) + (table 0 anyfunc) + (func $type-second-void-vs-num + (call_indirect 0 (i32.const 1) (nop) (i32.const 0)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (param i32 f64))) + (table 0 anyfunc) + (func $type-first-num-vs-num + (call_indirect 0 (f64.const 1) (i32.const 1) (i32.const 0)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (type (func (param f64 i32))) + (table 0 anyfunc) + (func $type-second-num-vs-num + (call_indirect 0 (i32.const 1) (f64.const 1) (i32.const 0)) + ) + ) + "type mismatch" +) + + +;; Unbound type + +(assert_invalid + (module + (table 0 anyfunc) + (func $unbound-type (call_indirect 1 (i32.const 0))) + ) + "unknown type" +) +(assert_invalid + (module + (table 0 anyfunc) + (func $large-type (call_indirect 1012321300 (i32.const 0))) + ) + "unknown type" +) diff --git a/test/WasmSpec/testsuite/comments.wast b/test/WasmSpec/testsuite/comments.wast new file mode 100644 index 00000000000..07a6298c4fe --- /dev/null +++ b/test/WasmSpec/testsuite/comments.wast @@ -0,0 +1,69 @@ +;; Test comment syntax + +;;comment + +;;;;;;;;;;; + + ;;comment + +( ;;comment +module;;comment +);;comment + +;;) +;;;) +;; ;) +;; (; + +(;;) + +(;comment;) + +(;;comment;) + +(;;;comment;) + +(;;;;;;;;;;;;;;) + +(;(((((((((( ;) + +(;)))))))))));) + +(;comment";) + +(;comment"";) + +(;comment""";) + +(;Heiße Würstchen;) + +(;í ½í¸ší¸Ží ½í²©;) + +(;comment +comment;) + + (;comment;) + +(;comment;)((;comment;) +(;comment;)module(;comment;) +(;comment;))(;comment;) + +(;comment(;nested;)comment;) + +(;comment +(;nested +;)comment +;) + +(module + (;comment(;nested(;further;)nested;)comment;) +) + +(;comment;;comment;) + +(;comment;;comment +;) + +(module + (;comment;;comment(;nested;)comment;) +) \ No newline at end of file diff --git a/test/WasmSpec/testsuite/conversions.wast b/test/WasmSpec/testsuite/conversions.wast new file mode 100644 index 00000000000..17036a75ff6 --- /dev/null +++ b/test/WasmSpec/testsuite/conversions.wast @@ -0,0 +1,419 @@ +(module + (func (export "i64.extend_s_i32") (param $x i32) (result i64) (i64.extend_s/i32 (get_local $x))) + (func (export "i64.extend_u_i32") (param $x i32) (result i64) (i64.extend_u/i32 (get_local $x))) + (func (export "i32.wrap_i64") (param $x i64) (result i32) (i32.wrap/i64 (get_local $x))) + (func (export "i32.trunc_s_f32") (param $x f32) (result i32) (i32.trunc_s/f32 (get_local $x))) + (func (export "i32.trunc_u_f32") (param $x f32) (result i32) (i32.trunc_u/f32 (get_local $x))) + (func (export "i32.trunc_s_f64") (param $x f64) (result i32) (i32.trunc_s/f64 (get_local $x))) + (func (export "i32.trunc_u_f64") (param $x f64) (result i32) (i32.trunc_u/f64 (get_local $x))) + (func (export "i64.trunc_s_f32") (param $x f32) (result i64) (i64.trunc_s/f32 (get_local $x))) + (func (export "i64.trunc_u_f32") (param $x f32) (result i64) (i64.trunc_u/f32 (get_local $x))) + (func (export "i64.trunc_s_f64") (param $x f64) (result i64) (i64.trunc_s/f64 (get_local $x))) + (func (export "i64.trunc_u_f64") (param $x f64) (result i64) (i64.trunc_u/f64 (get_local $x))) + (func (export "f32.convert_s_i32") (param $x i32) (result f32) (f32.convert_s/i32 (get_local $x))) + (func (export "f32.convert_s_i64") (param $x i64) (result f32) (f32.convert_s/i64 (get_local $x))) + (func (export "f64.convert_s_i32") (param $x i32) (result f64) (f64.convert_s/i32 (get_local $x))) + (func (export "f64.convert_s_i64") (param $x i64) (result f64) (f64.convert_s/i64 (get_local $x))) + (func (export "f32.convert_u_i32") (param $x i32) (result f32) (f32.convert_u/i32 (get_local $x))) + (func (export "f32.convert_u_i64") (param $x i64) (result f32) (f32.convert_u/i64 (get_local $x))) + (func (export "f64.convert_u_i32") (param $x i32) (result f64) (f64.convert_u/i32 (get_local $x))) + (func (export "f64.convert_u_i64") (param $x i64) (result f64) (f64.convert_u/i64 (get_local $x))) + (func (export "f64.promote_f32") (param $x f32) (result f64) (f64.promote/f32 (get_local $x))) + (func (export "f32.demote_f64") (param $x f64) (result f32) (f32.demote/f64 (get_local $x))) + (func (export "f32.reinterpret_i32") (param $x i32) (result f32) (f32.reinterpret/i32 (get_local $x))) + (func (export "f64.reinterpret_i64") (param $x i64) (result f64) (f64.reinterpret/i64 (get_local $x))) + (func (export "i32.reinterpret_f32") (param $x f32) (result i32) (i32.reinterpret/f32 (get_local $x))) + (func (export "i64.reinterpret_f64") (param $x f64) (result i64) (i64.reinterpret/f64 (get_local $x))) +) + +(assert_return (invoke "i64.extend_s_i32" (i32.const 0)) (i64.const 0)) +(assert_return (invoke "i64.extend_s_i32" (i32.const 10000)) (i64.const 10000)) +(assert_return (invoke "i64.extend_s_i32" (i32.const -10000)) (i64.const -10000)) +(assert_return (invoke "i64.extend_s_i32" (i32.const -1)) (i64.const -1)) +(assert_return (invoke "i64.extend_s_i32" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff)) +(assert_return (invoke "i64.extend_s_i32" (i32.const 0x80000000)) (i64.const 0xffffffff80000000)) + +(assert_return (invoke "i64.extend_u_i32" (i32.const 0)) (i64.const 0)) +(assert_return (invoke "i64.extend_u_i32" (i32.const 10000)) (i64.const 10000)) +(assert_return (invoke "i64.extend_u_i32" (i32.const -10000)) (i64.const 0x00000000ffffd8f0)) +(assert_return (invoke "i64.extend_u_i32" (i32.const -1)) (i64.const 0xffffffff)) +(assert_return (invoke "i64.extend_u_i32" (i32.const 0x7fffffff)) (i64.const 0x000000007fffffff)) +(assert_return (invoke "i64.extend_u_i32" (i32.const 0x80000000)) (i64.const 0x0000000080000000)) + +(assert_return (invoke "i32.wrap_i64" (i64.const -1)) (i32.const -1)) +(assert_return (invoke "i32.wrap_i64" (i64.const -100000)) (i32.const -100000)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0x80000000)) (i32.const 0x80000000)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff7fffffff)) (i32.const 0x7fffffff)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff00000000)) (i32.const 0x00000000)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0xfffffffeffffffff)) (i32.const 0xffffffff)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0xffffffff00000001)) (i32.const 0x00000001)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "i32.wrap_i64" (i64.const 1311768467463790320)) (i32.const 0x9abcdef0)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0x00000000ffffffff)) (i32.const 0xffffffff)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0x0000000100000000)) (i32.const 0x00000000)) +(assert_return (invoke "i32.wrap_i64" (i64.const 0x0000000100000001)) (i32.const 0x00000001)) + +(assert_return (invoke "i32.trunc_s_f32" (f32.const 0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const 1.0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const 0x1.19999ap+0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const 1.5)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.0)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -0x1.19999ap+0)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.5)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -1.9)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -2.0)) (i32.const -2)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const 2147483520.0)) (i32.const 2147483520)) +(assert_return (invoke "i32.trunc_s_f32" (f32.const -2147483648.0)) (i32.const -2147483648)) +(assert_trap (invoke "i32.trunc_s_f32" (f32.const 2147483648.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f32" (f32.const -2147483904.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f32" (f32.const infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f32" (f32.const -infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i32.trunc_u_f32" (f32.const 0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const -0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 0x1.19999ap+0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.5)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 1.9)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 2.0)) (i32.const 2)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000 +(assert_return (invoke "i32.trunc_u_f32" (f32.const 4294967040.0)) (i32.const -256)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1.ccccccp-1)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f32" (f32.const -0x1.fffffep-1)) (i32.const 0)) +(assert_trap (invoke "i32.trunc_u_f32" (f32.const 4294967296.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f32" (f32.const -1.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f32" (f32.const infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f32" (f32.const -infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i32.trunc_s_f64" (f64.const 0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const 1.0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const 0x1.199999999999ap+0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const 1.5)) (i32.const 1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.0)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -0x1.199999999999ap+0)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.5)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -1.9)) (i32.const -1)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -2.0)) (i32.const -2)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const 2147483647.0)) (i32.const 2147483647)) +(assert_return (invoke "i32.trunc_s_f64" (f64.const -2147483648.0)) (i32.const -2147483648)) +(assert_trap (invoke "i32.trunc_s_f64" (f64.const 2147483648.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f64" (f64.const -2147483649.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f64" (f64.const infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f64" (f64.const -infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i32.trunc_u_f64" (f64.const 0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const -0.0)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 0x1.199999999999ap+0)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.5)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 1.9)) (i32.const 1)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 2.0)) (i32.const 2)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 2147483648)) (i32.const -2147483648)) ;; 0x1.00000p+31 -> 8000 0000 +(assert_return (invoke "i32.trunc_u_f64" (f64.const 4294967295.0)) (i32.const -1)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x1.ccccccccccccdp-1)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const -0x1.fffffffffffffp-1)) (i32.const 0)) +(assert_return (invoke "i32.trunc_u_f64" (f64.const 1e8)) (i32.const 100000000)) +(assert_trap (invoke "i32.trunc_u_f64" (f64.const 4294967296.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const -1.0)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const 1e16)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const 1e30)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const 9223372036854775808)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const -infinity)) "integer overflow") +(assert_trap (invoke "i32.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i64.trunc_s_f32" (f32.const 0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const 0x1p-149)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -0x1p-149)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const 1.0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const 0x1.19999ap+0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const 1.5)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.0)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -0x1.19999ap+0)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.5)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -1.9)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -2.0)) (i64.const -2)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000 +(assert_return (invoke "i64.trunc_s_f32" (f32.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000 +(assert_return (invoke "i64.trunc_s_f32" (f32.const 9223371487098961920.0)) (i64.const 9223371487098961920)) +(assert_return (invoke "i64.trunc_s_f32" (f32.const -9223372036854775808.0)) (i64.const -9223372036854775808)) +(assert_trap (invoke "i64.trunc_s_f32" (f32.const 9223372036854775808.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f32" (f32.const -9223373136366403584.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f32" (f32.const infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f32" (f32.const -infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i64.trunc_u_f32" (f32.const 0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const -0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 0x1p-149)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1p-149)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 1.0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 0x1.19999ap+0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 1.5)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 4294967296)) (i64.const 4294967296)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const 18446742974197923840.0)) (i64.const -1099511627776)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1.ccccccp-1)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f32" (f32.const -0x1.fffffep-1)) (i64.const 0)) +(assert_trap (invoke "i64.trunc_u_f32" (f32.const 18446744073709551616.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f32" (f32.const -1.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f32" (f32.const infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f32" (f32.const -infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i64.trunc_s_f64" (f64.const 0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const 1.0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const 0x1.199999999999ap+0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const 1.5)) (i64.const 1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.0)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -0x1.199999999999ap+0)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.5)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -1.9)) (i64.const -1)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -2.0)) (i64.const -2)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const 4294967296)) (i64.const 4294967296)) ;; 0x1.00000p+32 -> 1 0000 0000 +(assert_return (invoke "i64.trunc_s_f64" (f64.const -4294967296)) (i64.const -4294967296)) ;; -0x1.00000p+32 -> ffff ffff 0000 0000 +(assert_return (invoke "i64.trunc_s_f64" (f64.const 9223372036854774784.0)) (i64.const 9223372036854774784)) +(assert_return (invoke "i64.trunc_s_f64" (f64.const -9223372036854775808.0)) (i64.const -9223372036854775808)) +(assert_trap (invoke "i64.trunc_s_f64" (f64.const 9223372036854775808.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f64" (f64.const -9223372036854777856.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f64" (f64.const infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f64" (f64.const -infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") + +(assert_return (invoke "i64.trunc_u_f64" (f64.const 0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const -0.0)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 1.0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 0x1.199999999999ap+0)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 1.5)) (i64.const 1)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 4294967295)) (i64.const 0xffffffff)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 4294967296)) (i64.const 0x100000000)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 18446744073709549568.0)) (i64.const -2048)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x1.ccccccccccccdp-1)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const -0x1.fffffffffffffp-1)) (i64.const 0)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 1e8)) (i64.const 100000000)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 1e16)) (i64.const 10000000000000000)) +(assert_return (invoke "i64.trunc_u_f64" (f64.const 9223372036854775808)) (i64.const -9223372036854775808)) +(assert_trap (invoke "i64.trunc_u_f64" (f64.const 18446744073709551616.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f64" (f64.const -1.0)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f64" (f64.const infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f64" (f64.const -infinity)) "integer overflow") +(assert_trap (invoke "i64.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") + +(assert_return (invoke "f32.convert_s_i32" (i32.const 1)) (f32.const 1.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const -1)) (f32.const -1.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const 0)) (f32.const 0.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const 2147483647)) (f32.const 2147483648)) +(assert_return (invoke "f32.convert_s_i32" (i32.const -2147483648)) (f32.const -2147483648)) +(assert_return (invoke "f32.convert_s_i32" (i32.const 1234567890)) (f32.const 0x1.26580cp+30)) +;; Test rounding directions. +(assert_return (invoke "f32.convert_s_i32" (i32.const 16777217)) (f32.const 16777216.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const -16777217)) (f32.const -16777216.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const 16777219)) (f32.const 16777220.0)) +(assert_return (invoke "f32.convert_s_i32" (i32.const -16777219)) (f32.const -16777220.0)) + +(assert_return (invoke "f32.convert_s_i64" (i64.const 1)) (f32.const 1.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const -1)) (f32.const -1.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const 9223372036854775807)) (f32.const 9223372036854775807)) +(assert_return (invoke "f32.convert_s_i64" (i64.const -9223372036854775808)) (f32.const -9223372036854775808)) +(assert_return (invoke "f32.convert_s_i64" (i64.const 314159265358979)) (f32.const 0x1.1db9e8p+48)) ;; PI +;; Test rounding directions. +(assert_return (invoke "f32.convert_s_i64" (i64.const 16777217)) (f32.const 16777216.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const -16777217)) (f32.const -16777216.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const 16777219)) (f32.const 16777220.0)) +(assert_return (invoke "f32.convert_s_i64" (i64.const -16777219)) (f32.const -16777220.0)) + +(assert_return (invoke "f64.convert_s_i32" (i32.const 1)) (f64.const 1.0)) +(assert_return (invoke "f64.convert_s_i32" (i32.const -1)) (f64.const -1.0)) +(assert_return (invoke "f64.convert_s_i32" (i32.const 0)) (f64.const 0.0)) +(assert_return (invoke "f64.convert_s_i32" (i32.const 2147483647)) (f64.const 2147483647)) +(assert_return (invoke "f64.convert_s_i32" (i32.const -2147483648)) (f64.const -2147483648)) +(assert_return (invoke "f64.convert_s_i32" (i32.const 987654321)) (f64.const 987654321)) + +(assert_return (invoke "f64.convert_s_i64" (i64.const 1)) (f64.const 1.0)) +(assert_return (invoke "f64.convert_s_i64" (i64.const -1)) (f64.const -1.0)) +(assert_return (invoke "f64.convert_s_i64" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "f64.convert_s_i64" (i64.const 9223372036854775807)) (f64.const 9223372036854775807)) +(assert_return (invoke "f64.convert_s_i64" (i64.const -9223372036854775808)) (f64.const -9223372036854775808)) +(assert_return (invoke "f64.convert_s_i64" (i64.const 4669201609102990)) (f64.const 4669201609102990)) ;; Feigenbaum +;; Test rounding directions. +(assert_return (invoke "f64.convert_s_i64" (i64.const 9007199254740993)) (f64.const 9007199254740992)) +(assert_return (invoke "f64.convert_s_i64" (i64.const -9007199254740993)) (f64.const -9007199254740992)) +(assert_return (invoke "f64.convert_s_i64" (i64.const 9007199254740995)) (f64.const 9007199254740996)) +(assert_return (invoke "f64.convert_s_i64" (i64.const -9007199254740995)) (f64.const -9007199254740996)) + +(assert_return (invoke "f32.convert_u_i32" (i32.const 1)) (f32.const 1.0)) +(assert_return (invoke "f32.convert_u_i32" (i32.const 0)) (f32.const 0.0)) +(assert_return (invoke "f32.convert_u_i32" (i32.const 2147483647)) (f32.const 2147483648)) +(assert_return (invoke "f32.convert_u_i32" (i32.const -2147483648)) (f32.const 2147483648)) +(assert_return (invoke "f32.convert_u_i32" (i32.const 0x12345678)) (f32.const 0x1.234568p+28)) +(assert_return (invoke "f32.convert_u_i32" (i32.const 0xffffffff)) (f32.const 4294967296.0)) +;; Test rounding directions. +(assert_return (invoke "f32.convert_u_i32" (i32.const 16777217)) (f32.const 16777216.0)) +(assert_return (invoke "f32.convert_u_i32" (i32.const 16777219)) (f32.const 16777220.0)) + +(assert_return (invoke "f32.convert_u_i64" (i64.const 1)) (f32.const 1.0)) +(assert_return (invoke "f32.convert_u_i64" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "f32.convert_u_i64" (i64.const 9223372036854775807)) (f32.const 9223372036854775807)) +(assert_return (invoke "f32.convert_u_i64" (i64.const -9223372036854775808)) (f32.const 9223372036854775808)) +(assert_return (invoke "f32.convert_u_i64" (i64.const 0xffffffffffffffff)) (f32.const 18446744073709551616.0)) +;; Test rounding directions. +(assert_return (invoke "f32.convert_u_i64" (i64.const 16777217)) (f32.const 16777216.0)) +(assert_return (invoke "f32.convert_u_i64" (i64.const 16777219)) (f32.const 16777220.0)) + +(assert_return (invoke "f64.convert_u_i32" (i32.const 1)) (f64.const 1.0)) +(assert_return (invoke "f64.convert_u_i32" (i32.const 0)) (f64.const 0.0)) +(assert_return (invoke "f64.convert_u_i32" (i32.const 2147483647)) (f64.const 2147483647)) +(assert_return (invoke "f64.convert_u_i32" (i32.const -2147483648)) (f64.const 2147483648)) +(assert_return (invoke "f64.convert_u_i32" (i32.const 0xffffffff)) (f64.const 4294967295.0)) + +(assert_return (invoke "f64.convert_u_i64" (i64.const 1)) (f64.const 1.0)) +(assert_return (invoke "f64.convert_u_i64" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "f64.convert_u_i64" (i64.const 9223372036854775807)) (f64.const 9223372036854775807)) +(assert_return (invoke "f64.convert_u_i64" (i64.const -9223372036854775808)) (f64.const 9223372036854775808)) +(assert_return (invoke "f64.convert_u_i64" (i64.const 0xffffffffffffffff)) (f64.const 18446744073709551616.0)) +;; Test rounding directions. +(assert_return (invoke "f64.convert_u_i64" (i64.const 9007199254740993)) (f64.const 9007199254740992)) +(assert_return (invoke "f64.convert_u_i64" (i64.const 9007199254740995)) (f64.const 9007199254740996)) + +(assert_return (invoke "f64.promote_f32" (f32.const 0.0)) (f64.const 0.0)) +(assert_return (invoke "f64.promote_f32" (f32.const -0.0)) (f64.const -0.0)) +(assert_return (invoke "f64.promote_f32" (f32.const 0x1p-149)) (f64.const 0x1p-149)) +(assert_return (invoke "f64.promote_f32" (f32.const -0x1p-149)) (f64.const -0x1p-149)) +(assert_return (invoke "f64.promote_f32" (f32.const 1.0)) (f64.const 1.0)) +(assert_return (invoke "f64.promote_f32" (f32.const -1.0)) (f64.const -1.0)) +(assert_return (invoke "f64.promote_f32" (f32.const -0x1.fffffep+127)) (f64.const -0x1.fffffep+127)) +(assert_return (invoke "f64.promote_f32" (f32.const 0x1.fffffep+127)) (f64.const 0x1.fffffep+127)) +;; Generated randomly by picking a random int and reinterpret it to float. +(assert_return (invoke "f64.promote_f32" (f32.const 0x1p-119)) (f64.const 0x1p-119)) +;; Generated randomly by picking a random float. +(assert_return (invoke "f64.promote_f32" (f32.const 0x1.8f867ep+125)) (f64.const 6.6382536710104395e+37)) +(assert_return (invoke "f64.promote_f32" (f32.const infinity)) (f64.const infinity)) +(assert_return (invoke "f64.promote_f32" (f32.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "f64.promote_f32" (f32.const nan)) (f64.const nan)) + +(assert_return (invoke "f32.demote_f64" (f64.const 0.0)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0.0)) (f32.const -0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x0.0000000000001p-1022)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x0.0000000000001p-1022)) (f32.const -0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 1.0)) (f32.const 1.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -1.0)) (f32.const -1.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffe0000000p-127)) (f32.const 0x1p-126)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffe0000000p-127)) (f32.const -0x1p-126)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffdfffffffp-127)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffdfffffffp-127)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffd0000000p+127)) (f32.const 0x1.fffffcp+127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffd0000000p+127)) (f32.const -0x1.fffffcp+127)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffd0000001p+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffd0000001p+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffefffffffp+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.fffffefffffffp+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.ffffffp+127)) (f32.const infinity)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.ffffffp+127)) (f32.const -infinity)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-119)) (f32.const 0x1p-119)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.8f867ep+125)) (f32.const 0x1.8f867ep+125)) +(assert_return (invoke "f32.demote_f64" (f64.const infinity)) (f32.const infinity)) +(assert_return (invoke "f32.demote_f64" (f64.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000000000001p+0)) (f32.const 1.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.fffffffffffffp-1)) (f32.const 1.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000000p+0)) (f32.const 0x1.000000p+0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000001p+0)) (f32.const 0x1.000002p+0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.000002fffffffp+0)) (f32.const 0x1.000002p+0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000030000000p+0)) (f32.const 0x1.000004p+0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000050000000p+0)) (f32.const 0x1.000004p+0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000000p+24)) (f32.const 0x1.0p+24)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000010000001p+24)) (f32.const 0x1.000002p+24)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.000002fffffffp+24)) (f32.const 0x1.000002p+24)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000030000000p+24)) (f32.const 0x1.000004p+24)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.4eae4f7024c7p+108)) (f32.const 0x1.4eae5p+108)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.a12e71e358685p-113)) (f32.const 0x1.a12e72p-113)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.cb98354d521ffp-127)) (f32.const 0x1.cb9834p-127)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.6972b30cfb562p+1)) (f32.const -0x1.6972b4p+1)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.bedbe4819d4c4p+112)) (f32.const -0x1.bedbe4p+112)) +(assert_return (invoke "f32.demote_f64" (f64.const nan)) (f32.const nan)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1p-1022)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1p-1022)) (f32.const -0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0p-150)) (f32.const 0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.0p-150)) (f32.const -0.0)) +(assert_return (invoke "f32.demote_f64" (f64.const 0x1.0000000000001p-150)) (f32.const 0x1p-149)) +(assert_return (invoke "f32.demote_f64" (f64.const -0x1.0000000000001p-150)) (f32.const -0x1p-149)) + +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0)) (f32.const 0.0)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x80000000)) (f32.const -0.0)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 1)) (f32.const 0x1p-149)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const -1)) (f32.const -nan:0x7fffff)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 123456789)) (f32.const 0x1.b79a2ap-113)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const -2147483647)) (f32.const -0x1p-149)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7f800000)) (f32.const infinity)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xff800000)) (f32.const -infinity)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7fc00000)) (f32.const nan)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xffc00000)) (f32.const -nan)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0x7fa00000)) (f32.const nan:0x200000)) +(assert_return (invoke "f32.reinterpret_i32" (i32.const 0xffa00000)) (f32.const -nan:0x200000)) + +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 1)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const -1)) (f64.const -nan:0xfffffffffffff)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x8000000000000000)) (f64.const -0.0)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 1234567890)) (f64.const 0x0.00000499602d2p-1022)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const -9223372036854775807)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff0000000000000)) (f64.const infinity)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff0000000000000)) (f64.const -infinity)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff8000000000000)) (f64.const nan)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff8000000000000)) (f64.const -nan)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0x7ff4000000000000)) (f64.const nan:0x4000000000000)) +(assert_return (invoke "f64.reinterpret_i64" (i64.const 0xfff4000000000000)) (f64.const -nan:0x4000000000000)) + +(assert_return (invoke "i32.reinterpret_f32" (f32.const 0.0)) (i32.const 0)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -0.0)) (i32.const 0x80000000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan:0x7fffff)) (i32.const -1)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -0x1p-149)) (i32.const 0x80000001)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const 1.0)) (i32.const 1065353216)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const 3.1415926)) (i32.const 1078530010)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const 0x1.fffffep+127)) (i32.const 2139095039)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -0x1.fffffep+127)) (i32.const -8388609)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const infinity)) (i32.const 0x7f800000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -infinity)) (i32.const 0xff800000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const nan)) (i32.const 0x7fc00000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan)) (i32.const 0xffc00000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const nan:0x200000)) (i32.const 0x7fa00000)) +(assert_return (invoke "i32.reinterpret_f32" (f32.const -nan:0x200000)) (i32.const 0xffa00000)) + +(assert_return (invoke "i64.reinterpret_f64" (f64.const 0.0)) (i64.const 0)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -0.0)) (i64.const 0x8000000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const 0x0.0000000000001p-1022)) (i64.const 1)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan:0xfffffffffffff)) (i64.const -1)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -0x0.0000000000001p-1022)) (i64.const 0x8000000000000001)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const 1.0)) (i64.const 4607182418800017408)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const 3.14159265358979)) (i64.const 4614256656552045841)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const 0x1.fffffffffffffp+1023)) (i64.const 9218868437227405311)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -0x1.fffffffffffffp+1023)) (i64.const -4503599627370497)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const infinity)) (i64.const 0x7ff0000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -infinity)) (i64.const 0xfff0000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const nan)) (i64.const 0x7ff8000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan)) (i64.const 0xfff8000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const nan:0x4000000000000)) (i64.const 0x7ff4000000000000)) +(assert_return (invoke "i64.reinterpret_f64" (f64.const -nan:0x4000000000000)) (i64.const 0xfff4000000000000)) diff --git a/test/WasmSpec/testsuite/endianness.wast b/test/WasmSpec/testsuite/endianness.wast new file mode 100644 index 00000000000..8dc0c2e2eb8 --- /dev/null +++ b/test/WasmSpec/testsuite/endianness.wast @@ -0,0 +1,217 @@ +(module + (memory 1) + + ;; Stores an i16 value in little-endian-format + (func $i16_store_little (param $address i32) (param $value i32) + (i32.store8 (get_local $address) (get_local $value)) + (i32.store8 (i32.add (get_local $address) (i32.const 1)) (i32.shr_u (get_local $value) (i32.const 8))) + ) + + ;; Stores an i32 value in little-endian format + (func $i32_store_little (param $address i32) (param $value i32) + (call $i16_store_little (get_local $address) (get_local $value)) + (call $i16_store_little (i32.add (get_local $address) (i32.const 2)) (i32.shr_u (get_local $value) (i32.const 16))) + ) + + ;; Stores an i64 value in little-endian format + (func $i64_store_little (param $address i32) (param $value i64) + (call $i32_store_little (get_local $address) (i32.wrap/i64 (get_local $value))) + (call $i32_store_little (i32.add (get_local $address) (i32.const 4)) (i32.wrap/i64 (i64.shr_u (get_local $value) (i64.const 32)))) + ) + + ;; Loads an i16 value in little-endian format + (func $i16_load_little (param $address i32) (result i32) + (i32.or + (i32.load8_u (get_local $address)) + (i32.shl (i32.load8_u (i32.add (get_local $address) (i32.const 1))) (i32.const 8)) + ) + ) + + ;; Loads an i32 value in little-endian format + (func $i32_load_little (param $address i32) (result i32) + (i32.or + (call $i16_load_little (get_local $address)) + (i32.shl (call $i16_load_little (i32.add (get_local $address) (i32.const 2))) (i32.const 16)) + ) + ) + + ;; Loads an i64 value in little-endian format + (func $i64_load_little (param $address i32) (result i64) + (i64.or + (i64.extend_u/i32 (call $i32_load_little (get_local $address))) + (i64.shl (i64.extend_u/i32 (call $i32_load_little (i32.add (get_local $address) (i32.const 4)))) (i64.const 32)) + ) + ) + + (func (export "i32_load16_s") (param $value i32) (result i32) + (call $i16_store_little (i32.const 0) (get_local $value)) + (i32.load16_s (i32.const 0)) + ) + + (func (export "i32_load16_u") (param $value i32) (result i32) + (call $i16_store_little (i32.const 0) (get_local $value)) + (i32.load16_u (i32.const 0)) + ) + + (func (export "i32_load") (param $value i32) (result i32) + (call $i32_store_little (i32.const 0) (get_local $value)) + (i32.load (i32.const 0)) + ) + + (func (export "i64_load16_s") (param $value i64) (result i64) + (call $i16_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) + (i64.load16_s (i32.const 0)) + ) + + (func (export "i64_load16_u") (param $value i64) (result i64) + (call $i16_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) + (i64.load16_u (i32.const 0)) + ) + + (func (export "i64_load32_s") (param $value i64) (result i64) + (call $i32_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) + (i64.load32_s (i32.const 0)) + ) + + (func (export "i64_load32_u") (param $value i64) (result i64) + (call $i32_store_little (i32.const 0) (i32.wrap/i64 (get_local $value))) + (i64.load32_u (i32.const 0)) + ) + + (func (export "i64_load") (param $value i64) (result i64) + (call $i64_store_little (i32.const 0) (get_local $value)) + (i64.load (i32.const 0)) + ) + + (func (export "f32_load") (param $value f32) (result f32) + (call $i32_store_little (i32.const 0) (i32.reinterpret/f32 (get_local $value))) + (f32.load (i32.const 0)) + ) + + (func (export "f64_load") (param $value f64) (result f64) + (call $i64_store_little (i32.const 0) (i64.reinterpret/f64 (get_local $value))) + (f64.load (i32.const 0)) + ) + + + (func (export "i32_store16") (param $value i32) (result i32) + (i32.store16 (i32.const 0) (get_local $value)) + (call $i16_load_little (i32.const 0)) + ) + + (func (export "i32_store") (param $value i32) (result i32) + (i32.store (i32.const 0) (get_local $value)) + (call $i32_load_little (i32.const 0)) + ) + + (func (export "i64_store16") (param $value i64) (result i64) + (i64.store16 (i32.const 0) (get_local $value)) + (i64.extend_u/i32 (call $i16_load_little (i32.const 0))) + ) + + (func (export "i64_store32") (param $value i64) (result i64) + (i64.store32 (i32.const 0) (get_local $value)) + (i64.extend_u/i32 (call $i32_load_little (i32.const 0))) + ) + + (func (export "i64_store") (param $value i64) (result i64) + (i64.store (i32.const 0) (get_local $value)) + (call $i64_load_little (i32.const 0)) + ) + + (func (export "f32_store") (param $value f32) (result f32) + (f32.store (i32.const 0) (get_local $value)) + (f32.reinterpret/i32 (call $i32_load_little (i32.const 0))) + ) + + (func (export "f64_store") (param $value f64) (result f64) + (f64.store (i32.const 0) (get_local $value)) + (f64.reinterpret/i64 (call $i64_load_little (i32.const 0))) + ) +) + +(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load16_s" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_load16_s" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_s" (i32.const 0x3210)) (i32.const 0x3210)) + +(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_load16_u" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_load16_u" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_u" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_load" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load" (i32.const -42424242)) (i32.const -42424242)) +(assert_return (invoke "i32_load" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_load" (i32.const 0xABAD1DEA)) (i32.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load16_s" (i64.const -4242)) (i64.const -4242)) +(assert_return (invoke "i64_load16_s" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_s" (i64.const 0x3210)) (i64.const 0x3210)) + +(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_load16_u" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_load16_u" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_u" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load32_s" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 0x12345678)) (i64.const 0x12345678)) + +(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_load32_u" (i64.const -42424242)) (i64.const 4252543054)) +(assert_return (invoke "i64_load32_u" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_u" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_load" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_load" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_load" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_load" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_load" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_load" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_load" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_load" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_load" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) + + +(assert_return (invoke "i32_store16" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_store16" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_store16" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_store16" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_store" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_store" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_store" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_store" (i32.const 0xDEADCAFE)) (i32.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store16" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_store16" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_store16" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_store16" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_store32" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_store32" (i64.const -4242)) (i64.const 4294963054)) +(assert_return (invoke "i64_store32" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_store32" (i64.const 0xDEADCAFE)) (i64.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_store" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_store" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_store" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_store" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_store" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_store" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_store" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_store" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_store" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_store" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_store" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) diff --git a/test/WasmSpec/testsuite/exports.wast b/test/WasmSpec/testsuite/exports.wast new file mode 100644 index 00000000000..e3a0052a6d6 --- /dev/null +++ b/test/WasmSpec/testsuite/exports.wast @@ -0,0 +1,196 @@ +;; Functions + +(module (func) (export "a" (func 0))) +(module (func) (export "a" (func 0)) (export "b" (func 0))) +(module (func) (func) (export "a" (func 0)) (export "b" (func 1))) + +(module (func (export "a"))) +(module (func) (export "a" (func 0))) +(module (func $a (export "a"))) +(module (func $a) (export "a" (func $a))) +(module (export "a" (func 0)) (func)) +(module (export "a" (func $a)) (func $a)) + +(module $Func + (export "e" (func $f)) + (func $f (param $n i32) (result i32) + (return (i32.add (get_local $n) (i32.const 1))) + ) +) +(assert_return (invoke "e" (i32.const 42)) (i32.const 43)) +(assert_return (invoke $Func "e" (i32.const 42)) (i32.const 43)) +(module) +(module $Other1) +(assert_return (invoke $Func "e" (i32.const 42)) (i32.const 43)) + +(assert_invalid + (module (func) (export "a" (func 1))) + "unknown function" +) +(assert_invalid + (module (func) (export "a" (func 0)) (export "a" (func 0))) + "duplicate export name" +) +(assert_invalid + (module (func) (func) (export "a" (func 0)) (export "a" (func 1))) + "duplicate export name" +) +(assert_invalid + (module (func) (global i32 (i32.const 0)) (export "a" (func 0)) (export "a" (global 0))) + "duplicate export name" +) +(assert_invalid + (module (func) (table 0 anyfunc) (export "a" (func 0)) (export "a" (table 0))) + "duplicate export name" +) +(assert_invalid + (module (func) (memory 0) (export "a" (func 0)) (export "a" (memory 0))) + "duplicate export name" +) + + +;; Globals + +(module (global i32 (i32.const 0)) (export "a" (global 0))) +(module (global i32 (i32.const 0)) (export "a" (global 0)) (export "b" (global 0))) +(module (global i32 (i32.const 0)) (global i32 (i32.const 0)) (export "a" (global 0)) (export "b" (global 1))) + +(module (global (export "a") i32 (i32.const 0))) +(module (global i32 (i32.const 0)) (export "a" (global 0))) +(module (global $a (export "a") i32 (i32.const 0))) +(module (global $a i32 (i32.const 0)) (export "a" (global $a))) +(module (export "a" (global 0)) (global i32 (i32.const 0))) +(module (export "a" (global $a)) (global $a i32 (i32.const 0))) + +(module $Global + (export "e" (global $g)) + (global $g i32 (i32.const 42)) +) +(assert_return (get "e") (i32.const 42)) +(assert_return (get $Global "e") (i32.const 42)) +(module) +(module $Other2) +(assert_return (get $Global "e") (i32.const 42)) + +(assert_invalid + (module (global i32 (i32.const 0)) (export "a" (global 1))) + "unknown global" +) +(assert_invalid + (module (global i32 (i32.const 0)) (export "a" (global 0)) (export "a" (global 0))) + "duplicate export name" +) +(assert_invalid + (module (global i32 (i32.const 0)) (global i32 (i32.const 0)) (export "a" (global 0)) (export "a" (global 1))) + "duplicate export name" +) +(assert_invalid + (module (global i32 (i32.const 0)) (func) (export "a" (global 0)) (export "a" (func 0))) + "duplicate export name" +) +(assert_invalid + (module (global i32 (i32.const 0)) (table 0 anyfunc) (export "a" (global 0)) (export "a" (table 0))) + "duplicate export name" +) +(assert_invalid + (module (global i32 (i32.const 0)) (memory 0) (export "a" (global 0)) (export "a" (memory 0))) + "duplicate export name" +) + + +;; Tables + +(module (table 0 anyfunc) (export "a" (table 0))) +(module (table 0 anyfunc) (export "a" (table 0)) (export "b" (table 0))) +;; No multiple tables yet. +;; (module (table 0 anyfunc) (table 0 anyfunc) (export "a" (table 0)) (export "b" (table 1))) + +(module (table (export "a") 0 anyfunc)) +(module (table (export "a") 0 1 anyfunc)) +(module (table 0 anyfunc) (export "a" (table 0))) +(module (table 0 1 anyfunc) (export "a" (table 0))) +(module (table $a (export "a") 0 anyfunc)) +(module (table $a (export "a") 0 1 anyfunc)) +(module (table $a 0 anyfunc) (export "a" (table $a))) +(module (table $a 0 1 anyfunc) (export "a" (table $a))) +(module (export "a" (table 0)) (table 0 anyfunc)) +(module (export "a" (table 0)) (table 0 1 anyfunc)) +(module (export "a" (table $a)) (table $a 0 anyfunc)) +(module (export "a" (table $a)) (table $a 0 1 anyfunc)) + +(; TODO: access table ;) + +(assert_invalid + (module (table 0 anyfunc) (export "a" (table 1))) + "unknown table" +) +(assert_invalid + (module (table 0 anyfunc) (export "a" (table 0)) (export "a" (table 0))) + "duplicate export name" +) +;; No multiple tables yet. +;; (assert_invalid +;; (module (table 0 anyfunc) (table 0 anyfunc) (export "a" (table 0)) (export "a" (table 1))) +;; "duplicate export name" +;; ) +(assert_invalid + (module (table 0 anyfunc) (func) (export "a" (table 0)) (export "a" (func 0))) + "duplicate export name" +) +(assert_invalid + (module (table 0 anyfunc) (global i32 (i32.const 0)) (export "a" (table 0)) (export "a" (global 0))) + "duplicate export name" +) +(assert_invalid + (module (table 0 anyfunc) (memory 0) (export "a" (table 0)) (export "a" (memory 0))) + "duplicate export name" +) + + +;; Memories + +(module (memory 0) (export "a" (memory 0))) +(module (memory 0) (export "a" (memory 0)) (export "b" (memory 0))) +;; No multiple memories yet. +;; (module (memory 0) (memory 0) (export "a" (memory 0)) (export "b" (memory 1))) + +(module (memory (export "a") 0)) +(module (memory (export "a") 0 1)) +(module (memory 0) (export "a" (memory 0))) +(module (memory 0 1) (export "a" (memory 0))) +(module (memory $a (export "a") 0)) +(module (memory $a (export "a") 0 1)) +(module (memory $a 0) (export "a" (memory $a))) +(module (memory $a 0 1) (export "a" (memory $a))) +(module (export "a" (memory 0)) (memory 0)) +(module (export "a" (memory 0)) (memory 0 1)) +(module (export "a" (memory $a)) (memory $a 0)) +(module (export "a" (memory $a)) (memory $a 0 1)) + +(; TODO: access memory ;) + +(assert_invalid + (module (memory 0) (export "a" (memory 1))) + "unknown memory" +) +(assert_invalid + (module (memory 0) (export "a" (memory 0)) (export "a" (memory 0))) + "duplicate export name" +) +;; No multiple memories yet. +;; (assert_invalid +;; (module (memory 0) (memory 0) (export "a" (memory 0)) (export "a" (memory 1))) +;; "duplicate export name" +;; ) +(assert_invalid + (module (memory 0) (func) (export "a" (memory 0)) (export "a" (func 0))) + "duplicate export name" +) +(assert_invalid + (module (memory 0) (global i32 (i32.const 0)) (export "a" (memory 0)) (export "a" (global 0))) + "duplicate export name" +) +(assert_invalid + (module (memory 0) (table 0 anyfunc) (export "a" (memory 0)) (export "a" (table 0))) + "duplicate export name" +) diff --git a/test/WasmSpec/testsuite/f32.load32.fail.wast b/test/WasmSpec/testsuite/f32.load32.fail.wast new file mode 100644 index 00000000000..313364538c0 --- /dev/null +++ b/test/WasmSpec/testsuite/f32.load32.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result f32) (f32.load32 (get_local 0)))) diff --git a/test/WasmSpec/testsuite/f32.load64.fail.wast b/test/WasmSpec/testsuite/f32.load64.fail.wast new file mode 100644 index 00000000000..da94668fc2f --- /dev/null +++ b/test/WasmSpec/testsuite/f32.load64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result f32) (f32.load64 (get_local 0)))) diff --git a/test/WasmSpec/testsuite/f32.store32.fail.wast b/test/WasmSpec/testsuite/f32.store32.fail.wast new file mode 100644 index 00000000000..3daf6eb35e3 --- /dev/null +++ b/test/WasmSpec/testsuite/f32.store32.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param f32) (f32.store32 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/f32.store64.fail.wast b/test/WasmSpec/testsuite/f32.store64.fail.wast new file mode 100644 index 00000000000..b2c47bb9b41 --- /dev/null +++ b/test/WasmSpec/testsuite/f32.store64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param f64) (f32.store64 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/f32.wast b/test/WasmSpec/testsuite/f32.wast new file mode 100644 index 00000000000..9f58f9bd103 --- /dev/null +++ b/test/WasmSpec/testsuite/f32.wast @@ -0,0 +1,2414 @@ +;; Test all the f32 operators on major boundary values and all special +;; values (except comparison operators, which are tested in f32_cmp.wast). + +(module + (func (export "add") (param $x f32) (param $y f32) (result f32) (f32.add (get_local $x) (get_local $y))) + (func (export "sub") (param $x f32) (param $y f32) (result f32) (f32.sub (get_local $x) (get_local $y))) + (func (export "mul") (param $x f32) (param $y f32) (result f32) (f32.mul (get_local $x) (get_local $y))) + (func (export "div") (param $x f32) (param $y f32) (result f32) (f32.div (get_local $x) (get_local $y))) + (func (export "sqrt") (param $x f32) (result f32) (f32.sqrt (get_local $x))) + (func (export "min") (param $x f32) (param $y f32) (result f32) (f32.min (get_local $x) (get_local $y))) + (func (export "max") (param $x f32) (param $y f32) (result f32) (f32.max (get_local $x) (get_local $y))) + (func (export "ceil") (param $x f32) (result f32) (f32.ceil (get_local $x))) + (func (export "floor") (param $x f32) (result f32) (f32.floor (get_local $x))) + (func (export "trunc") (param $x f32) (result f32) (f32.trunc (get_local $x))) + (func (export "nearest") (param $x f32) (result f32) (f32.nearest (get_local $x))) + (func (export "abs") (param $x f32) (result f32) (f32.abs (get_local $x))) + (func (export "neg") (param $x f32) (result f32) (f32.neg (get_local $x))) + (func (export "copysign") (param $x f32) (param $y f32) (result f32) (f32.copysign (get_local $x) (get_local $y))) +) + +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-148)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-148)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.000002p-126)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1.000002p-126)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.000002p-126)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.000002p-126)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-125)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-125)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1.8p+0)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1.8p+0)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1.8p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1.8p+0)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+1)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+1)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.b21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.721fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.721fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.b21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.d21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.521fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.521fb6p+2)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.d21fb6p+2)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1p+0)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return_nan (invoke "add" (f32.const -infinity) (f32.const infinity))) +(assert_return_nan (invoke "add" (f32.const infinity) (f32.const -infinity))) +(assert_return (invoke "add" (f32.const infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x0p+0)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x0p+0)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1p-149)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1p-149)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1p-126)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1p-126)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1p-1)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1p-1)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1p+0)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1p+0)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const infinity)) (f32.const -nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const -infinity)) (f32.const nan)) +(assert_return (invoke "add" (f32.const nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "add" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return_nan (invoke "add" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "add" (f32.const nan) (f32.const -nan))) +(assert_return (invoke "add" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-148)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-148)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.000002p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1.000002p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1.000002p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1.000002p-126)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-125)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-125)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1.8p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1.8p+0)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.721fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.b21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.b21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.721fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1.8p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1.8p+0)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+1)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+1)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.521fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.d21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.d21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.521fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.721fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.b21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.b21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.721fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.521fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.d21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.d21fb6p+2)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.521fb6p+2)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+3)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+3)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1p+0)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return_nan (invoke "sub" (f32.const -infinity) (f32.const -infinity))) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -infinity)) (f32.const infinity)) +(assert_return_nan (invoke "sub" (f32.const infinity) (f32.const infinity))) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x0p+0)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x0p+0)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1p-149)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1p-149)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1p-126)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1p-126)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1p-1)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1p-1)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1p+0)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1p+0)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const infinity)) (f32.const -nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const -infinity)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "sub" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return_nan (invoke "sub" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "sub" (f32.const nan) (f32.const -nan))) +(assert_return (invoke "sub" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return_nan (invoke "mul" (f32.const -0x0p+0) (f32.const -infinity))) +(assert_return_nan (invoke "mul" (f32.const -0x0p+0) (f32.const infinity))) +(assert_return_nan (invoke "mul" (f32.const 0x0p+0) (f32.const -infinity))) +(assert_return_nan (invoke "mul" (f32.const 0x0p+0) (f32.const infinity))) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.8p-147)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.8p-147)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p-147)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p-147)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-127)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-127)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-127)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-127)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-127)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-127)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-127)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-127)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-2)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-2)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-2)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-2)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.8p-147)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.8p-147)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.8p-147)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.8p-147)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p-124)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+1)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.3bd3cep+5)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.3bd3cep+5)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep-22)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+1)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+126)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return_nan (invoke "mul" (f32.const -infinity) (f32.const -0x0p+0))) +(assert_return_nan (invoke "mul" (f32.const -infinity) (f32.const 0x0p+0))) +(assert_return_nan (invoke "mul" (f32.const infinity) (f32.const -0x0p+0))) +(assert_return_nan (invoke "mul" (f32.const infinity) (f32.const 0x0p+0))) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x0p+0)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x0p+0)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1p-149)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1p-149)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1p-126)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1p-126)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1p-1)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1p-1)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1p+0)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1p+0)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const infinity)) (f32.const -nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const -infinity)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "mul" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return_nan (invoke "mul" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "mul" (f32.const nan) (f32.const -nan))) +(assert_return (invoke "mul" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return_nan (invoke "div" (f32.const -0x0p+0) (f32.const -0x0p+0))) +(assert_return_nan (invoke "div" (f32.const -0x0p+0) (f32.const 0x0p+0))) +(assert_return_nan (invoke "div" (f32.const 0x0p+0) (f32.const -0x0p+0))) +(assert_return_nan (invoke "div" (f32.const 0x0p+0) (f32.const 0x0p+0))) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x0p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-23)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-23)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-23)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-23)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-148)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-148)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-148)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-148)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1p-149) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p+23)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p+23)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p+23)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p+23)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-125)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-125)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-125)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-125)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f3p-129)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f3p-129)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f3p-129)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f3p-129)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1p-126) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p+125)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p+125)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p+125)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p+125)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-4)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-4)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-4)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-4)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-129)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-129)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-129)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-129)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1p-1) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+126)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+126)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+126)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+126)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+1)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+1)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+1)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+1)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f306p-3)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f306p-3)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f306p-3)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f306p-3)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-128)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-128)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-128)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-128)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1p+0) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+3)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+3)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+3)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+3)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb8p-126)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb8p-126)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb8p-126)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb8p-126)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.45f304p+125)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.45f304p+125)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.45f304p+125)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.45f304p+125)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "div" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return_nan (invoke "div" (f32.const -infinity) (f32.const -infinity))) +(assert_return_nan (invoke "div" (f32.const -infinity) (f32.const infinity))) +(assert_return_nan (invoke "div" (f32.const infinity) (f32.const -infinity))) +(assert_return_nan (invoke "div" (f32.const infinity) (f32.const infinity))) +(assert_return (invoke "div" (f32.const -infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const infinity) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const infinity) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x0p+0)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x0p+0)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1p-149)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1p-149)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1p-126)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1p-126)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1p-1)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1p-1)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1p+0)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1p+0)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const infinity)) (f32.const -nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const -infinity)) (f32.const nan)) +(assert_return (invoke "div" (f32.const nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "div" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return_nan (invoke "div" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "div" (f32.const nan) (f32.const -nan))) +(assert_return (invoke "div" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x0p+0) (f32.const infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x0p+0) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return_nan (invoke "min" (f32.const -0x0p+0) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x0p+0) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x0p+0) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x0p+0) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1p-149) (f32.const infinity)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1p-149) (f32.const infinity)) (f32.const 0x1p-149)) +(assert_return_nan (invoke "min" (f32.const -0x1p-149) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1p-149) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-149) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-149) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1p-126) (f32.const infinity)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1p-126) (f32.const infinity)) (f32.const 0x1p-126)) +(assert_return_nan (invoke "min" (f32.const -0x1p-126) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1p-126) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-126) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-126) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1p-1) (f32.const infinity)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1p-1) (f32.const infinity)) (f32.const 0x1p-1)) +(assert_return_nan (invoke "min" (f32.const -0x1p-1) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1p-1) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-1) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p-1) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1p+0) (f32.const infinity)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1p+0) (f32.const infinity)) (f32.const 0x1p+0)) +(assert_return_nan (invoke "min" (f32.const -0x1p+0) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1p+0) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p+0) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1p+0) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const 0x1.921fb6p+2)) +(assert_return_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1.921fb6p+2) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1.921fb6p+2) (f32.const nan))) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const 0x1.fffffep+127)) +(assert_return_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -0x1.fffffep+127) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const 0x1.fffffep+127) (f32.const nan))) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const -infinity) (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "min" (f32.const infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "min" (f32.const -infinity) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -infinity) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const infinity) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const infinity) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x0p+0))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x0p+0))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x0p+0))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x0p+0))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-149))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-149))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1p-149))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1p-149))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-126))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-126))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1p-126))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1p-126))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1p-1))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1p-1))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1p-1))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1p-1))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1p+0))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1p+0))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1p+0))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1p+0))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1.921fb6p+2))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1.921fb6p+2))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1.921fb6p+2))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1.921fb6p+2))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -0x1.fffffep+127))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const 0x1.fffffep+127))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -0x1.fffffep+127))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const 0x1.fffffep+127))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -infinity))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const infinity))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -infinity))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const infinity))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const -nan))) +(assert_return_nan (invoke "min" (f32.const nan) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x0p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x0p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x0p+0) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x0p+0) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x0p+0) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x0p+0) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-149) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-149) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1p-149) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1p-149) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-149) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-149) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-126) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-126) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1p-126) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1p-126) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-126) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-126) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p-1) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p-1) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1p-1) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1p-1) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-1) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p-1) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1p+0) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1p+0) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1p+0) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p+0) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1p+0) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1.921fb6p+2) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1.921fb6p+2) (f32.const nan))) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -0x1.fffffep+127) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const 0x1.fffffep+127) (f32.const nan))) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x0p+0)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1p-149)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1p-126)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1p-1)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1p+0)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "max" (f32.const -infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "max" (f32.const infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return_nan (invoke "max" (f32.const -infinity) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -infinity) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const infinity) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const infinity) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x0p+0))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x0p+0))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x0p+0))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x0p+0))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-149))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-149))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1p-149))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1p-149))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-126))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-126))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1p-126))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1p-126))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1p-1))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1p-1))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1p-1))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1p-1))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1p+0))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1p+0))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1p+0))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1p+0))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1.921fb6p+2))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1.921fb6p+2))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1.921fb6p+2))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1.921fb6p+2))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -0x1.fffffep+127))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const 0x1.fffffep+127))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -0x1.fffffep+127))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const 0x1.fffffep+127))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -infinity))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const infinity))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -infinity))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const infinity))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const -nan) (f32.const nan))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const -nan))) +(assert_return_nan (invoke "max" (f32.const nan) (f32.const nan))) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -infinity)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const infinity)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const -nan)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x0p+0) (f32.const nan)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const -nan)) (f32.const -0x0p+0)) +(assert_return (invoke "copysign" (f32.const 0x0p+0) (f32.const nan)) (f32.const 0x0p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x0p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x0p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-126)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-126)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p-1)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p-1)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1p+0)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1p+0)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -infinity)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const infinity)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -infinity)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const infinity)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const -nan)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-149) (f32.const nan)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const -nan)) (f32.const -0x1p-149)) +(assert_return (invoke "copysign" (f32.const 0x1p-149) (f32.const nan)) (f32.const 0x1p-149)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x0p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x0p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-149)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p-1)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p-1)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1p+0)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1p+0)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -infinity)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const infinity)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -infinity)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const infinity)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const -nan)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-126) (f32.const nan)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const -nan)) (f32.const -0x1p-126)) +(assert_return (invoke "copysign" (f32.const 0x1p-126) (f32.const nan)) (f32.const 0x1p-126)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x0p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x0p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-149)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-149)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-126)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-126)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1p+0)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1p+0)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -infinity)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const infinity)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -infinity)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const infinity)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const -nan)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p-1) (f32.const nan)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const -nan)) (f32.const -0x1p-1)) +(assert_return (invoke "copysign" (f32.const 0x1p-1) (f32.const nan)) (f32.const 0x1p-1)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x0p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x0p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -infinity)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const infinity)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -infinity)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const infinity)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const -nan)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1p+0) (f32.const nan)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const -nan)) (f32.const -0x1p+0)) +(assert_return (invoke "copysign" (f32.const 0x1p+0) (f32.const nan)) (f32.const 0x1p+0)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const 0x1.921fb6p+2) (f32.const nan)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const infinity)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const infinity)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const -nan)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const 0x1.fffffep+127) (f32.const nan)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x0p+0)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x0p+0)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1p-149)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1p-149)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1p-126)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1p-126)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1p-1)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1p-1)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1p+0)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1p+0)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -0x1.fffffep+127)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const 0x1.fffffep+127)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const -nan)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const -infinity) (f32.const nan)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const -nan)) (f32.const -infinity)) +(assert_return (invoke "copysign" (f32.const infinity) (f32.const nan)) (f32.const infinity)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x0p+0)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x0p+0)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-149)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-149)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-126)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-126)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p-1)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p-1)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1p+0)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1p+0)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1.921fb6p+2)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1.921fb6p+2)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -0x1.fffffep+127)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const 0x1.fffffep+127)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -infinity)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const infinity)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const -nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "copysign" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "sqrt" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "sqrt" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1p-149))) +(assert_return (invoke "sqrt" (f32.const 0x1p-149)) (f32.const 0x1.6a09e6p-75)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1p-126))) +(assert_return (invoke "sqrt" (f32.const 0x1p-126)) (f32.const 0x1p-63)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1p-1))) +(assert_return (invoke "sqrt" (f32.const 0x1p-1)) (f32.const 0x1.6a09e6p-1)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1p+0))) +(assert_return (invoke "sqrt" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1.921fb6p+2))) +(assert_return (invoke "sqrt" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.40d932p+1)) +(assert_return_nan (invoke "sqrt" (f32.const -0x1.fffffep+127))) +(assert_return (invoke "sqrt" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+63)) +(assert_return_nan (invoke "sqrt" (f32.const -infinity))) +(assert_return (invoke "sqrt" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "sqrt" (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "sqrt" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "floor" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "floor" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "floor" (f32.const -0x1p-149)) (f32.const -0x1p+0)) +(assert_return (invoke "floor" (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "floor" (f32.const -0x1p-126)) (f32.const -0x1p+0)) +(assert_return (invoke "floor" (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "floor" (f32.const -0x1p-1)) (f32.const -0x1p+0)) +(assert_return (invoke "floor" (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "floor" (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "floor" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "floor" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.cp+2)) +(assert_return (invoke "floor" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) +(assert_return (invoke "floor" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "floor" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "floor" (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "floor" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "floor" (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "floor" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "ceil" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "ceil" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "ceil" (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "ceil" (f32.const 0x1p-149)) (f32.const 0x1p+0)) +(assert_return (invoke "ceil" (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "ceil" (f32.const 0x1p-126)) (f32.const 0x1p+0)) +(assert_return (invoke "ceil" (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "ceil" (f32.const 0x1p-1)) (f32.const 0x1p+0)) +(assert_return (invoke "ceil" (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "ceil" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "ceil" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) +(assert_return (invoke "ceil" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.cp+2)) +(assert_return (invoke "ceil" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "ceil" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "ceil" (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "ceil" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "ceil" (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "ceil" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "trunc" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "trunc" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "trunc" (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "trunc" (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "trunc" (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "trunc" (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "trunc" (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "trunc" (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "trunc" (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "trunc" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "trunc" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) +(assert_return (invoke "trunc" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) +(assert_return (invoke "trunc" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "trunc" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "trunc" (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "trunc" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "trunc" (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "trunc" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "nearest" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "nearest" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "nearest" (f32.const -0x1p-149)) (f32.const -0x0p+0)) +(assert_return (invoke "nearest" (f32.const 0x1p-149)) (f32.const 0x0p+0)) +(assert_return (invoke "nearest" (f32.const -0x1p-126)) (f32.const -0x0p+0)) +(assert_return (invoke "nearest" (f32.const 0x1p-126)) (f32.const 0x0p+0)) +(assert_return (invoke "nearest" (f32.const -0x1p-1)) (f32.const -0x0p+0)) +(assert_return (invoke "nearest" (f32.const 0x1p-1)) (f32.const 0x0p+0)) +(assert_return (invoke "nearest" (f32.const -0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "nearest" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "nearest" (f32.const -0x1.921fb6p+2)) (f32.const -0x1.8p+2)) +(assert_return (invoke "nearest" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.8p+2)) +(assert_return (invoke "nearest" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "nearest" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "nearest" (f32.const -infinity)) (f32.const -infinity)) +(assert_return (invoke "nearest" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "nearest" (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "nearest" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "abs" (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "abs" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "abs" (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "abs" (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "abs" (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "abs" (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "abs" (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "abs" (f32.const 0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "abs" (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "abs" (f32.const 0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "abs" (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "abs" (f32.const 0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "abs" (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "abs" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "abs" (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "abs" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "abs" (f32.const -nan)) (f32.const nan)) +(assert_return (invoke "abs" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "neg" (f32.const -0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "neg" (f32.const 0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "neg" (f32.const -0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "neg" (f32.const 0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "neg" (f32.const -0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "neg" (f32.const 0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "neg" (f32.const -0x1p-1)) (f32.const 0x1p-1)) +(assert_return (invoke "neg" (f32.const 0x1p-1)) (f32.const -0x1p-1)) +(assert_return (invoke "neg" (f32.const -0x1p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "neg" (f32.const 0x1p+0)) (f32.const -0x1p+0)) +(assert_return (invoke "neg" (f32.const -0x1.921fb6p+2)) (f32.const 0x1.921fb6p+2)) +(assert_return (invoke "neg" (f32.const 0x1.921fb6p+2)) (f32.const -0x1.921fb6p+2)) +(assert_return (invoke "neg" (f32.const -0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "neg" (f32.const 0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "neg" (f32.const -infinity)) (f32.const infinity)) +(assert_return (invoke "neg" (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "neg" (f32.const -nan)) (f32.const nan)) +(assert_return (invoke "neg" (f32.const nan)) (f32.const -nan)) diff --git a/test/WasmSpec/testsuite/f32_cmp.wast b/test/WasmSpec/testsuite/f32_cmp.wast new file mode 100644 index 00000000000..9458069c30c --- /dev/null +++ b/test/WasmSpec/testsuite/f32_cmp.wast @@ -0,0 +1,1956 @@ +;; Test all the f32 comparison operators on major boundary values and all +;; special values. + +(module + (func (export "eq") (param $x f32) (param $y f32) (result i32) (f32.eq (get_local $x) (get_local $y))) + (func (export "ne") (param $x f32) (param $y f32) (result i32) (f32.ne (get_local $x) (get_local $y))) + (func (export "lt") (param $x f32) (param $y f32) (result i32) (f32.lt (get_local $x) (get_local $y))) + (func (export "le") (param $x f32) (param $y f32) (result i32) (f32.le (get_local $x) (get_local $y))) + (func (export "gt") (param $x f32) (param $y f32) (result i32) (f32.gt (get_local $x) (get_local $y))) + (func (export "ge") (param $x f32) (param $y f32) (result i32) (f32.ge (get_local $x) (get_local $y))) +) + +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const -nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f32.const nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x0p+0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x0p+0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-149) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-149) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-126) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-126) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p-1) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p-1) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1p+0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1p+0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -infinity) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const infinity) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const -nan) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f32.const nan) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const -nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f32.const nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const -nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f32.const nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const -nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f32.const nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x0p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-149) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-126) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p-1) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1p+0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.921fb6p+2) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const 0x1.fffffep+127) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1p-149)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1p-126)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1.921fb6p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const 0x1.fffffep+127)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const infinity) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-149)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-126)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1.921fb6p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const 0x1.fffffep+127)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const -nan) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f32.const nan) (f32.const nan)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/f64.load32.fail.wast b/test/WasmSpec/testsuite/f64.load32.fail.wast new file mode 100644 index 00000000000..38811ff3536 --- /dev/null +++ b/test/WasmSpec/testsuite/f64.load32.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result f64) (f64.load32 (get_local 0)))) diff --git a/test/WasmSpec/testsuite/f64.load64.fail.wast b/test/WasmSpec/testsuite/f64.load64.fail.wast new file mode 100644 index 00000000000..f3c30ef3457 --- /dev/null +++ b/test/WasmSpec/testsuite/f64.load64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result f64) (f64.load64 (get_local 0)))) diff --git a/test/WasmSpec/testsuite/f64.store32.fail.wast b/test/WasmSpec/testsuite/f64.store32.fail.wast new file mode 100644 index 00000000000..92858a35e05 --- /dev/null +++ b/test/WasmSpec/testsuite/f64.store32.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param f32) (f64.store32 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/f64.store64.fail.wast b/test/WasmSpec/testsuite/f64.store64.fail.wast new file mode 100644 index 00000000000..2b49017fe1a --- /dev/null +++ b/test/WasmSpec/testsuite/f64.store64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param f64) (f64.store64 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/f64.wast b/test/WasmSpec/testsuite/f64.wast new file mode 100644 index 00000000000..26a058a253b --- /dev/null +++ b/test/WasmSpec/testsuite/f64.wast @@ -0,0 +1,2414 @@ +;; Test all the f64 operators on major boundary values and all special +;; values (except comparison operators, which are tested in f64_cmp.wast). + +(module + (func (export "add") (param $x f64) (param $y f64) (result f64) (f64.add (get_local $x) (get_local $y))) + (func (export "sub") (param $x f64) (param $y f64) (result f64) (f64.sub (get_local $x) (get_local $y))) + (func (export "mul") (param $x f64) (param $y f64) (result f64) (f64.mul (get_local $x) (get_local $y))) + (func (export "div") (param $x f64) (param $y f64) (result f64) (f64.div (get_local $x) (get_local $y))) + (func (export "sqrt") (param $x f64) (result f64) (f64.sqrt (get_local $x))) + (func (export "min") (param $x f64) (param $y f64) (result f64) (f64.min (get_local $x) (get_local $y))) + (func (export "max") (param $x f64) (param $y f64) (result f64) (f64.max (get_local $x) (get_local $y))) + (func (export "ceil") (param $x f64) (result f64) (f64.ceil (get_local $x))) + (func (export "floor") (param $x f64) (result f64) (f64.floor (get_local $x))) + (func (export "trunc") (param $x f64) (result f64) (f64.trunc (get_local $x))) + (func (export "nearest") (param $x f64) (result f64) (f64.nearest (get_local $x))) + (func (export "abs") (param $x f64) (result f64) (f64.abs (get_local $x))) + (func (export "neg") (param $x f64) (result f64) (f64.neg (get_local $x))) + (func (export "copysign") (param $x f64) (param $y f64) (result f64) (f64.copysign (get_local $x) (get_local $y))) +) + +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1021)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1021)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1.8p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1.8p+0)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1.8p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1.8p+0)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+1)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+1)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.b21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.721fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.721fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.b21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.d21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.521fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.521fb54442d18p+2)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.d21fb54442d18p+2)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x1p+0)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return_nan (invoke "add" (f64.const -infinity) (f64.const infinity))) +(assert_return_nan (invoke "add" (f64.const infinity) (f64.const -infinity))) +(assert_return (invoke "add" (f64.const infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x0p+0)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x0p+0)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x1p-1022)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x1p-1)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x1p-1)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x1p+0)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x1p+0)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const infinity)) (f64.const -nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const -infinity)) (f64.const nan)) +(assert_return (invoke "add" (f64.const nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "add" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return_nan (invoke "add" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "add" (f64.const nan) (f64.const -nan))) +(assert_return (invoke "add" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000002p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000002p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.fffffffffffffp-1022)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.fffffffffffffp-1022)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.fffffffffffffp-1022)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.0000000000001p-1022)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1021)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1021)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1.8p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1.8p+0)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.721fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.b21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.b21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.721fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1.8p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1.8p+0)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+1)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+1)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.521fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.d21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.d21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.521fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.721fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.b21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.b21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.721fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.521fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.d21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.d21fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.521fb54442d18p+2)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+3)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+3)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x1p+0)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return_nan (invoke "sub" (f64.const -infinity) (f64.const -infinity))) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -infinity)) (f64.const infinity)) +(assert_return_nan (invoke "sub" (f64.const infinity) (f64.const infinity))) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x0p+0)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x0p+0)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x1p-1022)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x1p-1)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x1p-1)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x1p+0)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x1p+0)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const infinity)) (f64.const -nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const -infinity)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "sub" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return_nan (invoke "sub" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "sub" (f64.const nan) (f64.const -nan))) +(assert_return (invoke "sub" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return_nan (invoke "mul" (f64.const -0x0p+0) (f64.const -infinity))) +(assert_return_nan (invoke "mul" (f64.const -0x0p+0) (f64.const infinity))) +(assert_return_nan (invoke "mul" (f64.const 0x0p+0) (f64.const -infinity))) +(assert_return_nan (invoke "mul" (f64.const 0x0p+0) (f64.const infinity))) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x0.8p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-2)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-2)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-2)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-2)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000006p-1022)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p-1020)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+1)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.3bd3cc9be45dep+5)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.3bd3cc9be45dep+5)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp-51)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1022)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return_nan (invoke "mul" (f64.const -infinity) (f64.const -0x0p+0))) +(assert_return_nan (invoke "mul" (f64.const -infinity) (f64.const 0x0p+0))) +(assert_return_nan (invoke "mul" (f64.const infinity) (f64.const -0x0p+0))) +(assert_return_nan (invoke "mul" (f64.const infinity) (f64.const 0x0p+0))) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x0p+0)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x0p+0)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x1p-1022)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x1p-1)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x1p-1)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x1p+0)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x1p+0)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const infinity)) (f64.const -nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const -infinity)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "mul" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return_nan (invoke "mul" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "mul" (f64.const nan) (f64.const -nan))) +(assert_return (invoke "mul" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return_nan (invoke "div" (f64.const -0x0p+0) (f64.const -0x0p+0))) +(assert_return_nan (invoke "div" (f64.const -0x0p+0) (f64.const 0x0p+0))) +(assert_return_nan (invoke "div" (f64.const 0x0p+0) (f64.const -0x0p+0))) +(assert_return_nan (invoke "div" (f64.const 0x0p+0) (f64.const 0x0p+0))) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x0p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-52)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-52)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-52)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-52)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000002p-1022)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000002p-1022)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000002p-1022)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000002p-1022)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+52)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+52)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+52)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+52)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1021)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1021)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1021)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1021)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.28be60db9391p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.28be60db9391p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x1p-1022) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p+1021)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p+1021)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p+1021)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p+1021)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-4)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-4)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.2p-1022)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.2p-1022)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x1p-1) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+1022)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+1022)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+1022)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+1022)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+1)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+1)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+1)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+1)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c883p-3)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c883p-3)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.4p-1022)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.4p-1022)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x1p+0) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+3)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+3)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+3)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+3)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d19p-1022)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d19p-1022)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.45f306dc9c882p+1021)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.45f306dc9c882p+1021)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "div" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return_nan (invoke "div" (f64.const -infinity) (f64.const -infinity))) +(assert_return_nan (invoke "div" (f64.const -infinity) (f64.const infinity))) +(assert_return_nan (invoke "div" (f64.const infinity) (f64.const -infinity))) +(assert_return_nan (invoke "div" (f64.const infinity) (f64.const infinity))) +(assert_return (invoke "div" (f64.const -infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const infinity) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const infinity) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x0p+0)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x0p+0)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x1p-1022)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x1p-1)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x1p-1)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x1p+0)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x1p+0)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const infinity)) (f64.const -nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const -infinity)) (f64.const nan)) +(assert_return (invoke "div" (f64.const nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "div" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return_nan (invoke "div" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "div" (f64.const nan) (f64.const -nan))) +(assert_return (invoke "div" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x0p+0) (f64.const infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x0p+0) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return_nan (invoke "min" (f64.const -0x0p+0) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x0p+0) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x0p+0) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x0p+0) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const 0x0.0000000000001p-1022)) +(assert_return_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const 0x1p-1022)) +(assert_return_nan (invoke "min" (f64.const -0x1p-1022) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x1p-1022) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p-1022) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p-1022) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x1p-1) (f64.const infinity)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x1p-1) (f64.const infinity)) (f64.const 0x1p-1)) +(assert_return_nan (invoke "min" (f64.const -0x1p-1) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x1p-1) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p-1) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p-1) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x1p+0) (f64.const infinity)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x1p+0) (f64.const infinity)) (f64.const 0x1p+0)) +(assert_return_nan (invoke "min" (f64.const -0x1p+0) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x1p+0) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p+0) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x1p+0) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const -infinity) (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "min" (f64.const infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "min" (f64.const -infinity) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -infinity) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const infinity) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const infinity) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x0p+0))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x0p+0))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x0p+0))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x0p+0))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x1p-1022))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x1p-1022))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x1p-1022))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x1p-1022))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x1p-1))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x1p-1))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x1p-1))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x1p-1))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x1p+0))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x1p+0))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x1p+0))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x1p+0))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -infinity))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const infinity))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -infinity))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const infinity))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const -nan))) +(assert_return_nan (invoke "min" (f64.const nan) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x0p+0) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x0p+0) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x0p+0) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x0p+0) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x0.0000000000001p-1022) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x0.0000000000001p-1022) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x1p-1022) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x1p-1022) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p-1022) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p-1022) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p-1) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p-1) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x1p-1) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x1p-1) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p-1) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p-1) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1p+0) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x1p+0) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x1p+0) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p+0) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x1p+0) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x1.921fb54442d18p+2) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x1.921fb54442d18p+2) (f64.const nan))) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan))) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x0p+0)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x1p-1)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x1p+0)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "max" (f64.const -infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "max" (f64.const infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return_nan (invoke "max" (f64.const -infinity) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -infinity) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const infinity) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const infinity) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x0p+0))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x0p+0))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x0p+0))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x0p+0))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x0.0000000000001p-1022))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x0.0000000000001p-1022))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x0.0000000000001p-1022))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x0.0000000000001p-1022))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x1p-1022))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x1p-1022))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x1p-1022))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x1p-1022))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x1p-1))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x1p-1))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x1p-1))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x1p-1))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x1p+0))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x1p+0))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x1p+0))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x1p+0))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x1.921fb54442d18p+2))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -infinity))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const infinity))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -infinity))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const infinity))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const -nan) (f64.const nan))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const -nan))) +(assert_return_nan (invoke "max" (f64.const nan) (f64.const nan))) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -infinity)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const infinity)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const -nan)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0p+0) (f64.const nan)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const -nan)) (f64.const -0x0p+0)) +(assert_return (invoke "copysign" (f64.const 0x0p+0) (f64.const nan)) (f64.const 0x0p+0)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -infinity)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const infinity)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -infinity)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const infinity)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const -nan)) (f64.const -0x1p-1022)) +(assert_return (invoke "copysign" (f64.const 0x1p-1022) (f64.const nan)) (f64.const 0x1p-1022)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x0p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x0p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1p+0)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1p+0)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -infinity)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const infinity)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -infinity)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const infinity)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const -nan)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p-1) (f64.const nan)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const -nan)) (f64.const -0x1p-1)) +(assert_return (invoke "copysign" (f64.const 0x1p-1) (f64.const nan)) (f64.const 0x1p-1)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x0p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x0p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -infinity)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const infinity)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -infinity)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const infinity)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const -nan)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1p+0) (f64.const nan)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const -nan)) (f64.const -0x1p+0)) +(assert_return (invoke "copysign" (f64.const 0x1p+0) (f64.const nan)) (f64.const 0x1p+0)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x0p+0)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x0p+0)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x1p-1022)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x1p-1022)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x1p-1)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x1p-1)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x1p+0)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x1p+0)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const -nan)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const -infinity) (f64.const nan)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const -nan)) (f64.const -infinity)) +(assert_return (invoke "copysign" (f64.const infinity) (f64.const nan)) (f64.const infinity)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x0p+0)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x0p+0)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p-1022)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p-1022)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p-1)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p-1)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1p+0)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1p+0)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -infinity)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const infinity)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const -nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "copysign" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "sqrt" (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "sqrt" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return_nan (invoke "sqrt" (f64.const -0x0.0000000000001p-1022))) +(assert_return (invoke "sqrt" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p-537)) +(assert_return_nan (invoke "sqrt" (f64.const -0x1p-1022))) +(assert_return (invoke "sqrt" (f64.const 0x1p-1022)) (f64.const 0x1p-511)) +(assert_return_nan (invoke "sqrt" (f64.const -0x1p-1))) +(assert_return (invoke "sqrt" (f64.const 0x1p-1)) (f64.const 0x1.6a09e667f3bcdp-1)) +(assert_return_nan (invoke "sqrt" (f64.const -0x1p+0))) +(assert_return (invoke "sqrt" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return_nan (invoke "sqrt" (f64.const -0x1.921fb54442d18p+2))) +(assert_return (invoke "sqrt" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.40d931ff62705p+1)) +(assert_return_nan (invoke "sqrt" (f64.const -0x1.fffffffffffffp+1023))) +(assert_return (invoke "sqrt" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+511)) +(assert_return_nan (invoke "sqrt" (f64.const -infinity))) +(assert_return (invoke "sqrt" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "sqrt" (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "sqrt" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "floor" (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "floor" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "floor" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "floor" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "floor" (f64.const -0x1p-1022)) (f64.const -0x1p+0)) +(assert_return (invoke "floor" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "floor" (f64.const -0x1p-1)) (f64.const -0x1p+0)) +(assert_return (invoke "floor" (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "floor" (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "floor" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "floor" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.cp+2)) +(assert_return (invoke "floor" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) +(assert_return (invoke "floor" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "floor" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "floor" (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "floor" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "floor" (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "floor" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "ceil" (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "ceil" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "ceil" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "ceil" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "ceil" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "ceil" (f64.const 0x1p-1022)) (f64.const 0x1p+0)) +(assert_return (invoke "ceil" (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "ceil" (f64.const 0x1p-1)) (f64.const 0x1p+0)) +(assert_return (invoke "ceil" (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "ceil" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "ceil" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) +(assert_return (invoke "ceil" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.cp+2)) +(assert_return (invoke "ceil" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "ceil" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "ceil" (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "ceil" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "ceil" (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "ceil" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "trunc" (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "trunc" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "trunc" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "trunc" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "trunc" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "trunc" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "trunc" (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "trunc" (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "trunc" (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "trunc" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "trunc" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) +(assert_return (invoke "trunc" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) +(assert_return (invoke "trunc" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "trunc" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "trunc" (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "trunc" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "trunc" (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "trunc" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "nearest" (f64.const -0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "nearest" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "nearest" (f64.const -0x0.0000000000001p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "nearest" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "nearest" (f64.const -0x1p-1022)) (f64.const -0x0p+0)) +(assert_return (invoke "nearest" (f64.const 0x1p-1022)) (f64.const 0x0p+0)) +(assert_return (invoke "nearest" (f64.const -0x1p-1)) (f64.const -0x0p+0)) +(assert_return (invoke "nearest" (f64.const 0x1p-1)) (f64.const 0x0p+0)) +(assert_return (invoke "nearest" (f64.const -0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "nearest" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "nearest" (f64.const -0x1.921fb54442d18p+2)) (f64.const -0x1.8p+2)) +(assert_return (invoke "nearest" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.8p+2)) +(assert_return (invoke "nearest" (f64.const -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "nearest" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "nearest" (f64.const -infinity)) (f64.const -infinity)) +(assert_return (invoke "nearest" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "nearest" (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "nearest" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "abs" (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "abs" (f64.const 0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "abs" (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "abs" (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "abs" (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "abs" (f64.const 0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "abs" (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "abs" (f64.const 0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "abs" (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "abs" (f64.const 0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "abs" (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "abs" (f64.const 0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "abs" (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "abs" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "abs" (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "abs" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "abs" (f64.const -nan)) (f64.const nan)) +(assert_return (invoke "abs" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "neg" (f64.const -0x0p+0)) (f64.const 0x0p+0)) +(assert_return (invoke "neg" (f64.const 0x0p+0)) (f64.const -0x0p+0)) +(assert_return (invoke "neg" (f64.const -0x0.0000000000001p-1022)) (f64.const 0x0.0000000000001p-1022)) +(assert_return (invoke "neg" (f64.const 0x0.0000000000001p-1022)) (f64.const -0x0.0000000000001p-1022)) +(assert_return (invoke "neg" (f64.const -0x1p-1022)) (f64.const 0x1p-1022)) +(assert_return (invoke "neg" (f64.const 0x1p-1022)) (f64.const -0x1p-1022)) +(assert_return (invoke "neg" (f64.const -0x1p-1)) (f64.const 0x1p-1)) +(assert_return (invoke "neg" (f64.const 0x1p-1)) (f64.const -0x1p-1)) +(assert_return (invoke "neg" (f64.const -0x1p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "neg" (f64.const 0x1p+0)) (f64.const -0x1p+0)) +(assert_return (invoke "neg" (f64.const -0x1.921fb54442d18p+2)) (f64.const 0x1.921fb54442d18p+2)) +(assert_return (invoke "neg" (f64.const 0x1.921fb54442d18p+2)) (f64.const -0x1.921fb54442d18p+2)) +(assert_return (invoke "neg" (f64.const -0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) +(assert_return (invoke "neg" (f64.const 0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) +(assert_return (invoke "neg" (f64.const -infinity)) (f64.const infinity)) +(assert_return (invoke "neg" (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "neg" (f64.const -nan)) (f64.const nan)) +(assert_return (invoke "neg" (f64.const nan)) (f64.const -nan)) diff --git a/test/WasmSpec/testsuite/f64_cmp.wast b/test/WasmSpec/testsuite/f64_cmp.wast new file mode 100644 index 00000000000..f4958b8f98b --- /dev/null +++ b/test/WasmSpec/testsuite/f64_cmp.wast @@ -0,0 +1,1956 @@ +;; Test all the f64 comparison operators on major boundary values and all +;; special values. + +(module + (func (export "eq") (param $x f64) (param $y f64) (result i32) (f64.eq (get_local $x) (get_local $y))) + (func (export "ne") (param $x f64) (param $y f64) (result i32) (f64.ne (get_local $x) (get_local $y))) + (func (export "lt") (param $x f64) (param $y f64) (result i32) (f64.lt (get_local $x) (get_local $y))) + (func (export "le") (param $x f64) (param $y f64) (result i32) (f64.le (get_local $x) (get_local $y))) + (func (export "gt") (param $x f64) (param $y f64) (result i32) (f64.gt (get_local $x) (get_local $y))) + (func (export "ge") (param $x f64) (param $y f64) (result i32) (f64.ge (get_local $x) (get_local $y))) +) + +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const -nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "eq" (f64.const nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0p+0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0p+0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p-1) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p-1) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1p+0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1p+0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -infinity) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const infinity) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const -nan) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const -nan)) (i32.const 1)) +(assert_return (invoke "ne" (f64.const nan) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const -nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "lt" (f64.const nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const -nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "le" (f64.const nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const -nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "gt" (f64.const nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x0.0000000000001p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1022) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p-1) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1p+0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.921fb54442d18p+2) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const 0x1.fffffffffffffp+1023) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x0p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x0.0000000000001p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x1p-1022)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x1p-1)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x1p+0)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x1.921fb54442d18p+2)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const infinity)) (i32.const 1)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const infinity) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x0p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p-1022)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p-1)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1p+0)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1.921fb54442d18p+2)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const 0x1.fffffffffffffp+1023)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const infinity)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const -nan) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const -nan)) (i32.const 0)) +(assert_return (invoke "ge" (f64.const nan) (f64.const nan)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/fac.wast b/test/WasmSpec/testsuite/fac.wast new file mode 100644 index 00000000000..be587520cae --- /dev/null +++ b/test/WasmSpec/testsuite/fac.wast @@ -0,0 +1,85 @@ +(module + ;; Recursive factorial + (func (export "fac-rec") (param i64) (result i64) + (if i64 (i64.eq (get_local 0) (i64.const 0)) + (i64.const 1) + (i64.mul (get_local 0) (call 0 (i64.sub (get_local 0) (i64.const 1)))) + ) + ) + + ;; Recursive factorial named + (func $fac-rec-named (export "fac-rec-named") (param $n i64) (result i64) + (if i64 (i64.eq (get_local $n) (i64.const 0)) + (i64.const 1) + (i64.mul + (get_local $n) + (call $fac-rec-named (i64.sub (get_local $n) (i64.const 1))) + ) + ) + ) + + ;; Iterative factorial + (func (export "fac-iter") (param i64) (result i64) + (local i64 i64) + (set_local 1 (get_local 0)) + (set_local 2 (i64.const 1)) + (block + (loop + (if + (i64.eq (get_local 1) (i64.const 0)) + (br 2) + (block + (set_local 2 (i64.mul (get_local 1) (get_local 2))) + (set_local 1 (i64.sub (get_local 1) (i64.const 1))) + ) + ) + (br 0) + ) + ) + (get_local 2) + ) + + ;; Iterative factorial named + (func (export "fac-iter-named") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + (set_local $i (get_local $n)) + (set_local $res (i64.const 1)) + (block $done + (loop $loop + (if + (i64.eq (get_local $i) (i64.const 0)) + (br $done) + (block + (set_local $res (i64.mul (get_local $i) (get_local $res))) + (set_local $i (i64.sub (get_local $i) (i64.const 1))) + ) + ) + (br $loop) + ) + ) + (get_local $res) + ) + + ;; Optimized factorial. + (func (export "fac-opt") (param i64) (result i64) + (local i64) + (set_local 1 (i64.const 1)) + (block + (br_if 0 (i64.lt_s (get_local 0) (i64.const 2))) + (loop + (set_local 1 (i64.mul (get_local 1) (get_local 0))) + (set_local 0 (i64.add (get_local 0) (i64.const -1))) + (br_if 0 (i64.gt_s (get_local 0) (i64.const 1))) + ) + ) + (get_local 1) + ) +) + +(assert_return (invoke "fac-rec" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-iter" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-rec-named" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-iter-named" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-opt" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_trap (invoke "fac-rec" (i64.const 1073741824)) "call stack exhausted") diff --git a/test/WasmSpec/testsuite/float_exprs.wast b/test/WasmSpec/testsuite/float_exprs.wast new file mode 100644 index 00000000000..ad8f769f0de --- /dev/null +++ b/test/WasmSpec/testsuite/float_exprs.wast @@ -0,0 +1,1979 @@ +;; Test interesting floating-point "expressions". These tests contain code +;; patterns which tempt common value-changing optimizations. + +;; Test that x*y+z is not done with x87-style intermediate precision. + +(module + (func (export "f64.no_contraction") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.add (f64.mul (get_local $x) (get_local $y)) (get_local $z))) +) + +(assert_return (invoke "f64.no_contraction" (f64.const -0x1.9e87ce14273afp-103) (f64.const 0x1.2515ad31db63ep+664) (f64.const 0x1.868c6685e6185p+533)) (f64.const -0x1.da94885b11493p+561)) +(assert_return (invoke "f64.no_contraction" (f64.const 0x1.da21c460a6f44p+52) (f64.const 0x1.60859d2e7714ap-321) (f64.const 0x1.e63f1b7b660e1p-302)) (f64.const 0x1.4672f256d1794p-268)) +(assert_return (invoke "f64.no_contraction" (f64.const -0x1.f3eaf43f327cp-594) (f64.const 0x1.dfcc009906b57p+533) (f64.const 0x1.5984e03c520a1p-104)) (f64.const -0x1.d4797fb3db166p-60)) +(assert_return (invoke "f64.no_contraction" (f64.const 0x1.dab6c772cb2e2p-69) (f64.const -0x1.d761663679a84p-101) (f64.const 0x1.f22f92c843226p-218)) (f64.const -0x1.b50d72dfcef68p-169)) +(assert_return (invoke "f64.no_contraction" (f64.const -0x1.87c5def1e4d3dp-950) (f64.const -0x1.50cd5dab2207fp+935) (f64.const 0x1.e629bd0da8c5dp-54)) (f64.const 0x1.01b6feb4e78a7p-14)) + +;; Test that x*y+z is not folded to fma. + +(module + (func (export "f32.no_fma") (param $x f32) (param $y f32) (param $z f32) (result f32) + (f32.add (f32.mul (get_local $x) (get_local $y)) (get_local $z))) + (func (export "f64.no_fma") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.add (f64.mul (get_local $x) (get_local $y)) (get_local $z))) +) + +(assert_return (invoke "f32.no_fma" (f32.const 0x1.a78402p+124) (f32.const 0x1.cf8548p-23) (f32.const 0x1.992adap+107)) (f32.const 0x1.a5262cp+107)) +(assert_return (invoke "f32.no_fma" (f32.const 0x1.ed15a4p-28) (f32.const -0x1.613c72p-50) (f32.const 0x1.4757bp-88)) (f32.const -0x1.5406b8p-77)) +(assert_return (invoke "f32.no_fma" (f32.const 0x1.ae63a2p+37) (f32.const 0x1.b3a59ap-13) (f32.const 0x1.c16918p+10)) (f32.const 0x1.6e385cp+25)) +(assert_return (invoke "f32.no_fma" (f32.const 0x1.2a77fap-8) (f32.const -0x1.bb7356p+22) (f32.const -0x1.32be2ap+1)) (f32.const -0x1.0286d4p+15)) +(assert_return (invoke "f32.no_fma" (f32.const 0x1.298fb6p+126) (f32.const -0x1.03080cp-70) (f32.const -0x1.418de6p+34)) (f32.const -0x1.2d15c6p+56)) +(assert_return (invoke "f64.no_fma" (f64.const 0x1.ac357ff46eed4p+557) (f64.const 0x1.852c01a5e7297p+430) (f64.const -0x1.05995704eda8ap+987)) (f64.const 0x1.855d905d338ep+987)) +(assert_return (invoke "f64.no_fma" (f64.const 0x1.e2fd6bf32010cp+749) (f64.const 0x1.01c2238d405e4p-130) (f64.const 0x1.2ecc0db4b9f94p+573)) (f64.const 0x1.e64eb07e063bcp+619)) +(assert_return (invoke "f64.no_fma" (f64.const 0x1.92b7c7439ede3p-721) (f64.const -0x1.6aa97586d3de6p+1011) (f64.const 0x1.8de4823f6358ap+237)) (f64.const -0x1.1d4139fd20ecdp+291)) +(assert_return (invoke "f64.no_fma" (f64.const -0x1.466d30bddb453p-386) (f64.const -0x1.185a4d739c7aap+443) (f64.const 0x1.5f9c436fbfc7bp+55)) (f64.const 0x1.bd61a350fcc1ap+57)) +(assert_return (invoke "f64.no_fma" (f64.const 0x1.7e2c44058a799p+52) (f64.const 0x1.c73b71765b8b2p+685) (f64.const -0x1.16c641df0b108p+690)) (f64.const 0x1.53ccb53de0bd1p+738)) + +;; Test that x+0.0 is not folded to x. +;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". + +(module + (func (export "f32.no_fold_add_zero") (param $x f32) (result f32) + (f32.add (get_local $x) (f32.const 0.0))) + (func (export "f64.no_fold_add_zero") (param $x f64) (result f64) + (f64.add (get_local $x) (f64.const 0.0))) +) + +(assert_return (invoke "f32.no_fold_add_zero" (f32.const -0.0)) (f32.const 0.0)) +(assert_return (invoke "f64.no_fold_add_zero" (f64.const -0.0)) (f64.const 0.0)) +(assert_return (invoke "f32.no_fold_add_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_add_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that 0.0 - x is not folded to -x. + +(module + (func (export "f32.no_fold_zero_sub") (param $x f32) (result f32) + (f32.sub (f32.const 0.0) (get_local $x))) + (func (export "f64.no_fold_zero_sub") (param $x f64) (result f64) + (f64.sub (f64.const 0.0) (get_local $x))) +) + +(assert_return (invoke "f32.no_fold_zero_sub" (f32.const 0.0)) (f32.const 0.0)) +(assert_return (invoke "f64.no_fold_zero_sub" (f64.const 0.0)) (f64.const 0.0)) +(assert_return (invoke "f32.no_fold_zero_sub" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_zero_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x - 0.0 is not folded to x. + +(module + (func (export "f32.no_fold_sub_zero") (param $x f32) (result f32) + (f32.sub (get_local $x) (f32.const 0.0))) + (func (export "f64.no_fold_sub_zero") (param $x f64) (result f64) + (f64.sub (get_local $x) (f64.const 0.0))) +) + +(assert_return (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x*0.0 is not folded to 0.0. + +(module + (func (export "f32.no_fold_mul_zero") (param $x f32) (result f32) + (f32.mul (get_local $x) (f32.const 0.0))) + (func (export "f64.no_fold_mul_zero") (param $x f64) (result f64) + (f64.mul (get_local $x) (f64.const 0.0))) +) + +(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -0.0)) (f32.const -0.0)) +(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -1.0)) (f32.const -0.0)) +(assert_return (invoke "f32.no_fold_mul_zero" (f32.const -2.0)) (f32.const -0.0)) +(assert_return (invoke "f32.no_fold_mul_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -0.0)) (f64.const -0.0)) +(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -1.0)) (f64.const -0.0)) +(assert_return (invoke "f64.no_fold_mul_zero" (f64.const -2.0)) (f64.const -0.0)) +(assert_return (invoke "f64.no_fold_mul_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x*1.0 is not folded to x. +;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". + +(module + (func (export "f32.no_fold_mul_one") (param $x f32) (result f32) + (f32.mul (get_local $x) (f32.const 1.0))) + (func (export "f64.no_fold_mul_one") (param $x f64) (result f64) + (f64.mul (get_local $x) (f64.const 1.0))) +) + +(assert_return (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that 0.0/x is not folded to 0.0. + +(module + (func (export "f32.no_fold_zero_div") (param $x f32) (result f32) + (f32.div (f32.const 0.0) (get_local $x))) + (func (export "f64.no_fold_zero_div") (param $x f64) (result f64) + (f64.div (f64.const 0.0) (get_local $x))) +) + +(assert_return_nan (invoke "f32.no_fold_zero_div" (f32.const 0.0))) +(assert_return_nan (invoke "f32.no_fold_zero_div" (f32.const -0.0))) +(assert_return (invoke "f32.no_fold_zero_div" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f32.no_fold_zero_div" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return_nan (invoke "f64.no_fold_zero_div" (f64.const 0.0))) +(assert_return_nan (invoke "f64.no_fold_zero_div" (f64.const -0.0))) +(assert_return (invoke "f64.no_fold_zero_div" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.no_fold_zero_div" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x/1.0 is not folded to x. + +(module + (func (export "f32.no_fold_div_one") (param $x f32) (result f32) + (f32.div (get_local $x) (f32.const 1.0))) + (func (export "f64.no_fold_div_one") (param $x f64) (result f64) + (f64.div (get_local $x) (f64.const 1.0))) +) + +(assert_return (invoke "f32.no_fold_div_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x/-1.0 is not folded to -x. + +(module + (func (export "f32.no_fold_div_neg1") (param $x f32) (result f32) + (f32.div (get_local $x) (f32.const -1.0))) + (func (export "f64.no_fold_div_neg1") (param $x f64) (result f64) + (f64.div (get_local $x) (f64.const -1.0))) +) + +(assert_return (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that -0.0 - x is not folded to -x. + +(module + (func (export "f32.no_fold_neg0_sub") (param $x f32) (result f32) + (f32.sub (f32.const -0.0) (get_local $x))) + (func (export "f64.no_fold_neg0_sub") (param $x f64) (result f64) + (f64.sub (f64.const -0.0) (get_local $x))) +) + +(assert_return (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that -1.0 * x is not folded to -x. + +(module + (func (export "f32.no_fold_neg1_mul") (param $x f32) (result f32) + (f32.mul (f32.const -1.0) (get_local $x))) + (func (export "f64.no_fold_neg1_mul") (param $x f64) (result f64) + (f64.mul (f64.const -1.0) (get_local $x))) +) + +(assert_return (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x == x is not folded to true. + +(module + (func (export "f32.no_fold_eq_self") (param $x f32) (result i32) + (f32.eq (get_local $x) (get_local $x))) + (func (export "f64.no_fold_eq_self") (param $x f64) (result i32) + (f64.eq (get_local $x) (get_local $x))) +) + +(assert_return (invoke "f32.no_fold_eq_self" (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_fold_eq_self" (f64.const nan)) (i32.const 0)) + +;; Test that x != x is not folded to false. + +(module + (func (export "f32.no_fold_ne_self") (param $x f32) (result i32) + (f32.ne (get_local $x) (get_local $x))) + (func (export "f64.no_fold_ne_self") (param $x f64) (result i32) + (f64.ne (get_local $x) (get_local $x))) +) + +(assert_return (invoke "f32.no_fold_ne_self" (f32.const nan)) (i32.const 1)) +(assert_return (invoke "f64.no_fold_ne_self" (f64.const nan)) (i32.const 1)) + +;; Test that x - x is not folded to 0.0. + +(module + (func (export "f32.no_fold_sub_self") (param $x f32) (result f32) + (f32.sub (get_local $x) (get_local $x))) + (func (export "f64.no_fold_sub_self") (param $x f64) (result f64) + (f64.sub (get_local $x) (get_local $x))) +) + +(assert_return_nan (invoke "f32.no_fold_sub_self" (f32.const infinity))) +(assert_return (invoke "f32.no_fold_sub_self" (f32.const nan)) (f32.const nan)) +(assert_return_nan (invoke "f64.no_fold_sub_self" (f64.const infinity))) +(assert_return (invoke "f64.no_fold_sub_self" (f64.const nan)) (f64.const nan)) + +;; Test that x/3 is not folded to x*(1/3). + +(module + (func (export "f32.no_fold_div_3") (param $x f32) (result f32) + (f32.div (get_local $x) (f32.const 3.0))) + (func (export "f64.no_fold_div_3") (param $x f64) (result f64) + (f64.div (get_local $x) (f64.const 3.0))) +) + +(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.359c26p+50)) (f32.const -0x1.9cd032p+48)) +(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.e45646p+93)) (f32.const -0x1.42e42ep+92)) +(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.2a3916p-83)) (f32.const -0x1.8da172p-85)) +(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.1f8b38p-124)) (f32.const -0x1.7f644ap-126)) +(assert_return (invoke "f32.no_fold_div_3" (f32.const -0x1.d64f64p-56)) (f32.const -0x1.398a42p-57)) +(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.a8a88d29e2cc3p+632)) (f64.const -0x1.1b1b08c69732dp+631)) +(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.bcf52dc950972p-167)) (f64.const -0x1.28a373db8b0f7p-168)) +(assert_return (invoke "f64.no_fold_div_3" (f64.const 0x1.bd3c0d989f7a4p-874)) (f64.const 0x1.28d2b3bb14fc3p-875)) +(assert_return (invoke "f64.no_fold_div_3" (f64.const -0x1.0138bf530a53cp+1007)) (f64.const -0x1.56f6546eb86fbp+1005)) +(assert_return (invoke "f64.no_fold_div_3" (f64.const 0x1.052b87f9d794dp+415)) (f64.const 0x1.5c3a0aa274c67p+413)) + +;; Test that (x*z)+(y*z) is not folded to (x+y)*z + +(module + (func (export "f32.no_factor") (param $x f32) (param $y f32) (param $z f32) (result f32) + (f32.add (f32.mul (get_local $x) (get_local $z)) (f32.mul (get_local $y) (get_local $z)))) + (func (export "f64.no_factor") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.add (f64.mul (get_local $x) (get_local $z)) (f64.mul (get_local $y) (get_local $z)))) +) + +(assert_return (invoke "f32.no_factor" (f32.const -0x1.4e2352p+40) (f32.const -0x1.842e2cp+49) (f32.const 0x1.eea602p+59)) (f32.const -0x1.77a7dp+109)) +(assert_return (invoke "f32.no_factor" (f32.const -0x1.b4e7f6p-6) (f32.const 0x1.8c990cp-5) (f32.const -0x1.70cc02p-9)) (f32.const -0x1.00a342p-14)) +(assert_return (invoke "f32.no_factor" (f32.const -0x1.06722ep-41) (f32.const 0x1.eed3cep-64) (f32.const 0x1.5c5558p+123)) (f32.const -0x1.651aaep+82)) +(assert_return (invoke "f32.no_factor" (f32.const -0x1.f8c6a4p-64) (f32.const 0x1.08c806p-83) (f32.const 0x1.b5ceccp+118)) (f32.const -0x1.afa15p+55)) +(assert_return (invoke "f32.no_factor" (f32.const -0x1.3aaa1ep-84) (f32.const 0x1.c6d5eep-71) (f32.const 0x1.8d2924p+20)) (f32.const 0x1.60c9cep-50)) +(assert_return (invoke "f64.no_factor" (f64.const 0x1.3adeda9144977p-424) (f64.const 0x1.c15af887049e1p-462) (f64.const -0x1.905179c4c4778p-225)) (f64.const -0x1.ec606bcb87b1ap-649)) +(assert_return (invoke "f64.no_factor" (f64.const 0x1.3c84821c1d348p-662) (f64.const -0x1.4ffd4c77ad037p-1009) (f64.const -0x1.dd275335c6f4p-957)) (f64.const 0x0p+0)) +(assert_return (invoke "f64.no_factor" (f64.const -0x1.074f372347051p-334) (f64.const -0x1.aaeef661f4c96p-282) (f64.const -0x1.9bd34abe8696dp+479)) (f64.const 0x1.5767029593e2p+198)) +(assert_return (invoke "f64.no_factor" (f64.const -0x1.c4ded58a6f389p-289) (f64.const 0x1.ba6fdef5d59c9p-260) (f64.const -0x1.c1201c0470205p-253)) (f64.const -0x1.841ada2e0f184p-512)) +(assert_return (invoke "f64.no_factor" (f64.const 0x1.9d3688f8e375ap-608) (f64.const 0x1.bf91311588256p-579) (f64.const -0x1.1605a6b5d5ff8p+489)) (f64.const -0x1.e6118ca76af53p-90)) + +;; Test that (x+y)*z is not folded to (x*z)+(y*z) + +(module + (func (export "f32.no_distribute") (param $x f32) (param $y f32) (param $z f32) (result f32) + (f32.mul (f32.add (get_local $x) (get_local $y)) (get_local $z))) + (func (export "f64.no_distribute") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.mul (f64.add (get_local $x) (get_local $y)) (get_local $z))) +) + +(assert_return (invoke "f32.no_distribute" (f32.const -0x1.4e2352p+40) (f32.const -0x1.842e2cp+49) (f32.const 0x1.eea602p+59)) (f32.const -0x1.77a7d2p+109)) +(assert_return (invoke "f32.no_distribute" (f32.const -0x1.b4e7f6p-6) (f32.const 0x1.8c990cp-5) (f32.const -0x1.70cc02p-9)) (f32.const -0x1.00a34p-14)) +(assert_return (invoke "f32.no_distribute" (f32.const -0x1.06722ep-41) (f32.const 0x1.eed3cep-64) (f32.const 0x1.5c5558p+123)) (f32.const -0x1.651abp+82)) +(assert_return (invoke "f32.no_distribute" (f32.const -0x1.f8c6a4p-64) (f32.const 0x1.08c806p-83) (f32.const 0x1.b5ceccp+118)) (f32.const -0x1.afa14ep+55)) +(assert_return (invoke "f32.no_distribute" (f32.const -0x1.3aaa1ep-84) (f32.const 0x1.c6d5eep-71) (f32.const 0x1.8d2924p+20)) (f32.const 0x1.60c9ccp-50)) +(assert_return (invoke "f64.no_distribute" (f64.const 0x1.3adeda9144977p-424) (f64.const 0x1.c15af887049e1p-462) (f64.const -0x1.905179c4c4778p-225)) (f64.const -0x1.ec606bcb87b1bp-649)) +(assert_return (invoke "f64.no_distribute" (f64.const 0x1.3c84821c1d348p-662) (f64.const -0x1.4ffd4c77ad037p-1009) (f64.const -0x1.dd275335c6f4p-957)) (f64.const -0x0p+0)) +(assert_return (invoke "f64.no_distribute" (f64.const -0x1.074f372347051p-334) (f64.const -0x1.aaeef661f4c96p-282) (f64.const -0x1.9bd34abe8696dp+479)) (f64.const 0x1.5767029593e1fp+198)) +(assert_return (invoke "f64.no_distribute" (f64.const -0x1.c4ded58a6f389p-289) (f64.const 0x1.ba6fdef5d59c9p-260) (f64.const -0x1.c1201c0470205p-253)) (f64.const -0x1.841ada2e0f183p-512)) +(assert_return (invoke "f64.no_distribute" (f64.const 0x1.9d3688f8e375ap-608) (f64.const 0x1.bf91311588256p-579) (f64.const -0x1.1605a6b5d5ff8p+489)) (f64.const -0x1.e6118ca76af52p-90)) + +;; Test that x*(y/z) is not folded to (x*y)/z + +(module + (func (export "f32.no_regroup_div_mul") (param $x f32) (param $y f32) (param $z f32) (result f32) + (f32.mul (get_local $x) (f32.div (get_local $y) (get_local $z)))) + (func (export "f64.no_regroup_div_mul") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.mul (get_local $x) (f64.div (get_local $y) (get_local $z)))) +) + +(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.2d14a6p-115) (f32.const -0x1.575a6cp-64) (f32.const 0x1.5cee0ep-116)) (f32.const 0x1.2844cap-63)) +(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.454738p+91) (f32.const -0x1.b28a66p-115) (f32.const -0x1.f53908p+72)) (f32.const -0x0p+0)) +(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.6be56ep+16) (f32.const -0x1.b46fc6p-21) (f32.const -0x1.a51df6p-123)) (f32.const -0x1.792258p+118)) +(assert_return (invoke "f32.no_regroup_div_mul" (f32.const -0x1.c343f8p-94) (f32.const 0x1.e4d906p+73) (f32.const 0x1.be69f8p+68)) (f32.const -0x1.ea1df2p-89)) +(assert_return (invoke "f32.no_regroup_div_mul" (f32.const 0x1.c6ae76p+112) (f32.const 0x1.fc953cp+24) (f32.const -0x1.60b3e8p+71)) (f32.const -0x1.47d0eap+66)) +(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.3c04b815e30bp-423) (f64.const -0x1.379646fd98127p-119) (f64.const 0x1.bddb158506031p-642)) (f64.const -0x1.b9b3301f2dd2dp+99)) +(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.46b3a402f86d5p+337) (f64.const 0x1.6fbf1b9e1798dp-447) (f64.const -0x1.bd9704a5a6a06p+797)) (f64.const -0x0p+0)) +(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.6c9765bb4347fp-479) (f64.const 0x1.a4af42e34a141p+902) (f64.const 0x1.d2dde70eb68f9p-448)) (f64.const infinity)) +(assert_return (invoke "f64.no_regroup_div_mul" (f64.const -0x1.706023645be72p+480) (f64.const -0x1.6c229f7d9101dp+611) (f64.const -0x1.4d50fa68d3d9ep+836)) (f64.const -0x1.926fa3cacc651p+255)) +(assert_return (invoke "f64.no_regroup_div_mul" (f64.const 0x1.8cc63d8caf4c7p-599) (f64.const 0x1.8671ac4c35753p-878) (f64.const -0x1.ef35b1695e659p-838)) (f64.const -0x1.38d55f56406dp-639)) + +;; Test that (x*y)/z is not folded to x*(y/z) + +(module + (func (export "f32.no_regroup_mul_div") (param $x f32) (param $y f32) (param $z f32) (result f32) + (f32.div (f32.mul (get_local $x) (get_local $y)) (get_local $z))) + (func (export "f64.no_regroup_mul_div") (param $x f64) (param $y f64) (param $z f64) (result f64) + (f64.div (f64.mul (get_local $x) (get_local $y)) (get_local $z))) +) + +(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.2d14a6p-115) (f32.const -0x1.575a6cp-64) (f32.const 0x1.5cee0ep-116)) (f32.const 0x0p+0)) +(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.454738p+91) (f32.const -0x1.b28a66p-115) (f32.const -0x1.f53908p+72)) (f32.const -0x1.1a00e8p-96)) +(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.6be56ep+16) (f32.const -0x1.b46fc6p-21) (f32.const -0x1.a51df6p-123)) (f32.const -0x1.79225ap+118)) +(assert_return (invoke "f32.no_regroup_mul_div" (f32.const -0x1.c343f8p-94) (f32.const 0x1.e4d906p+73) (f32.const 0x1.be69f8p+68)) (f32.const -0x1.ea1df4p-89)) +(assert_return (invoke "f32.no_regroup_mul_div" (f32.const 0x1.c6ae76p+112) (f32.const 0x1.fc953cp+24) (f32.const -0x1.60b3e8p+71)) (f32.const -infinity)) +(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.3c04b815e30bp-423) (f64.const -0x1.379646fd98127p-119) (f64.const 0x1.bddb158506031p-642)) (f64.const -0x1.b9b3301f2dd2ep+99)) +(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.46b3a402f86d5p+337) (f64.const 0x1.6fbf1b9e1798dp-447) (f64.const -0x1.bd9704a5a6a06p+797)) (f64.const -0x1.0da0b6328e09p-907)) +(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.6c9765bb4347fp-479) (f64.const 0x1.a4af42e34a141p+902) (f64.const 0x1.d2dde70eb68f9p-448)) (f64.const 0x1.4886b6d9a9a79p+871)) +(assert_return (invoke "f64.no_regroup_mul_div" (f64.const -0x1.706023645be72p+480) (f64.const -0x1.6c229f7d9101dp+611) (f64.const -0x1.4d50fa68d3d9ep+836)) (f64.const -infinity)) +(assert_return (invoke "f64.no_regroup_mul_div" (f64.const 0x1.8cc63d8caf4c7p-599) (f64.const 0x1.8671ac4c35753p-878) (f64.const -0x1.ef35b1695e659p-838)) (f64.const -0x0p+0)) + +;; Test that x+y+z+w is not reassociated. + +(module + (func (export "f32.no_reassociate_add") (param $x f32) (param $y f32) (param $z f32) (param $w f32) (result f32) + (f32.add (f32.add (f32.add (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) + (func (export "f64.no_reassociate_add") (param $x f64) (param $y f64) (param $z f64) (param $w f64) (result f64) + (f64.add (f64.add (f64.add (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) +) + +(assert_return (invoke "f32.no_reassociate_add" (f32.const -0x1.5f7ddcp+44) (f32.const 0x1.854e1p+34) (f32.const -0x1.b2068cp+47) (f32.const -0x1.209692p+41)) (f32.const -0x1.e26c76p+47)) +(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.da3b78p-9) (f32.const -0x1.4312fap-7) (f32.const 0x1.0395e6p-4) (f32.const -0x1.6d5ea6p-7)) (f32.const 0x1.78b31ap-5)) +(assert_return (invoke "f32.no_reassociate_add" (f32.const -0x1.fdb93ap+34) (f32.const -0x1.b6fce6p+41) (f32.const 0x1.c131d8p+44) (f32.const 0x1.8835b6p+38)) (f32.const 0x1.8ff3a2p+44)) +(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.1739fcp+47) (f32.const 0x1.a4b186p+49) (f32.const -0x1.0c623cp+35) (f32.const 0x1.16a102p+51)) (f32.const 0x1.913ff6p+51)) +(assert_return (invoke "f32.no_reassociate_add" (f32.const 0x1.733cfap+108) (f32.const -0x1.38d30cp+108) (f32.const 0x1.2f5854p+105) (f32.const -0x1.ccb058p+94)) (f32.const 0x1.813716p+106)) +(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.697a4d9ff19a6p+841) (f64.const 0x1.b305466238397p+847) (f64.const 0x1.e0b2d9bfb4e72p+855) (f64.const -0x1.6e1f3ae2b06bbp+857)) (f64.const -0x1.eb0e5936f087ap+856)) +(assert_return (invoke "f64.no_reassociate_add" (f64.const 0x1.00ef6746b30e1p-543) (f64.const 0x1.cc1cfafdf3fe1p-544) (f64.const -0x1.f7726df3ecba6p-543) (f64.const -0x1.b26695f99d307p-594)) (f64.const -0x1.074892e3fad76p-547)) +(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.e807b3bd6d854p+440) (f64.const 0x1.cedae26c2c5fp+407) (f64.const -0x1.00ab6e1442541p+437) (f64.const 0x1.28538a55997bdp+397)) (f64.const -0x1.040e90bf871ebp+441)) +(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.ba2b6f35a2402p-317) (f64.const 0x1.ad1c3fea7cd9ep-307) (f64.const -0x1.93aace2bf1261p-262) (f64.const 0x1.9fddbe472847ep-260)) (f64.const 0x1.3af30abc2c01bp-260)) +(assert_return (invoke "f64.no_reassociate_add" (f64.const -0x1.ccb9c6092fb1dp+641) (f64.const -0x1.4b7c28c108244p+614) (f64.const 0x1.8a7cefef4bde1p+646) (f64.const -0x1.901b28b08b482p+644)) (f64.const 0x1.1810579194126p+646)) + +;; Test that x*y*z*w is not reassociated. + +(module + (func (export "f32.no_reassociate_mul") (param $x f32) (param $y f32) (param $z f32) (param $w f32) (result f32) + (f32.mul (f32.mul (f32.mul (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) + (func (export "f64.no_reassociate_mul") (param $x f64) (param $y f64) (param $z f64) (param $w f64) (result f64) + (f64.mul (f64.mul (f64.mul (get_local $x) (get_local $y)) (get_local $z)) (get_local $w))) +) + +(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.950ba8p-116) (f32.const 0x1.efdacep-33) (f32.const -0x1.5f9bcp+102) (f32.const 0x1.f04508p-56)) (f32.const -0x1.ff356ep-101)) +(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.5990aep-56) (f32.const -0x1.7dfb04p+102) (f32.const -0x1.4f774ap-125) (f32.const -0x1.595fe6p+70)) (f32.const -0x1.c7c8fcp-8)) +(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.6ad9a4p-48) (f32.const -0x1.9138aap+55) (f32.const -0x1.4a774ep-40) (f32.const 0x1.1ff08p+76)) (f32.const 0x1.9cd8ecp+44)) +(assert_return (invoke "f32.no_reassociate_mul" (f32.const 0x1.e1caecp-105) (f32.const 0x1.af0dd2p+77) (f32.const -0x1.016eep+56) (f32.const -0x1.ab70d6p+59)) (f32.const 0x1.54870ep+89)) +(assert_return (invoke "f32.no_reassociate_mul" (f32.const -0x1.3b1dcp-99) (f32.const 0x1.4e5a34p-49) (f32.const -0x1.38ba5ap+3) (f32.const 0x1.7fb8eep+59)) (f32.const 0x1.5bbf98p-85)) +(assert_return (invoke "f64.no_reassociate_mul" (f64.const -0x1.e7842ab7181p-667) (f64.const -0x1.fabf40ceeceafp+990) (f64.const -0x1.1a38a825ab01ap-376) (f64.const -0x1.27e8ea469b14fp+664)) (f64.const 0x1.336eb428af4f3p+613)) +(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.4ca2292a6acbcp+454) (f64.const 0x1.6ffbab850089ap-516) (f64.const -0x1.547c32e1f5b93p-899) (f64.const -0x1.c7571d9388375p+540)) (f64.const 0x1.1ac796954fc1p-419)) +(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.73881a52e0401p-501) (f64.const -0x1.1b68dd9efb1a7p+788) (f64.const 0x1.d1c5e6a3eb27cp-762) (f64.const -0x1.56cb2fcc7546fp+88)) (f64.const 0x1.f508db92c34efp-386)) +(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.2efa87859987cp+692) (f64.const 0x1.68e4373e241p-423) (f64.const 0x1.4e2d0fb383a57p+223) (f64.const -0x1.301d3265c737bp-23)) (f64.const -0x1.4b2b6c393f30cp+470)) +(assert_return (invoke "f64.no_reassociate_mul" (f64.const 0x1.1013f7498b95fp-234) (f64.const 0x1.d2d1c36fff138p-792) (f64.const -0x1.cbf1824ea7bfdp+728) (f64.const -0x1.440da9c8b836dp-599)) (f64.const 0x1.1a16512881c91p-895)) + +;; Test that x/0 is not folded away. + +(module + (func (export "f32.no_fold_div_0") (param $x f32) (result f32) + (f32.div (get_local $x) (f32.const 0.0))) + (func (export "f64.no_fold_div_0") (param $x f64) (result f64) + (f64.div (get_local $x) (f64.const 0.0))) +) + +(assert_return (invoke "f32.no_fold_div_0" (f32.const 1.0)) (f32.const infinity)) +(assert_return (invoke "f32.no_fold_div_0" (f32.const -1.0)) (f32.const -infinity)) +(assert_return (invoke "f32.no_fold_div_0" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "f32.no_fold_div_0" (f32.const -infinity)) (f32.const -infinity)) +(assert_return_nan (invoke "f32.no_fold_div_0" (f32.const 0))) +(assert_return_nan (invoke "f32.no_fold_div_0" (f32.const -0))) +(assert_return (invoke "f32.no_fold_div_0" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_div_0" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const 1.0)) (f64.const infinity)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const -1.0)) (f64.const -infinity)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const infinity)) (f64.const infinity)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const -infinity)) (f64.const -infinity)) +(assert_return_nan (invoke "f64.no_fold_div_0" (f64.const 0))) +(assert_return_nan (invoke "f64.no_fold_div_0" (f64.const -0))) +(assert_return (invoke "f64.no_fold_div_0" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that x/-0 is not folded away. + +(module + (func (export "f32.no_fold_div_neg0") (param $x f32) (result f32) + (f32.div (get_local $x) (f32.const -0.0))) + (func (export "f64.no_fold_div_neg0") (param $x f64) (result f64) + (f64.div (get_local $x) (f64.const -0.0))) +) + +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const 1.0)) (f32.const -infinity)) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const -1.0)) (f32.const infinity)) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const infinity)) (f32.const -infinity)) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const -infinity)) (f32.const infinity)) +(assert_return_nan (invoke "f32.no_fold_div_neg0" (f32.const 0))) +(assert_return_nan (invoke "f32.no_fold_div_neg0" (f32.const -0))) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const 1.0)) (f64.const -infinity)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const -1.0)) (f64.const infinity)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const infinity)) (f64.const -infinity)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const -infinity)) (f64.const infinity)) +(assert_return_nan (invoke "f64.no_fold_div_neg0" (f64.const 0))) +(assert_return_nan (invoke "f64.no_fold_div_neg0" (f64.const -0))) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) + +;; Test that sqrt(x*x+y*y) is not folded to hypot. + +(module + (func (export "f32.no_fold_to_hypot") (param $x f32) (param $y f32) (result f32) + (f32.sqrt (f32.add (f32.mul (get_local $x) (get_local $x)) + (f32.mul (get_local $y) (get_local $y))))) + (func (export "f64.no_fold_to_hypot") (param $x f64) (param $y f64) (result f64) + (f64.sqrt (f64.add (f64.mul (get_local $x) (get_local $x)) + (f64.mul (get_local $y) (get_local $y))))) +) + +(assert_return (invoke "f32.no_fold_to_hypot" (f32.const 0x1.c2f338p-81) (f32.const 0x1.401b5ep-68)) (f32.const 0x1.401cccp-68)) +(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.c38d1p-71) (f32.const -0x1.359ddp-107)) (f32.const 0x1.c36a62p-71)) +(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.99e0cap-114) (f32.const -0x1.ed0c6cp-69)) (f32.const 0x1.ed0e48p-69)) +(assert_return (invoke "f32.no_fold_to_hypot" (f32.const -0x1.1b6ceap+5) (f32.const 0x1.5440bep+17)) (f32.const 0x1.5440cp+17)) +(assert_return (invoke "f32.no_fold_to_hypot" (f32.const 0x1.8f019ep-76) (f32.const -0x1.182308p-71)) (f32.const 0x1.17e2bcp-71)) +(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.1a0ac4f7c8711p-636) (f64.const 0x1.1372ebafff551p-534)) (f64.const 0x1.13463fa37014ep-534)) +(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.b793512167499p+395) (f64.const -0x1.11cbc52af4c36p+410)) (f64.const 0x1.11cbc530783a2p+410)) +(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.76777f44ff40bp-536) (f64.const -0x1.c3896e4dc1fbp-766)) (f64.const 0x1.8p-536)) +(assert_return (invoke "f64.no_fold_to_hypot" (f64.const -0x1.889ac72cc6b5dp-521) (f64.const 0x1.8d7084e659f3bp-733)) (f64.const 0x1.889ac72ca843ap-521)) +(assert_return (invoke "f64.no_fold_to_hypot" (f64.const 0x1.5ee588c02cb08p-670) (f64.const -0x1.05ce25788d9ecp-514)) (f64.const 0x1.05ce25788d9dfp-514)) + +;; Test that 1.0/x isn't approximated. + +(module + (func (export "f32.no_approximate_reciprocal") (param $x f32) (result f32) + (f32.div (f32.const 1.0) (get_local $x))) +) + +(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.2900b6p-10)) (f32.const -0x1.b950d4p+9)) +(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const 0x1.e7212p+127)) (f32.const 0x1.0d11f8p-128)) +(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.42a466p-93)) (f32.const -0x1.963ee6p+92)) +(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const 0x1.5d0c32p+76)) (f32.const 0x1.778362p-77)) +(assert_return (invoke "f32.no_approximate_reciprocal" (f32.const -0x1.601de2p-82)) (f32.const -0x1.743d7ep+81)) + +;; Test that 1.0/sqrt(x) isn't approximated or fused. + +(module + (func (export "f32.no_approximate_reciprocal_sqrt") (param $x f32) (result f32) + (f32.div (f32.const 1.0) (f32.sqrt (get_local $x)))) + (func (export "f64.no_fuse_reciprocal_sqrt") (param $x f64) (result f64) + (f64.div (f64.const 1.0) (f64.sqrt (get_local $x)))) +) + +(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.6af12ap-43)) (f32.const 0x1.300ed4p+21)) +(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.e82fc6p-8)) (f32.const 0x1.72c376p+3)) +(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.b9fa9cp-66)) (f32.const 0x1.85a9bap+32)) +(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.f4f546p-44)) (f32.const 0x1.6e01c2p+21)) +(assert_return (invoke "f32.no_approximate_reciprocal_sqrt" (f32.const 0x1.5da7aap-86)) (f32.const 0x1.b618cap+42)) + +(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.1568a63b55fa3p+889)) (f64.const 0x1.5bc9c74c9952p-445)) +(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.239fcd0939cafp+311)) (f64.const 0x1.5334a922b4818p-156)) +(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.6e36a24e11054p+104)) (f64.const 0x1.ac13f20977f29p-53)) +(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.23ee173219f83p+668)) (f64.const 0x1.df753e055862dp-335)) +(assert_return (invoke "f64.no_fuse_reciprocal_sqrt" (f64.const 0x1.b30f74caf9babp+146)) (f64.const 0x1.88bfc3d1764a9p-74)) + +;; Test that sqrt(1.0/x) isn't approximated. + +(module + (func (export "f32.no_approximate_sqrt_reciprocal") (param $x f32) (result f32) + (f32.sqrt (f32.div (f32.const 1.0) (get_local $x)))) +) + +(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.a4c986p+60)) (f32.const 0x1.8f5ac6p-31)) +(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.50511ep-9)) (f32.const 0x1.3bdd46p+4)) +(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.125ec2p+69)) (f32.const 0x1.5db572p-35)) +(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.ba4c5p+13)) (f32.const 0x1.136f16p-7)) +(assert_return (invoke "f32.no_approximate_sqrt_reciprocal" (f32.const 0x1.4a5be2p+104)) (f32.const 0x1.c2b5bp-53)) + +;; Test that converting i32/i64 to f32/f64 and back isn't folded away + +(module + (func (export "i32.no_fold_f32_s") (param i32) (result i32) + (i32.trunc_s/f32 (f32.convert_s/i32 (get_local 0)))) + (func (export "i32.no_fold_f32_u") (param i32) (result i32) + (i32.trunc_u/f32 (f32.convert_u/i32 (get_local 0)))) + (func (export "i64.no_fold_f64_s") (param i64) (result i64) + (i64.trunc_s/f64 (f64.convert_s/i64 (get_local 0)))) + (func (export "i64.no_fold_f64_u") (param i64) (result i64) + (i64.trunc_u/f64 (f64.convert_u/i64 (get_local 0)))) +) + +(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0x1000000)) (i32.const 0x1000000)) +(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0x1000001)) (i32.const 0x1000000)) +(assert_return (invoke "i32.no_fold_f32_s" (i32.const 0xf0000010)) (i32.const 0xf0000010)) + +(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0x1000000)) (i32.const 0x1000000)) +(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0x1000001)) (i32.const 0x1000000)) +(assert_return (invoke "i32.no_fold_f32_u" (i32.const 0xf0000010)) (i32.const 0xf0000000)) + +(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0x20000000000000)) (i64.const 0x20000000000000)) +(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0x20000000000001)) (i64.const 0x20000000000000)) +(assert_return (invoke "i64.no_fold_f64_s" (i64.const 0xf000000000000400)) (i64.const 0xf000000000000400)) + +(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0x20000000000000)) (i64.const 0x20000000000000)) +(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0x20000000000001)) (i64.const 0x20000000000000)) +(assert_return (invoke "i64.no_fold_f64_u" (i64.const 0xf000000000000400)) (i64.const 0xf000000000000000)) + +;; Test that x+y-y is not folded to x. + +(module + (func (export "f32.no_fold_add_sub") (param $x f32) (param $y f32) (result f32) + (f32.sub (f32.add (get_local $x) (get_local $y)) (get_local $y))) + (func (export "f64.no_fold_add_sub") (param $x f64) (param $y f64) (result f64) + (f64.sub (f64.add (get_local $x) (get_local $y)) (get_local $y))) +) + +(assert_return (invoke "f32.no_fold_add_sub" (f32.const 0x1.b553e4p-47) (f32.const -0x1.67db2cp-26)) (f32.const 0x1.cp-47)) +(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.a884dp-23) (f32.const 0x1.f2ae1ep-19)) (f32.const -0x1.a884ep-23)) +(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.fc04fp+82) (f32.const -0x1.65403ap+101)) (f32.const -0x1p+83)) +(assert_return (invoke "f32.no_fold_add_sub" (f32.const 0x1.870fa2p-78) (f32.const 0x1.c54916p-56)) (f32.const 0x1.8p-78)) +(assert_return (invoke "f32.no_fold_add_sub" (f32.const -0x1.17e966p-108) (f32.const -0x1.5fa61ap-84)) (f32.const -0x1p-107)) + +(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.1053ea172dba8p-874) (f64.const 0x1.113c413408ac8p-857)) (f64.const -0x1.1053ea172p-874)) +(assert_return (invoke "f64.no_fold_add_sub" (f64.const 0x1.e377d54807972p-546) (f64.const 0x1.040a0a4d1ff7p-526)) (f64.const 0x1.e377d548p-546)) +(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.75f53cd926b62p-30) (f64.const -0x1.66b176e602bb5p-3)) (f64.const -0x1.75f53dp-30)) +(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.c450ff28332ap-341) (f64.const 0x1.15a5855023baep-305)) (f64.const -0x1.c451p-341)) +(assert_return (invoke "f64.no_fold_add_sub" (f64.const -0x1.1ad4a596d3ea8p-619) (f64.const -0x1.17d81a41c0ea8p-588)) (f64.const -0x1.1ad4a8p-619)) + +;; Test that x-y+y is not folded to x. + +(module + (func (export "f32.no_fold_sub_add") (param $x f32) (param $y f32) (result f32) + (f32.add (f32.sub (get_local $x) (get_local $y)) (get_local $y))) + (func (export "f64.no_fold_sub_add") (param $x f64) (param $y f64) (result f64) + (f64.add (f64.sub (get_local $x) (get_local $y)) (get_local $y))) +) + +(assert_return (invoke "f32.no_fold_sub_add" (f32.const -0x1.523cb8p+9) (f32.const 0x1.93096cp+8)) (f32.const -0x1.523cbap+9)) +(assert_return (invoke "f32.no_fold_sub_add" (f32.const -0x1.a31a1p-111) (f32.const 0x1.745efp-95)) (f32.const -0x1.a4p-111)) +(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.3d5328p+26) (f32.const 0x1.58567p+35)) (f32.const 0x1.3d54p+26)) +(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.374e26p-39) (f32.const -0x1.66a5p-27)) (f32.const 0x1.374p-39)) +(assert_return (invoke "f32.no_fold_sub_add" (f32.const 0x1.320facp-3) (f32.const -0x1.ac069ap+14)) (f32.const 0x1.34p-3)) + +(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.8f92aad2c9b8dp+255) (f64.const -0x1.08cd4992266cbp+259)) (f64.const 0x1.8f92aad2c9b9p+255)) +(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.5aaff55742c8bp-666) (f64.const 0x1.8f5f47181f46dp-647)) (f64.const 0x1.5aaff5578p-666)) +(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.21bc52967a98dp+251) (f64.const -0x1.fcffaa32d0884p+300)) (f64.const 0x1.2p+251)) +(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.9c78361f47374p-26) (f64.const -0x1.69d69f4edc61cp-13)) (f64.const 0x1.9c78361f48p-26)) +(assert_return (invoke "f64.no_fold_sub_add" (f64.const 0x1.4dbe68e4afab2p-367) (f64.const -0x1.dc24e5b39cd02p-361)) (f64.const 0x1.4dbe68e4afacp-367)) + +;; Test that x*y/y is not folded to x. + +(module + (func (export "f32.no_fold_mul_div") (param $x f32) (param $y f32) (result f32) + (f32.div (f32.mul (get_local $x) (get_local $y)) (get_local $y))) + (func (export "f64.no_fold_mul_div") (param $x f64) (param $y f64) (result f64) + (f64.div (f64.mul (get_local $x) (get_local $y)) (get_local $y))) +) + +(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.cd859ap+54) (f32.const 0x1.6ca936p-47)) (f32.const -0x1.cd8598p+54)) +(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.0b56b8p-26) (f32.const 0x1.48264cp-106)) (f32.const -0x1.0b56a4p-26)) +(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.e7555cp-48) (f32.const -0x1.9161cp+48)) (f32.const -0x1.e7555ap-48)) +(assert_return (invoke "f32.no_fold_mul_div" (f32.const 0x1.aaa50ep+52) (f32.const -0x1.dfb39ep+60)) (f32.const 0x1.aaa50cp+52)) +(assert_return (invoke "f32.no_fold_mul_div" (f32.const -0x1.2b7dfap-92) (f32.const -0x1.7c4ca6p-37)) (f32.const -0x1.2b7dfep-92)) + +(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.3d79ff4118a1ap-837) (f64.const -0x1.b8b5dda31808cp-205)) (f64.const -0x1.3d79ff412263ep-837)) +(assert_return (invoke "f64.no_fold_mul_div" (f64.const 0x1.f894d1ee6b3a4p+384) (f64.const 0x1.8c2606d03d58ap+585)) (f64.const 0x1.f894d1ee6b3a5p+384)) +(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.a022260acc993p+238) (f64.const -0x1.5fbc128fc8e3cp-552)) (f64.const -0x1.a022260acc992p+238)) +(assert_return (invoke "f64.no_fold_mul_div" (f64.const 0x1.9d4b8ed174f54p-166) (f64.const 0x1.ee3d467aeeac6p-906)) (f64.const 0x1.8dcc95a053b2bp-166)) +(assert_return (invoke "f64.no_fold_mul_div" (f64.const -0x1.e95ea897cdcd4p+660) (f64.const -0x1.854d5df085f2ep-327)) (f64.const -0x1.e95ea897cdcd5p+660)) + +;; Test that x/y*y is not folded to x. + +(module + (func (export "f32.no_fold_div_mul") (param $x f32) (param $y f32) (result f32) + (f32.mul (f32.div (get_local $x) (get_local $y)) (get_local $y))) + (func (export "f64.no_fold_div_mul") (param $x f64) (param $y f64) (result f64) + (f64.mul (f64.div (get_local $x) (get_local $y)) (get_local $y))) +) + +(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.dc6364p+38) (f32.const 0x1.d630ecp+29)) (f32.const -0x1.dc6362p+38)) +(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.1f9836p-52) (f32.const -0x1.16c4e4p-18)) (f32.const -0x1.1f9838p-52)) +(assert_return (invoke "f32.no_fold_div_mul" (f32.const 0x1.c5972cp-126) (f32.const -0x1.d6659ep+7)) (f32.const 0x1.c5980ep-126)) +(assert_return (invoke "f32.no_fold_div_mul" (f32.const -0x1.2e3a9ep-74) (f32.const -0x1.353994p+59)) (f32.const -0x1.2e3a4p-74)) +(assert_return (invoke "f32.no_fold_div_mul" (f32.const 0x1.d96b82p-98) (f32.const 0x1.95d908p+27)) (f32.const 0x1.d96b84p-98)) + +(assert_return (invoke "f64.no_fold_div_mul" (f64.const 0x1.d01f913a52481p-876) (f64.const -0x1.2cd0668b28344p+184)) (f64.const 0x1.d020daf71cdcp-876)) +(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.81cb7d400918dp-714) (f64.const 0x1.7caa643586d6ep-53)) (f64.const -0x1.81cb7d400918ep-714)) +(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.66904c97b5c8ep-145) (f64.const 0x1.5c3481592ad4cp+428)) (f64.const -0x1.66904c97b5c8dp-145)) +(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.e75859d2f0765p-278) (f64.const -0x1.5f19b6ab497f9p+283)) (f64.const -0x1.e75859d2f0764p-278)) +(assert_return (invoke "f64.no_fold_div_mul" (f64.const -0x1.515fe9c3b5f5p+620) (f64.const 0x1.36be869c99f7ap+989)) (f64.const -0x1.515fe9c3b5f4fp+620)) + +;; Test that promote(demote(x)) is not folded to x. + +(module + (func (export "no_fold_demote_promote") (param $x f64) (result f64) + (f64.promote/f32 (f32.demote/f64 (get_local $x)))) +) + +(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.dece272390f5dp-133)) (f64.const -0x1.decep-133)) +(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.19e6c79938a6fp-85)) (f64.const -0x1.19e6c8p-85)) +(assert_return (invoke "no_fold_demote_promote" (f64.const 0x1.49b297ec44dc1p+107)) (f64.const 0x1.49b298p+107)) +(assert_return (invoke "no_fold_demote_promote" (f64.const -0x1.74f5bd865163p-88)) (f64.const -0x1.74f5bep-88)) +(assert_return (invoke "no_fold_demote_promote" (f64.const 0x1.26d675662367ep+104)) (f64.const 0x1.26d676p+104)) + +;; Test that demote(promote(x)) is not folded to x, and aside from NaN is +;; bit-preserving. + +(module + (func (export "no_fold_promote_demote") (param $x f32) (result f32) + (f32.demote/f64 (f64.promote/f32 (get_local $x)))) +) + +(assert_return (invoke "no_fold_promote_demote" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "no_fold_promote_demote" (f32.const 0x0p+0)) (f32.const 0x0p+0)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -0x0p+0)) (f32.const -0x0p+0)) +(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1p-149)) (f32.const 0x1p-149)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1p-149)) (f32.const -0x1p-149)) +(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1.fffffcp-127)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1.fffffcp-127)) (f32.const -0x1.fffffcp-127)) +(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1p-126)) (f32.const 0x1p-126)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1p-126)) (f32.const -0x1p-126)) +(assert_return (invoke "no_fold_promote_demote" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -0x1.fffffep+127)) (f32.const -0x1.fffffep+127)) +(assert_return (invoke "no_fold_promote_demote" (f32.const infinity)) (f32.const infinity)) +(assert_return (invoke "no_fold_promote_demote" (f32.const -infinity)) (f32.const -infinity)) + +;; Test that demote(x+promote(y)) is not folded to demote(x)+y. + +(module + (func (export "no_demote_mixed_add") (param $x f64) (param $y f32) (result f32) + (f32.demote/f64 (f64.add (get_local $x) (f64.promote/f32 (get_local $y))))) + (func (export "no_demote_mixed_add_commuted") (param $y f32) (param $x f64) (result f32) + (f32.demote/f64 (f64.add (f64.promote/f32 (get_local $y)) (get_local $x)))) +) + +(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.f51a9d04854f9p-95) (f32.const 0x1.3f4e9cp-119)) (f32.const 0x1.f51a9ep-95)) +(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.065b3d81ad8dp+37) (f32.const 0x1.758cd8p+38)) (f32.const 0x1.f8ba76p+38)) +(assert_return (invoke "no_demote_mixed_add" (f64.const 0x1.626c80963bd17p-119) (f32.const -0x1.9bbf86p-121)) (f32.const 0x1.f6f93ep-120)) +(assert_return (invoke "no_demote_mixed_add" (f64.const -0x1.0d5110e3385bbp-20) (f32.const 0x1.096f4ap-29)) (f32.const -0x1.0ccc5ap-20)) +(assert_return (invoke "no_demote_mixed_add" (f64.const -0x1.73852db4e5075p-20) (f32.const -0x1.24e474p-41)) (f32.const -0x1.738536p-20)) + +(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.3f4e9cp-119) (f64.const 0x1.f51a9d04854f9p-95)) (f32.const 0x1.f51a9ep-95)) +(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.758cd8p+38) (f64.const 0x1.065b3d81ad8dp+37)) (f32.const 0x1.f8ba76p+38)) +(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const -0x1.9bbf86p-121) (f64.const 0x1.626c80963bd17p-119)) (f32.const 0x1.f6f93ep-120)) +(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const 0x1.096f4ap-29) (f64.const -0x1.0d5110e3385bbp-20)) (f32.const -0x1.0ccc5ap-20)) +(assert_return (invoke "no_demote_mixed_add_commuted" (f32.const -0x1.24e474p-41) (f64.const -0x1.73852db4e5075p-20)) (f32.const -0x1.738536p-20)) + +;; Test that demote(x-promote(y)) is not folded to demote(x)-y. + +(module + (func (export "no_demote_mixed_sub") (param $x f64) (param $y f32) (result f32) + (f32.demote/f64 (f64.sub (get_local $x) (f64.promote/f32 (get_local $y))))) +) + +(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.a0a183220e9b1p+82) (f32.const 0x1.c5acf8p+61)) (f32.const 0x1.a0a174p+82)) +(assert_return (invoke "no_demote_mixed_sub" (f64.const -0x1.6e2c5ac39f63ep+30) (f32.const 0x1.d48ca4p+17)) (f32.const -0x1.6e3bp+30)) +(assert_return (invoke "no_demote_mixed_sub" (f64.const -0x1.98c74350dde6ap+6) (f32.const 0x1.9d69bcp-12)) (f32.const -0x1.98c7aap+6)) +(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.0459f34091dbfp-54) (f32.const 0x1.61ad08p-71)) (f32.const 0x1.045942p-54)) +(assert_return (invoke "no_demote_mixed_sub" (f64.const 0x1.a7498dca3fdb7p+14) (f32.const 0x1.ed21c8p+15)) (f32.const -0x1.197d02p+15)) + +;; Test that converting between integer and float and back isn't folded away. + +(module + (func (export "f32.i32.no_fold_trunc_s_convert_s") (param $x f32) (result f32) + (f32.convert_s/i32 (i32.trunc_s/f32 (get_local $x)))) + (func (export "f32.i32.no_fold_trunc_u_convert_s") (param $x f32) (result f32) + (f32.convert_s/i32 (i32.trunc_u/f32 (get_local $x)))) + (func (export "f32.i32.no_fold_trunc_s_convert_u") (param $x f32) (result f32) + (f32.convert_u/i32 (i32.trunc_s/f32 (get_local $x)))) + (func (export "f32.i32.no_fold_trunc_u_convert_u") (param $x f32) (result f32) + (f32.convert_u/i32 (i32.trunc_u/f32 (get_local $x)))) + (func (export "f64.i32.no_fold_trunc_s_convert_s") (param $x f64) (result f64) + (f64.convert_s/i32 (i32.trunc_s/f64 (get_local $x)))) + (func (export "f64.i32.no_fold_trunc_u_convert_s") (param $x f64) (result f64) + (f64.convert_s/i32 (i32.trunc_u/f64 (get_local $x)))) + (func (export "f64.i32.no_fold_trunc_s_convert_u") (param $x f64) (result f64) + (f64.convert_u/i32 (i32.trunc_s/f64 (get_local $x)))) + (func (export "f64.i32.no_fold_trunc_u_convert_u") (param $x f64) (result f64) + (f64.convert_u/i32 (i32.trunc_u/f64 (get_local $x)))) + (func (export "f32.i64.no_fold_trunc_s_convert_s") (param $x f32) (result f32) + (f32.convert_s/i64 (i64.trunc_s/f32 (get_local $x)))) + (func (export "f32.i64.no_fold_trunc_u_convert_s") (param $x f32) (result f32) + (f32.convert_s/i64 (i64.trunc_u/f32 (get_local $x)))) + (func (export "f32.i64.no_fold_trunc_s_convert_u") (param $x f32) (result f32) + (f32.convert_u/i64 (i64.trunc_s/f32 (get_local $x)))) + (func (export "f32.i64.no_fold_trunc_u_convert_u") (param $x f32) (result f32) + (f32.convert_u/i64 (i64.trunc_u/f32 (get_local $x)))) + (func (export "f64.i64.no_fold_trunc_s_convert_s") (param $x f64) (result f64) + (f64.convert_s/i64 (i64.trunc_s/f64 (get_local $x)))) + (func (export "f64.i64.no_fold_trunc_u_convert_s") (param $x f64) (result f64) + (f64.convert_s/i64 (i64.trunc_u/f64 (get_local $x)))) + (func (export "f64.i64.no_fold_trunc_s_convert_u") (param $x f64) (result f64) + (f64.convert_u/i64 (i64.trunc_s/f64 (get_local $x)))) + (func (export "f64.i64.no_fold_trunc_u_convert_u") (param $x f64) (result f64) + (f64.convert_u/i64 (i64.trunc_u/f64 (get_local $x)))) +) + +(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_s" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_s" (f32.const -1.5)) (f32.const -1.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_s" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_s" (f32.const -0.5)) (f32.const 0.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_u" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_s_convert_u" (f32.const -1.5)) (f32.const 0x1p+32)) +(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_u" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i32.no_fold_trunc_u_convert_u" (f32.const -0.5)) (f32.const 0.0)) + +(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_s" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_s" (f64.const -1.5)) (f64.const -1.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_s" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_s" (f64.const -0.5)) (f64.const 0.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_u" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_s_convert_u" (f64.const -1.5)) (f64.const 0x1.fffffffep+31)) +(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_u" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i32.no_fold_trunc_u_convert_u" (f64.const -0.5)) (f64.const 0.0)) + +(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_s" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_s" (f32.const -1.5)) (f32.const -1.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_s" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_s" (f32.const -0.5)) (f32.const 0.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_u" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_s_convert_u" (f32.const -1.5)) (f32.const 0x1p+64)) +(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_u" (f32.const 1.5)) (f32.const 1.0)) +(assert_return (invoke "f32.i64.no_fold_trunc_u_convert_u" (f32.const -0.5)) (f32.const 0.0)) + +(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_s" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_s" (f64.const -1.5)) (f64.const -1.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_s" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_s" (f64.const -0.5)) (f64.const 0.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_u" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_s_convert_u" (f64.const -1.5)) (f64.const 0x1p+64)) +(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_u" (f64.const 1.5)) (f64.const 1.0)) +(assert_return (invoke "f64.i64.no_fold_trunc_u_convert_u" (f64.const -0.5)) (f64.const 0.0)) + +;; Test that dividing by a loop-invariant constant isn't optimized to be a +;; multiplication by a reciprocal, which would be particularly tempting since +;; the reciprocal computation could be hoisted. + +(module + (memory 1 1) + (func (export "init") (param $i i32) (param $x f32) (f32.store (get_local $i) (get_local $x))) + + (func (export "run") (param $n i32) (param $z f32) + (local $i i32) + (block $exit + (loop $cont + (f32.store + (get_local $i) + (f32.div (f32.load (get_local $i)) (get_local $z)) + ) + (set_local $i (i32.add (get_local $i) (i32.const 4))) + (br_if $cont (i32.lt_u (get_local $i) (get_local $n))) + ) + ) + ) + + (func (export "check") (param $i i32) (result f32) (f32.load (get_local $i))) +) + +(invoke "init" (i32.const 0) (f32.const 15.1)) +(invoke "init" (i32.const 4) (f32.const 15.2)) +(invoke "init" (i32.const 8) (f32.const 15.3)) +(invoke "init" (i32.const 12) (f32.const 15.4)) +(assert_return (invoke "check" (i32.const 0)) (f32.const 15.1)) +(assert_return (invoke "check" (i32.const 4)) (f32.const 15.2)) +(assert_return (invoke "check" (i32.const 8)) (f32.const 15.3)) +(assert_return (invoke "check" (i32.const 12)) (f32.const 15.4)) +(invoke "run" (i32.const 16) (f32.const 3.0)) +(assert_return (invoke "check" (i32.const 0)) (f32.const 0x1.422222p+2)) +(assert_return (invoke "check" (i32.const 4)) (f32.const 0x1.444444p+2)) +(assert_return (invoke "check" (i32.const 8)) (f32.const 0x1.466666p+2)) +(assert_return (invoke "check" (i32.const 12)) (f32.const 0x1.488888p+2)) + +(module + (memory 1 1) + (func (export "init") (param $i i32) (param $x f64) (f64.store (get_local $i) (get_local $x))) + + (func (export "run") (param $n i32) (param $z f64) + (local $i i32) + (block $exit + (loop $cont + (f64.store + (get_local $i) + (f64.div (f64.load (get_local $i)) (get_local $z)) + ) + (set_local $i (i32.add (get_local $i) (i32.const 8))) + (br_if $cont (i32.lt_u (get_local $i) (get_local $n))) + ) + ) + ) + + (func (export "check") (param $i i32) (result f64) (f64.load (get_local $i))) +) + +(invoke "init" (i32.const 0) (f64.const 15.1)) +(invoke "init" (i32.const 8) (f64.const 15.2)) +(invoke "init" (i32.const 16) (f64.const 15.3)) +(invoke "init" (i32.const 24) (f64.const 15.4)) +(assert_return (invoke "check" (i32.const 0)) (f64.const 15.1)) +(assert_return (invoke "check" (i32.const 8)) (f64.const 15.2)) +(assert_return (invoke "check" (i32.const 16)) (f64.const 15.3)) +(assert_return (invoke "check" (i32.const 24)) (f64.const 15.4)) +(invoke "run" (i32.const 32) (f64.const 3.0)) +(assert_return (invoke "check" (i32.const 0)) (f64.const 0x1.4222222222222p+2)) +(assert_return (invoke "check" (i32.const 8)) (f64.const 0x1.4444444444444p+2)) +(assert_return (invoke "check" (i32.const 16)) (f64.const 0x1.4666666666667p+2)) +(assert_return (invoke "check" (i32.const 24)) (f64.const 0x1.4888888888889p+2)) + +;; Test that ult/ugt/etc. aren't folded to olt/ogt/etc. + +(module + (func (export "f32.ult") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.ge (get_local $x) (get_local $y)))) + (func (export "f32.ule") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.gt (get_local $x) (get_local $y)))) + (func (export "f32.ugt") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.le (get_local $x) (get_local $y)))) + (func (export "f32.uge") (param $x f32) (param $y f32) (result i32) (i32.eqz (f32.lt (get_local $x) (get_local $y)))) + + (func (export "f64.ult") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.ge (get_local $x) (get_local $y)))) + (func (export "f64.ule") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.gt (get_local $x) (get_local $y)))) + (func (export "f64.ugt") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.le (get_local $x) (get_local $y)))) + (func (export "f64.uge") (param $x f64) (param $y f64) (result i32) (i32.eqz (f64.lt (get_local $x) (get_local $y)))) +) + +(assert_return (invoke "f32.ult" (f32.const 3.0) (f32.const 2.0)) (i32.const 0)) +(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const 2.0)) (i32.const 0)) +(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const 3.0)) (i32.const 1)) +(assert_return (invoke "f32.ult" (f32.const 2.0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "f32.ule" (f32.const 3.0) (f32.const 2.0)) (i32.const 0)) +(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const 2.0)) (i32.const 1)) +(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const 3.0)) (i32.const 1)) +(assert_return (invoke "f32.ule" (f32.const 2.0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "f32.ugt" (f32.const 3.0) (f32.const 2.0)) (i32.const 1)) +(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const 2.0)) (i32.const 0)) +(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const 3.0)) (i32.const 0)) +(assert_return (invoke "f32.ugt" (f32.const 2.0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "f32.uge" (f32.const 3.0) (f32.const 2.0)) (i32.const 1)) +(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const 2.0)) (i32.const 1)) +(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const 3.0)) (i32.const 0)) +(assert_return (invoke "f32.uge" (f32.const 2.0) (f32.const nan)) (i32.const 1)) +(assert_return (invoke "f64.ult" (f64.const 3.0) (f64.const 2.0)) (i32.const 0)) +(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const 2.0)) (i32.const 0)) +(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const 3.0)) (i32.const 1)) +(assert_return (invoke "f64.ult" (f64.const 2.0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "f64.ule" (f64.const 3.0) (f64.const 2.0)) (i32.const 0)) +(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const 2.0)) (i32.const 1)) +(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const 3.0)) (i32.const 1)) +(assert_return (invoke "f64.ule" (f64.const 2.0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "f64.ugt" (f64.const 3.0) (f64.const 2.0)) (i32.const 1)) +(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const 2.0)) (i32.const 0)) +(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const 3.0)) (i32.const 0)) +(assert_return (invoke "f64.ugt" (f64.const 2.0) (f64.const nan)) (i32.const 1)) +(assert_return (invoke "f64.uge" (f64.const 3.0) (f64.const 2.0)) (i32.const 1)) +(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const 2.0)) (i32.const 1)) +(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const 3.0)) (i32.const 0)) +(assert_return (invoke "f64.uge" (f64.const 2.0) (f64.const nan)) (i32.const 1)) + +;; Test that x= y+z is not optimized to x >= y (monotonicity). +;; http://cs.nyu.edu/courses/spring13/CSCI-UA.0201-003/lecture6.pdf + +(module + (func (export "f32.no_fold_add_le_monotonicity") (param $x f32) (param $y f32) (param $z f32) (result i32) + (f32.le (f32.add (get_local $x) (get_local $z)) (f32.add (get_local $y) (get_local $z)))) + + (func (export "f32.no_fold_add_ge_monotonicity") (param $x f32) (param $y f32) (param $z f32) (result i32) + (f32.ge (f32.add (get_local $x) (get_local $z)) (f32.add (get_local $y) (get_local $z)))) + + (func (export "f64.no_fold_add_le_monotonicity") (param $x f64) (param $y f64) (param $z f64) (result i32) + (f64.le (f64.add (get_local $x) (get_local $z)) (f64.add (get_local $y) (get_local $z)))) + + (func (export "f64.no_fold_add_ge_monotonicity") (param $x f64) (param $y f64) (param $z f64) (result i32) + (f64.ge (f64.add (get_local $x) (get_local $z)) (f64.add (get_local $y) (get_local $z)))) +) + +(assert_return (invoke "f32.no_fold_add_le_monotonicity" (f32.const 0.0) (f32.const 0.0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f32.no_fold_add_le_monotonicity" (f32.const infinity) (f32.const -infinity) (f32.const infinity)) (i32.const 0)) +(assert_return (invoke "f64.no_fold_add_le_monotonicity" (f64.const 0.0) (f64.const 0.0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_fold_add_le_monotonicity" (f64.const infinity) (f64.const -infinity) (f64.const infinity)) (i32.const 0)) + +;; Test that !(x < y) and friends are not optimized to x >= y and friends. + +(module + (func (export "f32.not_lt") (param $x f32) (param $y f32) (result i32) + (i32.eqz (f32.lt (get_local $x) (get_local $y)))) + + (func (export "f32.not_le") (param $x f32) (param $y f32) (result i32) + (i32.eqz (f32.le (get_local $x) (get_local $y)))) + + (func (export "f32.not_gt") (param $x f32) (param $y f32) (result i32) + (i32.eqz (f32.gt (get_local $x) (get_local $y)))) + + (func (export "f32.not_ge") (param $x f32) (param $y f32) (result i32) + (i32.eqz (f32.ge (get_local $x) (get_local $y)))) + + (func (export "f64.not_lt") (param $x f64) (param $y f64) (result i32) + (i32.eqz (f64.lt (get_local $x) (get_local $y)))) + + (func (export "f64.not_le") (param $x f64) (param $y f64) (result i32) + (i32.eqz (f64.le (get_local $x) (get_local $y)))) + + (func (export "f64.not_gt") (param $x f64) (param $y f64) (result i32) + (i32.eqz (f64.gt (get_local $x) (get_local $y)))) + + (func (export "f64.not_ge") (param $x f64) (param $y f64) (result i32) + (i32.eqz (f64.ge (get_local $x) (get_local $y)))) +) + +(assert_return (invoke "f32.not_lt" (f32.const nan) (f32.const 0.0)) (i32.const 1)) +(assert_return (invoke "f32.not_le" (f32.const nan) (f32.const 0.0)) (i32.const 1)) +(assert_return (invoke "f32.not_gt" (f32.const nan) (f32.const 0.0)) (i32.const 1)) +(assert_return (invoke "f32.not_ge" (f32.const nan) (f32.const 0.0)) (i32.const 1)) +(assert_return (invoke "f64.not_lt" (f64.const nan) (f64.const 0.0)) (i32.const 1)) +(assert_return (invoke "f64.not_le" (f64.const nan) (f64.const 0.0)) (i32.const 1)) +(assert_return (invoke "f64.not_gt" (f64.const nan) (f64.const 0.0)) (i32.const 1)) +(assert_return (invoke "f64.not_ge" (f64.const nan) (f64.const 0.0)) (i32.const 1)) + +;; Test that a method for approximating a "machine epsilon" produces the expected +;; approximation. +;; http://blogs.mathworks.com/cleve/2014/07/07/floating-point-numbers/#24cb4f4d-b8a9-4c19-b22b-9d2a9f7f3812 + +(module + (func (export "f32.epsilon") (result f32) + (f32.sub (f32.const 1.0) (f32.mul (f32.const 3.0) (f32.sub (f32.div (f32.const 4.0) (f32.const 3.0)) (f32.const 1.0))))) + + (func (export "f64.epsilon") (result f64) + (f64.sub (f64.const 1.0) (f64.mul (f64.const 3.0) (f64.sub (f64.div (f64.const 4.0) (f64.const 3.0)) (f64.const 1.0))))) +) + +(assert_return (invoke "f32.epsilon") (f32.const -0x1p-23)) +(assert_return (invoke "f64.epsilon") (f64.const 0x1p-52)) + +;; Test that floating-point numbers are not optimized as if they form a +;; trichotomy. + +(module + (func (export "f32.no_trichotomy_lt") (param $x f32) (param $y f32) (result i32) + (i32.or (f32.lt (get_local $x) (get_local $y)) (f32.ge (get_local $x) (get_local $y)))) + (func (export "f32.no_trichotomy_le") (param $x f32) (param $y f32) (result i32) + (i32.or (f32.le (get_local $x) (get_local $y)) (f32.gt (get_local $x) (get_local $y)))) + (func (export "f32.no_trichotomy_gt") (param $x f32) (param $y f32) (result i32) + (i32.or (f32.gt (get_local $x) (get_local $y)) (f32.le (get_local $x) (get_local $y)))) + (func (export "f32.no_trichotomy_ge") (param $x f32) (param $y f32) (result i32) + (i32.or (f32.ge (get_local $x) (get_local $y)) (f32.lt (get_local $x) (get_local $y)))) + + (func (export "f64.no_trichotomy_lt") (param $x f64) (param $y f64) (result i32) + (i32.or (f64.lt (get_local $x) (get_local $y)) (f64.ge (get_local $x) (get_local $y)))) + (func (export "f64.no_trichotomy_le") (param $x f64) (param $y f64) (result i32) + (i32.or (f64.le (get_local $x) (get_local $y)) (f64.gt (get_local $x) (get_local $y)))) + (func (export "f64.no_trichotomy_gt") (param $x f64) (param $y f64) (result i32) + (i32.or (f64.gt (get_local $x) (get_local $y)) (f64.le (get_local $x) (get_local $y)))) + (func (export "f64.no_trichotomy_ge") (param $x f64) (param $y f64) (result i32) + (i32.or (f64.ge (get_local $x) (get_local $y)) (f64.lt (get_local $x) (get_local $y)))) +) + +(assert_return (invoke "f32.no_trichotomy_lt" (f32.const 0.0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f32.no_trichotomy_le" (f32.const 0.0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f32.no_trichotomy_gt" (f32.const 0.0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f32.no_trichotomy_ge" (f32.const 0.0) (f32.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_trichotomy_lt" (f64.const 0.0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_trichotomy_le" (f64.const 0.0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_trichotomy_gt" (f64.const 0.0) (f64.const nan)) (i32.const 0)) +(assert_return (invoke "f64.no_trichotomy_ge" (f64.const 0.0) (f64.const nan)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/float_literals.wast b/test/WasmSpec/testsuite/float_literals.wast new file mode 100644 index 00000000000..c69d81fb7d6 --- /dev/null +++ b/test/WasmSpec/testsuite/float_literals.wast @@ -0,0 +1,137 @@ +;; Test floating-point literal parsing. + +(module + ;; f32 special values + (func (export "f32.nan") (result i32) (i32.reinterpret/f32 (f32.const nan))) + (func (export "f32.positive_nan") (result i32) (i32.reinterpret/f32 (f32.const +nan))) + (func (export "f32.negative_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan))) + (func (export "f32.plain_nan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x400000))) + (func (export "f32.informally_known_as_plain_snan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x200000))) + (func (export "f32.all_ones_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan:0x7fffff))) + (func (export "f32.misc_nan") (result i32) (i32.reinterpret/f32 (f32.const nan:0x012345))) + (func (export "f32.misc_positive_nan") (result i32) (i32.reinterpret/f32 (f32.const +nan:0x304050))) + (func (export "f32.misc_negative_nan") (result i32) (i32.reinterpret/f32 (f32.const -nan:0x2abcde))) + (func (export "f32.infinity") (result i32) (i32.reinterpret/f32 (f32.const infinity))) + (func (export "f32.positive_infinity") (result i32) (i32.reinterpret/f32 (f32.const +infinity))) + (func (export "f32.negative_infinity") (result i32) (i32.reinterpret/f32 (f32.const -infinity))) + + ;; f32 numbers + (func (export "f32.zero") (result i32) (i32.reinterpret/f32 (f32.const 0x0.0p0))) + (func (export "f32.positive_zero") (result i32) (i32.reinterpret/f32 (f32.const +0x0.0p0))) + (func (export "f32.negative_zero") (result i32) (i32.reinterpret/f32 (f32.const -0x0.0p0))) + (func (export "f32.misc") (result i32) (i32.reinterpret/f32 (f32.const 0x1.921fb6p+2))) + (func (export "f32.min_positive") (result i32) (i32.reinterpret/f32 (f32.const 0x1p-149))) + (func (export "f32.min_normal") (result i32) (i32.reinterpret/f32 (f32.const 0x1p-126))) + (func (export "f32.max_finite") (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffep+127))) + (func (export "f32.max_subnormal") (result i32) (i32.reinterpret/f32 (f32.const 0x1.fffffcp-127))) + (func (export "f32.trailing_dot") (result i32) (i32.reinterpret/f32 (f32.const 0x1.p10))) + + ;; f32 in decimal format + (func (export "f32_dec.zero") (result i32) (i32.reinterpret/f32 (f32.const 0.0e0))) + (func (export "f32_dec.positive_zero") (result i32) (i32.reinterpret/f32 (f32.const +0.0e0))) + (func (export "f32_dec.negative_zero") (result i32) (i32.reinterpret/f32 (f32.const -0.0e0))) + (func (export "f32_dec.misc") (result i32) (i32.reinterpret/f32 (f32.const 6.28318548202514648))) + (func (export "f32_dec.min_positive") (result i32) (i32.reinterpret/f32 (f32.const 1.4013e-45))) + (func (export "f32_dec.min_normal") (result i32) (i32.reinterpret/f32 (f32.const 1.1754944e-38))) + (func (export "f32_dec.max_subnormal") (result i32) (i32.reinterpret/f32 (f32.const 1.1754942e-38))) + (func (export "f32_dec.max_finite") (result i32) (i32.reinterpret/f32 (f32.const 3.4028234e+38))) + (func (export "f32_dec.trailing_dot") (result i32) (i32.reinterpret/f32 (f32.const 1.e10))) + + ;; f64 special values + (func (export "f64.nan") (result i64) (i64.reinterpret/f64 (f64.const nan))) + (func (export "f64.positive_nan") (result i64) (i64.reinterpret/f64 (f64.const +nan))) + (func (export "f64.negative_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan))) + (func (export "f64.plain_nan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x8000000000000))) + (func (export "f64.informally_known_as_plain_snan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x4000000000000))) + (func (export "f64.all_ones_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan:0xfffffffffffff))) + (func (export "f64.misc_nan") (result i64) (i64.reinterpret/f64 (f64.const nan:0x0123456789abc))) + (func (export "f64.misc_positive_nan") (result i64) (i64.reinterpret/f64 (f64.const +nan:0x3040506070809))) + (func (export "f64.misc_negative_nan") (result i64) (i64.reinterpret/f64 (f64.const -nan:0x2abcdef012345))) + (func (export "f64.infinity") (result i64) (i64.reinterpret/f64 (f64.const infinity))) + (func (export "f64.positive_infinity") (result i64) (i64.reinterpret/f64 (f64.const +infinity))) + (func (export "f64.negative_infinity") (result i64) (i64.reinterpret/f64 (f64.const -infinity))) + + ;; f64 numbers + (func (export "f64.zero") (result i64) (i64.reinterpret/f64 (f64.const 0x0.0p0))) + (func (export "f64.positive_zero") (result i64) (i64.reinterpret/f64 (f64.const +0x0.0p0))) + (func (export "f64.negative_zero") (result i64) (i64.reinterpret/f64 (f64.const -0x0.0p0))) + (func (export "f64.misc") (result i64) (i64.reinterpret/f64 (f64.const 0x1.921fb54442d18p+2))) + (func (export "f64.min_positive") (result i64) (i64.reinterpret/f64 (f64.const 0x0.0000000000001p-1022))) + (func (export "f64.min_normal") (result i64) (i64.reinterpret/f64 (f64.const 0x1p-1022))) + (func (export "f64.max_subnormal") (result i64) (i64.reinterpret/f64 (f64.const 0x0.fffffffffffffp-1022))) + (func (export "f64.max_finite") (result i64) (i64.reinterpret/f64 (f64.const 0x1.fffffffffffffp+1023))) + (func (export "f64.trailing_dot") (result i64) (i64.reinterpret/f64 (f64.const 0x1.p100))) + + ;; f64 numbers in decimal format + (func (export "f64_dec.zero") (result i64) (i64.reinterpret/f64 (f64.const 0.0e0))) + (func (export "f64_dec.positive_zero") (result i64) (i64.reinterpret/f64 (f64.const +0.0e0))) + (func (export "f64_dec.negative_zero") (result i64) (i64.reinterpret/f64 (f64.const -0.0e0))) + (func (export "f64_dec.misc") (result i64) (i64.reinterpret/f64 (f64.const 6.28318530717958623))) + (func (export "f64_dec.min_positive") (result i64) (i64.reinterpret/f64 (f64.const 4.94066e-324))) + (func (export "f64_dec.min_normal") (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072012e-308))) + (func (export "f64_dec.max_subnormal") (result i64) (i64.reinterpret/f64 (f64.const 2.2250738585072011e-308))) + (func (export "f64_dec.max_finite") (result i64) (i64.reinterpret/f64 (f64.const 1.7976931348623157e+308))) + (func (export "f64_dec.trailing_dot") (result i64) (i64.reinterpret/f64 (f64.const 1.e100))) +) + +(assert_return (invoke "f32.nan") (i32.const 0x7fc00000)) +(assert_return (invoke "f32.positive_nan") (i32.const 0x7fc00000)) +(assert_return (invoke "f32.negative_nan") (i32.const 0xffc00000)) +(assert_return (invoke "f32.plain_nan") (i32.const 0x7fc00000)) +(assert_return (invoke "f32.informally_known_as_plain_snan") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.all_ones_nan") (i32.const 0xffffffff)) +(assert_return (invoke "f32.misc_nan") (i32.const 0x7f812345)) +(assert_return (invoke "f32.misc_positive_nan") (i32.const 0x7fb04050)) +(assert_return (invoke "f32.misc_negative_nan") (i32.const 0xffaabcde)) +(assert_return (invoke "f32.infinity") (i32.const 0x7f800000)) +(assert_return (invoke "f32.positive_infinity") (i32.const 0x7f800000)) +(assert_return (invoke "f32.negative_infinity") (i32.const 0xff800000)) +(assert_return (invoke "f32.zero") (i32.const 0)) +(assert_return (invoke "f32.positive_zero") (i32.const 0)) +(assert_return (invoke "f32.negative_zero") (i32.const 0x80000000)) +(assert_return (invoke "f32.misc") (i32.const 0x40c90fdb)) +(assert_return (invoke "f32.min_positive") (i32.const 1)) +(assert_return (invoke "f32.min_normal") (i32.const 0x800000)) +(assert_return (invoke "f32.max_subnormal") (i32.const 0x7fffff)) +(assert_return (invoke "f32.max_finite") (i32.const 0x7f7fffff)) +(assert_return (invoke "f32.trailing_dot") (i32.const 0x44800000)) +(assert_return (invoke "f32_dec.zero") (i32.const 0)) +(assert_return (invoke "f32_dec.positive_zero") (i32.const 0)) +(assert_return (invoke "f32_dec.negative_zero") (i32.const 0x80000000)) +(assert_return (invoke "f32_dec.misc") (i32.const 0x40c90fdb)) +(assert_return (invoke "f32_dec.min_positive") (i32.const 1)) +(assert_return (invoke "f32_dec.min_normal") (i32.const 0x800000)) +(assert_return (invoke "f32_dec.max_subnormal") (i32.const 0x7fffff)) +(assert_return (invoke "f32_dec.max_finite") (i32.const 0x7f7fffff)) +(assert_return (invoke "f32_dec.trailing_dot") (i32.const 0x501502f9)) + +(assert_return (invoke "f64.nan") (i64.const 0x7ff8000000000000)) +(assert_return (invoke "f64.positive_nan") (i64.const 0x7ff8000000000000)) +(assert_return (invoke "f64.negative_nan") (i64.const 0xfff8000000000000)) +(assert_return (invoke "f64.plain_nan") (i64.const 0x7ff8000000000000)) +(assert_return (invoke "f64.informally_known_as_plain_snan") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.all_ones_nan") (i64.const 0xffffffffffffffff)) +(assert_return (invoke "f64.misc_nan") (i64.const 0x7ff0123456789abc)) +(assert_return (invoke "f64.misc_positive_nan") (i64.const 0x7ff3040506070809)) +(assert_return (invoke "f64.misc_negative_nan") (i64.const 0xfff2abcdef012345)) +(assert_return (invoke "f64.infinity") (i64.const 0x7ff0000000000000)) +(assert_return (invoke "f64.positive_infinity") (i64.const 0x7ff0000000000000)) +(assert_return (invoke "f64.negative_infinity") (i64.const 0xfff0000000000000)) +(assert_return (invoke "f64.zero") (i64.const 0)) +(assert_return (invoke "f64.positive_zero") (i64.const 0)) +(assert_return (invoke "f64.negative_zero") (i64.const 0x8000000000000000)) +(assert_return (invoke "f64.misc") (i64.const 0x401921fb54442d18)) +(assert_return (invoke "f64.min_positive") (i64.const 1)) +(assert_return (invoke "f64.min_normal") (i64.const 0x10000000000000)) +(assert_return (invoke "f64.max_subnormal") (i64.const 0xfffffffffffff)) +(assert_return (invoke "f64.max_finite") (i64.const 0x7fefffffffffffff)) +(assert_return (invoke "f64.trailing_dot") (i64.const 0x4630000000000000)) +(assert_return (invoke "f64_dec.zero") (i64.const 0)) +(assert_return (invoke "f64_dec.positive_zero") (i64.const 0)) +(assert_return (invoke "f64_dec.negative_zero") (i64.const 0x8000000000000000)) +(assert_return (invoke "f64_dec.misc") (i64.const 0x401921fb54442d18)) +(assert_return (invoke "f64_dec.min_positive") (i64.const 1)) +(assert_return (invoke "f64_dec.min_normal") (i64.const 0x10000000000000)) +(assert_return (invoke "f64_dec.max_subnormal") (i64.const 0xfffffffffffff)) +(assert_return (invoke "f64_dec.max_finite") (i64.const 0x7fefffffffffffff)) +(assert_return (invoke "f64_dec.trailing_dot") (i64.const 0x54b249ad2594c37d)) diff --git a/test/WasmSpec/testsuite/float_memory.wast b/test/WasmSpec/testsuite/float_memory.wast new file mode 100644 index 00000000000..3801158f92b --- /dev/null +++ b/test/WasmSpec/testsuite/float_memory.wast @@ -0,0 +1,157 @@ +;; Test that floating-point load and store are bit-preserving. + +;; Test that load and store do not canonicalize NaNs as x87 does. + +(module + (memory (data "\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i32.const 0))) + (func (export "i32.load") (result i32) (i32.load (i32.const 0))) + (func (export "f32.store") (f32.store (i32.const 0) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i32.const 0) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i32.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory (data "\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i32.const 0))) + (func (export "i64.load") (result i64) (i64.load (i32.const 0))) + (func (export "f64.store") (f64.store (i32.const 0) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i32.const 0) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i32.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that unaligned load and store do not canonicalize NaNs. + +(module + (memory (data "\00\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i32.const 1))) + (func (export "i32.load") (result i32) (i32.load (i32.const 1))) + (func (export "f32.store") (f32.store (i32.const 1) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i32.const 1) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i32.const 1) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory (data "\00\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i32.const 1))) + (func (export "i64.load") (result i64) (i64.load (i32.const 1))) + (func (export "f64.store") (f64.store (i32.const 1) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i32.const 1) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i32.const 1) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that load and store do not canonicalize NaNs as some JS engines do. + +(module + (memory (data "\01\00\d0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i32.const 0))) + (func (export "i32.load") (result i32) (i32.load (i32.const 0))) + (func (export "f32.store") (f32.store (i32.const 0) (f32.const nan:0x500001))) + (func (export "i32.store") (i32.store (i32.const 0) (i32.const 0x7fd00001))) + (func (export "reset") (i32.store (i32.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) + +(module + (memory (data "\01\00\00\00\00\00\fc\7f")) + + (func (export "f64.load") (result f64) (f64.load (i32.const 0))) + (func (export "i64.load") (result i64) (i64.load (i32.const 0))) + (func (export "f64.store") (f64.store (i32.const 0) (f64.const nan:0xc000000000001))) + (func (export "i64.store") (i64.store (i32.const 0) (i64.const 0x7ffc000000000001))) + (func (export "reset") (i64.store (i32.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) diff --git a/test/WasmSpec/testsuite/float_misc.wast b/test/WasmSpec/testsuite/float_misc.wast new file mode 100644 index 00000000000..41e29321d52 --- /dev/null +++ b/test/WasmSpec/testsuite/float_misc.wast @@ -0,0 +1,643 @@ +;; Platforms intended to run WebAssembly must support IEEE 754 arithmetic. +;; This testsuite is not currently sufficient for full IEEE 754 conformance +;; testing; platforms are currently expected to meet these requirements in +;; their own way (widely-used hardware platforms already do this). +;; +;; What this testsuite does test is that (a) the platform is basically IEEE 754 +;; rather than something else entirely, (b) it's configured correctly for +;; WebAssembly (rounding direction, exception masks, precision level, subnormal +;; mode, etc.), (c) the WebAssembly implementation doesn't perform any common +;; value-changing optimizations, and (d) that the WebAssembly implementation +;; doesn't exhibit any known implementation bugs. +;; +;; This file supplements f32.wast, f64.wast, f32_cmp.wast, and f64_cmp.wast with +;; additional single-instruction tests covering additional miscellaneous +;; interesting cases. + +(module + (func (export "f32.add") (param $x f32) (param $y f32) (result f32) (f32.add (get_local $x) (get_local $y))) + (func (export "f32.sub") (param $x f32) (param $y f32) (result f32) (f32.sub (get_local $x) (get_local $y))) + (func (export "f32.mul") (param $x f32) (param $y f32) (result f32) (f32.mul (get_local $x) (get_local $y))) + (func (export "f32.div") (param $x f32) (param $y f32) (result f32) (f32.div (get_local $x) (get_local $y))) + (func (export "f32.sqrt") (param $x f32) (result f32) (f32.sqrt (get_local $x))) + (func (export "f32.abs") (param $x f32) (result f32) (f32.abs (get_local $x))) + (func (export "f32.neg") (param $x f32) (result f32) (f32.neg (get_local $x))) + (func (export "f32.copysign") (param $x f32) (param $y f32) (result f32) (f32.copysign (get_local $x) (get_local $y))) + (func (export "f32.ceil") (param $x f32) (result f32) (f32.ceil (get_local $x))) + (func (export "f32.floor") (param $x f32) (result f32) (f32.floor (get_local $x))) + (func (export "f32.trunc") (param $x f32) (result f32) (f32.trunc (get_local $x))) + (func (export "f32.nearest") (param $x f32) (result f32) (f32.nearest (get_local $x))) + (func (export "f32.min") (param $x f32) (param $y f32) (result f32) (f32.min (get_local $x) (get_local $y))) + (func (export "f32.max") (param $x f32) (param $y f32) (result f32) (f32.max (get_local $x) (get_local $y))) + + (func (export "f64.add") (param $x f64) (param $y f64) (result f64) (f64.add (get_local $x) (get_local $y))) + (func (export "f64.sub") (param $x f64) (param $y f64) (result f64) (f64.sub (get_local $x) (get_local $y))) + (func (export "f64.mul") (param $x f64) (param $y f64) (result f64) (f64.mul (get_local $x) (get_local $y))) + (func (export "f64.div") (param $x f64) (param $y f64) (result f64) (f64.div (get_local $x) (get_local $y))) + (func (export "f64.sqrt") (param $x f64) (result f64) (f64.sqrt (get_local $x))) + (func (export "f64.abs") (param $x f64) (result f64) (f64.abs (get_local $x))) + (func (export "f64.neg") (param $x f64) (result f64) (f64.neg (get_local $x))) + (func (export "f64.copysign") (param $x f64) (param $y f64) (result f64) (f64.copysign (get_local $x) (get_local $y))) + (func (export "f64.ceil") (param $x f64) (result f64) (f64.ceil (get_local $x))) + (func (export "f64.floor") (param $x f64) (result f64) (f64.floor (get_local $x))) + (func (export "f64.trunc") (param $x f64) (result f64) (f64.trunc (get_local $x))) + (func (export "f64.nearest") (param $x f64) (result f64) (f64.nearest (get_local $x))) + (func (export "f64.min") (param $x f64) (param $y f64) (result f64) (f64.min (get_local $x) (get_local $y))) + (func (export "f64.max") (param $x f64) (param $y f64) (result f64) (f64.max (get_local $x) (get_local $y))) +) + +;; Miscellaneous values. +(assert_return (invoke "f32.add" (f32.const 1.1234567890) (f32.const 1.2345e-10)) (f32.const 1.123456789)) +(assert_return (invoke "f64.add" (f64.const 1.1234567890) (f64.const 1.2345e-10)) (f64.const 0x1.1f9add37c11f7p+0)) + +;; Test adding the greatest value to 1.0 that rounds back to 1.0, and the +;; least that rounds to something greater. +(assert_return (invoke "f32.add" (f32.const 1.0) (f32.const 0x1p-24)) (f32.const 0x1.0p+0)) +(assert_return (invoke "f32.add" (f32.const 1.0) (f32.const 0x1.000002p-24)) (f32.const 0x1.000002p+0)) +(assert_return (invoke "f64.add" (f64.const 1.0) (f64.const 0x1p-53)) (f64.const 0x1.0p+0)) +(assert_return (invoke "f64.add" (f64.const 1.0) (f64.const 0x1.0000000000001p-53)) (f64.const 0x1.0000000000001p+0)) + +;; Test that what some systems call signaling NaN behaves as a quiet NaN. +(assert_return (invoke "f32.add" (f32.const nan:0x200000) (f32.const 1.0)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.add" (f64.const nan:0x4000000000000) (f64.const 1.0)) (f64.const nan:0xc000000000000)) + +;; Max subnornmal + min subnormal = min normal. +(assert_return (invoke "f32.add" (f32.const 0x1p-149) (f32.const 0x1.fffffcp-127)) (f32.const 0x1p-126)) +(assert_return (invoke "f64.add" (f64.const 0x0.0000000000001p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x1p-1022)) + +;; Test for a case of double rounding, example from: +;; http://perso.ens-lyon.fr/jean-michel.muller/Handbook.html +;; section 3.3.1: A typical problem: "double rounding" +(assert_return (invoke "f32.add" (f32.const 0x1p+31) (f32.const 1024.25)) (f32.const 0x1.000008p+31)) +(assert_return (invoke "f64.add" (f64.const 0x1p+63) (f64.const 1024.25)) (f64.const 0x1.0000000000001p+63)) + +;; Test a case that was "tricky" on MMIX. +;; http://mmix.cs.hm.edu/bugs/bug_rounding.html +(assert_return (invoke "f64.add" (f64.const -0x1p-1008) (f64.const 0x0.0000000001716p-1022)) (f64.const -0x1.fffffffffffffp-1009)) + +;; Computations that round differently in ties-to-odd mode. +(assert_return (invoke "f32.add" (f32.const 0x1p23) (f32.const 0x1p-1)) (f32.const 0x1p23)) +(assert_return (invoke "f32.add" (f32.const 0x1.000002p+23) (f32.const 0x1p-1)) (f32.const 0x1.000004p+23)) +(assert_return (invoke "f64.add" (f64.const 0x1p52) (f64.const 0x1p-1)) (f64.const 0x1p52)) +(assert_return (invoke "f64.add" (f64.const 0x1.0000000000001p+52) (f64.const 0x1p-1)) (f64.const 0x1.0000000000002p+52)) + +;; Computations that round differently in round-upward mode. +(assert_return (invoke "f32.add" (f32.const -0x1.39675ap+102) (f32.const 0x1.76c94cp-99)) (f32.const -0x1.39675ap+102)) +(assert_return (invoke "f32.add" (f32.const 0x1.6c0f24p+67) (f32.const -0x1.2b92dp+52)) (f32.const 0x1.6c0cccp+67)) +(assert_return (invoke "f32.add" (f32.const 0x1.e62318p-83) (f32.const 0x1.f74abep-125)) (f32.const 0x1.e62318p-83)) +(assert_return (invoke "f32.add" (f32.const 0x1.2a71d4p+39) (f32.const -0x1.c9f10cp+55)) (f32.const -0x1.c9efe2p+55)) +(assert_return (invoke "f32.add" (f32.const 0x1.f8f736p-15) (f32.const 0x1.7bd45ep+106)) (f32.const 0x1.7bd45ep+106)) +(assert_return (invoke "f64.add" (f64.const 0x1.f33e1fbca27aap-413) (f64.const -0x1.6b192891ed61p+249)) (f64.const -0x1.6b192891ed61p+249)) +(assert_return (invoke "f64.add" (f64.const -0x1.46f75d130eeb1p+76) (f64.const 0x1.25275d6f7a4acp-184)) (f64.const -0x1.46f75d130eeb1p+76)) +(assert_return (invoke "f64.add" (f64.const 0x1.04dec9265a731p-148) (f64.const -0x1.11eed4e8c127cp-12)) (f64.const -0x1.11eed4e8c127cp-12)) +(assert_return (invoke "f64.add" (f64.const 0x1.05773b7166b0ap+497) (f64.const 0x1.134022f2da37bp+66)) (f64.const 0x1.05773b7166b0ap+497)) +(assert_return (invoke "f64.add" (f64.const 0x1.ef4f794282a82p+321) (f64.const 0x1.14a82266badep+394)) (f64.const 0x1.14a82266badep+394)) + +;; Computations that round differently in round-downward mode. +(assert_return (invoke "f32.add" (f32.const 0x1.1bf976p+72) (f32.const -0x1.7f5868p+20)) (f32.const 0x1.1bf976p+72)) +(assert_return (invoke "f32.add" (f32.const 0x1.7f9c6cp-45) (f32.const -0x1.b9bb0ep-78)) (f32.const 0x1.7f9c6cp-45)) +(assert_return (invoke "f32.add" (f32.const -0x1.32d1bcp-42) (f32.const 0x1.f7d214p+125)) (f32.const 0x1.f7d214p+125)) +(assert_return (invoke "f32.add" (f32.const -0x1.8e5c0ep-44) (f32.const -0x1.3afa4cp-106)) (f32.const -0x1.8e5c0ep-44)) +(assert_return (invoke "f32.add" (f32.const 0x1.13cd78p-10) (f32.const -0x1.3af316p-107)) (f32.const 0x1.13cd78p-10)) +(assert_return (invoke "f64.add" (f64.const 0x1.f8dd15ca97d4ap+179) (f64.const -0x1.367317d1fe8bfp-527)) (f64.const 0x1.f8dd15ca97d4ap+179)) +(assert_return (invoke "f64.add" (f64.const 0x1.5db08d739228cp+155) (f64.const -0x1.fb316fa147dcbp-61)) (f64.const 0x1.5db08d739228cp+155)) +(assert_return (invoke "f64.add" (f64.const 0x1.bbb403cb85c07p-404) (f64.const -0x1.7e44046b8bbf3p-979)) (f64.const 0x1.bbb403cb85c07p-404)) +(assert_return (invoke "f64.add" (f64.const -0x1.34d38af291831p+147) (f64.const -0x1.9890b47439953p+139)) (f64.const -0x1.366c1ba705bcap+147)) +(assert_return (invoke "f64.add" (f64.const -0x1.b61dedf4e0306p+3) (f64.const 0x1.09e2f31773c4ap+290)) (f64.const 0x1.09e2f31773c4ap+290)) + +;; Computations that round differently in round-toward-zero mode. +(assert_return (invoke "f32.add" (f32.const -0x1.129bd8p-117) (f32.const 0x1.c75012p-43)) (f32.const 0x1.c75012p-43)) +(assert_return (invoke "f32.add" (f32.const -0x1.c204a2p-16) (f32.const 0x1.80b132p-27)) (f32.const -0x1.c1d48cp-16)) +(assert_return (invoke "f32.add" (f32.const -0x1.decc1cp+36) (f32.const 0x1.c688dap-109)) (f32.const -0x1.decc1cp+36)) +(assert_return (invoke "f32.add" (f32.const 0x1.61ce6ap-118) (f32.const -0x1.772892p+30)) (f32.const -0x1.772892p+30)) +(assert_return (invoke "f32.add" (f32.const -0x1.3dc826p-120) (f32.const 0x1.fc3f66p+95)) (f32.const 0x1.fc3f66p+95)) +(assert_return (invoke "f64.add" (f64.const 0x1.bf68acc263a0fp-777) (f64.const -0x1.5f9352965e5a6p+1004)) (f64.const -0x1.5f9352965e5a6p+1004)) +(assert_return (invoke "f64.add" (f64.const -0x1.76eaa70911f51p+516) (f64.const -0x1.2d746324ce47ap+493)) (f64.const -0x1.76eaa963fabb6p+516)) +(assert_return (invoke "f64.add" (f64.const -0x1.b637d82c15a7ap-967) (f64.const 0x1.cc654ccab4152p-283)) (f64.const 0x1.cc654ccab4152p-283)) +(assert_return (invoke "f64.add" (f64.const -0x1.a5b1fb66e846ep-509) (f64.const 0x1.4bdd36f0bb5ccp-860)) (f64.const -0x1.a5b1fb66e846ep-509)) +(assert_return (invoke "f64.add" (f64.const -0x1.14108da880f9ep+966) (f64.const 0x1.417f35701e89fp+800)) (f64.const -0x1.14108da880f9ep+966)) + +;; Computations that round differently on x87. +(assert_return (invoke "f64.add" (f64.const -0x1.fa0caf21ffebcp+804) (f64.const 0x1.4ca8fdcff89f9p+826)) (f64.const 0x1.4ca8f5e7c5e31p+826)) +(assert_return (invoke "f64.add" (f64.const 0x1.016f1fcbdfd38p+784) (f64.const 0x1.375dffcbc9a2cp+746)) (f64.const 0x1.016f1fcbe4b0fp+784)) +(assert_return (invoke "f64.add" (f64.const -0x1.dffda6d5bff3ap+624) (f64.const 0x1.f9e8cc2dff782p+674)) (f64.const 0x1.f9e8cc2dff77bp+674)) +(assert_return (invoke "f64.add" (f64.const 0x1.fff4b43687dfbp+463) (f64.const 0x1.0fd5617c4a809p+517)) (f64.const 0x1.0fd5617c4a809p+517)) +(assert_return (invoke "f64.add" (f64.const 0x1.535d380035da2p-995) (f64.const 0x1.cce37dddbb73bp-963)) (f64.const 0x1.cce37ddf0ed0fp-963)) + +;; Computations that round differently when computed via f32. +(assert_return (invoke "f64.add" (f64.const -0x1.d91cd3fc0c66fp+752) (f64.const -0x1.4e18c80229734p+952)) (f64.const -0x1.4e18c80229734p+952)) +(assert_return (invoke "f64.add" (f64.const 0x1.afc70fd36e372p+193) (f64.const -0x1.bd10a9b377b46p+273)) (f64.const -0x1.bd10a9b377b46p+273)) +(assert_return (invoke "f64.add" (f64.const -0x1.2abd570b078b2p+302) (f64.const 0x1.b3c1ad759cb5bp-423)) (f64.const -0x1.2abd570b078b2p+302)) +(assert_return (invoke "f64.add" (f64.const -0x1.5b2ae84c0686cp-317) (f64.const -0x1.dba7a1c022823p+466)) (f64.const -0x1.dba7a1c022823p+466)) +(assert_return (invoke "f64.add" (f64.const -0x1.ac627bd7cbf38p-198) (f64.const 0x1.2312e265b8d59p-990)) (f64.const -0x1.ac627bd7cbf38p-198)) + +;; Computations that utilize the maximum exponent value to avoid overflow. +(assert_return (invoke "f32.add" (f32.const 0x1.2b91ap+116) (f32.const 0x1.cbcd52p+127)) (f32.const 0x1.cbf2c4p+127)) +(assert_return (invoke "f32.add" (f32.const 0x1.96f392p+127) (f32.const -0x1.6b3fecp+107)) (f32.const 0x1.96f37cp+127)) +(assert_return (invoke "f32.add" (f32.const 0x1.132f1cp+118) (f32.const -0x1.63d632p+127)) (f32.const -0x1.634c9ap+127)) +(assert_return (invoke "f32.add" (f32.const -0x1.1dda64p+120) (f32.const -0x1.ef02ep+127)) (f32.const -0x1.f13e94p+127)) +(assert_return (invoke "f32.add" (f32.const -0x1.4ad8dap+127) (f32.const -0x1.eae082p+125)) (f32.const -0x1.c590fap+127)) +(assert_return (invoke "f64.add" (f64.const 0x1.017099f2a4b8bp+1023) (f64.const 0x1.1f63b28f05454p+981)) (f64.const 0x1.017099f2a5009p+1023)) +(assert_return (invoke "f64.add" (f64.const 0x1.d88b6c74984efp+1023) (f64.const 0x1.33b444775eabcp+990)) (f64.const 0x1.d88b6c7532291p+1023)) +(assert_return (invoke "f64.add" (f64.const -0x1.84576422fdf5p+1023) (f64.const 0x1.60ee6aa12fb9cp+1012)) (f64.const -0x1.842b4655a9cf1p+1023)) +(assert_return (invoke "f64.add" (f64.const -0x1.9aaace3e79f7dp+1001) (f64.const 0x1.e4068af295cb6p+1023)) (f64.const 0x1.e4068487ea926p+1023)) +(assert_return (invoke "f64.add" (f64.const 0x1.06cdae79f27b9p+1023) (f64.const -0x1.e05cb0c96f975p+991)) (f64.const 0x1.06cdae78121eep+1023)) + +;; Computations that utilize the minimum exponent value. +(assert_return (invoke "f32.add" (f32.const 0x1.6a1a2p-127) (f32.const 0x1.378p-140)) (f32.const 0x1.6a23dcp-127)) +(assert_return (invoke "f32.add" (f32.const 0x1.28p-144) (f32.const -0x1p-148)) (f32.const 0x1.18p-144)) +(assert_return (invoke "f32.add" (f32.const -0x1p-146) (f32.const 0x1.c3cap-128)) (f32.const 0x1.c3c9cp-128)) +(assert_return (invoke "f32.add" (f32.const -0x1.4p-145) (f32.const 0x1.424052p-122)) (f32.const 0x1.42405p-122)) +(assert_return (invoke "f32.add" (f32.const 0x1.c5p-141) (f32.const -0x1.72f8p-135)) (f32.const -0x1.6be4p-135)) +(assert_return (invoke "f64.add" (f64.const 0x1.4774c681d1e21p-1022) (f64.const -0x1.271e58e9f58cap-1021)) (f64.const -0x1.06c7eb5219373p-1022)) +(assert_return (invoke "f64.add" (f64.const 0x1.10b3a75e31916p-1021) (f64.const -0x1.ffb82b0e868a7p-1021)) (f64.const -0x1.de090760a9f22p-1022)) +(assert_return (invoke "f64.add" (f64.const -0x0.6b58448b8098ap-1022) (f64.const -0x1.579796ed04cbep-1022)) (f64.const -0x1.c2efdb7885648p-1022)) +(assert_return (invoke "f64.add" (f64.const 0x1.9eb9e7baae8d1p-1020) (f64.const -0x1.d58e136f8c6eep-1020)) (f64.const -0x0.db50aed377874p-1022)) +(assert_return (invoke "f64.add" (f64.const -0x1.f1115deeafa0bp-1022) (f64.const 0x1.221b1c87dca29p-1022)) (f64.const -0x0.cef64166d2fe2p-1022)) + +;; Test an add of the second-greatest finite value with the distance to greatest +;; finite value. +(assert_return (invoke "f32.add" (f32.const 0x1.fffffcp+127) (f32.const 0x1p+104)) (f32.const 0x1.fffffep+127)) +(assert_return (invoke "f64.add" (f64.const 0x1.ffffffffffffep+1023) (f64.const 0x1p+971)) (f64.const 0x1.fffffffffffffp+1023)) + +;; Test for a historic spreadsheet bug. +;; https://blogs.office.com/2007/09/25/calculation-issue-update/ +(assert_return (invoke "f32.sub" (f32.const 65536.0) (f32.const 0x1p-37)) (f32.const 65536.0)) +(assert_return (invoke "f64.sub" (f64.const 65536.0) (f64.const 0x1p-37)) (f64.const 0x1.fffffffffffffp+15)) + +;; Test subtracting the greatest value from 1.0 that rounds back to 1.0, and the +;; least that rounds to something less. +(assert_return (invoke "f32.sub" (f32.const 1.0) (f32.const 0x1p-25)) (f32.const 0x1.0p+0)) +(assert_return (invoke "f32.sub" (f32.const 1.0) (f32.const 0x1.000002p-25)) (f32.const 0x1.fffffep-1)) +(assert_return (invoke "f64.sub" (f64.const 1.0) (f64.const 0x1p-54)) (f64.const 0x1.0p+0)) +(assert_return (invoke "f64.sub" (f64.const 1.0) (f64.const 0x1.0000000000001p-54)) (f64.const 0x1.fffffffffffffp-1)) + +;; Computations that round differently in round-upward mode. +(assert_return (invoke "f32.sub" (f32.const 0x1.ee2466p-106) (f32.const -0x1.16277ep+119)) (f32.const 0x1.16277ep+119)) +(assert_return (invoke "f32.sub" (f32.const -0x1.446f9ep+119) (f32.const -0x1.4396a4p+43)) (f32.const -0x1.446f9ep+119)) +(assert_return (invoke "f32.sub" (f32.const 0x1.74773cp+0) (f32.const -0x1.a25512p-82)) (f32.const 0x1.74773cp+0)) +(assert_return (invoke "f32.sub" (f32.const 0x1.9345c4p-117) (f32.const 0x1.6792c2p-76)) (f32.const -0x1.6792c2p-76)) +(assert_return (invoke "f32.sub" (f32.const 0x1.9ecfa4p-18) (f32.const -0x1.864b44p-107)) (f32.const 0x1.9ecfa4p-18)) +(assert_return (invoke "f64.sub" (f64.const -0x1.5b798875e7845p-333) (f64.const -0x1.b5147117452fep-903)) (f64.const -0x1.5b798875e7845p-333)) +(assert_return (invoke "f64.sub" (f64.const -0x1.6c87baeb6d72dp+552) (f64.const -0x1.64fb35d4b5571p-158)) (f64.const -0x1.6c87baeb6d72dp+552)) +(assert_return (invoke "f64.sub" (f64.const 0x1.b3d369fcf74bp-461) (f64.const -0x1.ea1668c0dec93p-837)) (f64.const 0x1.b3d369fcf74bp-461)) +(assert_return (invoke "f64.sub" (f64.const 0x1.0abd449353eadp-1005) (f64.const -0x1.0422ea3e82ee9p+154)) (f64.const 0x1.0422ea3e82ee9p+154)) +(assert_return (invoke "f64.sub" (f64.const -0x1.aadbc6b43cc3dp-143) (f64.const -0x1.e7f922ef1ee58p-539)) (f64.const -0x1.aadbc6b43cc3dp-143)) + +;; Computations that round differently in round-downward mode. +(assert_return (invoke "f32.sub" (f32.const -0x1.61e262p+108) (f32.const -0x1.baf3e4p+112)) (f32.const 0x1.a4d5bep+112)) +(assert_return (invoke "f32.sub" (f32.const -0x1.62c2f6p+109) (f32.const 0x1.6e514ap+6)) (f32.const -0x1.62c2f6p+109)) +(assert_return (invoke "f32.sub" (f32.const -0x1.287c94p-83) (f32.const 0x1.0f2f9cp-24)) (f32.const -0x1.0f2f9cp-24)) +(assert_return (invoke "f32.sub" (f32.const -0x1.c8825cp-77) (f32.const -0x1.4aead6p-12)) (f32.const 0x1.4aead6p-12)) +(assert_return (invoke "f32.sub" (f32.const -0x1.2976a4p+99) (f32.const 0x1.c6e3b8p-59)) (f32.const -0x1.2976a4p+99)) +(assert_return (invoke "f64.sub" (f64.const -0x1.76cb28ae6c045p+202) (f64.const -0x1.0611f2af4e9b9p+901)) (f64.const 0x1.0611f2af4e9b9p+901)) +(assert_return (invoke "f64.sub" (f64.const 0x1.baf35eff22e9ep-368) (f64.const 0x1.5c3e08ecf73ecp-451)) (f64.const 0x1.baf35eff22e9ep-368)) +(assert_return (invoke "f64.sub" (f64.const -0x1.8fd354b376f1fp-200) (f64.const 0x1.513c860f386ffp-508)) (f64.const -0x1.8fd354b376f1fp-200)) +(assert_return (invoke "f64.sub" (f64.const -0x1.760d447230ae6p-992) (f64.const -0x1.16f788438ae3ep-328)) (f64.const 0x1.16f788438ae3ep-328)) +(assert_return (invoke "f64.sub" (f64.const -0x1.73aab4fcfc7ap+112) (f64.const 0x1.7c589f990b884p+171)) (f64.const -0x1.7c589f990b884p+171)) + +;; Computations that round differently in round-toward-zero mode. +(assert_return (invoke "f32.sub" (f32.const 0x1.ea264cp+95) (f32.const 0x1.852988p-15)) (f32.const 0x1.ea264cp+95)) +(assert_return (invoke "f32.sub" (f32.const -0x1.14ec7cp+19) (f32.const -0x1.0ad3fep-35)) (f32.const -0x1.14ec7cp+19)) +(assert_return (invoke "f32.sub" (f32.const -0x1.3251dap-36) (f32.const -0x1.49c97ep-56)) (f32.const -0x1.3251c6p-36)) +(assert_return (invoke "f32.sub" (f32.const -0x1.13565ep-14) (f32.const 0x1.2f89a8p-13)) (f32.const -0x1.b934d8p-13)) +(assert_return (invoke "f32.sub" (f32.const -0x1.6032b6p-33) (f32.const -0x1.bb5196p-104)) (f32.const -0x1.6032b6p-33)) +(assert_return (invoke "f64.sub" (f64.const -0x1.b5b0797af491p-157) (f64.const -0x1.694b8348189e8p+722)) (f64.const 0x1.694b8348189e8p+722)) +(assert_return (invoke "f64.sub" (f64.const -0x1.72b142826ed73p+759) (f64.const -0x1.010477bc9afbdp+903)) (f64.const 0x1.010477bc9afbdp+903)) +(assert_return (invoke "f64.sub" (f64.const 0x1.83273b6bb94cfp-796) (f64.const 0x1.1a93f948a2abbp+181)) (f64.const -0x1.1a93f948a2abbp+181)) +(assert_return (invoke "f64.sub" (f64.const -0x1.207e7156cbf2p-573) (f64.const 0x1.cf3f12fd3814dp-544)) (f64.const -0x1.cf3f13063c086p-544)) +(assert_return (invoke "f64.sub" (f64.const -0x1.837e6844f1718p-559) (f64.const -0x1.1c29b757f98abp-14)) (f64.const 0x1.1c29b757f98abp-14)) + +;; Computations that round differently on x87. +(assert_return (invoke "f64.sub" (f64.const 0x1.c21151a709b6cp-78) (f64.const 0x1.0a12fff8910f6p-115)) (f64.const 0x1.c21151a701663p-78)) +(assert_return (invoke "f64.sub" (f64.const 0x1.c57912aae2f64p-982) (f64.const 0x1.dbfbd4800b7cfp-1010)) (f64.const 0x1.c579128d2338fp-982)) +(assert_return (invoke "f64.sub" (f64.const 0x1.ffef4399af9c6p-254) (f64.const 0x1.edb96dfaea8b1p-200)) (f64.const -0x1.edb96dfaea8b1p-200)) +(assert_return (invoke "f64.sub" (f64.const -0x1.363eee391cde2p-39) (f64.const -0x1.a65462000265fp-69)) (f64.const -0x1.363eee32838c9p-39)) +(assert_return (invoke "f64.sub" (f64.const 0x1.59016dba002a1p-25) (f64.const 0x1.5d4374f124cccp-3)) (f64.const -0x1.5d436f8d1f15dp-3)) + +;; Computations that round differently when computed via f32. +(assert_return (invoke "f64.sub" (f64.const -0x1.18196bca005cfp-814) (f64.const -0x1.db7b01ce3f52fp-766)) (f64.const 0x1.db7b01ce3f51dp-766)) +(assert_return (invoke "f64.sub" (f64.const -0x1.d17b3528d219p+33) (f64.const 0x1.fd739d4ea220ap+367)) (f64.const -0x1.fd739d4ea220ap+367)) +(assert_return (invoke "f64.sub" (f64.const 0x1.dea46994de319p+114) (f64.const 0x1.b5b19cd55c7d3p-590)) (f64.const 0x1.dea46994de319p+114)) +(assert_return (invoke "f64.sub" (f64.const 0x1.b60f9b2fbd9ecp-489) (f64.const -0x1.6f81c59ec5b8ep-694)) (f64.const 0x1.b60f9b2fbd9ecp-489)) +(assert_return (invoke "f64.sub" (f64.const 0x1.5e423fe8571f4p-57) (f64.const 0x1.9624ed7c162dfp-618)) (f64.const 0x1.5e423fe8571f4p-57)) + +;; pow(e, π) - π +;; https://xkcd.com/217 +(assert_return (invoke "f32.sub" (f32.const 0x1.724046p+4) (f32.const 0x1.921fb6p+1)) (f32.const 0x1.3ffc5p+4)) +(assert_return (invoke "f64.sub" (f64.const 0x1.724046eb0933ap+4) (f64.const 0x1.921fb54442d18p+1)) (f64.const 0x1.3ffc504280d97p+4)) + +;; https://www.cnet.com/news/googles-calculator-muffs-some-math-problems/ +(assert_return (invoke "f32.sub" (f32.const 2999999) (f32.const 2999998)) (f32.const 1.0)) +(assert_return (invoke "f32.sub" (f32.const 1999999) (f32.const 1999995)) (f32.const 4.0)) +(assert_return (invoke "f32.sub" (f32.const 1999999) (f32.const 1999993)) (f32.const 6.0)) +(assert_return (invoke "f32.sub" (f32.const 400002) (f32.const 400001)) (f32.const 1.0)) +(assert_return (invoke "f32.sub" (f32.const 400002) (f32.const 400000)) (f32.const 2.0)) +(assert_return (invoke "f64.sub" (f64.const 2999999999999999) (f64.const 2999999999999998)) (f64.const 1.0)) +(assert_return (invoke "f64.sub" (f64.const 1999999999999999) (f64.const 1999999999999995)) (f64.const 4.0)) +(assert_return (invoke "f64.sub" (f64.const 1999999999999999) (f64.const 1999999999999993)) (f64.const 6.0)) +(assert_return (invoke "f64.sub" (f64.const 400000000000002) (f64.const 400000000000001)) (f64.const 1.0)) +(assert_return (invoke "f64.sub" (f64.const 400000000000002) (f64.const 400000000000000)) (f64.const 2.0)) + +;; Min normal - min subnormal = max subnornmal. +(assert_return (invoke "f32.sub" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "f64.sub" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x0.fffffffffffffp-1022)) + +;; Min normal - max subnormal = min subnornmal. +(assert_return (invoke "f32.sub" (f32.const 0x1p-126) (f32.const 0x1.fffffcp-127)) (f32.const 0x1p-149)) +(assert_return (invoke "f64.sub" (f64.const 0x1p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x0.0000000000001p-1022)) + +;; Miscellaneous values. +(assert_return (invoke "f32.mul" (f32.const 1e15) (f32.const 1e15)) (f32.const 0x1.93e592p+99)) +(assert_return (invoke "f32.mul" (f32.const 1e20) (f32.const 1e20)) (f32.const infinity)) +(assert_return (invoke "f32.mul" (f32.const 1e25) (f32.const 1e25)) (f32.const infinity)) +(assert_return (invoke "f64.mul" (f64.const 1e15) (f64.const 1e15)) (f64.const 0x1.93e5939a08ceap+99)) +(assert_return (invoke "f64.mul" (f64.const 1e20) (f64.const 1e20)) (f64.const 0x1.d6329f1c35ca5p+132)) +(assert_return (invoke "f64.mul" (f64.const 1e25) (f64.const 1e25)) (f64.const 0x1.11b0ec57e649bp+166)) + +;; Test for a case of double rounding, example from: +;; http://perso.ens-lyon.fr/jean-michel.muller/Handbook.html +;; section 3.3.1: A typical problem: "double rounding" +(assert_return (invoke "f32.mul" (f32.const 1848874880.0) (f32.const 19954563072.0)) (f32.const 0x1.000002p+65)) +(assert_return (invoke "f64.mul" (f64.const 1848874847.0) (f64.const 19954562207.0)) (f64.const 3.6893488147419111424e+19)) + +;; Test for a historic spreadsheet bug. +;; http://www.joelonsoftware.com/items/2007/09/26b.html +(assert_return (invoke "f32.mul" (f32.const 77.1) (f32.const 850)) (f32.const 65535)) +(assert_return (invoke "f64.mul" (f64.const 77.1) (f64.const 850)) (f64.const 65534.99999999999272404)) + +;; Computations that round differently in round-upward mode. +(assert_return (invoke "f32.mul" (f32.const -0x1.14df2ep+61) (f32.const 0x1.748878p-36)) (f32.const -0x1.92e7e8p+25)) +(assert_return (invoke "f32.mul" (f32.const -0x1.5629e2p+102) (f32.const -0x1.c33012p-102)) (f32.const 0x1.2d8604p+1)) +(assert_return (invoke "f32.mul" (f32.const -0x1.b17694p+92) (f32.const -0x1.e4b56ap-97)) (f32.const 0x1.9a5baep-4)) +(assert_return (invoke "f32.mul" (f32.const -0x1.1626a6p+79) (f32.const -0x1.c57d7p-75)) (f32.const 0x1.ecbaaep+4)) +(assert_return (invoke "f32.mul" (f32.const 0x1.7acf72p+53) (f32.const 0x1.6c89acp+5)) (f32.const 0x1.0db556p+59)) +(assert_return (invoke "f64.mul" (f64.const -0x1.25c293f6f37e4p+425) (f64.const 0x1.f5fd4fa41c6d8p+945)) (f64.const -infinity)) +(assert_return (invoke "f64.mul" (f64.const -0x1.cc1ae79fffc5bp-986) (f64.const -0x1.c36ccc2861ca6p-219)) (f64.const 0x0p+0)) +(assert_return (invoke "f64.mul" (f64.const 0x1.c0232b3e64b56p+606) (f64.const -0x1.f6939cf3affaap+106)) (f64.const -0x1.b7e3aedf190d3p+713)) +(assert_return (invoke "f64.mul" (f64.const -0x1.60f289966b271p-313) (f64.const 0x1.28a5497f0c259p+583)) (f64.const -0x1.98fc50bcec259p+270)) +(assert_return (invoke "f64.mul" (f64.const 0x1.37dab12d3afa2p+795) (f64.const 0x1.81e156bd393f1p-858)) (f64.const 0x1.d6126554b8298p-63)) + +;; Computations that round differently in round-downward mode. +(assert_return (invoke "f32.mul" (f32.const -0x1.3f57a2p-89) (f32.const -0x1.041d68p+92)) (f32.const 0x1.4479bp+3)) +(assert_return (invoke "f32.mul" (f32.const 0x1.4d0582p+73) (f32.const 0x1.6e043ap+19)) (f32.const 0x1.dc236p+92)) +(assert_return (invoke "f32.mul" (f32.const -0x1.2fdap-32) (f32.const -0x1.e1731cp+74)) (f32.const 0x1.1db89ep+43)) +(assert_return (invoke "f32.mul" (f32.const 0x1.7bc8fep+67) (f32.const -0x1.3ad592p+15)) (f32.const -0x1.d3115ep+82)) +(assert_return (invoke "f32.mul" (f32.const 0x1.936742p+30) (f32.const -0x1.a7a19p+66)) (f32.const -0x1.4dc71ap+97)) +(assert_return (invoke "f64.mul" (f64.const -0x1.ba737b4ca3b13p-639) (f64.const 0x1.8923309857438p-314)) (f64.const -0x1.53bc0d07baa37p-952)) +(assert_return (invoke "f64.mul" (f64.const 0x1.7c1932e610219p-276) (f64.const -0x1.2605db646489fp-635)) (f64.const -0x1.b48da2b0d2ae3p-911)) +(assert_return (invoke "f64.mul" (f64.const -0x1.e43cdf3b2108p+329) (f64.const -0x1.99d96abbd61d1p+835)) (f64.const infinity)) +(assert_return (invoke "f64.mul" (f64.const 0x1.4c19466551da3p+947) (f64.const 0x1.0bdcd6c7646e9p-439)) (f64.const 0x1.5b7cd8c3f638ap+508)) +(assert_return (invoke "f64.mul" (f64.const 0x1.ff1da1726e3dfp+339) (f64.const -0x1.043c44f52b158p+169)) (f64.const -0x1.03c9364bb585cp+509)) + +;; Computations that round differently in round-toward-zero mode. +(assert_return (invoke "f32.mul" (f32.const -0x1.907e8ap+46) (f32.const -0x1.5d3668p+95)) (f32.const infinity)) +(assert_return (invoke "f32.mul" (f32.const -0x1.8c9f74p-3) (f32.const 0x1.e2b452p-99)) (f32.const -0x1.75edccp-101)) +(assert_return (invoke "f32.mul" (f32.const -0x1.cc605ap-19) (f32.const 0x1.ec321ap+105)) (f32.const -0x1.ba91a4p+87)) +(assert_return (invoke "f32.mul" (f32.const -0x1.5fbb7ap+56) (f32.const 0x1.a8965ep-96)) (f32.const -0x1.23ae8ep-39)) +(assert_return (invoke "f32.mul" (f32.const -0x1.fb7f12p+16) (f32.const 0x1.3a701ap-119)) (f32.const -0x1.37ac0cp-102)) +(assert_return (invoke "f64.mul" (f64.const -0x1.5b0266454c26bp-496) (f64.const -0x1.af5787e3e0399p+433)) (f64.const 0x1.2457d81949e0bp-62)) +(assert_return (invoke "f64.mul" (f64.const 0x1.0d54a82393d45p+478) (f64.const -0x1.425760807ceaep-764)) (f64.const -0x1.532068c8d0d5dp-286)) +(assert_return (invoke "f64.mul" (f64.const -0x1.b532af981786p+172) (f64.const 0x1.ada95085ba36fp+359)) (f64.const -0x1.6ee38c1e01864p+532)) +(assert_return (invoke "f64.mul" (f64.const 0x1.e132f4d49d1cep+768) (f64.const -0x1.a75afe9a7d864p+374)) (f64.const -infinity)) +(assert_return (invoke "f64.mul" (f64.const 0x1.68bbf1cfff90ap+81) (f64.const 0x1.09cd17d652c5p+70)) (f64.const 0x1.768b8d67d794p+151)) + +;; Computations that round differently on x87. +(assert_return (invoke "f64.mul" (f64.const 0x1.f99fb602c89b7p-341) (f64.const 0x1.6caab46a31a2ep-575)) (f64.const 0x1.68201f986e9d7p-915)) +(assert_return (invoke "f64.mul" (f64.const -0x1.86999c5eee379p-9) (f64.const 0x1.6e3b9e0d53e0dp+723)) (f64.const -0x1.17654a0ef35f5p+715)) +(assert_return (invoke "f64.mul" (f64.const -0x1.069571b176f9p+367) (f64.const -0x1.e248b6ab0a0e3p-652)) (f64.const 0x1.eeaff575cae1dp-285)) +(assert_return (invoke "f64.mul" (f64.const 0x1.c217645777dd2p+775) (f64.const 0x1.d93f5715dd646p+60)) (f64.const 0x1.a0064aa1d920dp+836)) +(assert_return (invoke "f64.mul" (f64.const -0x1.848981b6e694ap-276) (f64.const 0x1.f5aacb64a0d19p+896)) (f64.const -0x1.7cb2296e6c2e5p+621)) + +;; Computations that round differently on x87 in double-precision mode. +(assert_return (invoke "f64.mul" (f64.const 0x1.db3bd2a286944p-599) (f64.const 0x1.ce910af1d55cap-425)) (f64.const 0x0.d6accdd538a39p-1022)) +(assert_return (invoke "f64.mul" (f64.const -0x1.aca223916012p-57) (f64.const -0x1.2b2b4958dd228p-966)) (f64.const 0x0.fa74eccae5615p-1022)) +(assert_return (invoke "f64.mul" (f64.const -0x1.bd062def16cffp-488) (f64.const -0x1.7ddd91a0c4c0ep-536)) (f64.const 0x0.a5f4d7769d90dp-1022)) +(assert_return (invoke "f64.mul" (f64.const -0x1.c6a56169e9cep-772) (f64.const 0x1.517d55a474122p-255)) (f64.const -0x0.12baf260afb77p-1022)) +(assert_return (invoke "f64.mul" (f64.const -0x1.08951b0b41705p-516) (f64.const -0x1.102dc27168d09p-507)) (f64.const 0x0.8ca6dbf3f592bp-1022)) + +;; Computations that round differently when computed via f32. +(assert_return (invoke "f64.mul" (f64.const 0x1.8d0dea50c8c9bp+852) (f64.const 0x1.21cac31d87a24p-881)) (f64.const 0x1.c177311f7cd73p-29)) +(assert_return (invoke "f64.mul" (f64.const 0x1.98049118e3063p-7) (f64.const 0x1.6362525151b58p-149)) (f64.const 0x1.1b358514103f9p-155)) +(assert_return (invoke "f64.mul" (f64.const -0x1.ea65cb0631323p+1) (f64.const 0x1.fce683201a19bp-41)) (f64.const -0x1.e76dc8c223667p-39)) +(assert_return (invoke "f64.mul" (f64.const 0x1.e4d235961d543p-373) (f64.const 0x1.bc56f20ef9a48p-205)) (f64.const 0x1.a4c09efcb71d6p-577)) +(assert_return (invoke "f64.mul" (f64.const -0x1.b9612e66faba8p+77) (f64.const 0x1.e2bc6aa782273p-348)) (f64.const -0x1.a026ea4f81db1p-270)) + +;; Test the least positive value with a positive square. +(assert_return (invoke "f32.mul" (f32.const 0x1p-75) (f32.const 0x1p-75)) (f32.const 0x0p+0)) +(assert_return (invoke "f32.mul" (f32.const 0x1.000002p-75) (f32.const 0x1.000002p-75)) (f32.const 0x1p-149)) +(assert_return (invoke "f64.mul" (f64.const 0x1.6a09e667f3bccp-538) (f64.const 0x1.6a09e667f3bccp-538)) (f64.const 0x0p+0)) +(assert_return (invoke "f64.mul" (f64.const 0x1.6a09e667f3bcdp-538) (f64.const 0x1.6a09e667f3bcdp-538)) (f64.const 0x0.0000000000001p-1022)) + +;; Test the greatest positive value with a finite square. +(assert_return (invoke "f32.mul" (f32.const 0x1.fffffep+63) (f32.const 0x1.fffffep+63)) (f32.const 0x1.fffffcp+127)) +(assert_return (invoke "f32.mul" (f32.const 0x1p+64) (f32.const 0x1p+64)) (f32.const infinity)) +(assert_return (invoke "f64.mul" (f64.const 0x1.fffffffffffffp+511) (f64.const 0x1.fffffffffffffp+511)) (f64.const 0x1.ffffffffffffep+1023)) +(assert_return (invoke "f64.mul" (f64.const 0x1p+512) (f64.const 0x1p+512)) (f64.const infinity)) + +;; Test MIN * EPSILON. +;; http://www.mpfr.org/mpfr-2.0.1/patch2 +(assert_return (invoke "f32.mul" (f32.const 0x1p-126) (f32.const 0x1p-23)) (f32.const 0x1p-149)) +(assert_return (invoke "f64.mul" (f64.const 0x1p-1022) (f64.const 0x1p-52)) (f64.const 0x0.0000000000001p-1022)) + +;; Miscellaneous values. +(assert_return (invoke "f32.div" (f32.const 1.123456789) (f32.const 100)) (f32.const 0x1.702264p-7)) +(assert_return (invoke "f32.div" (f32.const 8391667.0) (f32.const 12582905.0)) (f32.const 0x1.55754p-1)) +(assert_return (invoke "f32.div" (f32.const 65536.0) (f32.const 0x1p-37)) (f32.const 0x1p+53)) +(assert_return (invoke "f32.div" (f32.const 0x1.dcbf6ap+0) (f32.const 0x1.fffffep+127)) (f32.const 0x1.dcbf68p-128)) +(assert_return (invoke "f32.div" (f32.const 4) (f32.const 3)) (f32.const 0x1.555556p+0)) +(assert_return (invoke "f64.div" (f64.const 1.123456789) (f64.const 100)) (f64.const 0.01123456789)) +(assert_return (invoke "f64.div" (f64.const 8391667.0) (f64.const 12582905.0)) (f64.const 0x1.55753f1d9ba27p-1)) +(assert_return (invoke "f64.div" (f64.const 65536.0) (f64.const 0x1p-37)) (f64.const 0x1p+53)) +(assert_return (invoke "f64.div" (f64.const 0x1.dcbf6ap+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.772fda8p-1022)) +(assert_return (invoke "f64.div" (f64.const 4) (f64.const 3)) (f64.const 0x1.5555555555555p+0)) + +;; Test for a historic hardware bug. +;; https://en.wikipedia.org/wiki/Pentium_FDIV_bug +(assert_return (invoke "f32.div" (f32.const 4195835) (f32.const 3145727)) (f32.const 0x1.557542p+0)) +(assert_return (invoke "f64.div" (f64.const 4195835) (f64.const 3145727)) (f64.const 0x1.557541c7c6b43p+0)) + +;; Computations that round differently in round-upward mode. +(assert_return (invoke "f32.div" (f32.const 0x1.6a6c5ap-48) (f32.const 0x1.fa0b7p+127)) (f32.const 0x0p+0)) +(assert_return (invoke "f32.div" (f32.const 0x1.616fb2p-87) (f32.const 0x1.332172p+68)) (f32.const 0x0p+0)) +(assert_return (invoke "f32.div" (f32.const -0x1.96e778p+16) (f32.const 0x1.eb0c56p-80)) (f32.const -0x1.a8440ap+95)) +(assert_return (invoke "f32.div" (f32.const -0x1.e2624p-76) (f32.const -0x1.ed236ep-122)) (f32.const 0x1.f4d584p+45)) +(assert_return (invoke "f32.div" (f32.const -0x1.e2374ep+41) (f32.const 0x1.71fcdcp-80)) (f32.const -0x1.4da706p+121)) +(assert_return (invoke "f64.div" (f64.const 0x1.163c09d0c38c1p+147) (f64.const 0x1.e04cc737348e6p+223)) (f64.const 0x1.289921caeed23p-77)) +(assert_return (invoke "f64.div" (f64.const 0x1.d6867e741e0a9p-626) (f64.const 0x1.335eb19a9aae4p-972)) (f64.const 0x1.87e342d11f519p+346)) +(assert_return (invoke "f64.div" (f64.const -0x1.d5edf648aeb98p+298) (f64.const 0x1.0dda15b079355p+640)) (f64.const -0x1.bdceaf9734b5cp-342)) +(assert_return (invoke "f64.div" (f64.const -0x1.b683e3934aedap+691) (f64.const 0x1.c364e1df00dffp+246)) (f64.const -0x1.f16456e7afe3bp+444)) +(assert_return (invoke "f64.div" (f64.const -0x1.44ca7539cc851p+540) (f64.const 0x1.58501bccc58fep+453)) (f64.const -0x1.e2f8657e0924ep+86)) + +;; Computations that round differently in round-downward mode. +(assert_return (invoke "f32.div" (f32.const -0x1.c2c54ap+69) (f32.const -0x1.00d142p-86)) (f32.const infinity)) +(assert_return (invoke "f32.div" (f32.const 0x1.e35abep-46) (f32.const 0x1.c69dfp+44)) (f32.const 0x1.102eb4p-90)) +(assert_return (invoke "f32.div" (f32.const 0x1.45ff2ap+0) (f32.const -0x1.1e8754p+89)) (f32.const -0x1.23434ep-89)) +(assert_return (invoke "f32.div" (f32.const 0x1.8db18ap-51) (f32.const 0x1.47c678p-128)) (f32.const 0x1.369b96p+77)) +(assert_return (invoke "f32.div" (f32.const 0x1.78599p+90) (f32.const 0x1.534144p+87)) (f32.const 0x1.1bfddcp+3)) +(assert_return (invoke "f64.div" (f64.const 0x0.f331c4f47eb51p-1022) (f64.const -0x1.c7ff45bf6f03ap+362)) (f64.const -0x0p+0)) +(assert_return (invoke "f64.div" (f64.const -0x1.0fc8707b9d19cp-987) (f64.const 0x1.77524d5f4a563p-536)) (f64.const -0x1.72c1a937d231p-452)) +(assert_return (invoke "f64.div" (f64.const -0x1.edb3aa64bb338p-403) (f64.const -0x1.1c7c164320e4p+45)) (f64.const 0x1.bc44cc1c5ae63p-448)) +(assert_return (invoke "f64.div" (f64.const -0x1.6534b34e8686bp+80) (f64.const 0x1.c34a7fc59e3c3p-791)) (f64.const -0x1.95421bf291b66p+870)) +(assert_return (invoke "f64.div" (f64.const -0x1.91f58d7ed1237p+236) (f64.const -0x1.f190d808383c8p+55)) (f64.const 0x1.9d9eb0836f906p+180)) + +;; Computations that round differently in round-toward-zero mode. +(assert_return (invoke "f32.div" (f32.const 0x1.64b2a4p+26) (f32.const 0x1.e95752p-119)) (f32.const infinity)) +(assert_return (invoke "f32.div" (f32.const -0x1.53c9b6p+77) (f32.const 0x1.d689ap+27)) (f32.const -0x1.71baa4p+49)) +(assert_return (invoke "f32.div" (f32.const 0x1.664a8ap+38) (f32.const -0x1.59dba2p+96)) (f32.const -0x1.0933f4p-58)) +(assert_return (invoke "f32.div" (f32.const -0x1.99e0fap+111) (f32.const -0x1.c2b5a8p+9)) (f32.const 0x1.d19de6p+101)) +(assert_return (invoke "f32.div" (f32.const -0x1.5a815ap+92) (f32.const -0x1.b5820ap+13)) (f32.const 0x1.9580b8p+78)) +(assert_return (invoke "f64.div" (f64.const -0x1.81fd1e2af7bebp-655) (f64.const 0x1.edefc4eae536cp-691)) (f64.const -0x1.901abdd91b661p+35)) +(assert_return (invoke "f64.div" (f64.const -0x1.47cf932953c43p+782) (f64.const -0x1.bc40496b1f2a1p-553)) (f64.const infinity)) +(assert_return (invoke "f64.div" (f64.const -0x1.2bd2e8fbdcad7p-746) (f64.const 0x1.b115674cc476ep-65)) (f64.const -0x1.62752bf19fa81p-682)) +(assert_return (invoke "f64.div" (f64.const -0x1.f923e3fea9efep+317) (f64.const -0x1.8044c74d27a39p-588)) (f64.const 0x1.5086518cc7186p+905)) +(assert_return (invoke "f64.div" (f64.const 0x1.516ed2051d6bbp+181) (f64.const -0x1.c9f455eb9c2eep+214)) (f64.const -0x1.79414d67f2889p-34)) + +;; Computations that round differently on x87. +(assert_return (invoke "f64.div" (f64.const -0x1.9c52726aed366p+585) (f64.const -0x1.7d0568c75660fp+195)) (f64.const 0x1.1507ca2a65f23p+390)) +(assert_return (invoke "f64.div" (f64.const -0x1.522672f461667p+546) (f64.const -0x1.36d36572c9f71p+330)) (f64.const 0x1.1681369370619p+216)) +(assert_return (invoke "f64.div" (f64.const 0x1.01051b4e8cd61p+185) (f64.const -0x1.2cbb5ca3d33ebp+965)) (f64.const -0x1.b59471598a2f3p-781)) +(assert_return (invoke "f64.div" (f64.const 0x1.5f93bb80fc2cbp+217) (f64.const 0x1.7e051aae9f0edp+427)) (f64.const 0x1.d732fa926ba4fp-211)) +(assert_return (invoke "f64.div" (f64.const -0x1.e251d762163ccp+825) (f64.const 0x1.3ee63581e1796p+349)) (f64.const -0x1.8330077d90a07p+476)) + +;; Computations that round differently on x87 in double-precision mode. +(assert_return (invoke "f64.div" (f64.const 0x1.dcbf69f10006dp+0) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.772fda7c4001bp-1022)) +(assert_return (invoke "f64.div" (f64.const 0x1.e14169442fbcap-1011) (f64.const 0x1.505451d62ff7dp+12)) (f64.const 0x0.b727e85f38b39p-1022)) +(assert_return (invoke "f64.div" (f64.const -0x1.d3ebe726ec964p-144) (f64.const -0x1.4a7bfc0b83608p+880)) (f64.const 0x0.5a9d8c50cbf87p-1022)) +(assert_return (invoke "f64.div" (f64.const -0x1.6c3def770aee1p-393) (f64.const -0x1.8b84724347598p+631)) (f64.const 0x0.3af0707fcd0c7p-1022)) +(assert_return (invoke "f64.div" (f64.const 0x1.16abda1bb3cb3p-856) (f64.const 0x1.6c9c7198eb1e6p+166)) (f64.const 0x0.c3a8fd6741649p-1022)) +(assert_return (invoke "f64.div" (f64.const 0x1.7057d6ab553cap-1005) (f64.const -0x1.2abf1e98660ebp+23)) (f64.const -0x0.04ee8d8ec01cdp-1022)) + +;; Computations that round differently when div is mul by reciprocal. +(assert_return (invoke "f32.div" (f32.const 0x1.ada9aap+89) (f32.const 0x1.69884cp+42)) (f32.const 0x1.303e2ep+47)) +(assert_return (invoke "f32.div" (f32.const 0x1.8281c8p+90) (f32.const -0x1.62883cp+106)) (f32.const -0x1.17169cp-16)) +(assert_return (invoke "f32.div" (f32.const 0x1.5c6be2p+81) (f32.const 0x1.d01dfep-1)) (f32.const 0x1.805e32p+81)) +(assert_return (invoke "f32.div" (f32.const -0x1.bbd252p+19) (f32.const -0x1.fba95p+33)) (f32.const 0x1.bf9d56p-15)) +(assert_return (invoke "f32.div" (f32.const -0x1.0f41d6p-42) (f32.const -0x1.3f2dbep+56)) (f32.const 0x1.b320d8p-99)) +(assert_return (invoke "f64.div" (f64.const 0x1.b2348a1c81899p+61) (f64.const -0x1.4a58aad903dd3p-861)) (f64.const -0x1.507c1e2a41b35p+922)) +(assert_return (invoke "f64.div" (f64.const 0x1.23fa5137a918ap-130) (f64.const -0x1.7268db1951263p-521)) (f64.const -0x1.93965e0d896bep+390)) +(assert_return (invoke "f64.div" (f64.const 0x1.dcb3915d82deep+669) (f64.const 0x1.50caaa1dc6b19p+638)) (f64.const 0x1.6a58ec814b09dp+31)) +(assert_return (invoke "f64.div" (f64.const -0x1.046e378c0cc46p+182) (f64.const 0x1.ac925009a922bp+773)) (f64.const -0x1.3720aa94dab18p-592)) +(assert_return (invoke "f64.div" (f64.const -0x1.8945fd69d8e11p-871) (f64.const -0x1.0a37870af809ap-646)) (f64.const 0x1.7a2e286c62382p-225)) + +;; Computations that round differently when computed via f32. +(assert_return (invoke "f64.div" (f64.const 0x1.82002af0ea1f3p-57) (f64.const 0x1.d0a9b0c2fa339p+0)) (f64.const 0x1.a952fbd1fc17cp-58)) +(assert_return (invoke "f64.div" (f64.const 0x1.1e12b515db471p-102) (f64.const -0x1.41fc3c94fba5p-42)) (f64.const -0x1.c6e50cccb7cb6p-61)) +(assert_return (invoke "f64.div" (f64.const 0x1.aba5adcd6f583p-41) (f64.const 0x1.17dfac639ce0fp-112)) (f64.const 0x1.872b0a008c326p+71)) +(assert_return (invoke "f64.div" (f64.const 0x1.cf82510d0ae6bp+89) (f64.const 0x1.0207d86498053p+97)) (f64.const 0x1.cbdc804e2cf14p-8)) +(assert_return (invoke "f64.div" (f64.const 0x1.4c82cbb508e21p-11) (f64.const -0x1.6b57208c2d5d5p+52)) (f64.const -0x1.d48e8b369129ap-64)) + +;; Division involving the maximum subnormal value and the minimum normal value. +(assert_return (invoke "f32.div" (f32.const 0x1p-126) (f32.const 0x1.fffffcp-127)) (f32.const 0x1.000002p+0)) +(assert_return (invoke "f32.div" (f32.const 0x1.fffffcp-127) (f32.const 0x1p-126)) (f32.const 0x1.fffffcp-1)) +(assert_return (invoke "f64.div" (f64.const 0x1p-1022) (f64.const 0x0.fffffffffffffp-1022)) (f64.const 0x1.0000000000001p+0)) +(assert_return (invoke "f64.div" (f64.const 0x0.fffffffffffffp-1022) (f64.const 0x1p-1022)) (f64.const 0x1.ffffffffffffep-1)) + +;; Test the least positive value with a positive quotient with the maximum value. +(assert_return (invoke "f32.div" (f32.const 0x1.fffffep-23) (f32.const 0x1.fffffep+127)) (f32.const 0x0p+0)) +(assert_return (invoke "f32.div" (f32.const 0x1p-22) (f32.const 0x1.fffffep+127)) (f32.const 0x1p-149)) +(assert_return (invoke "f64.div" (f64.const 0x1.fffffffffffffp-52) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0p+0)) +(assert_return (invoke "f64.div" (f64.const 0x1p-51) (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x0.0000000000001p-1022)) + +;; Test the least positive value with a finite reciprocal. +(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1p-128)) (f32.const infinity)) +(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1.000008p-128)) (f32.const 0x1.fffffp+127)) +(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x0.4p-1022)) (f64.const infinity)) +(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x0.4000000000001p-1022)) (f64.const 0x1.ffffffffffff8p+1023)) + +;; Test the least positive value that has a subnormal reciprocal. +(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1.000002p+126)) (f32.const 0x1.fffffcp-127)) +(assert_return (invoke "f32.div" (f32.const 1.0) (f32.const 0x1p+126)) (f32.const 0x1p-126)) +(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x1.0000000000001p+1022)) (f64.const 0x0.fffffffffffffp-1022)) +(assert_return (invoke "f64.div" (f64.const 1.0) (f64.const 0x1p+1022)) (f64.const 0x1p-1022)) + +;; Test the minimum positive normal number divided by the minimum positive +;; subnormal number. +(assert_return (invoke "f32.div" (f32.const 0x1p-126) (f32.const 0x1p-149)) (f32.const 0x1p+23)) +(assert_return (invoke "f64.div" (f64.const 0x1p-1022) (f64.const 0x0.0000000000001p-1022)) (f64.const 0x1p+52)) + +;; Test that the last binary digit of 1.0/3.0 is even in f32, +;; https://en.wikipedia.org/wiki/Single-precision_floating-point_format#Single-precision_examples +;; +;; and odd in f64, +;; https://en.wikipedia.org/wiki/Double-precision_floating-point_format#Double-precision_examples +;; +;; and that 1.0/3.0, 3.0/9.0, and 9.0/27.0 all agree. +;; http://www.netlib.org/paranoia +(assert_return (invoke "f32.div" (f32.const 0x1p+0) (f32.const 0x1.8p+1)) (f32.const 0x1.555556p-2)) +(assert_return (invoke "f32.div" (f32.const 0x3p+0) (f32.const 0x1.2p+3)) (f32.const 0x1.555556p-2)) +(assert_return (invoke "f32.div" (f32.const 0x1.2p+3) (f32.const 0x1.bp+4)) (f32.const 0x1.555556p-2)) +(assert_return (invoke "f64.div" (f64.const 0x1p+0) (f64.const 0x1.8p+1)) (f64.const 0x1.5555555555555p-2)) +(assert_return (invoke "f64.div" (f64.const 0x3p+0) (f64.const 0x1.2p+3)) (f64.const 0x1.5555555555555p-2)) +(assert_return (invoke "f64.div" (f64.const 0x1.2p+3) (f64.const 0x1.bp+4)) (f64.const 0x1.5555555555555p-2)) + +;; Test for bugs found in an early RISC-V implementation. +;; https://github.com/riscv/riscv-tests/pull/8 +(assert_return (invoke "f32.sqrt" (f32.const 0x1.56p+7)) (f32.const 0x1.a2744cp+3)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.594dfcp-23)) (f32.const 0x1.a4789cp-12)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.56p+7)) (f64.const 0x1.a2744ce9674f5p+3)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.594dfc70aa105p-23)) (f64.const 0x1.a4789c0e37f99p-12)) + +;; Computations that round differently on x87. +(assert_return (invoke "f64.sqrt" (f64.const 0x1.0263fcc94f259p-164)) (f64.const 0x1.0131485de579fp-82)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.352dfa278c43dp+338)) (f64.const 0x1.195607dac5417p+169)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.b15daa23924fap+402)) (f64.const 0x1.4d143db561493p+201)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.518c8e68cb753p-37)) (f64.const 0x1.9fb8ef1ad5bfdp-19)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.86d8b6518078ep-370)) (f64.const 0x1.3c5142a48fcadp-185)) + +;; Test another sqrt case on x87. +;; https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52593 +(assert_return (invoke "f64.sqrt" (f64.const 0x1.fffffffffffffp-1)) (f64.const 0x1.fffffffffffffp-1)) + +;; Computations that round differently in round-upward mode. +(assert_return (invoke "f32.sqrt" (f32.const 0x1.098064p-3)) (f32.const 0x1.70b23p-2)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.d9befp+100)) (f32.const 0x1.5c4052p+50)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.42b5b6p-4)) (f32.const 0x1.1f6d0ep-2)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.3684dp-71)) (f32.const 0x1.8ebae2p-36)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.d8bc4ep-11)) (f32.const 0x1.ebf9eap-6)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.5c39f220d5704p-924)) (f64.const 0x1.2a92bc24ceae9p-462)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.53521a635745cp+727)) (f64.const 0x1.a0cfdc4ef8ff1p+363)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.dfd5bbc9f4678p+385)) (f64.const 0x1.efa817117c94cp+192)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.33f9640811cd4p+105)) (f64.const 0x1.8d17c9243baa3p+52)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.6c0ef0267ff45p+999)) (f64.const 0x1.afbcfae3f2b4p+499)) + +;; Computations that round differently in round-downward mode. +(assert_return (invoke "f32.sqrt" (f32.const 0x1.26a62ep+27)) (f32.const 0x1.84685p+13)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.166002p-113)) (f32.const 0x1.798762p-57)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.3dfb5p-15)) (f32.const 0x1.937e38p-8)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.30eb2cp-120)) (f32.const 0x1.176406p-60)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.cb705cp-123)) (f32.const 0x1.e5020ap-62)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.edae8aea0543p+695)) (f64.const 0x1.f6c1ea4fc8dd2p+347)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.f7ee4bda5c9c3p-763)) (f64.const 0x1.fbf30bdaf11c5p-382)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.a48f348266ad1p-30)) (f64.const 0x1.481ee7540baf7p-15)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.feb5a1ce3ed9cp-242)) (f64.const 0x1.6995060c20d46p-121)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.957d9796e3834p+930)) (f64.const 0x1.42305213157bap+465)) + +;; Computations that round differently in round-toward-zero mode. +(assert_return (invoke "f32.sqrt" (f32.const 0x1.65787cp+118)) (f32.const 0x1.2e82a4p+59)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.736044p+15)) (f32.const 0x1.b40e4p+7)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.a00edp-1)) (f32.const 0x1.cd8aecp-1)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.7a4c8p-87)) (f32.const 0x1.b819e4p-44)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.5d24d4p-94)) (f32.const 0x1.2af75ep-47)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.a008948ead274p+738)) (f64.const 0x1.4659b37c39b19p+369)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.70f6199ed21f5p-381)) (f64.const 0x1.b2a2bddf3300dp-191)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.35c1d49f2a352p+965)) (f64.const 0x1.8e3d9f01a9716p+482)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.3fbdcfb2b2a15p-45)) (f64.const 0x1.949ba4feca42ap-23)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.c201b94757145p-492)) (f64.const 0x1.5369ee6bf2967p-246)) + +;; Computations that round differently when computed via f32. +(assert_return_nan (invoke "f64.sqrt" (f64.const -0x1.360e8d0032adp-963))) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.d9a6f5eef0503p+103)) (f64.const 0x1.ec73f56c166f6p+51)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.aa051a5c4ec27p-760)) (f64.const 0x1.4a3e771ff5149p-380)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.e5522a741babep-276)) (f64.const 0x1.607ae2b6feb7dp-138)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.4832badc0c061p+567)) (f64.const 0x1.99ec7934139b2p+283)) + +;; Test the least greatest value with a sqrt that rounds to one. +(assert_return (invoke "f32.sqrt" (f32.const 0x1.000002p+0)) (f32.const 0x1p+0)) +(assert_return (invoke "f32.sqrt" (f32.const 0x1.000004p+0)) (f32.const 0x1.000002p+0)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.0000000000001p+0)) (f64.const 0x1p+0)) +(assert_return (invoke "f64.sqrt" (f64.const 0x1.0000000000002p+0)) (f64.const 0x1.0000000000001p+0)) + +;; Test that the bitwise floating point operators are bitwise on NaN. + +(assert_return (invoke "f32.abs" (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f32.abs" (f32.const -nan)) (f32.const nan)) +(assert_return (invoke "f32.abs" (f32.const nan:0x0f1e2)) (f32.const nan:0x0f1e2)) +(assert_return (invoke "f32.abs" (f32.const -nan:0x0f1e2)) (f32.const nan:0x0f1e2)) +(assert_return (invoke "f64.abs" (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.abs" (f64.const -nan)) (f64.const nan)) +(assert_return (invoke "f64.abs" (f64.const nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) +(assert_return (invoke "f64.abs" (f64.const -nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) + +(assert_return (invoke "f32.neg" (f32.const nan)) (f32.const -nan)) +(assert_return (invoke "f32.neg" (f32.const -nan)) (f32.const nan)) +(assert_return (invoke "f32.neg" (f32.const nan:0x0f1e2)) (f32.const -nan:0x0f1e2)) +(assert_return (invoke "f32.neg" (f32.const -nan:0x0f1e2)) (f32.const nan:0x0f1e2)) +(assert_return (invoke "f64.neg" (f64.const nan)) (f64.const -nan)) +(assert_return (invoke "f64.neg" (f64.const -nan)) (f64.const nan)) +(assert_return (invoke "f64.neg" (f64.const nan:0x0f1e27a6b)) (f64.const -nan:0x0f1e27a6b)) +(assert_return (invoke "f64.neg" (f64.const -nan:0x0f1e27a6b)) (f64.const nan:0x0f1e27a6b)) + +(assert_return (invoke "f32.copysign" (f32.const nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f32.copysign" (f32.const nan) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "f32.copysign" (f32.const -nan) (f32.const nan)) (f32.const nan)) +(assert_return (invoke "f32.copysign" (f32.const -nan) (f32.const -nan)) (f32.const -nan)) +(assert_return (invoke "f32.copysign" (f32.const nan:0x0f1e2) (f32.const nan)) (f32.const nan:0x0f1e2)) +(assert_return (invoke "f32.copysign" (f32.const nan:0x0f1e2) (f32.const -nan)) (f32.const -nan:0x0f1e2)) +(assert_return (invoke "f32.copysign" (f32.const -nan:0x0f1e2) (f32.const nan)) (f32.const nan:0x0f1e2)) +(assert_return (invoke "f32.copysign" (f32.const -nan:0x0f1e2) (f32.const -nan)) (f32.const -nan:0x0f1e2)) +(assert_return (invoke "f64.copysign" (f64.const nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.copysign" (f64.const nan) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "f64.copysign" (f64.const -nan) (f64.const nan)) (f64.const nan)) +(assert_return (invoke "f64.copysign" (f64.const -nan) (f64.const -nan)) (f64.const -nan)) +(assert_return (invoke "f64.copysign" (f64.const nan:0x0f1e27a6b) (f64.const nan)) (f64.const nan:0x0f1e27a6b)) +(assert_return (invoke "f64.copysign" (f64.const nan:0x0f1e27a6b) (f64.const -nan)) (f64.const -nan:0x0f1e27a6b)) +(assert_return (invoke "f64.copysign" (f64.const -nan:0x0f1e27a6b) (f64.const nan)) (f64.const nan:0x0f1e27a6b)) +(assert_return (invoke "f64.copysign" (f64.const -nan:0x0f1e27a6b) (f64.const -nan)) (f64.const -nan:0x0f1e27a6b)) + +;; Test that ceil isn't implemented as adding 0.5 and rounding to nearest. +(assert_return (invoke "f32.ceil" (f32.const 0x1.fffffep-1)) (f32.const 1.0)) +(assert_return (invoke "f32.ceil" (f32.const 0x1p-126)) (f32.const 1.0)) +(assert_return (invoke "f64.ceil" (f64.const 0x1.fffffffffffffp-1)) (f64.const 1.0)) +(assert_return (invoke "f64.ceil" (f64.const 0x1p-1022)) (f64.const 1.0)) + +;; Test the maximum and minimum value for which ceil is not an identity operator. +(assert_return (invoke "f32.ceil" (f32.const 0x1.fffffep+22)) (f32.const 0x1p+23)) +(assert_return (invoke "f32.ceil" (f32.const -0x1.fffffep+22)) (f32.const -0x1.fffffcp+22)) +(assert_return (invoke "f64.ceil" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1p+52)) +(assert_return (invoke "f64.ceil" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1.ffffffffffffep+51)) + +;; Test that floor isn't implemented as subtracting 0.5 and rounding to nearest. +(assert_return (invoke "f32.floor" (f32.const -0x1.fffffep-1)) (f32.const -1.0)) +(assert_return (invoke "f32.floor" (f32.const -0x1p-126)) (f32.const -1.0)) +(assert_return (invoke "f64.floor" (f64.const -0x1.fffffffffffffp-1)) (f64.const -1.0)) +(assert_return (invoke "f64.floor" (f64.const -0x1p-1022)) (f64.const -1.0)) + +;; Test the maximum and minimum value for which floor is not an identity operator. +(assert_return (invoke "f32.floor" (f32.const -0x1.fffffep+22)) (f32.const -0x1p+23)) +(assert_return (invoke "f32.floor" (f32.const 0x1.fffffep+22)) (f32.const 0x1.fffffcp+22)) +(assert_return (invoke "f64.floor" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1p+52)) +(assert_return (invoke "f64.floor" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1.ffffffffffffep+51)) + +;; Test the maximum and minimum value for which trunc is not an identity operator. +(assert_return (invoke "f32.trunc" (f32.const -0x1.fffffep+22)) (f32.const -0x1.fffffcp+22)) +(assert_return (invoke "f32.trunc" (f32.const 0x1.fffffep+22)) (f32.const 0x1.fffffcp+22)) +(assert_return (invoke "f64.trunc" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1.ffffffffffffep+51)) +(assert_return (invoke "f64.trunc" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1.ffffffffffffep+51)) + +;; Test that nearest isn't implemented naively. +;; http://blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1 +;; http://blog.frama-c.com/index.php?post/2013/05/04/nearbyintf3 +(assert_return (invoke "f32.nearest" (f32.const 0x1.000002p+23)) (f32.const 0x1.000002p+23)) +(assert_return (invoke "f32.nearest" (f32.const 0x1.000004p+23)) (f32.const 0x1.000004p+23)) +(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep-2)) (f32.const 0.0)) +(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep+47)) (f32.const 0x1.fffffep+47)) +(assert_return (invoke "f64.nearest" (f64.const 0x1.0000000000001p+52)) (f64.const 0x1.0000000000001p+52)) +(assert_return (invoke "f64.nearest" (f64.const 0x1.0000000000002p+52)) (f64.const 0x1.0000000000002p+52)) +(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp-2)) (f64.const 0.0)) +(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp+105)) (f64.const 0x1.fffffffffffffp+105)) + +;; Nearest should not round halfway cases away from zero (as C's round(3) does) +;; or up (as JS's Math.round does). +(assert_return (invoke "f32.nearest" (f32.const 4.5)) (f32.const 4.0)) +(assert_return (invoke "f32.nearest" (f32.const -4.5)) (f32.const -4.0)) +(assert_return (invoke "f32.nearest" (f32.const -3.5)) (f32.const -4.0)) +(assert_return (invoke "f64.nearest" (f64.const 4.5)) (f64.const 4.0)) +(assert_return (invoke "f64.nearest" (f64.const -4.5)) (f64.const -4.0)) +(assert_return (invoke "f64.nearest" (f64.const -3.5)) (f64.const -4.0)) + +;; Test the maximum and minimum value for which nearest is not an identity operator. +(assert_return (invoke "f32.nearest" (f32.const -0x1.fffffep+22)) (f32.const -0x1p+23)) +(assert_return (invoke "f32.nearest" (f32.const 0x1.fffffep+22)) (f32.const 0x1p+23)) +(assert_return (invoke "f64.nearest" (f64.const -0x1.fffffffffffffp+51)) (f64.const -0x1p+52)) +(assert_return (invoke "f64.nearest" (f64.const 0x1.fffffffffffffp+51)) (f64.const 0x1p+52)) + +;; Test that min and max behave properly with signaling NaNs. +(assert_return (invoke "f32.min" (f32.const 0.0) (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.min" (f32.const nan:0x200000) (f32.const 0.0)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.max" (f32.const 0.0) (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.max" (f32.const nan:0x200000) (f32.const 0.0)) (f32.const nan:0x600000)) +(assert_return (invoke "f64.min" (f64.const 0.0) (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.min" (f64.const nan:0x4000000000000) (f64.const 0.0)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.max" (f64.const 0.0) (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.max" (f64.const nan:0x4000000000000) (f64.const 0.0)) (f64.const nan:0xc000000000000)) diff --git a/test/WasmSpec/testsuite/forward.wast b/test/WasmSpec/testsuite/forward.wast new file mode 100644 index 00000000000..43ab4934854 --- /dev/null +++ b/test/WasmSpec/testsuite/forward.wast @@ -0,0 +1,20 @@ +(module + (func $even (export "even") (param $n i32) (result i32) + (if i32 (i32.eq (get_local $n) (i32.const 0)) + (i32.const 1) + (call $odd (i32.sub (get_local $n) (i32.const 1))) + ) + ) + + (func $odd (export "odd") (param $n i32) (result i32) + (if i32 (i32.eq (get_local $n) (i32.const 0)) + (i32.const 0) + (call $even (i32.sub (get_local $n) (i32.const 1))) + ) + ) +) + +(assert_return (invoke "even" (i32.const 13)) (i32.const 0)) +(assert_return (invoke "even" (i32.const 20)) (i32.const 1)) +(assert_return (invoke "odd" (i32.const 13)) (i32.const 1)) +(assert_return (invoke "odd" (i32.const 20)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/func-local-after-body.fail.wast b/test/WasmSpec/testsuite/func-local-after-body.fail.wast new file mode 100644 index 00000000000..0c4cf8c3f06 --- /dev/null +++ b/test/WasmSpec/testsuite/func-local-after-body.fail.wast @@ -0,0 +1 @@ +(module (func (nop) (local i32))) diff --git a/test/WasmSpec/testsuite/func-local-before-param.fail.wast b/test/WasmSpec/testsuite/func-local-before-param.fail.wast new file mode 100644 index 00000000000..66f35eb6ca3 --- /dev/null +++ b/test/WasmSpec/testsuite/func-local-before-param.fail.wast @@ -0,0 +1 @@ +(module (func (local i32) (param i32))) diff --git a/test/WasmSpec/testsuite/func-local-before-result.fail.wast b/test/WasmSpec/testsuite/func-local-before-result.fail.wast new file mode 100644 index 00000000000..52026cf765f --- /dev/null +++ b/test/WasmSpec/testsuite/func-local-before-result.fail.wast @@ -0,0 +1 @@ +(module (func (local i32) (result i32) (get_local 0))) diff --git a/test/WasmSpec/testsuite/func-param-after-body.fail.wast b/test/WasmSpec/testsuite/func-param-after-body.fail.wast new file mode 100644 index 00000000000..399a151b83e --- /dev/null +++ b/test/WasmSpec/testsuite/func-param-after-body.fail.wast @@ -0,0 +1 @@ +(module (func (nop) (param i32))) diff --git a/test/WasmSpec/testsuite/func-result-after-body.fail.wast b/test/WasmSpec/testsuite/func-result-after-body.fail.wast new file mode 100644 index 00000000000..9617a2d00fc --- /dev/null +++ b/test/WasmSpec/testsuite/func-result-after-body.fail.wast @@ -0,0 +1 @@ +(module (func (nop) (result i32))) diff --git a/test/WasmSpec/testsuite/func-result-before-param.fail.wast b/test/WasmSpec/testsuite/func-result-before-param.fail.wast new file mode 100644 index 00000000000..93a930f4292 --- /dev/null +++ b/test/WasmSpec/testsuite/func-result-before-param.fail.wast @@ -0,0 +1 @@ +(module (func (result i32) (param i32) (get_local 0))) diff --git a/test/WasmSpec/testsuite/func.wast b/test/WasmSpec/testsuite/func.wast new file mode 100644 index 00000000000..f1c9a148579 --- /dev/null +++ b/test/WasmSpec/testsuite/func.wast @@ -0,0 +1,536 @@ +;; Test `func` declarations, i.e. functions + +(module + ;; Auxiliary definition + (type $sig (func)) + (func $dummy) + + ;; Syntax + + (func) + (func (export "f")) + (func $f) + (func $h (export "g")) + + (func (local)) + (func (local) (local)) + (func (local i32)) + (func (local $x i32)) + (func (local i32 f64 i64)) + (func (local i32) (local f64)) + (func (local i32 f32) (local $x i64) (local) (local i32 f64)) + + (func (param)) + (func (param) (param)) + (func (param i32)) + (func (param $x i32)) + (func (param i32 f64 i64)) + (func (param i32) (param f64)) + (func (param i32 f32) (param $x i64) (param) (param i32 f64)) + + (func (result i32) (unreachable)) + + (func (type $sig)) + + (func $complex + (param i32 f32) (param $x i64) (param) (param i32) + (result i32) + (local f32) (local $y i32) (local i64 i32) (local) (local f64 i32) + (unreachable) (unreachable) + ) + (func $complex-sig + (type $sig) + (local f32) (local $y i32) (local i64 i32) (local) (local f64 i32) + (unreachable) (unreachable) + ) + + + ;; Typing of locals + + (func (export "local-first-i32") (result i32) (local i32 i32) (get_local 0)) + (func (export "local-first-i64") (result i64) (local i64 i64) (get_local 0)) + (func (export "local-first-f32") (result f32) (local f32 f32) (get_local 0)) + (func (export "local-first-f64") (result f64) (local f64 f64) (get_local 0)) + (func (export "local-second-i32") (result i32) (local i32 i32) (get_local 1)) + (func (export "local-second-i64") (result i64) (local i64 i64) (get_local 1)) + (func (export "local-second-f32") (result f32) (local f32 f32) (get_local 1)) + (func (export "local-second-f64") (result f64) (local f64 f64) (get_local 1)) + (func (export "local-mixed") (result f64) + (local f32) (local $x i32) (local i64 i32) (local) (local f64 i32) + (drop (f32.neg (get_local 0))) + (drop (i32.eqz (get_local 1))) + (drop (i64.eqz (get_local 2))) + (drop (i32.eqz (get_local 3))) + (drop (f64.neg (get_local 4))) + (drop (i32.eqz (get_local 5))) + (get_local 4) + ) + + ;; Typing of parameters + + (func (export "param-first-i32") (param i32 i32) (result i32) (get_local 0)) + (func (export "param-first-i64") (param i64 i64) (result i64) (get_local 0)) + (func (export "param-first-f32") (param f32 f32) (result f32) (get_local 0)) + (func (export "param-first-f64") (param f64 f64) (result f64) (get_local 0)) + (func (export "param-second-i32") (param i32 i32) (result i32) (get_local 1)) + (func (export "param-second-i64") (param i64 i64) (result i64) (get_local 1)) + (func (export "param-second-f32") (param f32 f32) (result f32) (get_local 1)) + (func (export "param-second-f64") (param f64 f64) (result f64) (get_local 1)) + (func (export "param-mixed") (param f32 i32) (param) (param $x i64) (param i32 f64 i32) + (result f64) + (drop (f32.neg (get_local 0))) + (drop (i32.eqz (get_local 1))) + (drop (i64.eqz (get_local 2))) + (drop (i32.eqz (get_local 3))) + (drop (f64.neg (get_local 4))) + (drop (i32.eqz (get_local 5))) + (get_local 4) + ) + + ;; Typing of result + + (func (export "empty")) + (func (export "value-void") (call $dummy)) + (func (export "value-i32") (result i32) (i32.const 77)) + (func (export "value-i64") (result i64) (i64.const 7777)) + (func (export "value-f32") (result f32) (f32.const 77.7)) + (func (export "value-f64") (result f64) (f64.const 77.77)) + (func (export "value-block-void") (block (call $dummy) (call $dummy))) + (func (export "value-block-i32") (result i32) + (block i32 (call $dummy) (i32.const 77)) + ) + + (func (export "return-empty") (return)) + (func (export "return-i32") (result i32) (return (i32.const 78))) + (func (export "return-i64") (result i64) (return (i64.const 7878))) + (func (export "return-f32") (result f32) (return (f32.const 78.7))) + (func (export "return-f64") (result f64) (return (f64.const 78.78))) + (func (export "return-block-i32") (result i32) + (return (block i32 (call $dummy) (i32.const 77))) + ) + + (func (export "break-empty") (br 0)) + (func (export "break-i32") (result i32) (br 0 (i32.const 79))) + (func (export "break-i64") (result i64) (br 0 (i64.const 7979))) + (func (export "break-f32") (result f32) (br 0 (f32.const 79.9))) + (func (export "break-f64") (result f64) (br 0 (f64.const 79.79))) + (func (export "break-block-i32") (result i32) + (br 0 (block i32 (call $dummy) (i32.const 77))) + ) + + (func (export "break-br_if-empty") (param i32) + (br_if 0 (get_local 0)) + ) + (func (export "break-br_if-num") (param i32) (result i32) + (drop (br_if 0 (i32.const 50) (get_local 0))) (i32.const 51) + ) + + (func (export "break-br_table-empty") (param i32) + (br_table 0 0 0 (get_local 0)) + ) + (func (export "break-br_table-num") (param i32) (result i32) + (br_table 0 0 (i32.const 50) (get_local 0)) (i32.const 51) + ) + (func (export "break-br_table-nested-empty") (param i32) + (block (br_table 0 1 0 (get_local 0))) + ) + (func (export "break-br_table-nested-num") (param i32) (result i32) + (i32.add + (block i32 (br_table 0 1 0 (i32.const 50) (get_local 0)) (i32.const 51)) + (i32.const 2) + ) + ) + + ;; Default initialization of locals + + (func (export "init-local-i32") (result i32) (local i32) (get_local 0)) + (func (export "init-local-i64") (result i64) (local i64) (get_local 0)) + (func (export "init-local-f32") (result f32) (local f32) (get_local 0)) + (func (export "init-local-f64") (result f64) (local f64) (get_local 0)) + + + ;; Desugaring of implicit type signature + (func $empty-sig-1) ;; should be assigned type $sig + (func $complex-sig-1 (param f64 i64 f64 i64 f64 i64 f32 i32)) + (func $empty-sig-2) ;; should be assigned type $sig + (func $complex-sig-2 (param f64 i64 f64 i64 f64 i64 f32 i32)) + (func $complex-sig-3 (param f64 i64 f64 i64 f64 i64 f32 i32)) + + (type $empty-sig-duplicate (func)) + (type $complex-sig-duplicate (func (param f64 i64 f64 i64 f64 i64 f32 i32))) + (table anyfunc + (elem + $complex-sig-3 $empty-sig-2 $complex-sig-1 $complex-sig-3 $empty-sig-1 + ) + ) + + (func (export "signature-explicit-reused") + (call_indirect $sig (i32.const 1)) + (call_indirect $sig (i32.const 4)) + ) + + (func (export "signature-implicit-reused") + ;; The implicit index 16 in this test depends on the function and + ;; type definitions, and may need adapting if they change. + (call_indirect 16 + (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) + (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) + (i32.const 0) + ) + (call_indirect 16 + (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) + (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) + (i32.const 2) + ) + (call_indirect 16 + (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) + (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) + (i32.const 3) + ) + ) + + (func (export "signature-explicit-duplicate") + (call_indirect $empty-sig-duplicate (i32.const 1)) + ) + + (func (export "signature-implicit-duplicate") + (call_indirect $complex-sig-duplicate + (f64.const 0) (i64.const 0) (f64.const 0) (i64.const 0) + (f64.const 0) (i64.const 0) (f32.const 0) (i32.const 0) + (i32.const 0) + ) + ) +) + +(assert_return (invoke "local-first-i32") (i32.const 0)) +(assert_return (invoke "local-first-i64") (i64.const 0)) +(assert_return (invoke "local-first-f32") (f32.const 0)) +(assert_return (invoke "local-first-f64") (f64.const 0)) +(assert_return (invoke "local-second-i32") (i32.const 0)) +(assert_return (invoke "local-second-i64") (i64.const 0)) +(assert_return (invoke "local-second-f32") (f32.const 0)) +(assert_return (invoke "local-second-f64") (f64.const 0)) +(assert_return (invoke "local-mixed") (f64.const 0)) + +(assert_return + (invoke "param-first-i32" (i32.const 2) (i32.const 3)) (i32.const 2) +) +(assert_return + (invoke "param-first-i64" (i64.const 2) (i64.const 3)) (i64.const 2) +) +(assert_return + (invoke "param-first-f32" (f32.const 2) (f32.const 3)) (f32.const 2) +) +(assert_return + (invoke "param-first-f64" (f64.const 2) (f64.const 3)) (f64.const 2) +) +(assert_return + (invoke "param-second-i32" (i32.const 2) (i32.const 3)) (i32.const 3) +) +(assert_return + (invoke "param-second-i64" (i64.const 2) (i64.const 3)) (i64.const 3) +) +(assert_return + (invoke "param-second-f32" (f32.const 2) (f32.const 3)) (f32.const 3) +) +(assert_return + (invoke "param-second-f64" (f64.const 2) (f64.const 3)) (f64.const 3) +) + +(assert_return + (invoke "param-mixed" + (f32.const 1) (i32.const 2) (i64.const 3) + (i32.const 4) (f64.const 5.5) (i32.const 6) + ) + (f64.const 5.5) +) + +(assert_return (invoke "empty")) +(assert_return (invoke "value-void")) +(assert_return (invoke "value-i32") (i32.const 77)) +(assert_return (invoke "value-i64") (i64.const 7777)) +(assert_return (invoke "value-f32") (f32.const 77.7)) +(assert_return (invoke "value-f64") (f64.const 77.77)) +(assert_return (invoke "value-block-void")) +(assert_return (invoke "value-block-i32") (i32.const 77)) + +(assert_return (invoke "return-empty")) +(assert_return (invoke "return-i32") (i32.const 78)) +(assert_return (invoke "return-i64") (i64.const 7878)) +(assert_return (invoke "return-f32") (f32.const 78.7)) +(assert_return (invoke "return-f64") (f64.const 78.78)) +(assert_return (invoke "return-block-i32") (i32.const 77)) + +(assert_return (invoke "break-empty")) +(assert_return (invoke "break-i32") (i32.const 79)) +(assert_return (invoke "break-i64") (i64.const 7979)) +(assert_return (invoke "break-f32") (f32.const 79.9)) +(assert_return (invoke "break-f64") (f64.const 79.79)) +(assert_return (invoke "break-block-i32") (i32.const 77)) + +(assert_return (invoke "break-br_if-empty" (i32.const 0))) +(assert_return (invoke "break-br_if-empty" (i32.const 2))) +(assert_return (invoke "break-br_if-num" (i32.const 0)) (i32.const 51)) +(assert_return (invoke "break-br_if-num" (i32.const 1)) (i32.const 50)) + +(assert_return (invoke "break-br_table-empty" (i32.const 0))) +(assert_return (invoke "break-br_table-empty" (i32.const 1))) +(assert_return (invoke "break-br_table-empty" (i32.const 5))) +(assert_return (invoke "break-br_table-empty" (i32.const -1))) +(assert_return (invoke "break-br_table-num" (i32.const 0)) (i32.const 50)) +(assert_return (invoke "break-br_table-num" (i32.const 1)) (i32.const 50)) +(assert_return (invoke "break-br_table-num" (i32.const 10)) (i32.const 50)) +(assert_return (invoke "break-br_table-num" (i32.const -100)) (i32.const 50)) +(assert_return (invoke "break-br_table-nested-empty" (i32.const 0))) +(assert_return (invoke "break-br_table-nested-empty" (i32.const 1))) +(assert_return (invoke "break-br_table-nested-empty" (i32.const 3))) +(assert_return (invoke "break-br_table-nested-empty" (i32.const -2))) +(assert_return + (invoke "break-br_table-nested-num" (i32.const 0)) (i32.const 52) +) +(assert_return + (invoke "break-br_table-nested-num" (i32.const 1)) (i32.const 50) +) +(assert_return + (invoke "break-br_table-nested-num" (i32.const 2)) (i32.const 52) +) +(assert_return + (invoke "break-br_table-nested-num" (i32.const -3)) (i32.const 52) +) + +(assert_return (invoke "init-local-i32") (i32.const 0)) +(assert_return (invoke "init-local-i64") (i64.const 0)) +(assert_return (invoke "init-local-f32") (f32.const 0)) +(assert_return (invoke "init-local-f64") (f64.const 0)) + +;;(assert_return (invoke "signature-explicit-reused")) +;;(assert_return (invoke "signature-implicit-reused")) +;;(assert_return (invoke "signature-explicit-duplicate")) +;;(assert_return (invoke "signature-implicit-duplicate")) + + +;; Invalid typing of locals + +(assert_invalid + (module (func $type-local-num-vs-num (result i64) (local i32) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + + +;; Invalid typing of parameters + +(assert_invalid + (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + + +;; Invalid typing of result + +(assert_invalid + (module (func $type-multiple-result (result i32 i32) (unreachable))) + "invalid result arity" +) +(assert_invalid + (module + (type (func (result i32 i32))) + (func $type-multiple-result (type 0) (unreachable)) + ) + "invalid result arity" +) + + +(assert_invalid + (module (func $type-empty-i32 (result i32))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-i64 (result i64))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-f32 (result f32))) + "type mismatch" +) +(assert_invalid + (module (func $type-empty-f64 (result f64))) + "type mismatch" +) + +(assert_invalid + (module (func $type-value-void-vs-num (result i32) + (nop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-void + (i32.const 0) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num (result i32) + (f32.const 0) + )) + "type mismatch" +) + +(; TODO(stack): Should these become legal? +(assert_invalid + (module (func $type-value-void-vs-num-after-return (result i32) + (return (i32.const 1)) (nop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num-after-return (result i32) + (return (i32.const 1)) (f32.const 0) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-void-vs-num-after-break (result i32) + (br 0 (i32.const 1)) (nop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num-after-break (result i32) + (br 0 (i32.const 1)) (f32.const 0) + )) + "arity mismatch" +) +;) + +;; TODO(stack): move these somewhere else +(module (func $type-return-void-vs-enpty (return (nop)))) +(module (func $type-return-num-vs-enpty (return (i32.const 0)))) + +(assert_invalid + (module (func $type-return-last-empty-vs-num (result i32) + (return) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-last-void-vs-num (result i32) + (return (nop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-last-num-vs-num (result i32) + (return (i64.const 0)) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-return-empty-vs-num (result i32) + (return) (i32.const 1) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-void-vs-num (result i32) + (return (nop)) (i32.const 1) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-num-vs-num (result i32) + (return (i64.const 1)) (i32.const 1) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-first-num-vs-num (result i32) + (return (i64.const 1)) (return (i32.const 1)) + )) + "type mismatch" +) +(; TODO(stack): Should this become legal? +(assert_invalid + (module (func $type-return-second-num-vs-num (result i32) + (return (i32.const 1)) (return (f64.const 1)) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-break-last-void-vs-num (result i32) + (br 0) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-last-num-vs-num (result i32) + (br 0 (f32.const 0)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-void-vs-num (result i32) + (br 0) (i32.const 1) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-num-vs-num (result i32) + (br 0 (i64.const 1)) (i32.const 1) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-first-num-vs-num (result i32) + (br 0 (i64.const 1)) (br 0 (i32.const 1)) + )) + "type mismatch" +) + +(; TODO(stack): soft failure +(assert_invalid + (module (func $type-break-second-num-vs-num (result i32) + (br 0 (i32.const 1)) (br 0 (f64.const 1)) + )) + "type mismatch" +) +;) + +(assert_invalid + (module (func $type-break-nested-empty-vs-num (result i32) + (block (br 1)) (br 0 (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-nested-void-vs-num (result i32) + (block (br 1 (nop))) (br 0 (i32.const 1)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-break-nested-num-vs-num (result i32) + (block (br 1 (i64.const 1))) (br 0 (i32.const 1)) + )) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/func_ptrs.wast b/test/WasmSpec/testsuite/func_ptrs.wast new file mode 100644 index 00000000000..f7edd9f4481 --- /dev/null +++ b/test/WasmSpec/testsuite/func_ptrs.wast @@ -0,0 +1,105 @@ +(module + (type (func)) ;; 0: void -> void + (type $S (func)) ;; 1: void -> void + (type (func (param))) ;; 2: void -> void + (type (func (result i32))) ;; 3: void -> i32 + (type (func (param) (result i32))) ;; 4: void -> i32 + (type $T (func (param i32) (result i32))) ;; 5: i32 -> i32 + (type $U (func (param i32))) ;; 6: i32 -> void + + (func $print (import "spectest" "print") (type 6)) + + (func (type 0)) + (func (type $S)) + + (func (export "one") (type 4) (i32.const 13)) + (func (export "two") (type $T) (i32.add (get_local 0) (i32.const 1))) + + ;; Both signature and parameters are allowed (and required to match) + ;; since this allows the naming of parameters. + (func (export "three") (type $T) (param $a i32) (result i32) + (i32.sub (get_local 0) (i32.const 2)) + ) + + (func (export "four") (type $U) (call $print (get_local 0))) +) +(assert_return (invoke "one") (i32.const 13)) +(assert_return (invoke "two" (i32.const 13)) (i32.const 14)) +(assert_return (invoke "three" (i32.const 13)) (i32.const 11)) +(invoke "four" (i32.const 83)) + +(assert_invalid (module (elem (i32.const 0))) "unknown table") +(assert_invalid (module (elem (i32.const 0) 0) (func)) "unknown table") + +(assert_invalid + (module (table 1 anyfunc) (elem (i64.const 0))) + "type mismatch" +) +(assert_invalid + (module (table 1 anyfunc) (elem (i32.ctz (i32.const 0)))) + "constant expression required" +) +(assert_invalid + (module (table 1 anyfunc) (elem (nop))) + "constant expression required" +) + +(assert_invalid (module (func (type 42))) "unknown type") +(assert_invalid (module (import "spectest" "print" (func (type 43)))) "unknown type") + +(module + (type $T (func (param) (result i32))) + (type $U (func (param) (result i32))) + (table anyfunc (elem $t1 $t2 $t3 $u1 $u2 $t1 $t3)) + + (func $t1 (type $T) (i32.const 1)) + (func $t2 (type $T) (i32.const 2)) + (func $t3 (type $T) (i32.const 3)) + (func $u1 (type $U) (i32.const 4)) + (func $u2 (type $U) (i32.const 5)) + + (func (export "callt") (param $i i32) (result i32) + (call_indirect $T (get_local $i)) + ) + + (func (export "callu") (param $i i32) (result i32) + (call_indirect $U (get_local $i)) + ) +) + +(assert_return (invoke "callt" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "callt" (i32.const 1)) (i32.const 2)) +(assert_return (invoke "callt" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "callt" (i32.const 3)) (i32.const 4)) +(assert_return (invoke "callt" (i32.const 4)) (i32.const 5)) +(assert_return (invoke "callt" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "callt" (i32.const 6)) (i32.const 3)) +(assert_trap (invoke "callt" (i32.const 7)) "undefined element") +(assert_trap (invoke "callt" (i32.const 100)) "undefined element") +(assert_trap (invoke "callt" (i32.const -1)) "undefined element") + +(assert_return (invoke "callu" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "callu" (i32.const 1)) (i32.const 2)) +(assert_return (invoke "callu" (i32.const 2)) (i32.const 3)) +(assert_return (invoke "callu" (i32.const 3)) (i32.const 4)) +(assert_return (invoke "callu" (i32.const 4)) (i32.const 5)) +(assert_return (invoke "callu" (i32.const 5)) (i32.const 1)) +(assert_return (invoke "callu" (i32.const 6)) (i32.const 3)) +(assert_trap (invoke "callu" (i32.const 7)) "undefined element") +(assert_trap (invoke "callu" (i32.const 100)) "undefined element") +(assert_trap (invoke "callu" (i32.const -1)) "undefined element") + +(module + (type $T (func (result i32))) + (table anyfunc (elem 0 1)) + + (func $t1 (type $T) (i32.const 1)) + (func $t2 (type $T) (i32.const 2)) + + (func (export "callt") (param $i i32) (result i32) + (call_indirect $T (get_local $i)) + ) +) + +(assert_return (invoke "callt" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "callt" (i32.const 1)) (i32.const 2)) diff --git a/test/WasmSpec/testsuite/get_local.wast b/test/WasmSpec/testsuite/get_local.wast new file mode 100644 index 00000000000..e1f9625b96d --- /dev/null +++ b/test/WasmSpec/testsuite/get_local.wast @@ -0,0 +1,148 @@ +;; Test `get_local` operator + +(module + ;; Typing + + (func (export "type-local-i32") (result i32) (local i32) (get_local 0)) + (func (export "type-local-i64") (result i64) (local i64) (get_local 0)) + (func (export "type-local-f32") (result f32) (local f32) (get_local 0)) + (func (export "type-local-f64") (result f64) (local f64) (get_local 0)) + + (func (export "type-param-i32") (param i32) (result i32) (get_local 0)) + (func (export "type-param-i64") (param i64) (result i64) (get_local 0)) + (func (export "type-param-f32") (param f32) (result f32) (get_local 0)) + (func (export "type-param-f64") (param f64) (result f64) (get_local 0)) + + (func (export "type-mixed") (param i64 f32 f64 i32 i32) + (local f32 i64 i64 f64) + (drop (i64.eqz (get_local 0))) + (drop (f32.neg (get_local 1))) + (drop (f64.neg (get_local 2))) + (drop (i32.eqz (get_local 3))) + (drop (i32.eqz (get_local 4))) + (drop (f32.neg (get_local 5))) + (drop (i64.eqz (get_local 6))) + (drop (i64.eqz (get_local 7))) + (drop (f64.neg (get_local 8))) + ) + + ;; Reading + + (func (export "read") (param i64 f32 f64 i32 i32) (result f64) + (local f32 i64 i64 f64) + (set_local 5 (f32.const 5.5)) + (set_local 6 (i64.const 6)) + (set_local 8 (f64.const 8)) + (f64.add + (f64.convert_u/i64 (get_local 0)) + (f64.add + (f64.promote/f32 (get_local 1)) + (f64.add + (get_local 2) + (f64.add + (f64.convert_u/i32 (get_local 3)) + (f64.add + (f64.convert_s/i32 (get_local 4)) + (f64.add + (f64.promote/f32 (get_local 5)) + (f64.add + (f64.convert_u/i64 (get_local 6)) + (f64.add + (f64.convert_u/i64 (get_local 7)) + (get_local 8) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +(assert_return (invoke "type-local-i32") (i32.const 0)) +(assert_return (invoke "type-local-i64") (i64.const 0)) +(assert_return (invoke "type-local-f32") (f32.const 0)) +(assert_return (invoke "type-local-f64") (f64.const 0)) + +(assert_return (invoke "type-param-i32" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "type-param-i64" (i64.const 3)) (i64.const 3)) +(assert_return (invoke "type-param-f32" (f32.const 4.4)) (f32.const 4.4)) +(assert_return (invoke "type-param-f64" (f64.const 5.5)) (f64.const 5.5)) + +(assert_return + (invoke "type-mixed" + (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) +) + +(assert_return + (invoke "read" + (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) + (f64.const 34.8) +) + + +;; Invalid typing of access to locals + +(assert_invalid + (module (func $type-local-num-vs-num (result i64) (local i32) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + + +;; Invalid typing of access to parameters + +(assert_invalid + (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + + +;; Invalid local index + +(assert_invalid + (module (func $unbound-local (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-local (local i32 i64) (get_local 14324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-param (param i32 i64) (get_local 2))) + "unknown local" +) +(assert_invalid + (module (func $large-param (local i32 i64) (get_local 714324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) + "unknown local" +) + diff --git a/test/WasmSpec/testsuite/globals.wast b/test/WasmSpec/testsuite/globals.wast new file mode 100644 index 00000000000..58cc51b6b12 --- /dev/null +++ b/test/WasmSpec/testsuite/globals.wast @@ -0,0 +1,92 @@ +;; Test globals + +(module + (global $a i32 (i32.const -2)) + (global (;1;) f32 (f32.const -3)) + (global (;2;) f64 (f64.const -4)) + (global $b i64 (i64.const -5)) + + (global $x (mut i32) (i32.const -12)) + (global (;5;) (mut f32) (f32.const -13)) + (global (;6;) (mut f64) (f64.const -14)) + (global $y (mut i64) (i64.const -15)) + + (func (export "get-a") (result i32) (get_global $a)) + (func (export "get-b") (result i64) (get_global $b)) + (func (export "get-x") (result i32) (get_global $x)) + (func (export "get-y") (result i64) (get_global $y)) + (func (export "set-x") (param i32) (set_global $x (get_local 0))) + (func (export "set-y") (param i64) (set_global $y (get_local 0))) + + (func (export "get-1") (result f32) (get_global 1)) + (func (export "get-2") (result f64) (get_global 2)) + (func (export "get-5") (result f32) (get_global 5)) + (func (export "get-6") (result f64) (get_global 6)) + (func (export "set-5") (param f32) (set_global 5 (get_local 0))) + (func (export "set-6") (param f64) (set_global 6 (get_local 0))) +) + +(assert_return (invoke "get-a") (i32.const -2)) +(assert_return (invoke "get-b") (i64.const -5)) +(assert_return (invoke "get-x") (i32.const -12)) +(assert_return (invoke "get-y") (i64.const -15)) + +(assert_return (invoke "get-1") (f32.const -3)) +(assert_return (invoke "get-2") (f64.const -4)) +(assert_return (invoke "get-5") (f32.const -13)) +(assert_return (invoke "get-6") (f64.const -14)) + +(assert_return (invoke "set-x" (i32.const 6))) +(assert_return (invoke "set-y" (i64.const 7))) +(assert_return (invoke "set-5" (f32.const 8))) +(assert_return (invoke "set-6" (f64.const 9))) + +(assert_return (invoke "get-x") (i32.const 6)) +(assert_return (invoke "get-y") (i64.const 7)) +(assert_return (invoke "get-5") (f32.const 8)) +(assert_return (invoke "get-6") (f64.const 9)) + +(assert_invalid + (module (global f32 (f32.const 0)) (func (set_global 0 (i32.const 1)))) + "global is immutable" +) + +(assert_invalid + (module (import "m" "a" (global (mut i32)))) + "mutable globals cannot be imported" +) + +(assert_invalid + (module (global (import "m" "a") (mut i32))) + "mutable globals cannot be imported" +) + +(assert_invalid + (module (global (mut f32) (f32.const 0)) (export "a" (global 0))) + "mutable globals cannot be exported" +) + +(assert_invalid + (module (global (export "a") (mut f32) (f32.const 0))) + "mutable globals cannot be exported" +) + +(assert_invalid + (module (global f32 (f32.neg (f32.const 0)))) + "constant expression required" +) + +(assert_invalid + (module (global f32 (get_local 0))) + "constant expression required" +) + +(assert_invalid + (module (global i32 (f32.const 0))) + "type mismatch" +) + +(assert_invalid + (module (global i32 (get_global 0))) + "unknown global" +) diff --git a/test/WasmSpec/testsuite/i32.load32_s.fail.wast b/test/WasmSpec/testsuite/i32.load32_s.fail.wast new file mode 100644 index 00000000000..abf38966ad4 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.load32_s.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i32) (i32.load32_s (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i32.load32_u.fail.wast b/test/WasmSpec/testsuite/i32.load32_u.fail.wast new file mode 100644 index 00000000000..26df00312b3 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.load32_u.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i32) (i32.load32_u (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i32.load64_s.fail.wast b/test/WasmSpec/testsuite/i32.load64_s.fail.wast new file mode 100644 index 00000000000..78fa0127966 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.load64_s.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i32) (i32.load64_s (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i32.load64_u.fail.wast b/test/WasmSpec/testsuite/i32.load64_u.fail.wast new file mode 100644 index 00000000000..01e8273e6a2 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.load64_u.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i32) (i32.load64_u (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i32.store32.fail.wast b/test/WasmSpec/testsuite/i32.store32.fail.wast new file mode 100644 index 00000000000..8a6c528d661 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.store32.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param i32) (i32.store32 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/i32.store64.fail.wast b/test/WasmSpec/testsuite/i32.store64.fail.wast new file mode 100644 index 00000000000..cb176d23e2d --- /dev/null +++ b/test/WasmSpec/testsuite/i32.store64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param i64) (i32.store64 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/i32.wast b/test/WasmSpec/testsuite/i32.wast new file mode 100644 index 00000000000..ba28d7c0901 --- /dev/null +++ b/test/WasmSpec/testsuite/i32.wast @@ -0,0 +1,404 @@ +;; i32 operations + +(module + (func (export "add") (param $x i32) (param $y i32) (result i32) (i32.add (get_local $x) (get_local $y))) + (func (export "sub") (param $x i32) (param $y i32) (result i32) (i32.sub (get_local $x) (get_local $y))) + (func (export "mul") (param $x i32) (param $y i32) (result i32) (i32.mul (get_local $x) (get_local $y))) + (func (export "div_s") (param $x i32) (param $y i32) (result i32) (i32.div_s (get_local $x) (get_local $y))) + (func (export "div_u") (param $x i32) (param $y i32) (result i32) (i32.div_u (get_local $x) (get_local $y))) + (func (export "rem_s") (param $x i32) (param $y i32) (result i32) (i32.rem_s (get_local $x) (get_local $y))) + (func (export "rem_u") (param $x i32) (param $y i32) (result i32) (i32.rem_u (get_local $x) (get_local $y))) + (func (export "and") (param $x i32) (param $y i32) (result i32) (i32.and (get_local $x) (get_local $y))) + (func (export "or") (param $x i32) (param $y i32) (result i32) (i32.or (get_local $x) (get_local $y))) + (func (export "xor") (param $x i32) (param $y i32) (result i32) (i32.xor (get_local $x) (get_local $y))) + (func (export "shl") (param $x i32) (param $y i32) (result i32) (i32.shl (get_local $x) (get_local $y))) + (func (export "shr_s") (param $x i32) (param $y i32) (result i32) (i32.shr_s (get_local $x) (get_local $y))) + (func (export "shr_u") (param $x i32) (param $y i32) (result i32) (i32.shr_u (get_local $x) (get_local $y))) + (func (export "rotl") (param $x i32) (param $y i32) (result i32) (i32.rotl (get_local $x) (get_local $y))) + (func (export "rotr") (param $x i32) (param $y i32) (result i32) (i32.rotr (get_local $x) (get_local $y))) + (func (export "clz") (param $x i32) (result i32) (i32.clz (get_local $x))) + (func (export "ctz") (param $x i32) (result i32) (i32.ctz (get_local $x))) + (func (export "popcnt") (param $x i32) (result i32) (i32.popcnt (get_local $x))) + (func (export "eqz") (param $x i32) (result i32) (i32.eqz (get_local $x))) + (func (export "eq") (param $x i32) (param $y i32) (result i32) (i32.eq (get_local $x) (get_local $y))) + (func (export "ne") (param $x i32) (param $y i32) (result i32) (i32.ne (get_local $x) (get_local $y))) + (func (export "lt_s") (param $x i32) (param $y i32) (result i32) (i32.lt_s (get_local $x) (get_local $y))) + (func (export "lt_u") (param $x i32) (param $y i32) (result i32) (i32.lt_u (get_local $x) (get_local $y))) + (func (export "le_s") (param $x i32) (param $y i32) (result i32) (i32.le_s (get_local $x) (get_local $y))) + (func (export "le_u") (param $x i32) (param $y i32) (result i32) (i32.le_u (get_local $x) (get_local $y))) + (func (export "gt_s") (param $x i32) (param $y i32) (result i32) (i32.gt_s (get_local $x) (get_local $y))) + (func (export "gt_u") (param $x i32) (param $y i32) (result i32) (i32.gt_u (get_local $x) (get_local $y))) + (func (export "ge_s") (param $x i32) (param $y i32) (result i32) (i32.ge_s (get_local $x) (get_local $y))) + (func (export "ge_u") (param $x i32) (param $y i32) (result i32) (i32.ge_u (get_local $x) (get_local $y))) +) + +(assert_return (invoke "add" (i32.const 1) (i32.const 1)) (i32.const 2)) +(assert_return (invoke "add" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "add" (i32.const -1) (i32.const -1)) (i32.const -2)) +(assert_return (invoke "add" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "add" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x80000000)) +(assert_return (invoke "add" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x7fffffff)) +(assert_return (invoke "add" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "add" (i32.const 0x3fffffff) (i32.const 1)) (i32.const 0x40000000)) + +(assert_return (invoke "sub" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "sub" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "sub" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "sub" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x7fffffff)) +(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "sub" (i32.const 0x3fffffff) (i32.const -1)) (i32.const 0x40000000)) + +(assert_return (invoke "mul" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "mul" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "mul" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "mul" (i32.const 0x10000000) (i32.const 4096)) (i32.const 0)) +(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000001)) +(assert_return (invoke "mul" (i32.const 0x01234567) (i32.const 0x76543210)) (i32.const 0x358e7470)) + +(assert_trap (invoke "div_s" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "div_s" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "div_s" (i32.const 0x80000000) (i32.const -1)) "integer overflow") +(assert_return (invoke "div_s" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "div_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "div_s" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "div_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0xc0000000)) +(assert_return (invoke "div_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0xffdf3b65)) +(assert_return (invoke "div_s" (i32.const 5) (i32.const 2)) (i32.const 2)) +(assert_return (invoke "div_s" (i32.const -5) (i32.const 2)) (i32.const -2)) +(assert_return (invoke "div_s" (i32.const 5) (i32.const -2)) (i32.const -2)) +(assert_return (invoke "div_s" (i32.const -5) (i32.const -2)) (i32.const 2)) +(assert_return (invoke "div_s" (i32.const 7) (i32.const 3)) (i32.const 2)) +(assert_return (invoke "div_s" (i32.const -7) (i32.const 3)) (i32.const -2)) +(assert_return (invoke "div_s" (i32.const 7) (i32.const -3)) (i32.const -2)) +(assert_return (invoke "div_s" (i32.const -7) (i32.const -3)) (i32.const 2)) +(assert_return (invoke "div_s" (i32.const 11) (i32.const 5)) (i32.const 2)) +(assert_return (invoke "div_s" (i32.const 17) (i32.const 7)) (i32.const 2)) + +(assert_trap (invoke "div_u" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "div_u" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_return (invoke "div_u" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "div_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "div_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0x40000000)) +(assert_return (invoke "div_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8fef)) +(assert_return (invoke "div_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0x20c49b)) +(assert_return (invoke "div_u" (i32.const 5) (i32.const 2)) (i32.const 2)) +(assert_return (invoke "div_u" (i32.const -5) (i32.const 2)) (i32.const 0x7ffffffd)) +(assert_return (invoke "div_u" (i32.const 5) (i32.const -2)) (i32.const 0)) +(assert_return (invoke "div_u" (i32.const -5) (i32.const -2)) (i32.const 0)) +(assert_return (invoke "div_u" (i32.const 7) (i32.const 3)) (i32.const 2)) +(assert_return (invoke "div_u" (i32.const 11) (i32.const 5)) (i32.const 2)) +(assert_return (invoke "div_u" (i32.const 17) (i32.const 7)) (i32.const 2)) + +(assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647)) +(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3)) + +(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001)) +(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649)) +(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5)) +(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5)) +(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3)) + +(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff)) +(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0)) +(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) + +(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) +(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) +(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff)) +(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) + +(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) +(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) +(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff)) +(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) +(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f)) +(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0)) + +(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe)) +(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe)) +(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2)) +(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) + +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff)) +(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000)) +(assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1)) +(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1)) + +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff)) +(assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff)) +(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000)) +(assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1)) + +(assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f)) +(assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed)) +(assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000)) +(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3)) +(assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) +(assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1)) + +(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0x0005)) (i32.const 0x1d860e97)) +(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97)) +(assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600)) +(assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000)) +(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5)) +(assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000)) +(assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1)) + +(assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0)) +(assert_return (invoke "clz" (i32.const 0)) (i32.const 32)) +(assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16)) +(assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24)) +(assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "clz" (i32.const 1)) (i32.const 31)) +(assert_return (invoke "clz" (i32.const 2)) (i32.const 30)) +(assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1)) + +(assert_return (invoke "ctz" (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ctz" (i32.const 0)) (i32.const 32)) +(assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15)) +(assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16)) +(assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31)) +(assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0)) + +(assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32)) +(assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1)) +(assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2)) +(assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31)) +(assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16)) +(assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16)) +(assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24)) + +(assert_return (invoke "eqz" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0)) + +(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) + +(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) + +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) + +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) + +(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) + +(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) + +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) + +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) + +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) + +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/i64.load64_s.fail.wast b/test/WasmSpec/testsuite/i64.load64_s.fail.wast new file mode 100644 index 00000000000..335bac35aba --- /dev/null +++ b/test/WasmSpec/testsuite/i64.load64_s.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i64) (i64.load64_s (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i64.load64_u.fail.wast b/test/WasmSpec/testsuite/i64.load64_u.fail.wast new file mode 100644 index 00000000000..b9002e2bf6f --- /dev/null +++ b/test/WasmSpec/testsuite/i64.load64_u.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (result i64) (i64.load64_u (get_local 0)))) diff --git a/test/WasmSpec/testsuite/i64.store64.fail.wast b/test/WasmSpec/testsuite/i64.store64.fail.wast new file mode 100644 index 00000000000..918761f6835 --- /dev/null +++ b/test/WasmSpec/testsuite/i64.store64.fail.wast @@ -0,0 +1 @@ +(module (memory 1) (func (param i32) (param i64) (i64.store64 (get_local 0) (get_local 1)))) diff --git a/test/WasmSpec/testsuite/i64.wast b/test/WasmSpec/testsuite/i64.wast new file mode 100644 index 00000000000..54b28c46095 --- /dev/null +++ b/test/WasmSpec/testsuite/i64.wast @@ -0,0 +1,406 @@ +;; i64 operations + +(module + (func (export "add") (param $x i64) (param $y i64) (result i64) (i64.add (get_local $x) (get_local $y))) + (func (export "sub") (param $x i64) (param $y i64) (result i64) (i64.sub (get_local $x) (get_local $y))) + (func (export "mul") (param $x i64) (param $y i64) (result i64) (i64.mul (get_local $x) (get_local $y))) + (func (export "div_s") (param $x i64) (param $y i64) (result i64) (i64.div_s (get_local $x) (get_local $y))) + (func (export "div_u") (param $x i64) (param $y i64) (result i64) (i64.div_u (get_local $x) (get_local $y))) + (func (export "rem_s") (param $x i64) (param $y i64) (result i64) (i64.rem_s (get_local $x) (get_local $y))) + (func (export "rem_u") (param $x i64) (param $y i64) (result i64) (i64.rem_u (get_local $x) (get_local $y))) + (func (export "and") (param $x i64) (param $y i64) (result i64) (i64.and (get_local $x) (get_local $y))) + (func (export "or") (param $x i64) (param $y i64) (result i64) (i64.or (get_local $x) (get_local $y))) + (func (export "xor") (param $x i64) (param $y i64) (result i64) (i64.xor (get_local $x) (get_local $y))) + (func (export "shl") (param $x i64) (param $y i64) (result i64) (i64.shl (get_local $x) (get_local $y))) + (func (export "shr_s") (param $x i64) (param $y i64) (result i64) (i64.shr_s (get_local $x) (get_local $y))) + (func (export "shr_u") (param $x i64) (param $y i64) (result i64) (i64.shr_u (get_local $x) (get_local $y))) + (func (export "rotl") (param $x i64) (param $y i64) (result i64) (i64.rotl (get_local $x) (get_local $y))) + (func (export "rotr") (param $x i64) (param $y i64) (result i64) (i64.rotr (get_local $x) (get_local $y))) + (func (export "clz") (param $x i64) (result i64) (i64.clz (get_local $x))) + (func (export "ctz") (param $x i64) (result i64) (i64.ctz (get_local $x))) + (func (export "popcnt") (param $x i64) (result i64) (i64.popcnt (get_local $x))) + (func (export "eqz") (param $x i64) (result i32) (i64.eqz (get_local $x))) + (func (export "eq") (param $x i64) (param $y i64) (result i32) (i64.eq (get_local $x) (get_local $y))) + (func (export "ne") (param $x i64) (param $y i64) (result i32) (i64.ne (get_local $x) (get_local $y))) + (func (export "lt_s") (param $x i64) (param $y i64) (result i32) (i64.lt_s (get_local $x) (get_local $y))) + (func (export "lt_u") (param $x i64) (param $y i64) (result i32) (i64.lt_u (get_local $x) (get_local $y))) + (func (export "le_s") (param $x i64) (param $y i64) (result i32) (i64.le_s (get_local $x) (get_local $y))) + (func (export "le_u") (param $x i64) (param $y i64) (result i32) (i64.le_u (get_local $x) (get_local $y))) + (func (export "gt_s") (param $x i64) (param $y i64) (result i32) (i64.gt_s (get_local $x) (get_local $y))) + (func (export "gt_u") (param $x i64) (param $y i64) (result i32) (i64.gt_u (get_local $x) (get_local $y))) + (func (export "ge_s") (param $x i64) (param $y i64) (result i32) (i64.ge_s (get_local $x) (get_local $y))) + (func (export "ge_u") (param $x i64) (param $y i64) (result i32) (i64.ge_u (get_local $x) (get_local $y))) +) + +(assert_return (invoke "add" (i64.const 1) (i64.const 1)) (i64.const 2)) +(assert_return (invoke "add" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "add" (i64.const -1) (i64.const -1)) (i64.const -2)) +(assert_return (invoke "add" (i64.const -1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "add" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "add" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "add" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "add" (i64.const 0x3fffffff) (i64.const 1)) (i64.const 0x40000000)) + +(assert_return (invoke "sub" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "sub" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "sub" (i64.const -1) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "sub" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "sub" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "sub" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "sub" (i64.const 0x3fffffff) (i64.const -1)) (i64.const 0x40000000)) + +(assert_return (invoke "mul" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "mul" (i64.const 1) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "mul" (i64.const -1) (i64.const -1)) (i64.const 1)) +(assert_return (invoke "mul" (i64.const 0x1000000000000000) (i64.const 4096)) (i64.const 0)) +(assert_return (invoke "mul" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "mul" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "mul" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x8000000000000001)) +(assert_return (invoke "mul" (i64.const 0x0123456789abcdef) (i64.const 0xfedcba9876543210)) (i64.const 0x2236d88fe5618cf0)) + +(assert_trap (invoke "div_s" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "div_s" (i64.const 0) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "div_s" (i64.const 0x8000000000000000) (i64.const -1)) "integer overflow") +(assert_return (invoke "div_s" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "div_s" (i64.const 0) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "div_s" (i64.const -1) (i64.const -1)) (i64.const 1)) +(assert_return (invoke "div_s" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0xc000000000000000)) +(assert_return (invoke "div_s" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 0xffdf3b645a1cac09)) +(assert_return (invoke "div_s" (i64.const 5) (i64.const 2)) (i64.const 2)) +(assert_return (invoke "div_s" (i64.const -5) (i64.const 2)) (i64.const -2)) +(assert_return (invoke "div_s" (i64.const 5) (i64.const -2)) (i64.const -2)) +(assert_return (invoke "div_s" (i64.const -5) (i64.const -2)) (i64.const 2)) +(assert_return (invoke "div_s" (i64.const 7) (i64.const 3)) (i64.const 2)) +(assert_return (invoke "div_s" (i64.const -7) (i64.const 3)) (i64.const -2)) +(assert_return (invoke "div_s" (i64.const 7) (i64.const -3)) (i64.const -2)) +(assert_return (invoke "div_s" (i64.const -7) (i64.const -3)) (i64.const 2)) +(assert_return (invoke "div_s" (i64.const 11) (i64.const 5)) (i64.const 2)) +(assert_return (invoke "div_s" (i64.const 17) (i64.const 7)) (i64.const 2)) + +(assert_trap (invoke "div_u" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "div_u" (i64.const 0) (i64.const 0)) "integer divide by zero") +(assert_return (invoke "div_u" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "div_u" (i64.const 0) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "div_u" (i64.const -1) (i64.const -1)) (i64.const 1)) +(assert_return (invoke "div_u" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "div_u" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0x4000000000000000)) +(assert_return (invoke "div_u" (i64.const 0x8ff00ff00ff00ff0) (i64.const 0x100000001)) (i64.const 0x8ff00fef)) +(assert_return (invoke "div_u" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 0x20c49ba5e353f7)) +(assert_return (invoke "div_u" (i64.const 5) (i64.const 2)) (i64.const 2)) +(assert_return (invoke "div_u" (i64.const -5) (i64.const 2)) (i64.const 0x7ffffffffffffffd)) +(assert_return (invoke "div_u" (i64.const 5) (i64.const -2)) (i64.const 0)) +(assert_return (invoke "div_u" (i64.const -5) (i64.const -2)) (i64.const 0)) +(assert_return (invoke "div_u" (i64.const 7) (i64.const 3)) (i64.const 2)) +(assert_return (invoke "div_u" (i64.const 11) (i64.const 5)) (i64.const 2)) +(assert_return (invoke "div_u" (i64.const 17) (i64.const 7)) (i64.const 2)) + +(assert_trap (invoke "rem_s" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_s" (i64.const 0) (i64.const 0)) "integer divide by zero") +(assert_return (invoke "rem_s" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const 0) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const -1) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0)) +(assert_return (invoke "rem_s" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const -807)) +(assert_return (invoke "rem_s" (i64.const 5) (i64.const 2)) (i64.const 1)) +(assert_return (invoke "rem_s" (i64.const -5) (i64.const 2)) (i64.const -1)) +(assert_return (invoke "rem_s" (i64.const 5) (i64.const -2)) (i64.const 1)) +(assert_return (invoke "rem_s" (i64.const -5) (i64.const -2)) (i64.const -1)) +(assert_return (invoke "rem_s" (i64.const 7) (i64.const 3)) (i64.const 1)) +(assert_return (invoke "rem_s" (i64.const -7) (i64.const 3)) (i64.const -1)) +(assert_return (invoke "rem_s" (i64.const 7) (i64.const -3)) (i64.const 1)) +(assert_return (invoke "rem_s" (i64.const -7) (i64.const -3)) (i64.const -1)) +(assert_return (invoke "rem_s" (i64.const 11) (i64.const 5)) (i64.const 1)) +(assert_return (invoke "rem_s" (i64.const 17) (i64.const 7)) (i64.const 3)) + +(assert_trap (invoke "rem_u" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_u" (i64.const 0) (i64.const 0)) "integer divide by zero") +(assert_return (invoke "rem_u" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "rem_u" (i64.const 0) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "rem_u" (i64.const -1) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "rem_u" (i64.const 0x8000000000000000) (i64.const -1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "rem_u" (i64.const 0x8000000000000000) (i64.const 2)) (i64.const 0)) +(assert_return (invoke "rem_u" (i64.const 0x8ff00ff00ff00ff0) (i64.const 0x100000001)) (i64.const 0x80000001)) +(assert_return (invoke "rem_u" (i64.const 0x8000000000000001) (i64.const 1000)) (i64.const 809)) +(assert_return (invoke "rem_u" (i64.const 5) (i64.const 2)) (i64.const 1)) +(assert_return (invoke "rem_u" (i64.const -5) (i64.const 2)) (i64.const 1)) +(assert_return (invoke "rem_u" (i64.const 5) (i64.const -2)) (i64.const 5)) +(assert_return (invoke "rem_u" (i64.const -5) (i64.const -2)) (i64.const -5)) +(assert_return (invoke "rem_u" (i64.const 7) (i64.const 3)) (i64.const 1)) +(assert_return (invoke "rem_u" (i64.const 11) (i64.const 5)) (i64.const 1)) +(assert_return (invoke "rem_u" (i64.const 17) (i64.const 7)) (i64.const 3)) + +(assert_return (invoke "and" (i64.const 1) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "and" (i64.const 0) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "and" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "and" (i64.const 0) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "and" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "and" (i64.const 0x7fffffffffffffff) (i64.const -1)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "and" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0xf0f0f0f0)) +(assert_return (invoke "and" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0xffffffffffffffff)) + +(assert_return (invoke "or" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "or" (i64.const 0) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "or" (i64.const 1) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "or" (i64.const 0) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "or" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const -1)) +(assert_return (invoke "or" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0x8000000000000000)) +(assert_return (invoke "or" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0xffffffff)) +(assert_return (invoke "or" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0xffffffffffffffff)) + +(assert_return (invoke "xor" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "xor" (i64.const 0) (i64.const 1)) (i64.const 1)) +(assert_return (invoke "xor" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "xor" (i64.const 0) (i64.const 0)) (i64.const 0)) +(assert_return (invoke "xor" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i64.const -1)) +(assert_return (invoke "xor" (i64.const 0x8000000000000000) (i64.const 0)) (i64.const 0x8000000000000000)) +(assert_return (invoke "xor" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "xor" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const 0x8000000000000000)) +(assert_return (invoke "xor" (i64.const 0xf0f0ffff) (i64.const 0xfffff0f0)) (i64.const 0x0f0f0f0f)) +(assert_return (invoke "xor" (i64.const 0xffffffffffffffff) (i64.const 0xffffffffffffffff)) (i64.const 0)) + +(assert_return (invoke "shl" (i64.const 1) (i64.const 1)) (i64.const 2)) +(assert_return (invoke "shl" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "shl" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0xfffffffffffffffe)) +(assert_return (invoke "shl" (i64.const 0xffffffffffffffff) (i64.const 1)) (i64.const 0xfffffffffffffffe)) +(assert_return (invoke "shl" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "shl" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "shl" (i64.const 1) (i64.const 63)) (i64.const 0x8000000000000000)) +(assert_return (invoke "shl" (i64.const 1) (i64.const 64)) (i64.const 1)) +(assert_return (invoke "shl" (i64.const 1) (i64.const 65)) (i64.const 2)) +(assert_return (invoke "shl" (i64.const 1) (i64.const -1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "shl" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0x8000000000000000)) + +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const 1)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x3fffffffffffffff)) +(assert_return (invoke "shr_s" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0xc000000000000000)) +(assert_return (invoke "shr_s" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x2000000000000000)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 64)) (i64.const 1)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 65)) (i64.const 0)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0)) +(assert_return (invoke "shr_s" (i64.const 1) (i64.const 0x8000000000000000)) (i64.const 1)) +(assert_return (invoke "shr_s" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const 64)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const 65)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const -1)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const -1)) +(assert_return (invoke "shr_s" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const -1)) + +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 1)) (i64.const 0)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const 1)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "shr_u" (i64.const 0x7fffffffffffffff) (i64.const 1)) (i64.const 0x3fffffffffffffff)) +(assert_return (invoke "shr_u" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 0x4000000000000000)) +(assert_return (invoke "shr_u" (i64.const 0x4000000000000000) (i64.const 1)) (i64.const 0x2000000000000000)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 64)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 65)) (i64.const 0)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const -1)) (i64.const 0)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0x7fffffffffffffff)) (i64.const 0)) +(assert_return (invoke "shr_u" (i64.const 1) (i64.const 0x8000000000000000)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const 64)) (i64.const -1)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const 65)) (i64.const 0x7fffffffffffffff)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const -1)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const 0x7fffffffffffffff)) (i64.const 1)) +(assert_return (invoke "shr_u" (i64.const -1) (i64.const 0x8000000000000000)) (i64.const -1)) + +(assert_return (invoke "rotl" (i64.const 1) (i64.const 1)) (i64.const 2)) +(assert_return (invoke "rotl" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "rotl" (i64.const -1) (i64.const 1)) (i64.const -1)) +(assert_return (invoke "rotl" (i64.const 0xabd1234ef567809c) (i64.const 63)) (i64.const 0x55e891a77ab3c04e)) +(assert_return (invoke "rotl" (i64.const 0xabd1234ef567809c) (i64.const 0x800000000000003f)) (i64.const 0x55e891a77ab3c04e)) +(assert_return (invoke "rotl" (i64.const 1) (i64.const 63)) (i64.const 0x8000000000000000)) +(assert_return (invoke "rotl" (i64.const 0x8000000000000000) (i64.const 1)) (i64.const 1)) + +(assert_return (invoke "rotr" (i64.const 1) (i64.const 1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "rotr" (i64.const 1) (i64.const 0)) (i64.const 1)) +(assert_return (invoke "rotr" (i64.const -1) (i64.const 1)) (i64.const -1)) +(assert_return (invoke "rotr" (i64.const 0xabcd1234ef567809) (i64.const 53)) (i64.const 0x6891a77ab3c04d5e)) +(assert_return (invoke "rotr" (i64.const 0xabcd1234ef567809) (i64.const 0x35)) (i64.const 0x6891a77ab3c04d5e)) +(assert_return (invoke "rotr" (i64.const 0xabcd1234ef567809) (i64.const 0xf5)) (i64.const 0x6891a77ab3c04d5e)) +(assert_return (invoke "rotr" (i64.const 1) (i64.const 1)) (i64.const 0x8000000000000000)) +(assert_return (invoke "rotr" (i64.const 0x8000000000000000) (i64.const 63)) (i64.const 1)) + +(assert_return (invoke "clz" (i64.const 0xffffffffffffffff)) (i64.const 0)) +(assert_return (invoke "clz" (i64.const 0)) (i64.const 64)) +(assert_return (invoke "clz" (i64.const 0x00008000)) (i64.const 48)) +(assert_return (invoke "clz" (i64.const 0xff)) (i64.const 56)) +(assert_return (invoke "clz" (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "clz" (i64.const 1)) (i64.const 63)) +(assert_return (invoke "clz" (i64.const 2)) (i64.const 62)) +(assert_return (invoke "clz" (i64.const 0x7fffffffffffffff)) (i64.const 1)) + +(assert_return (invoke "ctz" (i64.const -1)) (i64.const 0)) +(assert_return (invoke "ctz" (i64.const 0)) (i64.const 64)) +(assert_return (invoke "ctz" (i64.const 0x00008000)) (i64.const 15)) +(assert_return (invoke "ctz" (i64.const 0x00010000)) (i64.const 16)) +(assert_return (invoke "ctz" (i64.const 0x8000000000000000)) (i64.const 63)) +(assert_return (invoke "ctz" (i64.const 0x7fffffffffffffff)) (i64.const 0)) + +(assert_return (invoke "popcnt" (i64.const -1)) (i64.const 64)) +(assert_return (invoke "popcnt" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "popcnt" (i64.const 0x00008000)) (i64.const 1)) +(assert_return (invoke "popcnt" (i64.const 0x8000800080008000)) (i64.const 4)) +(assert_return (invoke "popcnt" (i64.const 0x7fffffffffffffff)) (i64.const 63)) +(assert_return (invoke "popcnt" (i64.const 0xAAAAAAAA55555555)) (i64.const 32)) +(assert_return (invoke "popcnt" (i64.const 0x99999999AAAAAAAA)) (i64.const 32)) +(assert_return (invoke "popcnt" (i64.const 0xDEADBEEFDEADBEEF)) (i64.const 48)) + +(assert_return (invoke "eqz" (i64.const 0)) (i32.const 1)) +(assert_return (invoke "eqz" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "eqz" (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "eqz" (i64.const 0x7fffffffffffffff)) (i32.const 0)) + +(assert_return (invoke "eq" (i64.const 0) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "eq" (i64.const 1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "eq" (i64.const -1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "eq" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "eq" (i64.const -1) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "eq" (i64.const 1) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "eq" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) + +(assert_return (invoke "ne" (i64.const 0) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "ne" (i64.const 1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "ne" (i64.const -1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "ne" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "ne" (i64.const -1) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "ne" (i64.const 1) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "ne" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) + +(assert_return (invoke "lt_s" (i64.const 0) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const -1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const -1) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 1) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 0) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "lt_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "lt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) + +(assert_return (invoke "lt_u" (i64.const 0) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const -1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const -1) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 1) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) + +(assert_return (invoke "le_s" (i64.const 0) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const -1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const -1) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 1) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "le_s" (i64.const 0) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) + +(assert_return (invoke "le_u" (i64.const 0) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const 1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const -1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const -1) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const 1) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i64.const 0) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "le_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "le_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) + +(assert_return (invoke "gt_s" (i64.const 0) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const -1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const -1) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 1) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "gt_s" (i64.const 0) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) + +(assert_return (invoke "gt_u" (i64.const 0) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const 1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const -1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const -1) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const 1) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i64.const 0) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "gt_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "gt_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) + +(assert_return (invoke "ge_s" (i64.const 0) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const -1) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const -1) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 1) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 0) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 0)) +(assert_return (invoke "ge_s" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 0)) +(assert_return (invoke "ge_s" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 1)) + +(assert_return (invoke "ge_u" (i64.const 0) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const -1) (i64.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0x7fffffffffffffff) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const -1) (i64.const -1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 1) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0) (i64.const 1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0) (i64.const 0x8000000000000000)) (i32.const 0)) +(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const -1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i64.const -1) (i64.const 0x8000000000000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0x8000000000000000) (i64.const 0x7fffffffffffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i64.const 0x7fffffffffffffff) (i64.const 0x8000000000000000)) (i32.const 0)) diff --git a/test/WasmSpec/testsuite/import-after-func.fail.wast b/test/WasmSpec/testsuite/import-after-func.fail.wast new file mode 100644 index 00000000000..ece33a72c91 --- /dev/null +++ b/test/WasmSpec/testsuite/import-after-func.fail.wast @@ -0,0 +1 @@ +(module (func) (import "" "" (memory 0))) diff --git a/test/WasmSpec/testsuite/import-after-global.fail.wast b/test/WasmSpec/testsuite/import-after-global.fail.wast new file mode 100644 index 00000000000..09cece1a01e --- /dev/null +++ b/test/WasmSpec/testsuite/import-after-global.fail.wast @@ -0,0 +1 @@ +(module (global i64) (import "" "" (table 0 anyfunc))) diff --git a/test/WasmSpec/testsuite/import-after-memory.fail.wast b/test/WasmSpec/testsuite/import-after-memory.fail.wast new file mode 100644 index 00000000000..fbe582a9341 --- /dev/null +++ b/test/WasmSpec/testsuite/import-after-memory.fail.wast @@ -0,0 +1 @@ +(module (memory 0) (import "" "" (global i32))) diff --git a/test/WasmSpec/testsuite/import-after-table.fail.wast b/test/WasmSpec/testsuite/import-after-table.fail.wast new file mode 100644 index 00000000000..bcd747a9976 --- /dev/null +++ b/test/WasmSpec/testsuite/import-after-table.fail.wast @@ -0,0 +1 @@ +(module (table 0 anyfunc) (import "" "" (func))) diff --git a/test/WasmSpec/testsuite/imports.wast b/test/WasmSpec/testsuite/imports.wast new file mode 100644 index 00000000000..33b5dc94fb5 --- /dev/null +++ b/test/WasmSpec/testsuite/imports.wast @@ -0,0 +1,455 @@ +;; Auxiliary module to import from + +(module + (func (export "func")) + (func (export "func-i32") (param i32)) + (func (export "func-f32") (param f32)) + (func (export "func->i32") (result i32) (i32.const 22)) + (func (export "func->f32") (result f32) (f32.const 11)) + (func (export "func-i32->i32") (param i32) (result i32) (get_local 0)) + (global (export "global-i32") i32 (i32.const 55)) + (global (export "global-f32") f32 (f32.const 44)) + (table (export "table-10-inf") 10 anyfunc) + ;; (table (export "table-10-20") 10 20 anyfunc) + (memory (export "memory-2-inf") 2) + ;; (memory (export "memory-2-4") 2 4) +) + +(register "test") + + +;; Functions + +(module + (type $func_i32 (func (param i32))) + (type $func_i64 (func (param i64))) + + (import "spectest" "print" (func (param i32))) + (func (import "spectest" "print") (param i64)) + (import "spectest" "print" (func $print_i32 (param i32))) + (import "spectest" "print" (func $print_i64 (param i64))) + (import "spectest" "print" (func $print_i32_f32 (param i32 f32))) + (import "spectest" "print" (func $print_i64_f64 (param i64 f64))) + (func $print_i32-2 (import "spectest" "print") (param i32)) + (func $print_i64-2 (import "spectest" "print") (param i64)) + + (table anyfunc (elem $print_i32 $print_i64)) + + (func (export "print32") (param $i i32) + (call 0 (get_local $i)) + (call $print_i32_f32 + (i32.add (get_local $i) (i32.const 1)) + (f32.const 42) + ) + (call $print_i32 (get_local $i)) + (call $print_i32-2 (get_local $i)) + (call_indirect $func_i32 (get_local $i) (i32.const 0)) + ) + + (func (export "print64") (param $i i64) + (call 1 (get_local $i)) + (call $print_i64_f64 + (i64.add (get_local $i) (i64.const 1)) + (f64.const 53) + ) + (call $print_i64 (get_local $i)) + (call $print_i64-2 (get_local $i)) + (call_indirect $func_i64 (get_local $i) (i32.const 1)) + ) +) + +(assert_return (invoke "print32" (i32.const 13))) +(assert_return (invoke "print64" (i64.const 24))) + +(module (import "test" "func" (func))) +(module (import "test" "func-i32" (func (param i32)))) +(module (import "test" "func-f32" (func (param f32)))) +(module (import "test" "func->i32" (func (result i32)))) +(module (import "test" "func->f32" (func (result f32)))) +(module (import "test" "func-i32->i32" (func (param i32) (result i32)))) + +(assert_unlinkable + (module (import "test" "unknown" (func))) + "unknown import" +) +(assert_unlinkable + (module (import "spectest" "unknown" (func))) + "unknown import" +) + +(assert_unlinkable + (module (import "test" "func" (func (param i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func" (func (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func" (func (param i32) (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32" (func (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32" (func (param f32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32" (func (param i64)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32" (func (param i32) (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func->i32" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func->i32" (func (param i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func->i32" (func (result f32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func->i32" (func (result i64)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func->i32" (func (param i32) (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32->i32" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32->i32" (func (param i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "func-i32->i32" (func (result i32)))) + "type mismatch" +) + +(assert_unlinkable + (module (import "test" "global-i32" (func (result i32)))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "table-10-inf" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "global" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "table" (func))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "memory" (func))) + "type mismatch" +) + + +;; Globals + +(module + (import "spectest" "global" (global i32)) + (global (import "spectest" "global") i32) + + (import "spectest" "global" (global $x i32)) + (global $y (import "spectest" "global") i32) + + (import "spectest" "global" (global i64)) + (import "spectest" "global" (global f32)) + (import "spectest" "global" (global f64)) + + (func (export "get-0") (result i32) (get_global 0)) + (func (export "get-1") (result i32) (get_global 1)) + (func (export "get-x") (result i32) (get_global $x)) + (func (export "get-y") (result i32) (get_global $y)) +) + +(assert_return (invoke "get-0") (i32.const 666)) +(assert_return (invoke "get-1") (i32.const 666)) +(assert_return (invoke "get-x") (i32.const 666)) +(assert_return (invoke "get-y") (i32.const 666)) + +(module (import "test" "global-i32" (global i32))) +(module (import "test" "global-f32" (global f32))) + +(assert_unlinkable + (module (import "test" "unknown" (global i32))) + "unknown import" +) +(assert_unlinkable + (module (import "spectest" "unknown" (global i32))) + "unknown import" +) + +(assert_unlinkable + (module (import "test" "func" (global i32))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "table-10-inf" (global i32))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (global i32))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "print" (global i32))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "table" (global i32))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "memory" (global i32))) + "type mismatch" +) + + +;; Tables + +(module + (type (func (result i32))) + (import "spectest" "table" (table 10 20 anyfunc)) + (elem 0 (i32.const 1) $f $g) + + (func (export "call") (param i32) (result i32) (call_indirect 0 (get_local 0))) + (func $f (result i32) (i32.const 11)) + (func $g (result i32) (i32.const 22)) +) + +(assert_trap (invoke "call" (i32.const 0)) "uninitialized element") +(assert_return (invoke "call" (i32.const 1)) (i32.const 11)) +(assert_return (invoke "call" (i32.const 2)) (i32.const 22)) +(assert_trap (invoke "call" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "call" (i32.const 100)) "undefined element") + + +(module + (type (func (result i32))) + (table (import "spectest" "table") 10 20 anyfunc) + (elem 0 (i32.const 1) $f $g) + + (func (export "call") (param i32) (result i32) (call_indirect 0 (get_local 0))) + (func $f (result i32) (i32.const 11)) + (func $g (result i32) (i32.const 22)) +) + +(assert_trap (invoke "call" (i32.const 0)) "uninitialized element") +(assert_return (invoke "call" (i32.const 1)) (i32.const 11)) +(assert_return (invoke "call" (i32.const 2)) (i32.const 22)) +(assert_trap (invoke "call" (i32.const 3)) "uninitialized element") +(assert_trap (invoke "call" (i32.const 100)) "undefined element") + + +(assert_invalid + (module (import "" "" (table 10 anyfunc)) (import "" "" (table 10 anyfunc))) + "multiple tables" +) +(assert_invalid + (module (import "" "" (table 10 anyfunc)) (table 10 anyfunc)) + "multiple tables" +) +(assert_invalid + (module (table 10 anyfunc) (table 10 anyfunc)) + "multiple tables" +) + +(module (import "test" "table-10-inf" (table 10 anyfunc))) +(module (import "test" "table-10-inf" (table 5 anyfunc))) +(module (import "test" "table-10-inf" (table 0 anyfunc))) +(module (import "spectest" "table" (table 10 anyfunc))) +(module (import "spectest" "table" (table 5 anyfunc))) +(module (import "spectest" "table" (table 0 anyfunc))) +(module (import "spectest" "table" (table 10 20 anyfunc))) +(module (import "spectest" "table" (table 5 20 anyfunc))) +(module (import "spectest" "table" (table 0 20 anyfunc))) +(module (import "spectest" "table" (table 10 25 anyfunc))) +(module (import "spectest" "table" (table 5 25 anyfunc))) + +(assert_unlinkable + (module (import "test" "unknown" (table 10 anyfunc))) + "unknown import" +) +(assert_unlinkable + (module (import "spectest" "unknown" (table 10 anyfunc))) + "unknown import" +) + +(assert_unlinkable + (module (import "test" "table-10-inf" (table 12 anyfunc))) + "actual size smaller than declared" +) +(assert_unlinkable + (module (import "test" "table-10-inf" (table 10 20 anyfunc))) + "maximum size larger than declared" +) +(assert_unlinkable + (module (import "spectest" "table" (table 12 anyfunc))) + "actual size smaller than declared" +) +(assert_unlinkable + (module (import "spectest" "table" (table 10 15 anyfunc))) + "maximum size larger than declared" +) + +(assert_unlinkable + (module (import "test" "func" (table 10 anyfunc))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "global-i32" (table 10 anyfunc))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (table 10 anyfunc))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "print" (table 10 anyfunc))) + "type mismatch" +) + + + +;; Memories + +(module + (import "spectest" "memory" (memory 1 2)) + (data 0 (i32.const 10) "\10") + + (func (export "load") (param i32) (result i32) (i32.load (get_local 0))) +) + +(assert_return (invoke "load" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 10)) (i32.const 16)) +(assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) +(assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") + +(module + (memory (import "spectest" "memory") 1 2) + (data 0 (i32.const 10) "\10") + + (func (export "load") (param i32) (result i32) (i32.load (get_local 0))) +) +(assert_return (invoke "load" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load" (i32.const 10)) (i32.const 16)) +(assert_return (invoke "load" (i32.const 8)) (i32.const 0x100000)) +(assert_trap (invoke "load" (i32.const 1000000)) "out of bounds memory access") + +(assert_invalid + (module (import "" "" (memory 1)) (import "" "" (memory 1))) + "multiple memories" +) +(assert_invalid + (module (import "" "" (memory 1)) (memory 0)) + "multiple memories" +) +(assert_invalid + (module (memory 0) (memory 0)) + "multiple memories" +) + +(module (import "test" "memory-2-inf" (memory 2))) +(module (import "test" "memory-2-inf" (memory 1))) +(module (import "test" "memory-2-inf" (memory 0))) +(module (import "spectest" "memory" (memory 1))) +(module (import "spectest" "memory" (memory 0))) +(module (import "spectest" "memory" (memory 1 2))) +(module (import "spectest" "memory" (memory 0 2))) +(module (import "spectest" "memory" (memory 1 3))) +(module (import "spectest" "memory" (memory 0 3))) + +(assert_unlinkable + (module (import "test" "unknown" (memory 1))) + "unknown import" +) +(assert_unlinkable + (module (import "spectest" "unknown" (memory 1))) + "unknown import" +) + +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory 3))) + "actual size smaller than declared" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory 2 3))) + "maximum size larger than declared" +) +(assert_unlinkable + (module (import "spectest" "memory" (memory 2))) + "actual size smaller than declared" +) +(assert_unlinkable + (module (import "spectest" "memory" (memory 1 1))) + "maximum size larger than declared" +) + +(assert_unlinkable + (module (import "test" "func-i32" (memory 1))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "global-i32" (memory 1))) + "type mismatch" +) +(assert_unlinkable + (module (import "test" "table-10-inf" (memory 1))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "print" (memory 1))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "global" (memory 1))) + "type mismatch" +) +(assert_unlinkable + (module (import "spectest" "table" (memory 1))) + "type mismatch" +) + +(assert_unlinkable + (module (import "spectest" "memory" (memory 2))) + "actual size smaller than declared" +) +(assert_unlinkable + (module (import "spectest" "memory" (memory 1 1))) + "maximum size larger than declared" +) + +(module + (import "spectest" "memory" (memory 0 3)) ;; actual has max size 2 + (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) +) +(assert_return (invoke "grow" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "grow" (i32.const 0)) (i32.const 2)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const -1)) +(assert_return (invoke "grow" (i32.const 0)) (i32.const 2)) diff --git a/test/WasmSpec/testsuite/int_exprs.wast b/test/WasmSpec/testsuite/int_exprs.wast new file mode 100644 index 00000000000..d8272fa7f42 --- /dev/null +++ b/test/WasmSpec/testsuite/int_exprs.wast @@ -0,0 +1,299 @@ +;; Test interesting integer "expressions". These tests contain code +;; patterns which tempt common value-changing optimizations. + +;; Test that x+1>n is not folded to x + +(module + (func (export "i32.no_fold_shl_shr_s") (param $x i32) (result i32) + (i32.shr_s (i32.shl (get_local $x) (i32.const 1)) (i32.const 1))) + (func (export "i32.no_fold_shl_shr_u") (param $x i32) (result i32) + (i32.shr_u (i32.shl (get_local $x) (i32.const 1)) (i32.const 1))) + + (func (export "i64.no_fold_shl_shr_s") (param $x i64) (result i64) + (i64.shr_s (i64.shl (get_local $x) (i64.const 1)) (i64.const 1))) + (func (export "i64.no_fold_shl_shr_u") (param $x i64) (result i64) + (i64.shr_u (i64.shl (get_local $x) (i64.const 1)) (i64.const 1))) +) + +(assert_return (invoke "i32.no_fold_shl_shr_s" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "i32.no_fold_shl_shr_u" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "i64.no_fold_shl_shr_s" (i64.const 0x8000000000000000)) (i64.const 0)) +(assert_return (invoke "i64.no_fold_shl_shr_u" (i64.const 0x8000000000000000)) (i64.const 0)) + +;; Test that x>>n<?,./ ") (result f32) (f32.const 0x1.96p+2)) + + ;; Test that we can use names that have special meaning in JS. + (func (export "NaN") (result f32) (f32.const 0x2.01p+2)) + (func (export "Infinity") (result f32) (f32.const 0x2.02p+2)) + (func (export "if") (result f32) (f32.const 0x2.03p+2)) + + ;; Test that we can use common libc names without conflict. + (func (export "malloc") (result f32) (f32.const 0x1.92p+2)) + + ;; Test that we can use some libc hidden names without conflict. + (func (export "_malloc") (result f32) (f32.const 0x1.93p+2)) + (func (export "__malloc") (result f32) (f32.const 0x1.94p+2)) +) + +(assert_return (invoke "") (f32.const 0x1.91p+2)) +(assert_return (invoke "malloc") (f32.const 0x1.92p+2)) +(assert_return (invoke "_malloc") (f32.const 0x1.93p+2)) +(assert_return (invoke "__malloc") (f32.const 0x1.94p+2)) +(assert_return (invoke "~!@#$%^&*()_+`-={}|[]\\:\";'<>?,./ ") (f32.const 0x1.96p+2)) +(assert_return (invoke "0") (f32.const 0x1.97p+2)) +(assert_return (invoke "_") (f32.const 0x1.98p+2)) +(assert_return (invoke "$") (f32.const 0x1.99p+2)) +(assert_return (invoke "@") (f32.const 0x2.00p+2)) +(assert_return (invoke "NaN") (f32.const 0x2.01p+2)) +(assert_return (invoke "Infinity") (f32.const 0x2.02p+2)) +(assert_return (invoke "if") (f32.const 0x2.03p+2)) + +(module + ;; Test that we can use indices instead of names to reference imports, + ;; exports, functions and parameters. + (import "spectest" "print" (func (param i32))) + (func (import "spectest" "print") (param i32)) + (func (param i32) (param i32) + (call 0 (get_local 0)) + (call 1 (get_local 1)) + ) + (export "print32" (func 2)) +) + +(invoke "print32" (i32.const 42) (i32.const 123)) diff --git a/test/WasmSpec/testsuite/nop.wast b/test/WasmSpec/testsuite/nop.wast new file mode 100644 index 00000000000..ab83eede26c --- /dev/null +++ b/test/WasmSpec/testsuite/nop.wast @@ -0,0 +1,260 @@ +;; Test `nop` operator. + +(module + ;; Auxiliary definitions + (func $dummy) + (func $3-ary (param i32 i32 i32) (result i32) + get_local 0 get_local 1 get_local 2 i32.sub i32.add + ) + (memory 1) + + (func (export "as-func-first") (result i32) + (nop) (i32.const 1) + ) + (func (export "as-func-mid") (result i32) + (call $dummy) (nop) (i32.const 2) + ) + (func (export "as-func-last") (result i32) + (call $dummy) (i32.const 3) (nop) + ) + (func (export "as-func-everywhere") (result i32) + (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop) + ) + + (func (export "as-drop-last") (param i32) + (get_local 0) (nop) (drop) + ) + (func (export "as-drop-everywhere") (param i32) + (nop) (nop) (get_local 0) (nop) (nop) (drop) + ) + + (func (export "as-select-mid1") (param i32) (result i32) + (get_local 0) (nop) (get_local 0) (get_local 0) (select) + ) + (func (export "as-select-mid2") (param i32) (result i32) + (get_local 0) (get_local 0) (nop) (get_local 0) (select) + ) + (func (export "as-select-last") (param i32) (result i32) + (get_local 0) (get_local 0) (get_local 0) (nop) (select) + ) + (func (export "as-select-everywhere") (param i32) (result i32) + (nop) (get_local 0) (nop) (nop) (get_local 0) + (nop) (nop) (get_local 0) (nop) (nop) (select) + ) + + (func (export "as-block-first") (result i32) + (block i32 (nop) (i32.const 2)) + ) + (func (export "as-block-mid") (result i32) + (block i32 (call $dummy) (nop) (i32.const 2)) + ) + (func (export "as-block-last") (result i32) + (block i32 (nop) (call $dummy) (i32.const 3) (nop)) + ) + (func (export "as-block-everywhere") (result i32) + (block i32 (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop)) + ) + + (func (export "as-loop-first") (result i32) + (loop i32 (nop) (i32.const 2)) + ) + (func (export "as-loop-mid") (result i32) + (loop i32 (call $dummy) (nop) (i32.const 2)) + ) + (func (export "as-loop-last") (result i32) + (loop i32 (call $dummy) (i32.const 3) (nop)) + ) + (func (export "as-loop-everywhere") (result i32) + (loop i32 (nop) (nop) (call $dummy) (nop) (i32.const 4) (nop) (nop)) + ) + + (func (export "as-if-condition") (param i32) + (get_local 0) (nop) (if (then (call $dummy))) + ) + (func (export "as-if-then") (param i32) + (if (get_local 0) (nop) (call $dummy)) + ) + (func (export "as-if-else") (param i32) + (if (get_local 0) (call $dummy) (nop)) + ) + + (func (export "as-br-last") (param i32) (result i32) + (block i32 (get_local 0) (nop) (br 0)) + ) + (func (export "as-br-everywhere") (param i32) (result i32) + (block i32 (nop) (nop) (get_local 0) (nop) (nop) (br 0)) + ) + + (func (export "as-br_if-mid") (param i32) (result i32) + (block i32 (get_local 0) (nop) (get_local 0) (br_if 0)) + ) + (func (export "as-br_if-last") (param i32) (result i32) + (block i32 (get_local 0) (get_local 0) (nop) (br_if 0)) + ) + (func (export "as-br_if-everywhere") (param i32) (result i32) + (block i32 + (nop) (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) + (br_if 0) + ) + ) + + (func (export "as-br_table-mid") (param i32) (result i32) + (block i32 (get_local 0) (nop) (get_local 0) (br_table 0 0)) + ) + (func (export "as-br_table-last") (param i32) (result i32) + (block i32 (get_local 0) (get_local 0) (nop) (br_table 0 0)) + ) + (func (export "as-br_table-everywhere") (param i32) (result i32) + (block i32 + (nop) (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) + (br_table 0 0) + ) + ) + + (func (export "as-return-last") (param i32) (result i32) + (get_local 0) (nop) (return) + ) + (func (export "as-return-everywhere") (param i32) (result i32) + (nop) (nop) (get_local 0) (nop) (nop) (return) + ) + + (func (export "as-call-mid1") (param i32 i32 i32) (result i32) + (get_local 0) (nop) (get_local 1) (get_local 2) (call $3-ary) + ) + (func (export "as-call-mid2") (param i32 i32 i32) (result i32) + (get_local 0) (get_local 1) (nop) (get_local 2) (call $3-ary) + ) + (func (export "as-call-last") (param i32 i32 i32) (result i32) + (get_local 0) (get_local 1) (get_local 2) (nop) (call $3-ary) + ) + (func (export "as-call-everywhere") (param i32 i32 i32) (result i32) + (nop) (nop) (get_local 0) (nop) (nop) (get_local 1) + (nop) (nop) (get_local 2) (nop) (nop) (call $3-ary) + ) + + ;; TODO(stack): call_indirect, *_local, load*, store* + + (func (export "as-unary-last") (param i32) (result i32) + (get_local 0) (nop) (i32.ctz) + ) + (func (export "as-unary-everywhere") (param i32) (result i32) + (nop) (nop) (get_local 0) (nop) (nop) (i32.ctz) + ) + + (func (export "as-binary-mid") (param i32) (result i32) + (get_local 0) (nop) (get_local 0) (i32.add) + ) + (func (export "as-binary-last") (param i32) (result i32) + (get_local 0) (get_local 0) (nop) (i32.add) + ) + (func (export "as-binary-everywhere") (param i32) (result i32) + (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) (i32.add) + ) + + (func (export "as-test-last") (param i32) (result i32) + (get_local 0) (nop) (i32.eqz) + ) + (func (export "as-test-everywhere") (param i32) (result i32) + (nop) (nop) (get_local 0) (nop) (nop) i32.eqz + ) + + (func (export "as-compare-mid") (param i32) (result i32) + (get_local 0) (nop) (get_local 0) (i32.ne) + ) + (func (export "as-compare-last") (param i32) (result i32) + (get_local 0) (get_local 0) (nop) (i32.lt_u) + ) + (func (export "as-compare-everywhere") (param i32) (result i32) + (nop) (get_local 0) (nop) (nop) (get_local 0) (nop) (nop) (i32.le_s) + ) + + (func (export "as-grow_memory-last") (param i32) (result i32) + (get_local 0) (nop) (grow_memory) + ) + (func (export "as-grow_memory-everywhere") (param i32) (result i32) + (nop) (nop) (get_local 0) (nop) (nop) (grow_memory) + ) +) + +(assert_return (invoke "as-func-first") (i32.const 1)) +(assert_return (invoke "as-func-mid") (i32.const 2)) +(assert_return (invoke "as-func-last") (i32.const 3)) +(assert_return (invoke "as-func-everywhere") (i32.const 4)) + +(assert_return (invoke "as-drop-last" (i32.const 0))) +(assert_return (invoke "as-drop-everywhere" (i32.const 0))) + +(assert_return (invoke "as-select-mid1" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "as-select-mid2" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "as-select-last" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "as-select-everywhere" (i32.const 3)) (i32.const 3)) + +(assert_return (invoke "as-block-first") (i32.const 2)) +(assert_return (invoke "as-block-mid") (i32.const 2)) +(assert_return (invoke "as-block-last") (i32.const 3)) +(assert_return (invoke "as-block-everywhere") (i32.const 4)) + +(assert_return (invoke "as-loop-first") (i32.const 2)) +(assert_return (invoke "as-loop-mid") (i32.const 2)) +(assert_return (invoke "as-loop-last") (i32.const 3)) +(assert_return (invoke "as-loop-everywhere") (i32.const 4)) + +(assert_return (invoke "as-if-condition" (i32.const 0))) +(assert_return (invoke "as-if-condition" (i32.const -1))) +(assert_return (invoke "as-if-then" (i32.const 0))) +(assert_return (invoke "as-if-then" (i32.const 4))) +(assert_return (invoke "as-if-else" (i32.const 0))) +(assert_return (invoke "as-if-else" (i32.const 3))) + +(assert_return (invoke "as-br-last" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-br-everywhere" (i32.const 7)) (i32.const 7)) + +(assert_return (invoke "as-br_if-mid" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "as-br_if-last" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-br_if-everywhere" (i32.const 7)) (i32.const 7)) + +(assert_return (invoke "as-br_table-mid" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "as-br_table-last" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-br_table-everywhere" (i32.const 7)) (i32.const 7)) + +(assert_return (invoke "as-return-last" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-return-everywhere" (i32.const 7)) (i32.const 7)) + +(assert_return (invoke "as-call-mid1" (i32.const 3) (i32.const 1) (i32.const 2)) (i32.const 2)) +(assert_return (invoke "as-call-mid2" (i32.const 0) (i32.const 3) (i32.const 1)) (i32.const 2)) +(assert_return (invoke "as-call-last" (i32.const 10) (i32.const 9) (i32.const -1)) (i32.const 20)) +(assert_return (invoke "as-call-everywhere" (i32.const 2) (i32.const 1) (i32.const 5)) (i32.const -2)) + +(assert_return (invoke "as-unary-last" (i32.const 30)) (i32.const 1)) +(assert_return (invoke "as-unary-everywhere" (i32.const 12)) (i32.const 2)) + +(assert_return (invoke "as-binary-mid" (i32.const 3)) (i32.const 6)) +(assert_return (invoke "as-binary-last" (i32.const 3)) (i32.const 6)) +(assert_return (invoke "as-binary-everywhere" (i32.const 3)) (i32.const 6)) + +(assert_return (invoke "as-test-last" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "as-test-everywhere" (i32.const 0)) (i32.const 1)) + +(assert_return (invoke "as-compare-mid" (i32.const 3)) (i32.const 0)) +(assert_return (invoke "as-compare-last" (i32.const 3)) (i32.const 0)) +(assert_return (invoke "as-compare-everywhere" (i32.const 3)) (i32.const 1)) + +(assert_return (invoke "as-grow_memory-last" (i32.const 2)) (i32.const 1)) +(assert_return (invoke "as-grow_memory-everywhere" (i32.const 12)) (i32.const 3)) + +(assert_invalid + (module (func $type-i32 (result i32) (nop))) + "type mismatch" +) +(assert_invalid + (module (func $type-i64 (result i64) (nop))) + "type mismatch" +) +(assert_invalid + (module (func $type-f32 (result f32) (nop))) + "type mismatch" +) +(assert_invalid + (module (func $type-f64 (result f64) (nop))) + "type mismatch" +) diff --git a/test/WasmSpec/testsuite/of_string-overflow-hex-u32.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-hex-u32.fail.wast new file mode 100644 index 00000000000..1323a1f0b06 --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-hex-u32.fail.wast @@ -0,0 +1 @@ +(module (func (i32.const 0x100000000))) diff --git a/test/WasmSpec/testsuite/of_string-overflow-hex-u64.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-hex-u64.fail.wast new file mode 100644 index 00000000000..d13d6e4b46f --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-hex-u64.fail.wast @@ -0,0 +1 @@ +(module (func (i64.const 0x10000000000000000))) diff --git a/test/WasmSpec/testsuite/of_string-overflow-s32.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-s32.fail.wast new file mode 100644 index 00000000000..4dda960273a --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-s32.fail.wast @@ -0,0 +1 @@ +(module (func (i32.const -2147483649))) diff --git a/test/WasmSpec/testsuite/of_string-overflow-s64.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-s64.fail.wast new file mode 100644 index 00000000000..1034b0b0012 --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-s64.fail.wast @@ -0,0 +1 @@ +(module (func (i64.const -9223372036854775809))) diff --git a/test/WasmSpec/testsuite/of_string-overflow-u32.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-u32.fail.wast new file mode 100644 index 00000000000..8f226177bde --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-u32.fail.wast @@ -0,0 +1 @@ +(module (func (i32.const 4294967296))) diff --git a/test/WasmSpec/testsuite/of_string-overflow-u64.fail.wast b/test/WasmSpec/testsuite/of_string-overflow-u64.fail.wast new file mode 100644 index 00000000000..cfa2c46b585 --- /dev/null +++ b/test/WasmSpec/testsuite/of_string-overflow-u64.fail.wast @@ -0,0 +1 @@ +(module (func (i64.const 18446744073709551616))) diff --git a/test/WasmSpec/testsuite/resizing.wast b/test/WasmSpec/testsuite/resizing.wast new file mode 100644 index 00000000000..c24b7ec1aea --- /dev/null +++ b/test/WasmSpec/testsuite/resizing.wast @@ -0,0 +1,58 @@ +(module + (memory 0) + + (func (export "load_at_zero") (result i32) (i32.load (i32.const 0))) + (func (export "store_at_zero") (i32.store (i32.const 0) (i32.const 2))) + + (func (export "load_at_page_size") (result i32) (i32.load (i32.const 0x10000))) + (func (export "store_at_page_size") (i32.store (i32.const 0x10000) (i32.const 3))) + + (func (export "grow") (param $sz i32) (result i32) (grow_memory (get_local $sz))) + (func (export "size") (result i32) (current_memory)) +) + +(assert_return (invoke "size") (i32.const 0)) +(assert_trap (invoke "store_at_zero") "out of bounds memory access") +(assert_trap (invoke "load_at_zero") "out of bounds memory access") +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "size") (i32.const 1)) +(assert_return (invoke "load_at_zero") (i32.const 0)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i32.const 4)) (i32.const 1)) +(assert_return (invoke "size") (i32.const 5)) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "load_at_page_size") (i32.const 0)) +(assert_return (invoke "store_at_page_size")) +(assert_return (invoke "load_at_page_size") (i32.const 3)) + + +(module + (memory 0) + (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) +) + +(assert_return (invoke "grow" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "grow" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "grow" (i32.const 2)) (i32.const 1)) +(assert_return (invoke "grow" (i32.const 10000)) (i32.const 3)) + +(module + (memory 0 10) + (func (export "grow") (param i32) (result i32) (grow_memory (get_local 0))) +) + +(assert_return (invoke "grow" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "grow" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "grow" (i32.const 6)) (i32.const 4)) +(assert_return (invoke "grow" (i32.const 0)) (i32.const 10)) +(assert_return (invoke "grow" (i32.const 1)) (i32.const -1)) diff --git a/test/WasmSpec/testsuite/return.wast b/test/WasmSpec/testsuite/return.wast new file mode 100644 index 00000000000..e5a87c58cb1 --- /dev/null +++ b/test/WasmSpec/testsuite/return.wast @@ -0,0 +1,281 @@ +;; Test `return` operator + +(module + ;; Auxiliary definition + (func $dummy) + + (func (export "type-i32") (drop (i32.ctz (return)))) + (func (export "type-i64") (drop (i64.ctz (return)))) + (func (export "type-f32") (drop (f32.neg (return)))) + (func (export "type-f64") (drop (f64.neg (return)))) + + (func (export "nullary") (return)) + (func (export "unary") (result f64) (return (f64.const 3))) + + (func (export "as-func-first") (result i32) + (return (i32.const 1)) (i32.const 2) + ) + (func (export "as-func-mid") (result i32) + (call $dummy) (return (i32.const 2)) (i32.const 3) + ) + (func (export "as-func-last") + (nop) (call $dummy) (return) + ) + (func (export "as-func-value") (result i32) + (nop) (call $dummy) (return (i32.const 3)) + ) + + (func (export "as-block-first") + (block (return) (call $dummy)) + ) + (func (export "as-block-mid") + (block (call $dummy) (return) (call $dummy)) + ) + (func (export "as-block-last") + (block (nop) (call $dummy) (return)) + ) + (func (export "as-block-value") (result i32) + (block i32 (nop) (call $dummy) (return (i32.const 2))) + ) + + (func (export "as-loop-first") (result i32) + (loop i32 (return (i32.const 3)) (i32.const 2)) + ) + (func (export "as-loop-mid") (result i32) + (loop i32 (call $dummy) (return (i32.const 4)) (i32.const 2)) + ) + (func (export "as-loop-last") (result i32) + (loop i32 (nop) (call $dummy) (return (i32.const 5))) + ) + + (func (export "as-br-value") (result i32) + (block i32 (br 0 (return (i32.const 9)))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (return))) + ) + (func (export "as-br_if-value") (result i32) + (block i32 (br_if 0 (return (i32.const 8)) (i32.const 1)) (i32.const 7)) + ) + (func (export "as-br_if-value-cond") (result i32) + (block i32 (drop (br_if 0 (i32.const 6) (return (i32.const 9)))) (i32.const 7)) + ) + + (func (export "as-br_table-index") (result i64) + (block (br_table 0 0 0 (return (i64.const 9)))) (i64.const -1) + ) + (func (export "as-br_table-value") (result i32) + (block i32 + (br_table 0 0 0 (return (i32.const 10)) (i32.const 1)) (i32.const 7) + ) + ) + (func (export "as-br_table-value-index") (result i32) + (block i32 + (br_table 0 0 (i32.const 6) (return (i32.const 11))) (i32.const 7) + ) + ) + + (func (export "as-return-value") (result i64) + (return (return (i64.const 7))) + ) + + (func (export "as-if-cond") (result i32) + (if (return (i32.const 2)) (i32.const 0) (i32.const 1)) + ) + (func (export "as-if-then") (param i32 i32) (result i32) + (if i32 (get_local 0) (return (i32.const 3)) (get_local 1)) + ) + (func (export "as-if-else") (param i32 i32) (result i32) + (if i32 (get_local 0) (get_local 1) (return (i32.const 4))) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (select (return (i32.const 5)) (get_local 0) (get_local 1)) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (select (get_local 0) (return (i32.const 6)) (get_local 1)) + ) + (func (export "as-select-cond") (result i32) + (select (i32.const 0) (i32.const 1) (return (i32.const 7))) + ) + + (func $f (param i32 i32 i32) (result i32) (i32.const -1)) + (func (export "as-call-first") (result i32) + (call $f (return (i32.const 12)) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call-mid") (result i32) + (call $f (i32.const 1) (return (i32.const 13)) (i32.const 3)) + ) + (func (export "as-call-last") (result i32) + (call $f (i32.const 1) (i32.const 2) (return (i32.const 14))) + ) + + (type $sig (func (param i32 i32 i32) (result i32))) + (table anyfunc (elem $f)) + (func (export "as-call_indirect-func") (result i32) + (call_indirect $sig (return (i32.const 20)) (i32.const 1) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call_indirect-first") (result i32) + (call_indirect $sig (i32.const 0) (return (i32.const 21)) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call_indirect-mid") (result i32) + (call_indirect $sig (i32.const 0) (i32.const 1) (return (i32.const 22)) (i32.const 3)) + ) + (func (export "as-call_indirect-last") (result i32) + (call_indirect $sig (i32.const 0) (i32.const 1) (i32.const 2) (return (i32.const 23))) + ) + + (func (export "as-set_local-value") (result i32) (local f32) + (set_local 0 (return (i32.const 17))) (i32.const -1) + ) + + (memory 1) + (func (export "as-load-address") (result f32) + (f32.load (return (f32.const 1.7))) + ) + (func (export "as-loadN-address") (result i64) + (i64.load8_s (return (i64.const 30))) + ) + + (func (export "as-store-address") (result i32) + (f64.store (return (i32.const 30)) (f64.const 7)) (i32.const -1) + ) + (func (export "as-store-value") (result i32) + (i64.store (i32.const 2) (return (i32.const 31))) (i32.const -1) + ) + + (func (export "as-storeN-address") (result i32) + (i32.store8 (return (i32.const 32)) (i32.const 7)) (i32.const -1) + ) + (func (export "as-storeN-value") (result i32) + (i64.store16 (i32.const 2) (return (i32.const 33))) (i32.const -1) + ) + + (func (export "as-unary-operand") (result f32) + (f32.neg (return (f32.const 3.4))) + ) + + (func (export "as-binary-left") (result i32) + (i32.add (return (i32.const 3)) (i32.const 10)) + ) + (func (export "as-binary-right") (result i64) + (i64.sub (i64.const 10) (return (i64.const 45))) + ) + + (func (export "as-test-operand") (result i32) + (i32.eqz (return (i32.const 44))) + ) + + (func (export "as-compare-left") (result i32) + (f64.le (return (i32.const 43)) (f64.const 10)) + ) + (func (export "as-compare-right") (result i32) + (f32.ne (f32.const 10) (return (i32.const 42))) + ) + + (func (export "as-convert-operand") (result i32) + (i32.wrap/i64 (return (i32.const 41))) + ) + + (func (export "as-grow_memory-size") (result i32) + (grow_memory (return (i32.const 40))) + ) +) + +(assert_return (invoke "type-i32")) +(assert_return (invoke "type-i64")) +(assert_return (invoke "type-f32")) +(assert_return (invoke "type-f64")) + +(assert_return (invoke "nullary")) +(assert_return (invoke "unary") (f64.const 3)) + +(assert_return (invoke "as-func-first") (i32.const 1)) +(assert_return (invoke "as-func-mid") (i32.const 2)) +(assert_return (invoke "as-func-last")) +(assert_return (invoke "as-func-value") (i32.const 3)) + +(assert_return (invoke "as-block-first")) +(assert_return (invoke "as-block-mid")) +(assert_return (invoke "as-block-last")) +(assert_return (invoke "as-block-value") (i32.const 2)) + +(assert_return (invoke "as-loop-first") (i32.const 3)) +(assert_return (invoke "as-loop-mid") (i32.const 4)) +(assert_return (invoke "as-loop-last") (i32.const 5)) + +(assert_return (invoke "as-br-value") (i32.const 9)) + +(assert_return (invoke "as-br_if-cond")) +(assert_return (invoke "as-br_if-value") (i32.const 8)) +(assert_return (invoke "as-br_if-value-cond") (i32.const 9)) + +(assert_return (invoke "as-br_table-index") (i64.const 9)) +(assert_return (invoke "as-br_table-value") (i32.const 10)) +(assert_return (invoke "as-br_table-value-index") (i32.const 11)) + +(assert_return (invoke "as-return-value") (i64.const 7)) + +(assert_return (invoke "as-if-cond") (i32.const 2)) +(assert_return (invoke "as-if-then" (i32.const 1) (i32.const 6)) (i32.const 3)) +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 6)) (i32.const 4)) +(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) + +(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-first" (i32.const 1) (i32.const 6)) (i32.const 5)) +(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-second" (i32.const 1) (i32.const 6)) (i32.const 6)) +(assert_return (invoke "as-select-cond") (i32.const 7)) + +(assert_return (invoke "as-call-first") (i32.const 12)) +(assert_return (invoke "as-call-mid") (i32.const 13)) +(assert_return (invoke "as-call-last") (i32.const 14)) + +(assert_return (invoke "as-call_indirect-func") (i32.const 20)) +(assert_return (invoke "as-call_indirect-first") (i32.const 21)) +(assert_return (invoke "as-call_indirect-mid") (i32.const 22)) +(assert_return (invoke "as-call_indirect-last") (i32.const 23)) + +(assert_return (invoke "as-set_local-value") (i32.const 17)) + +(assert_return (invoke "as-load-address") (f32.const 1.7)) +(assert_return (invoke "as-loadN-address") (i64.const 30)) + +(assert_return (invoke "as-store-address") (i32.const 30)) +(assert_return (invoke "as-store-value") (i32.const 31)) +(assert_return (invoke "as-storeN-address") (i32.const 32)) +(assert_return (invoke "as-storeN-value") (i32.const 33)) + +(assert_return (invoke "as-unary-operand") (f32.const 3.4)) + +(assert_return (invoke "as-binary-left") (i32.const 3)) +(assert_return (invoke "as-binary-right") (i64.const 45)) + +(assert_return (invoke "as-test-operand") (i32.const 44)) + +(assert_return (invoke "as-compare-left") (i32.const 43)) +(assert_return (invoke "as-compare-right") (i32.const 42)) + +(assert_return (invoke "as-convert-operand") (i32.const 41)) + +(assert_return (invoke "as-grow_memory-size") (i32.const 40)) + +;; TODO(stack): move these somewhere else +(module (func $type-value-void-vs-empty (return (nop)))) +(module (func $type-value-num-vs-empty (return (i32.const 0)))) + +(assert_invalid + (module (func $type-value-empty-vs-num (result f64) (return))) + "type mismatch" +) +(assert_invalid + (module (func $type-value-void-vs-num (result f64) (return (nop)))) + "type mismatch" +) +(assert_invalid + (module (func $type-value-num-vs-num (result f64) (return (i64.const 1)))) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/select.wast b/test/WasmSpec/testsuite/select.wast new file mode 100644 index 00000000000..0007df78e70 --- /dev/null +++ b/test/WasmSpec/testsuite/select.wast @@ -0,0 +1,57 @@ +(module + (func (export "select_i32") (param $lhs i32) (param $rhs i32) (param $cond i32) (result i32) + (select (get_local $lhs) (get_local $rhs) (get_local $cond))) + + (func (export "select_i64") (param $lhs i64) (param $rhs i64) (param $cond i32) (result i64) + (select (get_local $lhs) (get_local $rhs) (get_local $cond))) + + (func (export "select_f32") (param $lhs f32) (param $rhs f32) (param $cond i32) (result f32) + (select (get_local $lhs) (get_local $rhs) (get_local $cond))) + + (func (export "select_f64") (param $lhs f64) (param $rhs f64) (param $cond i32) (result f64) + (select (get_local $lhs) (get_local $rhs) (get_local $cond))) + + ;; Check that both sides of the select are evaluated + (func (export "select_trap_l") (param $cond i32) (result i32) + (select (unreachable) (i32.const 0) (get_local $cond))) + (func (export "select_trap_r") (param $cond i32) (result i32) + (select (i32.const 0) (unreachable) (get_local $cond))) +) + +(assert_return (invoke "select_i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) +(assert_return (invoke "select_f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) +(assert_return (invoke "select_f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) + +(assert_return (invoke "select_i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) +(assert_return (invoke "select_i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) +(assert_return (invoke "select_i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) + +(assert_return (invoke "select_f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) +(assert_return_nan (invoke "select_f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1))) +(assert_return (invoke "select_f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1)) +(assert_return (invoke "select_f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1)) +(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2)) +(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2)) +(assert_return (invoke "select_f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan)) +(assert_return_nan (invoke "select_f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0))) + +(assert_return (invoke "select_f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan)) +(assert_return (invoke "select_f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304)) +(assert_return (invoke "select_f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1)) +(assert_return (invoke "select_f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1)) +(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2)) +(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2)) +(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) +(assert_return (invoke "select_f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) + +(assert_trap (invoke "select_trap_l" (i32.const 1)) "unreachable executed") +(assert_trap (invoke "select_trap_l" (i32.const 0)) "unreachable executed") +(assert_trap (invoke "select_trap_r" (i32.const 1)) "unreachable executed") +(assert_trap (invoke "select_trap_r" (i32.const 0)) "unreachable executed") + +(assert_invalid + (module (func $arity-0 (select (nop) (nop) (i32.const 1)))) + "type mismatch" +) diff --git a/test/WasmSpec/testsuite/set_local.wast b/test/WasmSpec/testsuite/set_local.wast new file mode 100644 index 00000000000..5a006e1148e --- /dev/null +++ b/test/WasmSpec/testsuite/set_local.wast @@ -0,0 +1,205 @@ +;; Test `set_local` operator + +(module + ;; Typing + + (func (export "type-local-i32") (local i32) (set_local 0 (i32.const 0))) + (func (export "type-local-i64") (local i64) (set_local 0 (i64.const 0))) + (func (export "type-local-f32") (local f32) (set_local 0 (f32.const 0))) + (func (export "type-local-f64") (local f64) (set_local 0 (f64.const 0))) + + (func (export "type-param-i32") (param i32) (set_local 0 (i32.const 10))) + (func (export "type-param-i64") (param i64) (set_local 0 (i64.const 11))) + (func (export "type-param-f32") (param f32) (set_local 0 (f32.const 11.1))) + (func (export "type-param-f64") (param f64) (set_local 0 (f64.const 12.2))) + + (func (export "type-mixed") (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) + (set_local 0 (i64.const 0)) + (set_local 1 (f32.const 0)) + (set_local 2 (f64.const 0)) + (set_local 3 (i32.const 0)) + (set_local 4 (i32.const 0)) + (set_local 5 (f32.const 0)) + (set_local 6 (i64.const 0)) + (set_local 7 (i64.const 0)) + (set_local 8 (f64.const 0)) + ) + + ;; Writing + + (func (export "write") (param i64 f32 f64 i32 i32) (result i64) + (local f32 i64 i64 f64) + (set_local 1 (f32.const -0.3)) + (set_local 3 (i32.const 40)) + (set_local 4 (i32.const -7)) + (set_local 5 (f32.const 5.5)) + (set_local 6 (i64.const 6)) + (set_local 8 (f64.const 8)) + (i64.trunc_s/f64 + (f64.add + (f64.convert_u/i64 (get_local 0)) + (f64.add + (f64.promote/f32 (get_local 1)) + (f64.add + (get_local 2) + (f64.add + (f64.convert_u/i32 (get_local 3)) + (f64.add + (f64.convert_s/i32 (get_local 4)) + (f64.add + (f64.promote/f32 (get_local 5)) + (f64.add + (f64.convert_u/i64 (get_local 6)) + (f64.add + (f64.convert_u/i64 (get_local 7)) + (get_local 8) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +(assert_return (invoke "type-local-i32")) +(assert_return (invoke "type-local-i64")) +(assert_return (invoke "type-local-f32")) +(assert_return (invoke "type-local-f64")) + +(assert_return (invoke "type-param-i32" (i32.const 2))) +(assert_return (invoke "type-param-i64" (i64.const 3))) +(assert_return (invoke "type-param-f32" (f32.const 4.4))) +(assert_return (invoke "type-param-f64" (f64.const 5.5))) + +(assert_return + (invoke "type-mixed" + (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) +) + +(assert_return + (invoke "write" + (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) + (i64.const 56) +) + + +;; Invalid typing of access to locals + +(assert_invalid + (module (func $type-local-num-vs-num (result i64) (local i32) + (set_local 0 (i32.const 0)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f32) + (i32.eqz (set_local 0 (f32.const 0))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f64 i64) + (f64.neg (set_local 1 (i64.const 0))) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-local-arg-void-vs-num (local i32) (set_local 0 (nop)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local i32) (set_local 0 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local f32) (set_local 0 (f64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local f64 i64) (set_local 1 (f64.const 0)))) + "type mismatch" +) + + +;; Invalid typing of access to parameters + +(assert_invalid + (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + +(assert_invalid + (module (func $type-param-arg-void-vs-num (param i32) (set_local 0 (nop)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param i32) (set_local 0 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param f32) (set_local 0 (f64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param f64 i64) (set_local 1 (f64.const 0)))) + "type mismatch" +) + + +;; Invalid local index + +(assert_invalid + (module (func $unbound-local (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-local (local i32 i64) (get_local 14324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-param (param i32 i64) (get_local 2))) + "unknown local" +) +(assert_invalid + (module (func $large-param (local i32 i64) (get_local 714324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) + "unknown local" +) + +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param f32) (local i32) (set_local 1 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param i64 i32) (local f32) (set_local 1 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param i64) (local f64 i64) (set_local 1 (i64.const 0)))) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/skip-stack-guard-page.wast b/test/WasmSpec/testsuite/skip-stack-guard-page.wast new file mode 100644 index 00000000000..2b9f1cceaf6 --- /dev/null +++ b/test/WasmSpec/testsuite/skip-stack-guard-page.wast @@ -0,0 +1,2284 @@ +;; This tests that the stack overflow guard page can't be skipped by a function with more than a page of locals. +(module + (memory 1) + (export "test-guard-page-skip" (func $test-guard-page-skip)) + + (func $test-guard-page-skip + (param $depth i32) + (if (i32.eq (get_local $depth) (i32.const 0)) + (then (call $function-with-many-locals)) + (else (call $test-guard-page-skip (i32.sub (get_local $depth) (i32.const 1)))) + ) + ) + + (func $function-with-many-locals + + ;; 1056 i64 = 8448 bytes of locals + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x000-0x007 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x008-0x00f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x010-0x017 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x018-0x01f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x020-0x027 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x028-0x02f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x030-0x037 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x038-0x03f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x040-0x047 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x048-0x04f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x050-0x057 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x058-0x05f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x060-0x067 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x068-0x06f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x070-0x077 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x078-0x07f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x080-0x087 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x088-0x08f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x090-0x097 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x098-0x09f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0a0-0x0a7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0a8-0x0af + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0b0-0x0b7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0b8-0x0bf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0c0-0x0c7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0c8-0x0cf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0d0-0x0d7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0d8-0x0df + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0e0-0x0e7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0e8-0x0ef + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0f0-0x0f7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x0f8-0x0ff + + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x100-0x107 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x108-0x10f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x110-0x117 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x118-0x11f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x120-0x127 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x128-0x12f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x130-0x137 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x138-0x13f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x140-0x147 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x148-0x14f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x150-0x157 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x158-0x15f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x160-0x167 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x168-0x16f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x170-0x177 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x178-0x17f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x180-0x187 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x188-0x18f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x190-0x197 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x198-0x19f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1a0-0x1a7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1a8-0x1af + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1b0-0x1b7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1b8-0x1bf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1c0-0x1c7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1c8-0x1cf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1d0-0x1d7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1d8-0x1df + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1e0-0x1e7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1e8-0x1ef + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1f0-0x1f7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x1f8-0x1ff + + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x200-0x207 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x208-0x20f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x210-0x217 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x218-0x21f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x220-0x227 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x228-0x22f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x230-0x237 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x238-0x23f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x240-0x247 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x248-0x24f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x250-0x257 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x258-0x25f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x260-0x267 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x268-0x26f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x270-0x277 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x278-0x27f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x280-0x287 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x288-0x28f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x290-0x297 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x298-0x29f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2a0-0x2a7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2a8-0x2af + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2b0-0x2b7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2b8-0x2bf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2c0-0x2c7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2c8-0x2cf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2d0-0x2d7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2d8-0x2df + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2e0-0x2e7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2e8-0x2ef + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2f0-0x2f7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x2f8-0x2ff + + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x300-0x307 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x308-0x30f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x310-0x317 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x318-0x31f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x320-0x327 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x328-0x32f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x330-0x337 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x338-0x33f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x340-0x347 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x348-0x34f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x350-0x357 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x358-0x35f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x360-0x367 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x368-0x36f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x370-0x377 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x378-0x37f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x380-0x387 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x388-0x38f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x390-0x397 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x398-0x39f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3a0-0x3a7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3a8-0x3af + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3b0-0x3b7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3b8-0x3bf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3c0-0x3c7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3c8-0x3cf + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3d0-0x3d7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3d8-0x3df + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3e0-0x3e7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3e8-0x3ef + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3f0-0x3f7 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x3f8-0x3ff + + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x400-0x407 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x408-0x40f + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x410-0x417 + (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) (local i64) ;; 0x418-0x41f + + ;; recurse first to try to make the callee access the stack below the space allocated for the locals before the locals themselves have been initialized. + (call $function-with-many-locals) + + ;; load from memory into the locals + (set_local 0x000 (i64.load offset=0x000 align=1 (i32.const 0))) + (set_local 0x001 (i64.load offset=0x001 align=1 (i32.const 0))) + (set_local 0x002 (i64.load offset=0x002 align=1 (i32.const 0))) + (set_local 0x003 (i64.load offset=0x003 align=1 (i32.const 0))) + (set_local 0x004 (i64.load offset=0x004 align=1 (i32.const 0))) + (set_local 0x005 (i64.load offset=0x005 align=1 (i32.const 0))) + (set_local 0x006 (i64.load offset=0x006 align=1 (i32.const 0))) + (set_local 0x007 (i64.load offset=0x007 align=1 (i32.const 0))) + (set_local 0x008 (i64.load offset=0x008 align=1 (i32.const 0))) + (set_local 0x009 (i64.load offset=0x009 align=1 (i32.const 0))) + (set_local 0x00a (i64.load offset=0x00a align=1 (i32.const 0))) + (set_local 0x00b (i64.load offset=0x00b align=1 (i32.const 0))) + (set_local 0x00c (i64.load offset=0x00c align=1 (i32.const 0))) + (set_local 0x00d (i64.load offset=0x00d align=1 (i32.const 0))) + (set_local 0x00e (i64.load offset=0x00e align=1 (i32.const 0))) + (set_local 0x00f (i64.load offset=0x00f align=1 (i32.const 0))) + (set_local 0x010 (i64.load offset=0x010 align=1 (i32.const 0))) + (set_local 0x011 (i64.load offset=0x011 align=1 (i32.const 0))) + (set_local 0x012 (i64.load offset=0x012 align=1 (i32.const 0))) + (set_local 0x013 (i64.load offset=0x013 align=1 (i32.const 0))) + (set_local 0x014 (i64.load offset=0x014 align=1 (i32.const 0))) + (set_local 0x015 (i64.load offset=0x015 align=1 (i32.const 0))) + (set_local 0x016 (i64.load offset=0x016 align=1 (i32.const 0))) + (set_local 0x017 (i64.load offset=0x017 align=1 (i32.const 0))) + (set_local 0x018 (i64.load offset=0x018 align=1 (i32.const 0))) + (set_local 0x019 (i64.load offset=0x019 align=1 (i32.const 0))) + (set_local 0x01a (i64.load offset=0x01a align=1 (i32.const 0))) + (set_local 0x01b (i64.load offset=0x01b align=1 (i32.const 0))) + (set_local 0x01c (i64.load offset=0x01c align=1 (i32.const 0))) + (set_local 0x01d (i64.load offset=0x01d align=1 (i32.const 0))) + (set_local 0x01e (i64.load offset=0x01e align=1 (i32.const 0))) + (set_local 0x01f (i64.load offset=0x01f align=1 (i32.const 0))) + (set_local 0x020 (i64.load offset=0x020 align=1 (i32.const 0))) + (set_local 0x021 (i64.load offset=0x021 align=1 (i32.const 0))) + (set_local 0x022 (i64.load offset=0x022 align=1 (i32.const 0))) + (set_local 0x023 (i64.load offset=0x023 align=1 (i32.const 0))) + (set_local 0x024 (i64.load offset=0x024 align=1 (i32.const 0))) + (set_local 0x025 (i64.load offset=0x025 align=1 (i32.const 0))) + (set_local 0x026 (i64.load offset=0x026 align=1 (i32.const 0))) + (set_local 0x027 (i64.load offset=0x027 align=1 (i32.const 0))) + (set_local 0x028 (i64.load offset=0x028 align=1 (i32.const 0))) + (set_local 0x029 (i64.load offset=0x029 align=1 (i32.const 0))) + (set_local 0x02a (i64.load offset=0x02a align=1 (i32.const 0))) + (set_local 0x02b (i64.load offset=0x02b align=1 (i32.const 0))) + (set_local 0x02c (i64.load offset=0x02c align=1 (i32.const 0))) + (set_local 0x02d (i64.load offset=0x02d align=1 (i32.const 0))) + (set_local 0x02e (i64.load offset=0x02e align=1 (i32.const 0))) + (set_local 0x02f (i64.load offset=0x02f align=1 (i32.const 0))) + (set_local 0x030 (i64.load offset=0x030 align=1 (i32.const 0))) + (set_local 0x031 (i64.load offset=0x031 align=1 (i32.const 0))) + (set_local 0x032 (i64.load offset=0x032 align=1 (i32.const 0))) + (set_local 0x033 (i64.load offset=0x033 align=1 (i32.const 0))) + (set_local 0x034 (i64.load offset=0x034 align=1 (i32.const 0))) + (set_local 0x035 (i64.load offset=0x035 align=1 (i32.const 0))) + (set_local 0x036 (i64.load offset=0x036 align=1 (i32.const 0))) + (set_local 0x037 (i64.load offset=0x037 align=1 (i32.const 0))) + (set_local 0x038 (i64.load offset=0x038 align=1 (i32.const 0))) + (set_local 0x039 (i64.load offset=0x039 align=1 (i32.const 0))) + (set_local 0x03a (i64.load offset=0x03a align=1 (i32.const 0))) + (set_local 0x03b (i64.load offset=0x03b align=1 (i32.const 0))) + (set_local 0x03c (i64.load offset=0x03c align=1 (i32.const 0))) + (set_local 0x03d (i64.load offset=0x03d align=1 (i32.const 0))) + (set_local 0x03e (i64.load offset=0x03e align=1 (i32.const 0))) + (set_local 0x03f (i64.load offset=0x03f align=1 (i32.const 0))) + (set_local 0x040 (i64.load offset=0x040 align=1 (i32.const 0))) + (set_local 0x041 (i64.load offset=0x041 align=1 (i32.const 0))) + (set_local 0x042 (i64.load offset=0x042 align=1 (i32.const 0))) + (set_local 0x043 (i64.load offset=0x043 align=1 (i32.const 0))) + (set_local 0x044 (i64.load offset=0x044 align=1 (i32.const 0))) + (set_local 0x045 (i64.load offset=0x045 align=1 (i32.const 0))) + (set_local 0x046 (i64.load offset=0x046 align=1 (i32.const 0))) + (set_local 0x047 (i64.load offset=0x047 align=1 (i32.const 0))) + (set_local 0x048 (i64.load offset=0x048 align=1 (i32.const 0))) + (set_local 0x049 (i64.load offset=0x049 align=1 (i32.const 0))) + (set_local 0x04a (i64.load offset=0x04a align=1 (i32.const 0))) + (set_local 0x04b (i64.load offset=0x04b align=1 (i32.const 0))) + (set_local 0x04c (i64.load offset=0x04c align=1 (i32.const 0))) + (set_local 0x04d (i64.load offset=0x04d align=1 (i32.const 0))) + (set_local 0x04e (i64.load offset=0x04e align=1 (i32.const 0))) + (set_local 0x04f (i64.load offset=0x04f align=1 (i32.const 0))) + (set_local 0x050 (i64.load offset=0x050 align=1 (i32.const 0))) + (set_local 0x051 (i64.load offset=0x051 align=1 (i32.const 0))) + (set_local 0x052 (i64.load offset=0x052 align=1 (i32.const 0))) + (set_local 0x053 (i64.load offset=0x053 align=1 (i32.const 0))) + (set_local 0x054 (i64.load offset=0x054 align=1 (i32.const 0))) + (set_local 0x055 (i64.load offset=0x055 align=1 (i32.const 0))) + (set_local 0x056 (i64.load offset=0x056 align=1 (i32.const 0))) + (set_local 0x057 (i64.load offset=0x057 align=1 (i32.const 0))) + (set_local 0x058 (i64.load offset=0x058 align=1 (i32.const 0))) + (set_local 0x059 (i64.load offset=0x059 align=1 (i32.const 0))) + (set_local 0x05a (i64.load offset=0x05a align=1 (i32.const 0))) + (set_local 0x05b (i64.load offset=0x05b align=1 (i32.const 0))) + (set_local 0x05c (i64.load offset=0x05c align=1 (i32.const 0))) + (set_local 0x05d (i64.load offset=0x05d align=1 (i32.const 0))) + (set_local 0x05e (i64.load offset=0x05e align=1 (i32.const 0))) + (set_local 0x05f (i64.load offset=0x05f align=1 (i32.const 0))) + (set_local 0x060 (i64.load offset=0x060 align=1 (i32.const 0))) + (set_local 0x061 (i64.load offset=0x061 align=1 (i32.const 0))) + (set_local 0x062 (i64.load offset=0x062 align=1 (i32.const 0))) + (set_local 0x063 (i64.load offset=0x063 align=1 (i32.const 0))) + (set_local 0x064 (i64.load offset=0x064 align=1 (i32.const 0))) + (set_local 0x065 (i64.load offset=0x065 align=1 (i32.const 0))) + (set_local 0x066 (i64.load offset=0x066 align=1 (i32.const 0))) + (set_local 0x067 (i64.load offset=0x067 align=1 (i32.const 0))) + (set_local 0x068 (i64.load offset=0x068 align=1 (i32.const 0))) + (set_local 0x069 (i64.load offset=0x069 align=1 (i32.const 0))) + (set_local 0x06a (i64.load offset=0x06a align=1 (i32.const 0))) + (set_local 0x06b (i64.load offset=0x06b align=1 (i32.const 0))) + (set_local 0x06c (i64.load offset=0x06c align=1 (i32.const 0))) + (set_local 0x06d (i64.load offset=0x06d align=1 (i32.const 0))) + (set_local 0x06e (i64.load offset=0x06e align=1 (i32.const 0))) + (set_local 0x06f (i64.load offset=0x06f align=1 (i32.const 0))) + (set_local 0x070 (i64.load offset=0x070 align=1 (i32.const 0))) + (set_local 0x071 (i64.load offset=0x071 align=1 (i32.const 0))) + (set_local 0x072 (i64.load offset=0x072 align=1 (i32.const 0))) + (set_local 0x073 (i64.load offset=0x073 align=1 (i32.const 0))) + (set_local 0x074 (i64.load offset=0x074 align=1 (i32.const 0))) + (set_local 0x075 (i64.load offset=0x075 align=1 (i32.const 0))) + (set_local 0x076 (i64.load offset=0x076 align=1 (i32.const 0))) + (set_local 0x077 (i64.load offset=0x077 align=1 (i32.const 0))) + (set_local 0x078 (i64.load offset=0x078 align=1 (i32.const 0))) + (set_local 0x079 (i64.load offset=0x079 align=1 (i32.const 0))) + (set_local 0x07a (i64.load offset=0x07a align=1 (i32.const 0))) + (set_local 0x07b (i64.load offset=0x07b align=1 (i32.const 0))) + (set_local 0x07c (i64.load offset=0x07c align=1 (i32.const 0))) + (set_local 0x07d (i64.load offset=0x07d align=1 (i32.const 0))) + (set_local 0x07e (i64.load offset=0x07e align=1 (i32.const 0))) + (set_local 0x07f (i64.load offset=0x07f align=1 (i32.const 0))) + (set_local 0x080 (i64.load offset=0x080 align=1 (i32.const 0))) + (set_local 0x081 (i64.load offset=0x081 align=1 (i32.const 0))) + (set_local 0x082 (i64.load offset=0x082 align=1 (i32.const 0))) + (set_local 0x083 (i64.load offset=0x083 align=1 (i32.const 0))) + (set_local 0x084 (i64.load offset=0x084 align=1 (i32.const 0))) + (set_local 0x085 (i64.load offset=0x085 align=1 (i32.const 0))) + (set_local 0x086 (i64.load offset=0x086 align=1 (i32.const 0))) + (set_local 0x087 (i64.load offset=0x087 align=1 (i32.const 0))) + (set_local 0x088 (i64.load offset=0x088 align=1 (i32.const 0))) + (set_local 0x089 (i64.load offset=0x089 align=1 (i32.const 0))) + (set_local 0x08a (i64.load offset=0x08a align=1 (i32.const 0))) + (set_local 0x08b (i64.load offset=0x08b align=1 (i32.const 0))) + (set_local 0x08c (i64.load offset=0x08c align=1 (i32.const 0))) + (set_local 0x08d (i64.load offset=0x08d align=1 (i32.const 0))) + (set_local 0x08e (i64.load offset=0x08e align=1 (i32.const 0))) + (set_local 0x08f (i64.load offset=0x08f align=1 (i32.const 0))) + (set_local 0x090 (i64.load offset=0x090 align=1 (i32.const 0))) + (set_local 0x091 (i64.load offset=0x091 align=1 (i32.const 0))) + (set_local 0x092 (i64.load offset=0x092 align=1 (i32.const 0))) + (set_local 0x093 (i64.load offset=0x093 align=1 (i32.const 0))) + (set_local 0x094 (i64.load offset=0x094 align=1 (i32.const 0))) + (set_local 0x095 (i64.load offset=0x095 align=1 (i32.const 0))) + (set_local 0x096 (i64.load offset=0x096 align=1 (i32.const 0))) + (set_local 0x097 (i64.load offset=0x097 align=1 (i32.const 0))) + (set_local 0x098 (i64.load offset=0x098 align=1 (i32.const 0))) + (set_local 0x099 (i64.load offset=0x099 align=1 (i32.const 0))) + (set_local 0x09a (i64.load offset=0x09a align=1 (i32.const 0))) + (set_local 0x09b (i64.load offset=0x09b align=1 (i32.const 0))) + (set_local 0x09c (i64.load offset=0x09c align=1 (i32.const 0))) + (set_local 0x09d (i64.load offset=0x09d align=1 (i32.const 0))) + (set_local 0x09e (i64.load offset=0x09e align=1 (i32.const 0))) + (set_local 0x09f (i64.load offset=0x09f align=1 (i32.const 0))) + (set_local 0x0a0 (i64.load offset=0x0a0 align=1 (i32.const 0))) + (set_local 0x0a1 (i64.load offset=0x0a1 align=1 (i32.const 0))) + (set_local 0x0a2 (i64.load offset=0x0a2 align=1 (i32.const 0))) + (set_local 0x0a3 (i64.load offset=0x0a3 align=1 (i32.const 0))) + (set_local 0x0a4 (i64.load offset=0x0a4 align=1 (i32.const 0))) + (set_local 0x0a5 (i64.load offset=0x0a5 align=1 (i32.const 0))) + (set_local 0x0a6 (i64.load offset=0x0a6 align=1 (i32.const 0))) + (set_local 0x0a7 (i64.load offset=0x0a7 align=1 (i32.const 0))) + (set_local 0x0a8 (i64.load offset=0x0a8 align=1 (i32.const 0))) + (set_local 0x0a9 (i64.load offset=0x0a9 align=1 (i32.const 0))) + (set_local 0x0aa (i64.load offset=0x0aa align=1 (i32.const 0))) + (set_local 0x0ab (i64.load offset=0x0ab align=1 (i32.const 0))) + (set_local 0x0ac (i64.load offset=0x0ac align=1 (i32.const 0))) + (set_local 0x0ad (i64.load offset=0x0ad align=1 (i32.const 0))) + (set_local 0x0ae (i64.load offset=0x0ae align=1 (i32.const 0))) + (set_local 0x0af (i64.load offset=0x0af align=1 (i32.const 0))) + (set_local 0x0b0 (i64.load offset=0x0b0 align=1 (i32.const 0))) + (set_local 0x0b1 (i64.load offset=0x0b1 align=1 (i32.const 0))) + (set_local 0x0b2 (i64.load offset=0x0b2 align=1 (i32.const 0))) + (set_local 0x0b3 (i64.load offset=0x0b3 align=1 (i32.const 0))) + (set_local 0x0b4 (i64.load offset=0x0b4 align=1 (i32.const 0))) + (set_local 0x0b5 (i64.load offset=0x0b5 align=1 (i32.const 0))) + (set_local 0x0b6 (i64.load offset=0x0b6 align=1 (i32.const 0))) + (set_local 0x0b7 (i64.load offset=0x0b7 align=1 (i32.const 0))) + (set_local 0x0b8 (i64.load offset=0x0b8 align=1 (i32.const 0))) + (set_local 0x0b9 (i64.load offset=0x0b9 align=1 (i32.const 0))) + (set_local 0x0ba (i64.load offset=0x0ba align=1 (i32.const 0))) + (set_local 0x0bb (i64.load offset=0x0bb align=1 (i32.const 0))) + (set_local 0x0bc (i64.load offset=0x0bc align=1 (i32.const 0))) + (set_local 0x0bd (i64.load offset=0x0bd align=1 (i32.const 0))) + (set_local 0x0be (i64.load offset=0x0be align=1 (i32.const 0))) + (set_local 0x0bf (i64.load offset=0x0bf align=1 (i32.const 0))) + (set_local 0x0c0 (i64.load offset=0x0c0 align=1 (i32.const 0))) + (set_local 0x0c1 (i64.load offset=0x0c1 align=1 (i32.const 0))) + (set_local 0x0c2 (i64.load offset=0x0c2 align=1 (i32.const 0))) + (set_local 0x0c3 (i64.load offset=0x0c3 align=1 (i32.const 0))) + (set_local 0x0c4 (i64.load offset=0x0c4 align=1 (i32.const 0))) + (set_local 0x0c5 (i64.load offset=0x0c5 align=1 (i32.const 0))) + (set_local 0x0c6 (i64.load offset=0x0c6 align=1 (i32.const 0))) + (set_local 0x0c7 (i64.load offset=0x0c7 align=1 (i32.const 0))) + (set_local 0x0c8 (i64.load offset=0x0c8 align=1 (i32.const 0))) + (set_local 0x0c9 (i64.load offset=0x0c9 align=1 (i32.const 0))) + (set_local 0x0ca (i64.load offset=0x0ca align=1 (i32.const 0))) + (set_local 0x0cb (i64.load offset=0x0cb align=1 (i32.const 0))) + (set_local 0x0cc (i64.load offset=0x0cc align=1 (i32.const 0))) + (set_local 0x0cd (i64.load offset=0x0cd align=1 (i32.const 0))) + (set_local 0x0ce (i64.load offset=0x0ce align=1 (i32.const 0))) + (set_local 0x0cf (i64.load offset=0x0cf align=1 (i32.const 0))) + (set_local 0x0d0 (i64.load offset=0x0d0 align=1 (i32.const 0))) + (set_local 0x0d1 (i64.load offset=0x0d1 align=1 (i32.const 0))) + (set_local 0x0d2 (i64.load offset=0x0d2 align=1 (i32.const 0))) + (set_local 0x0d3 (i64.load offset=0x0d3 align=1 (i32.const 0))) + (set_local 0x0d4 (i64.load offset=0x0d4 align=1 (i32.const 0))) + (set_local 0x0d5 (i64.load offset=0x0d5 align=1 (i32.const 0))) + (set_local 0x0d6 (i64.load offset=0x0d6 align=1 (i32.const 0))) + (set_local 0x0d7 (i64.load offset=0x0d7 align=1 (i32.const 0))) + (set_local 0x0d8 (i64.load offset=0x0d8 align=1 (i32.const 0))) + (set_local 0x0d9 (i64.load offset=0x0d9 align=1 (i32.const 0))) + (set_local 0x0da (i64.load offset=0x0da align=1 (i32.const 0))) + (set_local 0x0db (i64.load offset=0x0db align=1 (i32.const 0))) + (set_local 0x0dc (i64.load offset=0x0dc align=1 (i32.const 0))) + (set_local 0x0dd (i64.load offset=0x0dd align=1 (i32.const 0))) + (set_local 0x0de (i64.load offset=0x0de align=1 (i32.const 0))) + (set_local 0x0df (i64.load offset=0x0df align=1 (i32.const 0))) + (set_local 0x0e0 (i64.load offset=0x0e0 align=1 (i32.const 0))) + (set_local 0x0e1 (i64.load offset=0x0e1 align=1 (i32.const 0))) + (set_local 0x0e2 (i64.load offset=0x0e2 align=1 (i32.const 0))) + (set_local 0x0e3 (i64.load offset=0x0e3 align=1 (i32.const 0))) + (set_local 0x0e4 (i64.load offset=0x0e4 align=1 (i32.const 0))) + (set_local 0x0e5 (i64.load offset=0x0e5 align=1 (i32.const 0))) + (set_local 0x0e6 (i64.load offset=0x0e6 align=1 (i32.const 0))) + (set_local 0x0e7 (i64.load offset=0x0e7 align=1 (i32.const 0))) + (set_local 0x0e8 (i64.load offset=0x0e8 align=1 (i32.const 0))) + (set_local 0x0e9 (i64.load offset=0x0e9 align=1 (i32.const 0))) + (set_local 0x0ea (i64.load offset=0x0ea align=1 (i32.const 0))) + (set_local 0x0eb (i64.load offset=0x0eb align=1 (i32.const 0))) + (set_local 0x0ec (i64.load offset=0x0ec align=1 (i32.const 0))) + (set_local 0x0ed (i64.load offset=0x0ed align=1 (i32.const 0))) + (set_local 0x0ee (i64.load offset=0x0ee align=1 (i32.const 0))) + (set_local 0x0ef (i64.load offset=0x0ef align=1 (i32.const 0))) + (set_local 0x0f0 (i64.load offset=0x0f0 align=1 (i32.const 0))) + (set_local 0x0f1 (i64.load offset=0x0f1 align=1 (i32.const 0))) + (set_local 0x0f2 (i64.load offset=0x0f2 align=1 (i32.const 0))) + (set_local 0x0f3 (i64.load offset=0x0f3 align=1 (i32.const 0))) + (set_local 0x0f4 (i64.load offset=0x0f4 align=1 (i32.const 0))) + (set_local 0x0f5 (i64.load offset=0x0f5 align=1 (i32.const 0))) + (set_local 0x0f6 (i64.load offset=0x0f6 align=1 (i32.const 0))) + (set_local 0x0f7 (i64.load offset=0x0f7 align=1 (i32.const 0))) + (set_local 0x0f8 (i64.load offset=0x0f8 align=1 (i32.const 0))) + (set_local 0x0f9 (i64.load offset=0x0f9 align=1 (i32.const 0))) + (set_local 0x0fa (i64.load offset=0x0fa align=1 (i32.const 0))) + (set_local 0x0fb (i64.load offset=0x0fb align=1 (i32.const 0))) + (set_local 0x0fc (i64.load offset=0x0fc align=1 (i32.const 0))) + (set_local 0x0fd (i64.load offset=0x0fd align=1 (i32.const 0))) + (set_local 0x0fe (i64.load offset=0x0fe align=1 (i32.const 0))) + (set_local 0x0ff (i64.load offset=0x0ff align=1 (i32.const 0))) + (set_local 0x100 (i64.load offset=0x100 align=1 (i32.const 0))) + (set_local 0x101 (i64.load offset=0x101 align=1 (i32.const 0))) + (set_local 0x102 (i64.load offset=0x102 align=1 (i32.const 0))) + (set_local 0x103 (i64.load offset=0x103 align=1 (i32.const 0))) + (set_local 0x104 (i64.load offset=0x104 align=1 (i32.const 0))) + (set_local 0x105 (i64.load offset=0x105 align=1 (i32.const 0))) + (set_local 0x106 (i64.load offset=0x106 align=1 (i32.const 0))) + (set_local 0x107 (i64.load offset=0x107 align=1 (i32.const 0))) + (set_local 0x108 (i64.load offset=0x108 align=1 (i32.const 0))) + (set_local 0x109 (i64.load offset=0x109 align=1 (i32.const 0))) + (set_local 0x10a (i64.load offset=0x10a align=1 (i32.const 0))) + (set_local 0x10b (i64.load offset=0x10b align=1 (i32.const 0))) + (set_local 0x10c (i64.load offset=0x10c align=1 (i32.const 0))) + (set_local 0x10d (i64.load offset=0x10d align=1 (i32.const 0))) + (set_local 0x10e (i64.load offset=0x10e align=1 (i32.const 0))) + (set_local 0x10f (i64.load offset=0x10f align=1 (i32.const 0))) + (set_local 0x110 (i64.load offset=0x110 align=1 (i32.const 0))) + (set_local 0x111 (i64.load offset=0x111 align=1 (i32.const 0))) + (set_local 0x112 (i64.load offset=0x112 align=1 (i32.const 0))) + (set_local 0x113 (i64.load offset=0x113 align=1 (i32.const 0))) + (set_local 0x114 (i64.load offset=0x114 align=1 (i32.const 0))) + (set_local 0x115 (i64.load offset=0x115 align=1 (i32.const 0))) + (set_local 0x116 (i64.load offset=0x116 align=1 (i32.const 0))) + (set_local 0x117 (i64.load offset=0x117 align=1 (i32.const 0))) + (set_local 0x118 (i64.load offset=0x118 align=1 (i32.const 0))) + (set_local 0x119 (i64.load offset=0x119 align=1 (i32.const 0))) + (set_local 0x11a (i64.load offset=0x11a align=1 (i32.const 0))) + (set_local 0x11b (i64.load offset=0x11b align=1 (i32.const 0))) + (set_local 0x11c (i64.load offset=0x11c align=1 (i32.const 0))) + (set_local 0x11d (i64.load offset=0x11d align=1 (i32.const 0))) + (set_local 0x11e (i64.load offset=0x11e align=1 (i32.const 0))) + (set_local 0x11f (i64.load offset=0x11f align=1 (i32.const 0))) + (set_local 0x120 (i64.load offset=0x120 align=1 (i32.const 0))) + (set_local 0x121 (i64.load offset=0x121 align=1 (i32.const 0))) + (set_local 0x122 (i64.load offset=0x122 align=1 (i32.const 0))) + (set_local 0x123 (i64.load offset=0x123 align=1 (i32.const 0))) + (set_local 0x124 (i64.load offset=0x124 align=1 (i32.const 0))) + (set_local 0x125 (i64.load offset=0x125 align=1 (i32.const 0))) + (set_local 0x126 (i64.load offset=0x126 align=1 (i32.const 0))) + (set_local 0x127 (i64.load offset=0x127 align=1 (i32.const 0))) + (set_local 0x128 (i64.load offset=0x128 align=1 (i32.const 0))) + (set_local 0x129 (i64.load offset=0x129 align=1 (i32.const 0))) + (set_local 0x12a (i64.load offset=0x12a align=1 (i32.const 0))) + (set_local 0x12b (i64.load offset=0x12b align=1 (i32.const 0))) + (set_local 0x12c (i64.load offset=0x12c align=1 (i32.const 0))) + (set_local 0x12d (i64.load offset=0x12d align=1 (i32.const 0))) + (set_local 0x12e (i64.load offset=0x12e align=1 (i32.const 0))) + (set_local 0x12f (i64.load offset=0x12f align=1 (i32.const 0))) + (set_local 0x130 (i64.load offset=0x130 align=1 (i32.const 0))) + (set_local 0x131 (i64.load offset=0x131 align=1 (i32.const 0))) + (set_local 0x132 (i64.load offset=0x132 align=1 (i32.const 0))) + (set_local 0x133 (i64.load offset=0x133 align=1 (i32.const 0))) + (set_local 0x134 (i64.load offset=0x134 align=1 (i32.const 0))) + (set_local 0x135 (i64.load offset=0x135 align=1 (i32.const 0))) + (set_local 0x136 (i64.load offset=0x136 align=1 (i32.const 0))) + (set_local 0x137 (i64.load offset=0x137 align=1 (i32.const 0))) + (set_local 0x138 (i64.load offset=0x138 align=1 (i32.const 0))) + (set_local 0x139 (i64.load offset=0x139 align=1 (i32.const 0))) + (set_local 0x13a (i64.load offset=0x13a align=1 (i32.const 0))) + (set_local 0x13b (i64.load offset=0x13b align=1 (i32.const 0))) + (set_local 0x13c (i64.load offset=0x13c align=1 (i32.const 0))) + (set_local 0x13d (i64.load offset=0x13d align=1 (i32.const 0))) + (set_local 0x13e (i64.load offset=0x13e align=1 (i32.const 0))) + (set_local 0x13f (i64.load offset=0x13f align=1 (i32.const 0))) + (set_local 0x140 (i64.load offset=0x140 align=1 (i32.const 0))) + (set_local 0x141 (i64.load offset=0x141 align=1 (i32.const 0))) + (set_local 0x142 (i64.load offset=0x142 align=1 (i32.const 0))) + (set_local 0x143 (i64.load offset=0x143 align=1 (i32.const 0))) + (set_local 0x144 (i64.load offset=0x144 align=1 (i32.const 0))) + (set_local 0x145 (i64.load offset=0x145 align=1 (i32.const 0))) + (set_local 0x146 (i64.load offset=0x146 align=1 (i32.const 0))) + (set_local 0x147 (i64.load offset=0x147 align=1 (i32.const 0))) + (set_local 0x148 (i64.load offset=0x148 align=1 (i32.const 0))) + (set_local 0x149 (i64.load offset=0x149 align=1 (i32.const 0))) + (set_local 0x14a (i64.load offset=0x14a align=1 (i32.const 0))) + (set_local 0x14b (i64.load offset=0x14b align=1 (i32.const 0))) + (set_local 0x14c (i64.load offset=0x14c align=1 (i32.const 0))) + (set_local 0x14d (i64.load offset=0x14d align=1 (i32.const 0))) + (set_local 0x14e (i64.load offset=0x14e align=1 (i32.const 0))) + (set_local 0x14f (i64.load offset=0x14f align=1 (i32.const 0))) + (set_local 0x150 (i64.load offset=0x150 align=1 (i32.const 0))) + (set_local 0x151 (i64.load offset=0x151 align=1 (i32.const 0))) + (set_local 0x152 (i64.load offset=0x152 align=1 (i32.const 0))) + (set_local 0x153 (i64.load offset=0x153 align=1 (i32.const 0))) + (set_local 0x154 (i64.load offset=0x154 align=1 (i32.const 0))) + (set_local 0x155 (i64.load offset=0x155 align=1 (i32.const 0))) + (set_local 0x156 (i64.load offset=0x156 align=1 (i32.const 0))) + (set_local 0x157 (i64.load offset=0x157 align=1 (i32.const 0))) + (set_local 0x158 (i64.load offset=0x158 align=1 (i32.const 0))) + (set_local 0x159 (i64.load offset=0x159 align=1 (i32.const 0))) + (set_local 0x15a (i64.load offset=0x15a align=1 (i32.const 0))) + (set_local 0x15b (i64.load offset=0x15b align=1 (i32.const 0))) + (set_local 0x15c (i64.load offset=0x15c align=1 (i32.const 0))) + (set_local 0x15d (i64.load offset=0x15d align=1 (i32.const 0))) + (set_local 0x15e (i64.load offset=0x15e align=1 (i32.const 0))) + (set_local 0x15f (i64.load offset=0x15f align=1 (i32.const 0))) + (set_local 0x160 (i64.load offset=0x160 align=1 (i32.const 0))) + (set_local 0x161 (i64.load offset=0x161 align=1 (i32.const 0))) + (set_local 0x162 (i64.load offset=0x162 align=1 (i32.const 0))) + (set_local 0x163 (i64.load offset=0x163 align=1 (i32.const 0))) + (set_local 0x164 (i64.load offset=0x164 align=1 (i32.const 0))) + (set_local 0x165 (i64.load offset=0x165 align=1 (i32.const 0))) + (set_local 0x166 (i64.load offset=0x166 align=1 (i32.const 0))) + (set_local 0x167 (i64.load offset=0x167 align=1 (i32.const 0))) + (set_local 0x168 (i64.load offset=0x168 align=1 (i32.const 0))) + (set_local 0x169 (i64.load offset=0x169 align=1 (i32.const 0))) + (set_local 0x16a (i64.load offset=0x16a align=1 (i32.const 0))) + (set_local 0x16b (i64.load offset=0x16b align=1 (i32.const 0))) + (set_local 0x16c (i64.load offset=0x16c align=1 (i32.const 0))) + (set_local 0x16d (i64.load offset=0x16d align=1 (i32.const 0))) + (set_local 0x16e (i64.load offset=0x16e align=1 (i32.const 0))) + (set_local 0x16f (i64.load offset=0x16f align=1 (i32.const 0))) + (set_local 0x170 (i64.load offset=0x170 align=1 (i32.const 0))) + (set_local 0x171 (i64.load offset=0x171 align=1 (i32.const 0))) + (set_local 0x172 (i64.load offset=0x172 align=1 (i32.const 0))) + (set_local 0x173 (i64.load offset=0x173 align=1 (i32.const 0))) + (set_local 0x174 (i64.load offset=0x174 align=1 (i32.const 0))) + (set_local 0x175 (i64.load offset=0x175 align=1 (i32.const 0))) + (set_local 0x176 (i64.load offset=0x176 align=1 (i32.const 0))) + (set_local 0x177 (i64.load offset=0x177 align=1 (i32.const 0))) + (set_local 0x178 (i64.load offset=0x178 align=1 (i32.const 0))) + (set_local 0x179 (i64.load offset=0x179 align=1 (i32.const 0))) + (set_local 0x17a (i64.load offset=0x17a align=1 (i32.const 0))) + (set_local 0x17b (i64.load offset=0x17b align=1 (i32.const 0))) + (set_local 0x17c (i64.load offset=0x17c align=1 (i32.const 0))) + (set_local 0x17d (i64.load offset=0x17d align=1 (i32.const 0))) + (set_local 0x17e (i64.load offset=0x17e align=1 (i32.const 0))) + (set_local 0x17f (i64.load offset=0x17f align=1 (i32.const 0))) + (set_local 0x180 (i64.load offset=0x180 align=1 (i32.const 0))) + (set_local 0x181 (i64.load offset=0x181 align=1 (i32.const 0))) + (set_local 0x182 (i64.load offset=0x182 align=1 (i32.const 0))) + (set_local 0x183 (i64.load offset=0x183 align=1 (i32.const 0))) + (set_local 0x184 (i64.load offset=0x184 align=1 (i32.const 0))) + (set_local 0x185 (i64.load offset=0x185 align=1 (i32.const 0))) + (set_local 0x186 (i64.load offset=0x186 align=1 (i32.const 0))) + (set_local 0x187 (i64.load offset=0x187 align=1 (i32.const 0))) + (set_local 0x188 (i64.load offset=0x188 align=1 (i32.const 0))) + (set_local 0x189 (i64.load offset=0x189 align=1 (i32.const 0))) + (set_local 0x18a (i64.load offset=0x18a align=1 (i32.const 0))) + (set_local 0x18b (i64.load offset=0x18b align=1 (i32.const 0))) + (set_local 0x18c (i64.load offset=0x18c align=1 (i32.const 0))) + (set_local 0x18d (i64.load offset=0x18d align=1 (i32.const 0))) + (set_local 0x18e (i64.load offset=0x18e align=1 (i32.const 0))) + (set_local 0x18f (i64.load offset=0x18f align=1 (i32.const 0))) + (set_local 0x190 (i64.load offset=0x190 align=1 (i32.const 0))) + (set_local 0x191 (i64.load offset=0x191 align=1 (i32.const 0))) + (set_local 0x192 (i64.load offset=0x192 align=1 (i32.const 0))) + (set_local 0x193 (i64.load offset=0x193 align=1 (i32.const 0))) + (set_local 0x194 (i64.load offset=0x194 align=1 (i32.const 0))) + (set_local 0x195 (i64.load offset=0x195 align=1 (i32.const 0))) + (set_local 0x196 (i64.load offset=0x196 align=1 (i32.const 0))) + (set_local 0x197 (i64.load offset=0x197 align=1 (i32.const 0))) + (set_local 0x198 (i64.load offset=0x198 align=1 (i32.const 0))) + (set_local 0x199 (i64.load offset=0x199 align=1 (i32.const 0))) + (set_local 0x19a (i64.load offset=0x19a align=1 (i32.const 0))) + (set_local 0x19b (i64.load offset=0x19b align=1 (i32.const 0))) + (set_local 0x19c (i64.load offset=0x19c align=1 (i32.const 0))) + (set_local 0x19d (i64.load offset=0x19d align=1 (i32.const 0))) + (set_local 0x19e (i64.load offset=0x19e align=1 (i32.const 0))) + (set_local 0x19f (i64.load offset=0x19f align=1 (i32.const 0))) + (set_local 0x1a0 (i64.load offset=0x1a0 align=1 (i32.const 0))) + (set_local 0x1a1 (i64.load offset=0x1a1 align=1 (i32.const 0))) + (set_local 0x1a2 (i64.load offset=0x1a2 align=1 (i32.const 0))) + (set_local 0x1a3 (i64.load offset=0x1a3 align=1 (i32.const 0))) + (set_local 0x1a4 (i64.load offset=0x1a4 align=1 (i32.const 0))) + (set_local 0x1a5 (i64.load offset=0x1a5 align=1 (i32.const 0))) + (set_local 0x1a6 (i64.load offset=0x1a6 align=1 (i32.const 0))) + (set_local 0x1a7 (i64.load offset=0x1a7 align=1 (i32.const 0))) + (set_local 0x1a8 (i64.load offset=0x1a8 align=1 (i32.const 0))) + (set_local 0x1a9 (i64.load offset=0x1a9 align=1 (i32.const 0))) + (set_local 0x1aa (i64.load offset=0x1aa align=1 (i32.const 0))) + (set_local 0x1ab (i64.load offset=0x1ab align=1 (i32.const 0))) + (set_local 0x1ac (i64.load offset=0x1ac align=1 (i32.const 0))) + (set_local 0x1ad (i64.load offset=0x1ad align=1 (i32.const 0))) + (set_local 0x1ae (i64.load offset=0x1ae align=1 (i32.const 0))) + (set_local 0x1af (i64.load offset=0x1af align=1 (i32.const 0))) + (set_local 0x1b0 (i64.load offset=0x1b0 align=1 (i32.const 0))) + (set_local 0x1b1 (i64.load offset=0x1b1 align=1 (i32.const 0))) + (set_local 0x1b2 (i64.load offset=0x1b2 align=1 (i32.const 0))) + (set_local 0x1b3 (i64.load offset=0x1b3 align=1 (i32.const 0))) + (set_local 0x1b4 (i64.load offset=0x1b4 align=1 (i32.const 0))) + (set_local 0x1b5 (i64.load offset=0x1b5 align=1 (i32.const 0))) + (set_local 0x1b6 (i64.load offset=0x1b6 align=1 (i32.const 0))) + (set_local 0x1b7 (i64.load offset=0x1b7 align=1 (i32.const 0))) + (set_local 0x1b8 (i64.load offset=0x1b8 align=1 (i32.const 0))) + (set_local 0x1b9 (i64.load offset=0x1b9 align=1 (i32.const 0))) + (set_local 0x1ba (i64.load offset=0x1ba align=1 (i32.const 0))) + (set_local 0x1bb (i64.load offset=0x1bb align=1 (i32.const 0))) + (set_local 0x1bc (i64.load offset=0x1bc align=1 (i32.const 0))) + (set_local 0x1bd (i64.load offset=0x1bd align=1 (i32.const 0))) + (set_local 0x1be (i64.load offset=0x1be align=1 (i32.const 0))) + (set_local 0x1bf (i64.load offset=0x1bf align=1 (i32.const 0))) + (set_local 0x1c0 (i64.load offset=0x1c0 align=1 (i32.const 0))) + (set_local 0x1c1 (i64.load offset=0x1c1 align=1 (i32.const 0))) + (set_local 0x1c2 (i64.load offset=0x1c2 align=1 (i32.const 0))) + (set_local 0x1c3 (i64.load offset=0x1c3 align=1 (i32.const 0))) + (set_local 0x1c4 (i64.load offset=0x1c4 align=1 (i32.const 0))) + (set_local 0x1c5 (i64.load offset=0x1c5 align=1 (i32.const 0))) + (set_local 0x1c6 (i64.load offset=0x1c6 align=1 (i32.const 0))) + (set_local 0x1c7 (i64.load offset=0x1c7 align=1 (i32.const 0))) + (set_local 0x1c8 (i64.load offset=0x1c8 align=1 (i32.const 0))) + (set_local 0x1c9 (i64.load offset=0x1c9 align=1 (i32.const 0))) + (set_local 0x1ca (i64.load offset=0x1ca align=1 (i32.const 0))) + (set_local 0x1cb (i64.load offset=0x1cb align=1 (i32.const 0))) + (set_local 0x1cc (i64.load offset=0x1cc align=1 (i32.const 0))) + (set_local 0x1cd (i64.load offset=0x1cd align=1 (i32.const 0))) + (set_local 0x1ce (i64.load offset=0x1ce align=1 (i32.const 0))) + (set_local 0x1cf (i64.load offset=0x1cf align=1 (i32.const 0))) + (set_local 0x1d0 (i64.load offset=0x1d0 align=1 (i32.const 0))) + (set_local 0x1d1 (i64.load offset=0x1d1 align=1 (i32.const 0))) + (set_local 0x1d2 (i64.load offset=0x1d2 align=1 (i32.const 0))) + (set_local 0x1d3 (i64.load offset=0x1d3 align=1 (i32.const 0))) + (set_local 0x1d4 (i64.load offset=0x1d4 align=1 (i32.const 0))) + (set_local 0x1d5 (i64.load offset=0x1d5 align=1 (i32.const 0))) + (set_local 0x1d6 (i64.load offset=0x1d6 align=1 (i32.const 0))) + (set_local 0x1d7 (i64.load offset=0x1d7 align=1 (i32.const 0))) + (set_local 0x1d8 (i64.load offset=0x1d8 align=1 (i32.const 0))) + (set_local 0x1d9 (i64.load offset=0x1d9 align=1 (i32.const 0))) + (set_local 0x1da (i64.load offset=0x1da align=1 (i32.const 0))) + (set_local 0x1db (i64.load offset=0x1db align=1 (i32.const 0))) + (set_local 0x1dc (i64.load offset=0x1dc align=1 (i32.const 0))) + (set_local 0x1dd (i64.load offset=0x1dd align=1 (i32.const 0))) + (set_local 0x1de (i64.load offset=0x1de align=1 (i32.const 0))) + (set_local 0x1df (i64.load offset=0x1df align=1 (i32.const 0))) + (set_local 0x1e0 (i64.load offset=0x1e0 align=1 (i32.const 0))) + (set_local 0x1e1 (i64.load offset=0x1e1 align=1 (i32.const 0))) + (set_local 0x1e2 (i64.load offset=0x1e2 align=1 (i32.const 0))) + (set_local 0x1e3 (i64.load offset=0x1e3 align=1 (i32.const 0))) + (set_local 0x1e4 (i64.load offset=0x1e4 align=1 (i32.const 0))) + (set_local 0x1e5 (i64.load offset=0x1e5 align=1 (i32.const 0))) + (set_local 0x1e6 (i64.load offset=0x1e6 align=1 (i32.const 0))) + (set_local 0x1e7 (i64.load offset=0x1e7 align=1 (i32.const 0))) + (set_local 0x1e8 (i64.load offset=0x1e8 align=1 (i32.const 0))) + (set_local 0x1e9 (i64.load offset=0x1e9 align=1 (i32.const 0))) + (set_local 0x1ea (i64.load offset=0x1ea align=1 (i32.const 0))) + (set_local 0x1eb (i64.load offset=0x1eb align=1 (i32.const 0))) + (set_local 0x1ec (i64.load offset=0x1ec align=1 (i32.const 0))) + (set_local 0x1ed (i64.load offset=0x1ed align=1 (i32.const 0))) + (set_local 0x1ee (i64.load offset=0x1ee align=1 (i32.const 0))) + (set_local 0x1ef (i64.load offset=0x1ef align=1 (i32.const 0))) + (set_local 0x1f0 (i64.load offset=0x1f0 align=1 (i32.const 0))) + (set_local 0x1f1 (i64.load offset=0x1f1 align=1 (i32.const 0))) + (set_local 0x1f2 (i64.load offset=0x1f2 align=1 (i32.const 0))) + (set_local 0x1f3 (i64.load offset=0x1f3 align=1 (i32.const 0))) + (set_local 0x1f4 (i64.load offset=0x1f4 align=1 (i32.const 0))) + (set_local 0x1f5 (i64.load offset=0x1f5 align=1 (i32.const 0))) + (set_local 0x1f6 (i64.load offset=0x1f6 align=1 (i32.const 0))) + (set_local 0x1f7 (i64.load offset=0x1f7 align=1 (i32.const 0))) + (set_local 0x1f8 (i64.load offset=0x1f8 align=1 (i32.const 0))) + (set_local 0x1f9 (i64.load offset=0x1f9 align=1 (i32.const 0))) + (set_local 0x1fa (i64.load offset=0x1fa align=1 (i32.const 0))) + (set_local 0x1fb (i64.load offset=0x1fb align=1 (i32.const 0))) + (set_local 0x1fc (i64.load offset=0x1fc align=1 (i32.const 0))) + (set_local 0x1fd (i64.load offset=0x1fd align=1 (i32.const 0))) + (set_local 0x1fe (i64.load offset=0x1fe align=1 (i32.const 0))) + (set_local 0x1ff (i64.load offset=0x1ff align=1 (i32.const 0))) + (set_local 0x200 (i64.load offset=0x200 align=1 (i32.const 0))) + (set_local 0x201 (i64.load offset=0x201 align=1 (i32.const 0))) + (set_local 0x202 (i64.load offset=0x202 align=1 (i32.const 0))) + (set_local 0x203 (i64.load offset=0x203 align=1 (i32.const 0))) + (set_local 0x204 (i64.load offset=0x204 align=1 (i32.const 0))) + (set_local 0x205 (i64.load offset=0x205 align=1 (i32.const 0))) + (set_local 0x206 (i64.load offset=0x206 align=1 (i32.const 0))) + (set_local 0x207 (i64.load offset=0x207 align=1 (i32.const 0))) + (set_local 0x208 (i64.load offset=0x208 align=1 (i32.const 0))) + (set_local 0x209 (i64.load offset=0x209 align=1 (i32.const 0))) + (set_local 0x20a (i64.load offset=0x20a align=1 (i32.const 0))) + (set_local 0x20b (i64.load offset=0x20b align=1 (i32.const 0))) + (set_local 0x20c (i64.load offset=0x20c align=1 (i32.const 0))) + (set_local 0x20d (i64.load offset=0x20d align=1 (i32.const 0))) + (set_local 0x20e (i64.load offset=0x20e align=1 (i32.const 0))) + (set_local 0x20f (i64.load offset=0x20f align=1 (i32.const 0))) + (set_local 0x210 (i64.load offset=0x210 align=1 (i32.const 0))) + (set_local 0x211 (i64.load offset=0x211 align=1 (i32.const 0))) + (set_local 0x212 (i64.load offset=0x212 align=1 (i32.const 0))) + (set_local 0x213 (i64.load offset=0x213 align=1 (i32.const 0))) + (set_local 0x214 (i64.load offset=0x214 align=1 (i32.const 0))) + (set_local 0x215 (i64.load offset=0x215 align=1 (i32.const 0))) + (set_local 0x216 (i64.load offset=0x216 align=1 (i32.const 0))) + (set_local 0x217 (i64.load offset=0x217 align=1 (i32.const 0))) + (set_local 0x218 (i64.load offset=0x218 align=1 (i32.const 0))) + (set_local 0x219 (i64.load offset=0x219 align=1 (i32.const 0))) + (set_local 0x21a (i64.load offset=0x21a align=1 (i32.const 0))) + (set_local 0x21b (i64.load offset=0x21b align=1 (i32.const 0))) + (set_local 0x21c (i64.load offset=0x21c align=1 (i32.const 0))) + (set_local 0x21d (i64.load offset=0x21d align=1 (i32.const 0))) + (set_local 0x21e (i64.load offset=0x21e align=1 (i32.const 0))) + (set_local 0x21f (i64.load offset=0x21f align=1 (i32.const 0))) + (set_local 0x220 (i64.load offset=0x220 align=1 (i32.const 0))) + (set_local 0x221 (i64.load offset=0x221 align=1 (i32.const 0))) + (set_local 0x222 (i64.load offset=0x222 align=1 (i32.const 0))) + (set_local 0x223 (i64.load offset=0x223 align=1 (i32.const 0))) + (set_local 0x224 (i64.load offset=0x224 align=1 (i32.const 0))) + (set_local 0x225 (i64.load offset=0x225 align=1 (i32.const 0))) + (set_local 0x226 (i64.load offset=0x226 align=1 (i32.const 0))) + (set_local 0x227 (i64.load offset=0x227 align=1 (i32.const 0))) + (set_local 0x228 (i64.load offset=0x228 align=1 (i32.const 0))) + (set_local 0x229 (i64.load offset=0x229 align=1 (i32.const 0))) + (set_local 0x22a (i64.load offset=0x22a align=1 (i32.const 0))) + (set_local 0x22b (i64.load offset=0x22b align=1 (i32.const 0))) + (set_local 0x22c (i64.load offset=0x22c align=1 (i32.const 0))) + (set_local 0x22d (i64.load offset=0x22d align=1 (i32.const 0))) + (set_local 0x22e (i64.load offset=0x22e align=1 (i32.const 0))) + (set_local 0x22f (i64.load offset=0x22f align=1 (i32.const 0))) + (set_local 0x230 (i64.load offset=0x230 align=1 (i32.const 0))) + (set_local 0x231 (i64.load offset=0x231 align=1 (i32.const 0))) + (set_local 0x232 (i64.load offset=0x232 align=1 (i32.const 0))) + (set_local 0x233 (i64.load offset=0x233 align=1 (i32.const 0))) + (set_local 0x234 (i64.load offset=0x234 align=1 (i32.const 0))) + (set_local 0x235 (i64.load offset=0x235 align=1 (i32.const 0))) + (set_local 0x236 (i64.load offset=0x236 align=1 (i32.const 0))) + (set_local 0x237 (i64.load offset=0x237 align=1 (i32.const 0))) + (set_local 0x238 (i64.load offset=0x238 align=1 (i32.const 0))) + (set_local 0x239 (i64.load offset=0x239 align=1 (i32.const 0))) + (set_local 0x23a (i64.load offset=0x23a align=1 (i32.const 0))) + (set_local 0x23b (i64.load offset=0x23b align=1 (i32.const 0))) + (set_local 0x23c (i64.load offset=0x23c align=1 (i32.const 0))) + (set_local 0x23d (i64.load offset=0x23d align=1 (i32.const 0))) + (set_local 0x23e (i64.load offset=0x23e align=1 (i32.const 0))) + (set_local 0x23f (i64.load offset=0x23f align=1 (i32.const 0))) + (set_local 0x240 (i64.load offset=0x240 align=1 (i32.const 0))) + (set_local 0x241 (i64.load offset=0x241 align=1 (i32.const 0))) + (set_local 0x242 (i64.load offset=0x242 align=1 (i32.const 0))) + (set_local 0x243 (i64.load offset=0x243 align=1 (i32.const 0))) + (set_local 0x244 (i64.load offset=0x244 align=1 (i32.const 0))) + (set_local 0x245 (i64.load offset=0x245 align=1 (i32.const 0))) + (set_local 0x246 (i64.load offset=0x246 align=1 (i32.const 0))) + (set_local 0x247 (i64.load offset=0x247 align=1 (i32.const 0))) + (set_local 0x248 (i64.load offset=0x248 align=1 (i32.const 0))) + (set_local 0x249 (i64.load offset=0x249 align=1 (i32.const 0))) + (set_local 0x24a (i64.load offset=0x24a align=1 (i32.const 0))) + (set_local 0x24b (i64.load offset=0x24b align=1 (i32.const 0))) + (set_local 0x24c (i64.load offset=0x24c align=1 (i32.const 0))) + (set_local 0x24d (i64.load offset=0x24d align=1 (i32.const 0))) + (set_local 0x24e (i64.load offset=0x24e align=1 (i32.const 0))) + (set_local 0x24f (i64.load offset=0x24f align=1 (i32.const 0))) + (set_local 0x250 (i64.load offset=0x250 align=1 (i32.const 0))) + (set_local 0x251 (i64.load offset=0x251 align=1 (i32.const 0))) + (set_local 0x252 (i64.load offset=0x252 align=1 (i32.const 0))) + (set_local 0x253 (i64.load offset=0x253 align=1 (i32.const 0))) + (set_local 0x254 (i64.load offset=0x254 align=1 (i32.const 0))) + (set_local 0x255 (i64.load offset=0x255 align=1 (i32.const 0))) + (set_local 0x256 (i64.load offset=0x256 align=1 (i32.const 0))) + (set_local 0x257 (i64.load offset=0x257 align=1 (i32.const 0))) + (set_local 0x258 (i64.load offset=0x258 align=1 (i32.const 0))) + (set_local 0x259 (i64.load offset=0x259 align=1 (i32.const 0))) + (set_local 0x25a (i64.load offset=0x25a align=1 (i32.const 0))) + (set_local 0x25b (i64.load offset=0x25b align=1 (i32.const 0))) + (set_local 0x25c (i64.load offset=0x25c align=1 (i32.const 0))) + (set_local 0x25d (i64.load offset=0x25d align=1 (i32.const 0))) + (set_local 0x25e (i64.load offset=0x25e align=1 (i32.const 0))) + (set_local 0x25f (i64.load offset=0x25f align=1 (i32.const 0))) + (set_local 0x260 (i64.load offset=0x260 align=1 (i32.const 0))) + (set_local 0x261 (i64.load offset=0x261 align=1 (i32.const 0))) + (set_local 0x262 (i64.load offset=0x262 align=1 (i32.const 0))) + (set_local 0x263 (i64.load offset=0x263 align=1 (i32.const 0))) + (set_local 0x264 (i64.load offset=0x264 align=1 (i32.const 0))) + (set_local 0x265 (i64.load offset=0x265 align=1 (i32.const 0))) + (set_local 0x266 (i64.load offset=0x266 align=1 (i32.const 0))) + (set_local 0x267 (i64.load offset=0x267 align=1 (i32.const 0))) + (set_local 0x268 (i64.load offset=0x268 align=1 (i32.const 0))) + (set_local 0x269 (i64.load offset=0x269 align=1 (i32.const 0))) + (set_local 0x26a (i64.load offset=0x26a align=1 (i32.const 0))) + (set_local 0x26b (i64.load offset=0x26b align=1 (i32.const 0))) + (set_local 0x26c (i64.load offset=0x26c align=1 (i32.const 0))) + (set_local 0x26d (i64.load offset=0x26d align=1 (i32.const 0))) + (set_local 0x26e (i64.load offset=0x26e align=1 (i32.const 0))) + (set_local 0x26f (i64.load offset=0x26f align=1 (i32.const 0))) + (set_local 0x270 (i64.load offset=0x270 align=1 (i32.const 0))) + (set_local 0x271 (i64.load offset=0x271 align=1 (i32.const 0))) + (set_local 0x272 (i64.load offset=0x272 align=1 (i32.const 0))) + (set_local 0x273 (i64.load offset=0x273 align=1 (i32.const 0))) + (set_local 0x274 (i64.load offset=0x274 align=1 (i32.const 0))) + (set_local 0x275 (i64.load offset=0x275 align=1 (i32.const 0))) + (set_local 0x276 (i64.load offset=0x276 align=1 (i32.const 0))) + (set_local 0x277 (i64.load offset=0x277 align=1 (i32.const 0))) + (set_local 0x278 (i64.load offset=0x278 align=1 (i32.const 0))) + (set_local 0x279 (i64.load offset=0x279 align=1 (i32.const 0))) + (set_local 0x27a (i64.load offset=0x27a align=1 (i32.const 0))) + (set_local 0x27b (i64.load offset=0x27b align=1 (i32.const 0))) + (set_local 0x27c (i64.load offset=0x27c align=1 (i32.const 0))) + (set_local 0x27d (i64.load offset=0x27d align=1 (i32.const 0))) + (set_local 0x27e (i64.load offset=0x27e align=1 (i32.const 0))) + (set_local 0x27f (i64.load offset=0x27f align=1 (i32.const 0))) + (set_local 0x280 (i64.load offset=0x280 align=1 (i32.const 0))) + (set_local 0x281 (i64.load offset=0x281 align=1 (i32.const 0))) + (set_local 0x282 (i64.load offset=0x282 align=1 (i32.const 0))) + (set_local 0x283 (i64.load offset=0x283 align=1 (i32.const 0))) + (set_local 0x284 (i64.load offset=0x284 align=1 (i32.const 0))) + (set_local 0x285 (i64.load offset=0x285 align=1 (i32.const 0))) + (set_local 0x286 (i64.load offset=0x286 align=1 (i32.const 0))) + (set_local 0x287 (i64.load offset=0x287 align=1 (i32.const 0))) + (set_local 0x288 (i64.load offset=0x288 align=1 (i32.const 0))) + (set_local 0x289 (i64.load offset=0x289 align=1 (i32.const 0))) + (set_local 0x28a (i64.load offset=0x28a align=1 (i32.const 0))) + (set_local 0x28b (i64.load offset=0x28b align=1 (i32.const 0))) + (set_local 0x28c (i64.load offset=0x28c align=1 (i32.const 0))) + (set_local 0x28d (i64.load offset=0x28d align=1 (i32.const 0))) + (set_local 0x28e (i64.load offset=0x28e align=1 (i32.const 0))) + (set_local 0x28f (i64.load offset=0x28f align=1 (i32.const 0))) + (set_local 0x290 (i64.load offset=0x290 align=1 (i32.const 0))) + (set_local 0x291 (i64.load offset=0x291 align=1 (i32.const 0))) + (set_local 0x292 (i64.load offset=0x292 align=1 (i32.const 0))) + (set_local 0x293 (i64.load offset=0x293 align=1 (i32.const 0))) + (set_local 0x294 (i64.load offset=0x294 align=1 (i32.const 0))) + (set_local 0x295 (i64.load offset=0x295 align=1 (i32.const 0))) + (set_local 0x296 (i64.load offset=0x296 align=1 (i32.const 0))) + (set_local 0x297 (i64.load offset=0x297 align=1 (i32.const 0))) + (set_local 0x298 (i64.load offset=0x298 align=1 (i32.const 0))) + (set_local 0x299 (i64.load offset=0x299 align=1 (i32.const 0))) + (set_local 0x29a (i64.load offset=0x29a align=1 (i32.const 0))) + (set_local 0x29b (i64.load offset=0x29b align=1 (i32.const 0))) + (set_local 0x29c (i64.load offset=0x29c align=1 (i32.const 0))) + (set_local 0x29d (i64.load offset=0x29d align=1 (i32.const 0))) + (set_local 0x29e (i64.load offset=0x29e align=1 (i32.const 0))) + (set_local 0x29f (i64.load offset=0x29f align=1 (i32.const 0))) + (set_local 0x2a0 (i64.load offset=0x2a0 align=1 (i32.const 0))) + (set_local 0x2a1 (i64.load offset=0x2a1 align=1 (i32.const 0))) + (set_local 0x2a2 (i64.load offset=0x2a2 align=1 (i32.const 0))) + (set_local 0x2a3 (i64.load offset=0x2a3 align=1 (i32.const 0))) + (set_local 0x2a4 (i64.load offset=0x2a4 align=1 (i32.const 0))) + (set_local 0x2a5 (i64.load offset=0x2a5 align=1 (i32.const 0))) + (set_local 0x2a6 (i64.load offset=0x2a6 align=1 (i32.const 0))) + (set_local 0x2a7 (i64.load offset=0x2a7 align=1 (i32.const 0))) + (set_local 0x2a8 (i64.load offset=0x2a8 align=1 (i32.const 0))) + (set_local 0x2a9 (i64.load offset=0x2a9 align=1 (i32.const 0))) + (set_local 0x2aa (i64.load offset=0x2aa align=1 (i32.const 0))) + (set_local 0x2ab (i64.load offset=0x2ab align=1 (i32.const 0))) + (set_local 0x2ac (i64.load offset=0x2ac align=1 (i32.const 0))) + (set_local 0x2ad (i64.load offset=0x2ad align=1 (i32.const 0))) + (set_local 0x2ae (i64.load offset=0x2ae align=1 (i32.const 0))) + (set_local 0x2af (i64.load offset=0x2af align=1 (i32.const 0))) + (set_local 0x2b0 (i64.load offset=0x2b0 align=1 (i32.const 0))) + (set_local 0x2b1 (i64.load offset=0x2b1 align=1 (i32.const 0))) + (set_local 0x2b2 (i64.load offset=0x2b2 align=1 (i32.const 0))) + (set_local 0x2b3 (i64.load offset=0x2b3 align=1 (i32.const 0))) + (set_local 0x2b4 (i64.load offset=0x2b4 align=1 (i32.const 0))) + (set_local 0x2b5 (i64.load offset=0x2b5 align=1 (i32.const 0))) + (set_local 0x2b6 (i64.load offset=0x2b6 align=1 (i32.const 0))) + (set_local 0x2b7 (i64.load offset=0x2b7 align=1 (i32.const 0))) + (set_local 0x2b8 (i64.load offset=0x2b8 align=1 (i32.const 0))) + (set_local 0x2b9 (i64.load offset=0x2b9 align=1 (i32.const 0))) + (set_local 0x2ba (i64.load offset=0x2ba align=1 (i32.const 0))) + (set_local 0x2bb (i64.load offset=0x2bb align=1 (i32.const 0))) + (set_local 0x2bc (i64.load offset=0x2bc align=1 (i32.const 0))) + (set_local 0x2bd (i64.load offset=0x2bd align=1 (i32.const 0))) + (set_local 0x2be (i64.load offset=0x2be align=1 (i32.const 0))) + (set_local 0x2bf (i64.load offset=0x2bf align=1 (i32.const 0))) + (set_local 0x2c0 (i64.load offset=0x2c0 align=1 (i32.const 0))) + (set_local 0x2c1 (i64.load offset=0x2c1 align=1 (i32.const 0))) + (set_local 0x2c2 (i64.load offset=0x2c2 align=1 (i32.const 0))) + (set_local 0x2c3 (i64.load offset=0x2c3 align=1 (i32.const 0))) + (set_local 0x2c4 (i64.load offset=0x2c4 align=1 (i32.const 0))) + (set_local 0x2c5 (i64.load offset=0x2c5 align=1 (i32.const 0))) + (set_local 0x2c6 (i64.load offset=0x2c6 align=1 (i32.const 0))) + (set_local 0x2c7 (i64.load offset=0x2c7 align=1 (i32.const 0))) + (set_local 0x2c8 (i64.load offset=0x2c8 align=1 (i32.const 0))) + (set_local 0x2c9 (i64.load offset=0x2c9 align=1 (i32.const 0))) + (set_local 0x2ca (i64.load offset=0x2ca align=1 (i32.const 0))) + (set_local 0x2cb (i64.load offset=0x2cb align=1 (i32.const 0))) + (set_local 0x2cc (i64.load offset=0x2cc align=1 (i32.const 0))) + (set_local 0x2cd (i64.load offset=0x2cd align=1 (i32.const 0))) + (set_local 0x2ce (i64.load offset=0x2ce align=1 (i32.const 0))) + (set_local 0x2cf (i64.load offset=0x2cf align=1 (i32.const 0))) + (set_local 0x2d0 (i64.load offset=0x2d0 align=1 (i32.const 0))) + (set_local 0x2d1 (i64.load offset=0x2d1 align=1 (i32.const 0))) + (set_local 0x2d2 (i64.load offset=0x2d2 align=1 (i32.const 0))) + (set_local 0x2d3 (i64.load offset=0x2d3 align=1 (i32.const 0))) + (set_local 0x2d4 (i64.load offset=0x2d4 align=1 (i32.const 0))) + (set_local 0x2d5 (i64.load offset=0x2d5 align=1 (i32.const 0))) + (set_local 0x2d6 (i64.load offset=0x2d6 align=1 (i32.const 0))) + (set_local 0x2d7 (i64.load offset=0x2d7 align=1 (i32.const 0))) + (set_local 0x2d8 (i64.load offset=0x2d8 align=1 (i32.const 0))) + (set_local 0x2d9 (i64.load offset=0x2d9 align=1 (i32.const 0))) + (set_local 0x2da (i64.load offset=0x2da align=1 (i32.const 0))) + (set_local 0x2db (i64.load offset=0x2db align=1 (i32.const 0))) + (set_local 0x2dc (i64.load offset=0x2dc align=1 (i32.const 0))) + (set_local 0x2dd (i64.load offset=0x2dd align=1 (i32.const 0))) + (set_local 0x2de (i64.load offset=0x2de align=1 (i32.const 0))) + (set_local 0x2df (i64.load offset=0x2df align=1 (i32.const 0))) + (set_local 0x2e0 (i64.load offset=0x2e0 align=1 (i32.const 0))) + (set_local 0x2e1 (i64.load offset=0x2e1 align=1 (i32.const 0))) + (set_local 0x2e2 (i64.load offset=0x2e2 align=1 (i32.const 0))) + (set_local 0x2e3 (i64.load offset=0x2e3 align=1 (i32.const 0))) + (set_local 0x2e4 (i64.load offset=0x2e4 align=1 (i32.const 0))) + (set_local 0x2e5 (i64.load offset=0x2e5 align=1 (i32.const 0))) + (set_local 0x2e6 (i64.load offset=0x2e6 align=1 (i32.const 0))) + (set_local 0x2e7 (i64.load offset=0x2e7 align=1 (i32.const 0))) + (set_local 0x2e8 (i64.load offset=0x2e8 align=1 (i32.const 0))) + (set_local 0x2e9 (i64.load offset=0x2e9 align=1 (i32.const 0))) + (set_local 0x2ea (i64.load offset=0x2ea align=1 (i32.const 0))) + (set_local 0x2eb (i64.load offset=0x2eb align=1 (i32.const 0))) + (set_local 0x2ec (i64.load offset=0x2ec align=1 (i32.const 0))) + (set_local 0x2ed (i64.load offset=0x2ed align=1 (i32.const 0))) + (set_local 0x2ee (i64.load offset=0x2ee align=1 (i32.const 0))) + (set_local 0x2ef (i64.load offset=0x2ef align=1 (i32.const 0))) + (set_local 0x2f0 (i64.load offset=0x2f0 align=1 (i32.const 0))) + (set_local 0x2f1 (i64.load offset=0x2f1 align=1 (i32.const 0))) + (set_local 0x2f2 (i64.load offset=0x2f2 align=1 (i32.const 0))) + (set_local 0x2f3 (i64.load offset=0x2f3 align=1 (i32.const 0))) + (set_local 0x2f4 (i64.load offset=0x2f4 align=1 (i32.const 0))) + (set_local 0x2f5 (i64.load offset=0x2f5 align=1 (i32.const 0))) + (set_local 0x2f6 (i64.load offset=0x2f6 align=1 (i32.const 0))) + (set_local 0x2f7 (i64.load offset=0x2f7 align=1 (i32.const 0))) + (set_local 0x2f8 (i64.load offset=0x2f8 align=1 (i32.const 0))) + (set_local 0x2f9 (i64.load offset=0x2f9 align=1 (i32.const 0))) + (set_local 0x2fa (i64.load offset=0x2fa align=1 (i32.const 0))) + (set_local 0x2fb (i64.load offset=0x2fb align=1 (i32.const 0))) + (set_local 0x2fc (i64.load offset=0x2fc align=1 (i32.const 0))) + (set_local 0x2fd (i64.load offset=0x2fd align=1 (i32.const 0))) + (set_local 0x2fe (i64.load offset=0x2fe align=1 (i32.const 0))) + (set_local 0x2ff (i64.load offset=0x2ff align=1 (i32.const 0))) + (set_local 0x300 (i64.load offset=0x300 align=1 (i32.const 0))) + (set_local 0x301 (i64.load offset=0x301 align=1 (i32.const 0))) + (set_local 0x302 (i64.load offset=0x302 align=1 (i32.const 0))) + (set_local 0x303 (i64.load offset=0x303 align=1 (i32.const 0))) + (set_local 0x304 (i64.load offset=0x304 align=1 (i32.const 0))) + (set_local 0x305 (i64.load offset=0x305 align=1 (i32.const 0))) + (set_local 0x306 (i64.load offset=0x306 align=1 (i32.const 0))) + (set_local 0x307 (i64.load offset=0x307 align=1 (i32.const 0))) + (set_local 0x308 (i64.load offset=0x308 align=1 (i32.const 0))) + (set_local 0x309 (i64.load offset=0x309 align=1 (i32.const 0))) + (set_local 0x30a (i64.load offset=0x30a align=1 (i32.const 0))) + (set_local 0x30b (i64.load offset=0x30b align=1 (i32.const 0))) + (set_local 0x30c (i64.load offset=0x30c align=1 (i32.const 0))) + (set_local 0x30d (i64.load offset=0x30d align=1 (i32.const 0))) + (set_local 0x30e (i64.load offset=0x30e align=1 (i32.const 0))) + (set_local 0x30f (i64.load offset=0x30f align=1 (i32.const 0))) + (set_local 0x310 (i64.load offset=0x310 align=1 (i32.const 0))) + (set_local 0x311 (i64.load offset=0x311 align=1 (i32.const 0))) + (set_local 0x312 (i64.load offset=0x312 align=1 (i32.const 0))) + (set_local 0x313 (i64.load offset=0x313 align=1 (i32.const 0))) + (set_local 0x314 (i64.load offset=0x314 align=1 (i32.const 0))) + (set_local 0x315 (i64.load offset=0x315 align=1 (i32.const 0))) + (set_local 0x316 (i64.load offset=0x316 align=1 (i32.const 0))) + (set_local 0x317 (i64.load offset=0x317 align=1 (i32.const 0))) + (set_local 0x318 (i64.load offset=0x318 align=1 (i32.const 0))) + (set_local 0x319 (i64.load offset=0x319 align=1 (i32.const 0))) + (set_local 0x31a (i64.load offset=0x31a align=1 (i32.const 0))) + (set_local 0x31b (i64.load offset=0x31b align=1 (i32.const 0))) + (set_local 0x31c (i64.load offset=0x31c align=1 (i32.const 0))) + (set_local 0x31d (i64.load offset=0x31d align=1 (i32.const 0))) + (set_local 0x31e (i64.load offset=0x31e align=1 (i32.const 0))) + (set_local 0x31f (i64.load offset=0x31f align=1 (i32.const 0))) + (set_local 0x320 (i64.load offset=0x320 align=1 (i32.const 0))) + (set_local 0x321 (i64.load offset=0x321 align=1 (i32.const 0))) + (set_local 0x322 (i64.load offset=0x322 align=1 (i32.const 0))) + (set_local 0x323 (i64.load offset=0x323 align=1 (i32.const 0))) + (set_local 0x324 (i64.load offset=0x324 align=1 (i32.const 0))) + (set_local 0x325 (i64.load offset=0x325 align=1 (i32.const 0))) + (set_local 0x326 (i64.load offset=0x326 align=1 (i32.const 0))) + (set_local 0x327 (i64.load offset=0x327 align=1 (i32.const 0))) + (set_local 0x328 (i64.load offset=0x328 align=1 (i32.const 0))) + (set_local 0x329 (i64.load offset=0x329 align=1 (i32.const 0))) + (set_local 0x32a (i64.load offset=0x32a align=1 (i32.const 0))) + (set_local 0x32b (i64.load offset=0x32b align=1 (i32.const 0))) + (set_local 0x32c (i64.load offset=0x32c align=1 (i32.const 0))) + (set_local 0x32d (i64.load offset=0x32d align=1 (i32.const 0))) + (set_local 0x32e (i64.load offset=0x32e align=1 (i32.const 0))) + (set_local 0x32f (i64.load offset=0x32f align=1 (i32.const 0))) + (set_local 0x330 (i64.load offset=0x330 align=1 (i32.const 0))) + (set_local 0x331 (i64.load offset=0x331 align=1 (i32.const 0))) + (set_local 0x332 (i64.load offset=0x332 align=1 (i32.const 0))) + (set_local 0x333 (i64.load offset=0x333 align=1 (i32.const 0))) + (set_local 0x334 (i64.load offset=0x334 align=1 (i32.const 0))) + (set_local 0x335 (i64.load offset=0x335 align=1 (i32.const 0))) + (set_local 0x336 (i64.load offset=0x336 align=1 (i32.const 0))) + (set_local 0x337 (i64.load offset=0x337 align=1 (i32.const 0))) + (set_local 0x338 (i64.load offset=0x338 align=1 (i32.const 0))) + (set_local 0x339 (i64.load offset=0x339 align=1 (i32.const 0))) + (set_local 0x33a (i64.load offset=0x33a align=1 (i32.const 0))) + (set_local 0x33b (i64.load offset=0x33b align=1 (i32.const 0))) + (set_local 0x33c (i64.load offset=0x33c align=1 (i32.const 0))) + (set_local 0x33d (i64.load offset=0x33d align=1 (i32.const 0))) + (set_local 0x33e (i64.load offset=0x33e align=1 (i32.const 0))) + (set_local 0x33f (i64.load offset=0x33f align=1 (i32.const 0))) + (set_local 0x340 (i64.load offset=0x340 align=1 (i32.const 0))) + (set_local 0x341 (i64.load offset=0x341 align=1 (i32.const 0))) + (set_local 0x342 (i64.load offset=0x342 align=1 (i32.const 0))) + (set_local 0x343 (i64.load offset=0x343 align=1 (i32.const 0))) + (set_local 0x344 (i64.load offset=0x344 align=1 (i32.const 0))) + (set_local 0x345 (i64.load offset=0x345 align=1 (i32.const 0))) + (set_local 0x346 (i64.load offset=0x346 align=1 (i32.const 0))) + (set_local 0x347 (i64.load offset=0x347 align=1 (i32.const 0))) + (set_local 0x348 (i64.load offset=0x348 align=1 (i32.const 0))) + (set_local 0x349 (i64.load offset=0x349 align=1 (i32.const 0))) + (set_local 0x34a (i64.load offset=0x34a align=1 (i32.const 0))) + (set_local 0x34b (i64.load offset=0x34b align=1 (i32.const 0))) + (set_local 0x34c (i64.load offset=0x34c align=1 (i32.const 0))) + (set_local 0x34d (i64.load offset=0x34d align=1 (i32.const 0))) + (set_local 0x34e (i64.load offset=0x34e align=1 (i32.const 0))) + (set_local 0x34f (i64.load offset=0x34f align=1 (i32.const 0))) + (set_local 0x350 (i64.load offset=0x350 align=1 (i32.const 0))) + (set_local 0x351 (i64.load offset=0x351 align=1 (i32.const 0))) + (set_local 0x352 (i64.load offset=0x352 align=1 (i32.const 0))) + (set_local 0x353 (i64.load offset=0x353 align=1 (i32.const 0))) + (set_local 0x354 (i64.load offset=0x354 align=1 (i32.const 0))) + (set_local 0x355 (i64.load offset=0x355 align=1 (i32.const 0))) + (set_local 0x356 (i64.load offset=0x356 align=1 (i32.const 0))) + (set_local 0x357 (i64.load offset=0x357 align=1 (i32.const 0))) + (set_local 0x358 (i64.load offset=0x358 align=1 (i32.const 0))) + (set_local 0x359 (i64.load offset=0x359 align=1 (i32.const 0))) + (set_local 0x35a (i64.load offset=0x35a align=1 (i32.const 0))) + (set_local 0x35b (i64.load offset=0x35b align=1 (i32.const 0))) + (set_local 0x35c (i64.load offset=0x35c align=1 (i32.const 0))) + (set_local 0x35d (i64.load offset=0x35d align=1 (i32.const 0))) + (set_local 0x35e (i64.load offset=0x35e align=1 (i32.const 0))) + (set_local 0x35f (i64.load offset=0x35f align=1 (i32.const 0))) + (set_local 0x360 (i64.load offset=0x360 align=1 (i32.const 0))) + (set_local 0x361 (i64.load offset=0x361 align=1 (i32.const 0))) + (set_local 0x362 (i64.load offset=0x362 align=1 (i32.const 0))) + (set_local 0x363 (i64.load offset=0x363 align=1 (i32.const 0))) + (set_local 0x364 (i64.load offset=0x364 align=1 (i32.const 0))) + (set_local 0x365 (i64.load offset=0x365 align=1 (i32.const 0))) + (set_local 0x366 (i64.load offset=0x366 align=1 (i32.const 0))) + (set_local 0x367 (i64.load offset=0x367 align=1 (i32.const 0))) + (set_local 0x368 (i64.load offset=0x368 align=1 (i32.const 0))) + (set_local 0x369 (i64.load offset=0x369 align=1 (i32.const 0))) + (set_local 0x36a (i64.load offset=0x36a align=1 (i32.const 0))) + (set_local 0x36b (i64.load offset=0x36b align=1 (i32.const 0))) + (set_local 0x36c (i64.load offset=0x36c align=1 (i32.const 0))) + (set_local 0x36d (i64.load offset=0x36d align=1 (i32.const 0))) + (set_local 0x36e (i64.load offset=0x36e align=1 (i32.const 0))) + (set_local 0x36f (i64.load offset=0x36f align=1 (i32.const 0))) + (set_local 0x370 (i64.load offset=0x370 align=1 (i32.const 0))) + (set_local 0x371 (i64.load offset=0x371 align=1 (i32.const 0))) + (set_local 0x372 (i64.load offset=0x372 align=1 (i32.const 0))) + (set_local 0x373 (i64.load offset=0x373 align=1 (i32.const 0))) + (set_local 0x374 (i64.load offset=0x374 align=1 (i32.const 0))) + (set_local 0x375 (i64.load offset=0x375 align=1 (i32.const 0))) + (set_local 0x376 (i64.load offset=0x376 align=1 (i32.const 0))) + (set_local 0x377 (i64.load offset=0x377 align=1 (i32.const 0))) + (set_local 0x378 (i64.load offset=0x378 align=1 (i32.const 0))) + (set_local 0x379 (i64.load offset=0x379 align=1 (i32.const 0))) + (set_local 0x37a (i64.load offset=0x37a align=1 (i32.const 0))) + (set_local 0x37b (i64.load offset=0x37b align=1 (i32.const 0))) + (set_local 0x37c (i64.load offset=0x37c align=1 (i32.const 0))) + (set_local 0x37d (i64.load offset=0x37d align=1 (i32.const 0))) + (set_local 0x37e (i64.load offset=0x37e align=1 (i32.const 0))) + (set_local 0x37f (i64.load offset=0x37f align=1 (i32.const 0))) + (set_local 0x380 (i64.load offset=0x380 align=1 (i32.const 0))) + (set_local 0x381 (i64.load offset=0x381 align=1 (i32.const 0))) + (set_local 0x382 (i64.load offset=0x382 align=1 (i32.const 0))) + (set_local 0x383 (i64.load offset=0x383 align=1 (i32.const 0))) + (set_local 0x384 (i64.load offset=0x384 align=1 (i32.const 0))) + (set_local 0x385 (i64.load offset=0x385 align=1 (i32.const 0))) + (set_local 0x386 (i64.load offset=0x386 align=1 (i32.const 0))) + (set_local 0x387 (i64.load offset=0x387 align=1 (i32.const 0))) + (set_local 0x388 (i64.load offset=0x388 align=1 (i32.const 0))) + (set_local 0x389 (i64.load offset=0x389 align=1 (i32.const 0))) + (set_local 0x38a (i64.load offset=0x38a align=1 (i32.const 0))) + (set_local 0x38b (i64.load offset=0x38b align=1 (i32.const 0))) + (set_local 0x38c (i64.load offset=0x38c align=1 (i32.const 0))) + (set_local 0x38d (i64.load offset=0x38d align=1 (i32.const 0))) + (set_local 0x38e (i64.load offset=0x38e align=1 (i32.const 0))) + (set_local 0x38f (i64.load offset=0x38f align=1 (i32.const 0))) + (set_local 0x390 (i64.load offset=0x390 align=1 (i32.const 0))) + (set_local 0x391 (i64.load offset=0x391 align=1 (i32.const 0))) + (set_local 0x392 (i64.load offset=0x392 align=1 (i32.const 0))) + (set_local 0x393 (i64.load offset=0x393 align=1 (i32.const 0))) + (set_local 0x394 (i64.load offset=0x394 align=1 (i32.const 0))) + (set_local 0x395 (i64.load offset=0x395 align=1 (i32.const 0))) + (set_local 0x396 (i64.load offset=0x396 align=1 (i32.const 0))) + (set_local 0x397 (i64.load offset=0x397 align=1 (i32.const 0))) + (set_local 0x398 (i64.load offset=0x398 align=1 (i32.const 0))) + (set_local 0x399 (i64.load offset=0x399 align=1 (i32.const 0))) + (set_local 0x39a (i64.load offset=0x39a align=1 (i32.const 0))) + (set_local 0x39b (i64.load offset=0x39b align=1 (i32.const 0))) + (set_local 0x39c (i64.load offset=0x39c align=1 (i32.const 0))) + (set_local 0x39d (i64.load offset=0x39d align=1 (i32.const 0))) + (set_local 0x39e (i64.load offset=0x39e align=1 (i32.const 0))) + (set_local 0x39f (i64.load offset=0x39f align=1 (i32.const 0))) + (set_local 0x3a0 (i64.load offset=0x3a0 align=1 (i32.const 0))) + (set_local 0x3a1 (i64.load offset=0x3a1 align=1 (i32.const 0))) + (set_local 0x3a2 (i64.load offset=0x3a2 align=1 (i32.const 0))) + (set_local 0x3a3 (i64.load offset=0x3a3 align=1 (i32.const 0))) + (set_local 0x3a4 (i64.load offset=0x3a4 align=1 (i32.const 0))) + (set_local 0x3a5 (i64.load offset=0x3a5 align=1 (i32.const 0))) + (set_local 0x3a6 (i64.load offset=0x3a6 align=1 (i32.const 0))) + (set_local 0x3a7 (i64.load offset=0x3a7 align=1 (i32.const 0))) + (set_local 0x3a8 (i64.load offset=0x3a8 align=1 (i32.const 0))) + (set_local 0x3a9 (i64.load offset=0x3a9 align=1 (i32.const 0))) + (set_local 0x3aa (i64.load offset=0x3aa align=1 (i32.const 0))) + (set_local 0x3ab (i64.load offset=0x3ab align=1 (i32.const 0))) + (set_local 0x3ac (i64.load offset=0x3ac align=1 (i32.const 0))) + (set_local 0x3ad (i64.load offset=0x3ad align=1 (i32.const 0))) + (set_local 0x3ae (i64.load offset=0x3ae align=1 (i32.const 0))) + (set_local 0x3af (i64.load offset=0x3af align=1 (i32.const 0))) + (set_local 0x3b0 (i64.load offset=0x3b0 align=1 (i32.const 0))) + (set_local 0x3b1 (i64.load offset=0x3b1 align=1 (i32.const 0))) + (set_local 0x3b2 (i64.load offset=0x3b2 align=1 (i32.const 0))) + (set_local 0x3b3 (i64.load offset=0x3b3 align=1 (i32.const 0))) + (set_local 0x3b4 (i64.load offset=0x3b4 align=1 (i32.const 0))) + (set_local 0x3b5 (i64.load offset=0x3b5 align=1 (i32.const 0))) + (set_local 0x3b6 (i64.load offset=0x3b6 align=1 (i32.const 0))) + (set_local 0x3b7 (i64.load offset=0x3b7 align=1 (i32.const 0))) + (set_local 0x3b8 (i64.load offset=0x3b8 align=1 (i32.const 0))) + (set_local 0x3b9 (i64.load offset=0x3b9 align=1 (i32.const 0))) + (set_local 0x3ba (i64.load offset=0x3ba align=1 (i32.const 0))) + (set_local 0x3bb (i64.load offset=0x3bb align=1 (i32.const 0))) + (set_local 0x3bc (i64.load offset=0x3bc align=1 (i32.const 0))) + (set_local 0x3bd (i64.load offset=0x3bd align=1 (i32.const 0))) + (set_local 0x3be (i64.load offset=0x3be align=1 (i32.const 0))) + (set_local 0x3bf (i64.load offset=0x3bf align=1 (i32.const 0))) + (set_local 0x3c0 (i64.load offset=0x3c0 align=1 (i32.const 0))) + (set_local 0x3c1 (i64.load offset=0x3c1 align=1 (i32.const 0))) + (set_local 0x3c2 (i64.load offset=0x3c2 align=1 (i32.const 0))) + (set_local 0x3c3 (i64.load offset=0x3c3 align=1 (i32.const 0))) + (set_local 0x3c4 (i64.load offset=0x3c4 align=1 (i32.const 0))) + (set_local 0x3c5 (i64.load offset=0x3c5 align=1 (i32.const 0))) + (set_local 0x3c6 (i64.load offset=0x3c6 align=1 (i32.const 0))) + (set_local 0x3c7 (i64.load offset=0x3c7 align=1 (i32.const 0))) + (set_local 0x3c8 (i64.load offset=0x3c8 align=1 (i32.const 0))) + (set_local 0x3c9 (i64.load offset=0x3c9 align=1 (i32.const 0))) + (set_local 0x3ca (i64.load offset=0x3ca align=1 (i32.const 0))) + (set_local 0x3cb (i64.load offset=0x3cb align=1 (i32.const 0))) + (set_local 0x3cc (i64.load offset=0x3cc align=1 (i32.const 0))) + (set_local 0x3cd (i64.load offset=0x3cd align=1 (i32.const 0))) + (set_local 0x3ce (i64.load offset=0x3ce align=1 (i32.const 0))) + (set_local 0x3cf (i64.load offset=0x3cf align=1 (i32.const 0))) + (set_local 0x3d0 (i64.load offset=0x3d0 align=1 (i32.const 0))) + (set_local 0x3d1 (i64.load offset=0x3d1 align=1 (i32.const 0))) + (set_local 0x3d2 (i64.load offset=0x3d2 align=1 (i32.const 0))) + (set_local 0x3d3 (i64.load offset=0x3d3 align=1 (i32.const 0))) + (set_local 0x3d4 (i64.load offset=0x3d4 align=1 (i32.const 0))) + (set_local 0x3d5 (i64.load offset=0x3d5 align=1 (i32.const 0))) + (set_local 0x3d6 (i64.load offset=0x3d6 align=1 (i32.const 0))) + (set_local 0x3d7 (i64.load offset=0x3d7 align=1 (i32.const 0))) + (set_local 0x3d8 (i64.load offset=0x3d8 align=1 (i32.const 0))) + (set_local 0x3d9 (i64.load offset=0x3d9 align=1 (i32.const 0))) + (set_local 0x3da (i64.load offset=0x3da align=1 (i32.const 0))) + (set_local 0x3db (i64.load offset=0x3db align=1 (i32.const 0))) + (set_local 0x3dc (i64.load offset=0x3dc align=1 (i32.const 0))) + (set_local 0x3dd (i64.load offset=0x3dd align=1 (i32.const 0))) + (set_local 0x3de (i64.load offset=0x3de align=1 (i32.const 0))) + (set_local 0x3df (i64.load offset=0x3df align=1 (i32.const 0))) + (set_local 0x3e0 (i64.load offset=0x3e0 align=1 (i32.const 0))) + (set_local 0x3e1 (i64.load offset=0x3e1 align=1 (i32.const 0))) + (set_local 0x3e2 (i64.load offset=0x3e2 align=1 (i32.const 0))) + (set_local 0x3e3 (i64.load offset=0x3e3 align=1 (i32.const 0))) + (set_local 0x3e4 (i64.load offset=0x3e4 align=1 (i32.const 0))) + (set_local 0x3e5 (i64.load offset=0x3e5 align=1 (i32.const 0))) + (set_local 0x3e6 (i64.load offset=0x3e6 align=1 (i32.const 0))) + (set_local 0x3e7 (i64.load offset=0x3e7 align=1 (i32.const 0))) + (set_local 0x3e8 (i64.load offset=0x3e8 align=1 (i32.const 0))) + (set_local 0x3e9 (i64.load offset=0x3e9 align=1 (i32.const 0))) + (set_local 0x3ea (i64.load offset=0x3ea align=1 (i32.const 0))) + (set_local 0x3eb (i64.load offset=0x3eb align=1 (i32.const 0))) + (set_local 0x3ec (i64.load offset=0x3ec align=1 (i32.const 0))) + (set_local 0x3ed (i64.load offset=0x3ed align=1 (i32.const 0))) + (set_local 0x3ee (i64.load offset=0x3ee align=1 (i32.const 0))) + (set_local 0x3ef (i64.load offset=0x3ef align=1 (i32.const 0))) + (set_local 0x3f0 (i64.load offset=0x3f0 align=1 (i32.const 0))) + (set_local 0x3f1 (i64.load offset=0x3f1 align=1 (i32.const 0))) + (set_local 0x3f2 (i64.load offset=0x3f2 align=1 (i32.const 0))) + (set_local 0x3f3 (i64.load offset=0x3f3 align=1 (i32.const 0))) + (set_local 0x3f4 (i64.load offset=0x3f4 align=1 (i32.const 0))) + (set_local 0x3f5 (i64.load offset=0x3f5 align=1 (i32.const 0))) + (set_local 0x3f6 (i64.load offset=0x3f6 align=1 (i32.const 0))) + (set_local 0x3f7 (i64.load offset=0x3f7 align=1 (i32.const 0))) + (set_local 0x3f8 (i64.load offset=0x3f8 align=1 (i32.const 0))) + (set_local 0x3f9 (i64.load offset=0x3f9 align=1 (i32.const 0))) + (set_local 0x3fa (i64.load offset=0x3fa align=1 (i32.const 0))) + (set_local 0x3fb (i64.load offset=0x3fb align=1 (i32.const 0))) + (set_local 0x3fc (i64.load offset=0x3fc align=1 (i32.const 0))) + (set_local 0x3fd (i64.load offset=0x3fd align=1 (i32.const 0))) + (set_local 0x3fe (i64.load offset=0x3fe align=1 (i32.const 0))) + (set_local 0x3ff (i64.load offset=0x3ff align=1 (i32.const 0))) + (set_local 0x400 (i64.load offset=0x400 align=1 (i32.const 0))) + (set_local 0x401 (i64.load offset=0x401 align=1 (i32.const 0))) + (set_local 0x402 (i64.load offset=0x402 align=1 (i32.const 0))) + (set_local 0x403 (i64.load offset=0x403 align=1 (i32.const 0))) + (set_local 0x404 (i64.load offset=0x404 align=1 (i32.const 0))) + (set_local 0x405 (i64.load offset=0x405 align=1 (i32.const 0))) + (set_local 0x406 (i64.load offset=0x406 align=1 (i32.const 0))) + (set_local 0x407 (i64.load offset=0x407 align=1 (i32.const 0))) + (set_local 0x408 (i64.load offset=0x408 align=1 (i32.const 0))) + (set_local 0x409 (i64.load offset=0x409 align=1 (i32.const 0))) + (set_local 0x40a (i64.load offset=0x40a align=1 (i32.const 0))) + (set_local 0x40b (i64.load offset=0x40b align=1 (i32.const 0))) + (set_local 0x40c (i64.load offset=0x40c align=1 (i32.const 0))) + (set_local 0x40d (i64.load offset=0x40d align=1 (i32.const 0))) + (set_local 0x40e (i64.load offset=0x40e align=1 (i32.const 0))) + (set_local 0x40f (i64.load offset=0x40f align=1 (i32.const 0))) + (set_local 0x410 (i64.load offset=0x410 align=1 (i32.const 0))) + (set_local 0x411 (i64.load offset=0x411 align=1 (i32.const 0))) + (set_local 0x412 (i64.load offset=0x412 align=1 (i32.const 0))) + (set_local 0x413 (i64.load offset=0x413 align=1 (i32.const 0))) + (set_local 0x414 (i64.load offset=0x414 align=1 (i32.const 0))) + (set_local 0x415 (i64.load offset=0x415 align=1 (i32.const 0))) + (set_local 0x416 (i64.load offset=0x416 align=1 (i32.const 0))) + (set_local 0x417 (i64.load offset=0x417 align=1 (i32.const 0))) + (set_local 0x418 (i64.load offset=0x418 align=1 (i32.const 0))) + (set_local 0x419 (i64.load offset=0x419 align=1 (i32.const 0))) + (set_local 0x41a (i64.load offset=0x41a align=1 (i32.const 0))) + (set_local 0x41b (i64.load offset=0x41b align=1 (i32.const 0))) + (set_local 0x41c (i64.load offset=0x41c align=1 (i32.const 0))) + (set_local 0x41d (i64.load offset=0x41d align=1 (i32.const 0))) + (set_local 0x41e (i64.load offset=0x41e align=1 (i32.const 0))) + (set_local 0x41f (i64.load offset=0x41f align=1 (i32.const 0))) + + ;; store the locals back to memory + (i64.store offset=0x000 align=1 (i32.const 0) (get_local 0x000)) + (i64.store offset=0x001 align=1 (i32.const 0) (get_local 0x001)) + (i64.store offset=0x002 align=1 (i32.const 0) (get_local 0x002)) + (i64.store offset=0x003 align=1 (i32.const 0) (get_local 0x003)) + (i64.store offset=0x004 align=1 (i32.const 0) (get_local 0x004)) + (i64.store offset=0x005 align=1 (i32.const 0) (get_local 0x005)) + (i64.store offset=0x006 align=1 (i32.const 0) (get_local 0x006)) + (i64.store offset=0x007 align=1 (i32.const 0) (get_local 0x007)) + (i64.store offset=0x008 align=1 (i32.const 0) (get_local 0x008)) + (i64.store offset=0x009 align=1 (i32.const 0) (get_local 0x009)) + (i64.store offset=0x00a align=1 (i32.const 0) (get_local 0x00a)) + (i64.store offset=0x00b align=1 (i32.const 0) (get_local 0x00b)) + (i64.store offset=0x00c align=1 (i32.const 0) (get_local 0x00c)) + (i64.store offset=0x00d align=1 (i32.const 0) (get_local 0x00d)) + (i64.store offset=0x00e align=1 (i32.const 0) (get_local 0x00e)) + (i64.store offset=0x00f align=1 (i32.const 0) (get_local 0x00f)) + (i64.store offset=0x010 align=1 (i32.const 0) (get_local 0x010)) + (i64.store offset=0x011 align=1 (i32.const 0) (get_local 0x011)) + (i64.store offset=0x012 align=1 (i32.const 0) (get_local 0x012)) + (i64.store offset=0x013 align=1 (i32.const 0) (get_local 0x013)) + (i64.store offset=0x014 align=1 (i32.const 0) (get_local 0x014)) + (i64.store offset=0x015 align=1 (i32.const 0) (get_local 0x015)) + (i64.store offset=0x016 align=1 (i32.const 0) (get_local 0x016)) + (i64.store offset=0x017 align=1 (i32.const 0) (get_local 0x017)) + (i64.store offset=0x018 align=1 (i32.const 0) (get_local 0x018)) + (i64.store offset=0x019 align=1 (i32.const 0) (get_local 0x019)) + (i64.store offset=0x01a align=1 (i32.const 0) (get_local 0x01a)) + (i64.store offset=0x01b align=1 (i32.const 0) (get_local 0x01b)) + (i64.store offset=0x01c align=1 (i32.const 0) (get_local 0x01c)) + (i64.store offset=0x01d align=1 (i32.const 0) (get_local 0x01d)) + (i64.store offset=0x01e align=1 (i32.const 0) (get_local 0x01e)) + (i64.store offset=0x01f align=1 (i32.const 0) (get_local 0x01f)) + (i64.store offset=0x020 align=1 (i32.const 0) (get_local 0x020)) + (i64.store offset=0x021 align=1 (i32.const 0) (get_local 0x021)) + (i64.store offset=0x022 align=1 (i32.const 0) (get_local 0x022)) + (i64.store offset=0x023 align=1 (i32.const 0) (get_local 0x023)) + (i64.store offset=0x024 align=1 (i32.const 0) (get_local 0x024)) + (i64.store offset=0x025 align=1 (i32.const 0) (get_local 0x025)) + (i64.store offset=0x026 align=1 (i32.const 0) (get_local 0x026)) + (i64.store offset=0x027 align=1 (i32.const 0) (get_local 0x027)) + (i64.store offset=0x028 align=1 (i32.const 0) (get_local 0x028)) + (i64.store offset=0x029 align=1 (i32.const 0) (get_local 0x029)) + (i64.store offset=0x02a align=1 (i32.const 0) (get_local 0x02a)) + (i64.store offset=0x02b align=1 (i32.const 0) (get_local 0x02b)) + (i64.store offset=0x02c align=1 (i32.const 0) (get_local 0x02c)) + (i64.store offset=0x02d align=1 (i32.const 0) (get_local 0x02d)) + (i64.store offset=0x02e align=1 (i32.const 0) (get_local 0x02e)) + (i64.store offset=0x02f align=1 (i32.const 0) (get_local 0x02f)) + (i64.store offset=0x030 align=1 (i32.const 0) (get_local 0x030)) + (i64.store offset=0x031 align=1 (i32.const 0) (get_local 0x031)) + (i64.store offset=0x032 align=1 (i32.const 0) (get_local 0x032)) + (i64.store offset=0x033 align=1 (i32.const 0) (get_local 0x033)) + (i64.store offset=0x034 align=1 (i32.const 0) (get_local 0x034)) + (i64.store offset=0x035 align=1 (i32.const 0) (get_local 0x035)) + (i64.store offset=0x036 align=1 (i32.const 0) (get_local 0x036)) + (i64.store offset=0x037 align=1 (i32.const 0) (get_local 0x037)) + (i64.store offset=0x038 align=1 (i32.const 0) (get_local 0x038)) + (i64.store offset=0x039 align=1 (i32.const 0) (get_local 0x039)) + (i64.store offset=0x03a align=1 (i32.const 0) (get_local 0x03a)) + (i64.store offset=0x03b align=1 (i32.const 0) (get_local 0x03b)) + (i64.store offset=0x03c align=1 (i32.const 0) (get_local 0x03c)) + (i64.store offset=0x03d align=1 (i32.const 0) (get_local 0x03d)) + (i64.store offset=0x03e align=1 (i32.const 0) (get_local 0x03e)) + (i64.store offset=0x03f align=1 (i32.const 0) (get_local 0x03f)) + (i64.store offset=0x040 align=1 (i32.const 0) (get_local 0x040)) + (i64.store offset=0x041 align=1 (i32.const 0) (get_local 0x041)) + (i64.store offset=0x042 align=1 (i32.const 0) (get_local 0x042)) + (i64.store offset=0x043 align=1 (i32.const 0) (get_local 0x043)) + (i64.store offset=0x044 align=1 (i32.const 0) (get_local 0x044)) + (i64.store offset=0x045 align=1 (i32.const 0) (get_local 0x045)) + (i64.store offset=0x046 align=1 (i32.const 0) (get_local 0x046)) + (i64.store offset=0x047 align=1 (i32.const 0) (get_local 0x047)) + (i64.store offset=0x048 align=1 (i32.const 0) (get_local 0x048)) + (i64.store offset=0x049 align=1 (i32.const 0) (get_local 0x049)) + (i64.store offset=0x04a align=1 (i32.const 0) (get_local 0x04a)) + (i64.store offset=0x04b align=1 (i32.const 0) (get_local 0x04b)) + (i64.store offset=0x04c align=1 (i32.const 0) (get_local 0x04c)) + (i64.store offset=0x04d align=1 (i32.const 0) (get_local 0x04d)) + (i64.store offset=0x04e align=1 (i32.const 0) (get_local 0x04e)) + (i64.store offset=0x04f align=1 (i32.const 0) (get_local 0x04f)) + (i64.store offset=0x050 align=1 (i32.const 0) (get_local 0x050)) + (i64.store offset=0x051 align=1 (i32.const 0) (get_local 0x051)) + (i64.store offset=0x052 align=1 (i32.const 0) (get_local 0x052)) + (i64.store offset=0x053 align=1 (i32.const 0) (get_local 0x053)) + (i64.store offset=0x054 align=1 (i32.const 0) (get_local 0x054)) + (i64.store offset=0x055 align=1 (i32.const 0) (get_local 0x055)) + (i64.store offset=0x056 align=1 (i32.const 0) (get_local 0x056)) + (i64.store offset=0x057 align=1 (i32.const 0) (get_local 0x057)) + (i64.store offset=0x058 align=1 (i32.const 0) (get_local 0x058)) + (i64.store offset=0x059 align=1 (i32.const 0) (get_local 0x059)) + (i64.store offset=0x05a align=1 (i32.const 0) (get_local 0x05a)) + (i64.store offset=0x05b align=1 (i32.const 0) (get_local 0x05b)) + (i64.store offset=0x05c align=1 (i32.const 0) (get_local 0x05c)) + (i64.store offset=0x05d align=1 (i32.const 0) (get_local 0x05d)) + (i64.store offset=0x05e align=1 (i32.const 0) (get_local 0x05e)) + (i64.store offset=0x05f align=1 (i32.const 0) (get_local 0x05f)) + (i64.store offset=0x060 align=1 (i32.const 0) (get_local 0x060)) + (i64.store offset=0x061 align=1 (i32.const 0) (get_local 0x061)) + (i64.store offset=0x062 align=1 (i32.const 0) (get_local 0x062)) + (i64.store offset=0x063 align=1 (i32.const 0) (get_local 0x063)) + (i64.store offset=0x064 align=1 (i32.const 0) (get_local 0x064)) + (i64.store offset=0x065 align=1 (i32.const 0) (get_local 0x065)) + (i64.store offset=0x066 align=1 (i32.const 0) (get_local 0x066)) + (i64.store offset=0x067 align=1 (i32.const 0) (get_local 0x067)) + (i64.store offset=0x068 align=1 (i32.const 0) (get_local 0x068)) + (i64.store offset=0x069 align=1 (i32.const 0) (get_local 0x069)) + (i64.store offset=0x06a align=1 (i32.const 0) (get_local 0x06a)) + (i64.store offset=0x06b align=1 (i32.const 0) (get_local 0x06b)) + (i64.store offset=0x06c align=1 (i32.const 0) (get_local 0x06c)) + (i64.store offset=0x06d align=1 (i32.const 0) (get_local 0x06d)) + (i64.store offset=0x06e align=1 (i32.const 0) (get_local 0x06e)) + (i64.store offset=0x06f align=1 (i32.const 0) (get_local 0x06f)) + (i64.store offset=0x070 align=1 (i32.const 0) (get_local 0x070)) + (i64.store offset=0x071 align=1 (i32.const 0) (get_local 0x071)) + (i64.store offset=0x072 align=1 (i32.const 0) (get_local 0x072)) + (i64.store offset=0x073 align=1 (i32.const 0) (get_local 0x073)) + (i64.store offset=0x074 align=1 (i32.const 0) (get_local 0x074)) + (i64.store offset=0x075 align=1 (i32.const 0) (get_local 0x075)) + (i64.store offset=0x076 align=1 (i32.const 0) (get_local 0x076)) + (i64.store offset=0x077 align=1 (i32.const 0) (get_local 0x077)) + (i64.store offset=0x078 align=1 (i32.const 0) (get_local 0x078)) + (i64.store offset=0x079 align=1 (i32.const 0) (get_local 0x079)) + (i64.store offset=0x07a align=1 (i32.const 0) (get_local 0x07a)) + (i64.store offset=0x07b align=1 (i32.const 0) (get_local 0x07b)) + (i64.store offset=0x07c align=1 (i32.const 0) (get_local 0x07c)) + (i64.store offset=0x07d align=1 (i32.const 0) (get_local 0x07d)) + (i64.store offset=0x07e align=1 (i32.const 0) (get_local 0x07e)) + (i64.store offset=0x07f align=1 (i32.const 0) (get_local 0x07f)) + (i64.store offset=0x080 align=1 (i32.const 0) (get_local 0x080)) + (i64.store offset=0x081 align=1 (i32.const 0) (get_local 0x081)) + (i64.store offset=0x082 align=1 (i32.const 0) (get_local 0x082)) + (i64.store offset=0x083 align=1 (i32.const 0) (get_local 0x083)) + (i64.store offset=0x084 align=1 (i32.const 0) (get_local 0x084)) + (i64.store offset=0x085 align=1 (i32.const 0) (get_local 0x085)) + (i64.store offset=0x086 align=1 (i32.const 0) (get_local 0x086)) + (i64.store offset=0x087 align=1 (i32.const 0) (get_local 0x087)) + (i64.store offset=0x088 align=1 (i32.const 0) (get_local 0x088)) + (i64.store offset=0x089 align=1 (i32.const 0) (get_local 0x089)) + (i64.store offset=0x08a align=1 (i32.const 0) (get_local 0x08a)) + (i64.store offset=0x08b align=1 (i32.const 0) (get_local 0x08b)) + (i64.store offset=0x08c align=1 (i32.const 0) (get_local 0x08c)) + (i64.store offset=0x08d align=1 (i32.const 0) (get_local 0x08d)) + (i64.store offset=0x08e align=1 (i32.const 0) (get_local 0x08e)) + (i64.store offset=0x08f align=1 (i32.const 0) (get_local 0x08f)) + (i64.store offset=0x090 align=1 (i32.const 0) (get_local 0x090)) + (i64.store offset=0x091 align=1 (i32.const 0) (get_local 0x091)) + (i64.store offset=0x092 align=1 (i32.const 0) (get_local 0x092)) + (i64.store offset=0x093 align=1 (i32.const 0) (get_local 0x093)) + (i64.store offset=0x094 align=1 (i32.const 0) (get_local 0x094)) + (i64.store offset=0x095 align=1 (i32.const 0) (get_local 0x095)) + (i64.store offset=0x096 align=1 (i32.const 0) (get_local 0x096)) + (i64.store offset=0x097 align=1 (i32.const 0) (get_local 0x097)) + (i64.store offset=0x098 align=1 (i32.const 0) (get_local 0x098)) + (i64.store offset=0x099 align=1 (i32.const 0) (get_local 0x099)) + (i64.store offset=0x09a align=1 (i32.const 0) (get_local 0x09a)) + (i64.store offset=0x09b align=1 (i32.const 0) (get_local 0x09b)) + (i64.store offset=0x09c align=1 (i32.const 0) (get_local 0x09c)) + (i64.store offset=0x09d align=1 (i32.const 0) (get_local 0x09d)) + (i64.store offset=0x09e align=1 (i32.const 0) (get_local 0x09e)) + (i64.store offset=0x09f align=1 (i32.const 0) (get_local 0x09f)) + (i64.store offset=0x0a0 align=1 (i32.const 0) (get_local 0x0a0)) + (i64.store offset=0x0a1 align=1 (i32.const 0) (get_local 0x0a1)) + (i64.store offset=0x0a2 align=1 (i32.const 0) (get_local 0x0a2)) + (i64.store offset=0x0a3 align=1 (i32.const 0) (get_local 0x0a3)) + (i64.store offset=0x0a4 align=1 (i32.const 0) (get_local 0x0a4)) + (i64.store offset=0x0a5 align=1 (i32.const 0) (get_local 0x0a5)) + (i64.store offset=0x0a6 align=1 (i32.const 0) (get_local 0x0a6)) + (i64.store offset=0x0a7 align=1 (i32.const 0) (get_local 0x0a7)) + (i64.store offset=0x0a8 align=1 (i32.const 0) (get_local 0x0a8)) + (i64.store offset=0x0a9 align=1 (i32.const 0) (get_local 0x0a9)) + (i64.store offset=0x0aa align=1 (i32.const 0) (get_local 0x0aa)) + (i64.store offset=0x0ab align=1 (i32.const 0) (get_local 0x0ab)) + (i64.store offset=0x0ac align=1 (i32.const 0) (get_local 0x0ac)) + (i64.store offset=0x0ad align=1 (i32.const 0) (get_local 0x0ad)) + (i64.store offset=0x0ae align=1 (i32.const 0) (get_local 0x0ae)) + (i64.store offset=0x0af align=1 (i32.const 0) (get_local 0x0af)) + (i64.store offset=0x0b0 align=1 (i32.const 0) (get_local 0x0b0)) + (i64.store offset=0x0b1 align=1 (i32.const 0) (get_local 0x0b1)) + (i64.store offset=0x0b2 align=1 (i32.const 0) (get_local 0x0b2)) + (i64.store offset=0x0b3 align=1 (i32.const 0) (get_local 0x0b3)) + (i64.store offset=0x0b4 align=1 (i32.const 0) (get_local 0x0b4)) + (i64.store offset=0x0b5 align=1 (i32.const 0) (get_local 0x0b5)) + (i64.store offset=0x0b6 align=1 (i32.const 0) (get_local 0x0b6)) + (i64.store offset=0x0b7 align=1 (i32.const 0) (get_local 0x0b7)) + (i64.store offset=0x0b8 align=1 (i32.const 0) (get_local 0x0b8)) + (i64.store offset=0x0b9 align=1 (i32.const 0) (get_local 0x0b9)) + (i64.store offset=0x0ba align=1 (i32.const 0) (get_local 0x0ba)) + (i64.store offset=0x0bb align=1 (i32.const 0) (get_local 0x0bb)) + (i64.store offset=0x0bc align=1 (i32.const 0) (get_local 0x0bc)) + (i64.store offset=0x0bd align=1 (i32.const 0) (get_local 0x0bd)) + (i64.store offset=0x0be align=1 (i32.const 0) (get_local 0x0be)) + (i64.store offset=0x0bf align=1 (i32.const 0) (get_local 0x0bf)) + (i64.store offset=0x0c0 align=1 (i32.const 0) (get_local 0x0c0)) + (i64.store offset=0x0c1 align=1 (i32.const 0) (get_local 0x0c1)) + (i64.store offset=0x0c2 align=1 (i32.const 0) (get_local 0x0c2)) + (i64.store offset=0x0c3 align=1 (i32.const 0) (get_local 0x0c3)) + (i64.store offset=0x0c4 align=1 (i32.const 0) (get_local 0x0c4)) + (i64.store offset=0x0c5 align=1 (i32.const 0) (get_local 0x0c5)) + (i64.store offset=0x0c6 align=1 (i32.const 0) (get_local 0x0c6)) + (i64.store offset=0x0c7 align=1 (i32.const 0) (get_local 0x0c7)) + (i64.store offset=0x0c8 align=1 (i32.const 0) (get_local 0x0c8)) + (i64.store offset=0x0c9 align=1 (i32.const 0) (get_local 0x0c9)) + (i64.store offset=0x0ca align=1 (i32.const 0) (get_local 0x0ca)) + (i64.store offset=0x0cb align=1 (i32.const 0) (get_local 0x0cb)) + (i64.store offset=0x0cc align=1 (i32.const 0) (get_local 0x0cc)) + (i64.store offset=0x0cd align=1 (i32.const 0) (get_local 0x0cd)) + (i64.store offset=0x0ce align=1 (i32.const 0) (get_local 0x0ce)) + (i64.store offset=0x0cf align=1 (i32.const 0) (get_local 0x0cf)) + (i64.store offset=0x0d0 align=1 (i32.const 0) (get_local 0x0d0)) + (i64.store offset=0x0d1 align=1 (i32.const 0) (get_local 0x0d1)) + (i64.store offset=0x0d2 align=1 (i32.const 0) (get_local 0x0d2)) + (i64.store offset=0x0d3 align=1 (i32.const 0) (get_local 0x0d3)) + (i64.store offset=0x0d4 align=1 (i32.const 0) (get_local 0x0d4)) + (i64.store offset=0x0d5 align=1 (i32.const 0) (get_local 0x0d5)) + (i64.store offset=0x0d6 align=1 (i32.const 0) (get_local 0x0d6)) + (i64.store offset=0x0d7 align=1 (i32.const 0) (get_local 0x0d7)) + (i64.store offset=0x0d8 align=1 (i32.const 0) (get_local 0x0d8)) + (i64.store offset=0x0d9 align=1 (i32.const 0) (get_local 0x0d9)) + (i64.store offset=0x0da align=1 (i32.const 0) (get_local 0x0da)) + (i64.store offset=0x0db align=1 (i32.const 0) (get_local 0x0db)) + (i64.store offset=0x0dc align=1 (i32.const 0) (get_local 0x0dc)) + (i64.store offset=0x0dd align=1 (i32.const 0) (get_local 0x0dd)) + (i64.store offset=0x0de align=1 (i32.const 0) (get_local 0x0de)) + (i64.store offset=0x0df align=1 (i32.const 0) (get_local 0x0df)) + (i64.store offset=0x0e0 align=1 (i32.const 0) (get_local 0x0e0)) + (i64.store offset=0x0e1 align=1 (i32.const 0) (get_local 0x0e1)) + (i64.store offset=0x0e2 align=1 (i32.const 0) (get_local 0x0e2)) + (i64.store offset=0x0e3 align=1 (i32.const 0) (get_local 0x0e3)) + (i64.store offset=0x0e4 align=1 (i32.const 0) (get_local 0x0e4)) + (i64.store offset=0x0e5 align=1 (i32.const 0) (get_local 0x0e5)) + (i64.store offset=0x0e6 align=1 (i32.const 0) (get_local 0x0e6)) + (i64.store offset=0x0e7 align=1 (i32.const 0) (get_local 0x0e7)) + (i64.store offset=0x0e8 align=1 (i32.const 0) (get_local 0x0e8)) + (i64.store offset=0x0e9 align=1 (i32.const 0) (get_local 0x0e9)) + (i64.store offset=0x0ea align=1 (i32.const 0) (get_local 0x0ea)) + (i64.store offset=0x0eb align=1 (i32.const 0) (get_local 0x0eb)) + (i64.store offset=0x0ec align=1 (i32.const 0) (get_local 0x0ec)) + (i64.store offset=0x0ed align=1 (i32.const 0) (get_local 0x0ed)) + (i64.store offset=0x0ee align=1 (i32.const 0) (get_local 0x0ee)) + (i64.store offset=0x0ef align=1 (i32.const 0) (get_local 0x0ef)) + (i64.store offset=0x0f0 align=1 (i32.const 0) (get_local 0x0f0)) + (i64.store offset=0x0f1 align=1 (i32.const 0) (get_local 0x0f1)) + (i64.store offset=0x0f2 align=1 (i32.const 0) (get_local 0x0f2)) + (i64.store offset=0x0f3 align=1 (i32.const 0) (get_local 0x0f3)) + (i64.store offset=0x0f4 align=1 (i32.const 0) (get_local 0x0f4)) + (i64.store offset=0x0f5 align=1 (i32.const 0) (get_local 0x0f5)) + (i64.store offset=0x0f6 align=1 (i32.const 0) (get_local 0x0f6)) + (i64.store offset=0x0f7 align=1 (i32.const 0) (get_local 0x0f7)) + (i64.store offset=0x0f8 align=1 (i32.const 0) (get_local 0x0f8)) + (i64.store offset=0x0f9 align=1 (i32.const 0) (get_local 0x0f9)) + (i64.store offset=0x0fa align=1 (i32.const 0) (get_local 0x0fa)) + (i64.store offset=0x0fb align=1 (i32.const 0) (get_local 0x0fb)) + (i64.store offset=0x0fc align=1 (i32.const 0) (get_local 0x0fc)) + (i64.store offset=0x0fd align=1 (i32.const 0) (get_local 0x0fd)) + (i64.store offset=0x0fe align=1 (i32.const 0) (get_local 0x0fe)) + (i64.store offset=0x0ff align=1 (i32.const 0) (get_local 0x0ff)) + (i64.store offset=0x100 align=1 (i32.const 0) (get_local 0x100)) + (i64.store offset=0x101 align=1 (i32.const 0) (get_local 0x101)) + (i64.store offset=0x102 align=1 (i32.const 0) (get_local 0x102)) + (i64.store offset=0x103 align=1 (i32.const 0) (get_local 0x103)) + (i64.store offset=0x104 align=1 (i32.const 0) (get_local 0x104)) + (i64.store offset=0x105 align=1 (i32.const 0) (get_local 0x105)) + (i64.store offset=0x106 align=1 (i32.const 0) (get_local 0x106)) + (i64.store offset=0x107 align=1 (i32.const 0) (get_local 0x107)) + (i64.store offset=0x108 align=1 (i32.const 0) (get_local 0x108)) + (i64.store offset=0x109 align=1 (i32.const 0) (get_local 0x109)) + (i64.store offset=0x10a align=1 (i32.const 0) (get_local 0x10a)) + (i64.store offset=0x10b align=1 (i32.const 0) (get_local 0x10b)) + (i64.store offset=0x10c align=1 (i32.const 0) (get_local 0x10c)) + (i64.store offset=0x10d align=1 (i32.const 0) (get_local 0x10d)) + (i64.store offset=0x10e align=1 (i32.const 0) (get_local 0x10e)) + (i64.store offset=0x10f align=1 (i32.const 0) (get_local 0x10f)) + (i64.store offset=0x110 align=1 (i32.const 0) (get_local 0x110)) + (i64.store offset=0x111 align=1 (i32.const 0) (get_local 0x111)) + (i64.store offset=0x112 align=1 (i32.const 0) (get_local 0x112)) + (i64.store offset=0x113 align=1 (i32.const 0) (get_local 0x113)) + (i64.store offset=0x114 align=1 (i32.const 0) (get_local 0x114)) + (i64.store offset=0x115 align=1 (i32.const 0) (get_local 0x115)) + (i64.store offset=0x116 align=1 (i32.const 0) (get_local 0x116)) + (i64.store offset=0x117 align=1 (i32.const 0) (get_local 0x117)) + (i64.store offset=0x118 align=1 (i32.const 0) (get_local 0x118)) + (i64.store offset=0x119 align=1 (i32.const 0) (get_local 0x119)) + (i64.store offset=0x11a align=1 (i32.const 0) (get_local 0x11a)) + (i64.store offset=0x11b align=1 (i32.const 0) (get_local 0x11b)) + (i64.store offset=0x11c align=1 (i32.const 0) (get_local 0x11c)) + (i64.store offset=0x11d align=1 (i32.const 0) (get_local 0x11d)) + (i64.store offset=0x11e align=1 (i32.const 0) (get_local 0x11e)) + (i64.store offset=0x11f align=1 (i32.const 0) (get_local 0x11f)) + (i64.store offset=0x120 align=1 (i32.const 0) (get_local 0x120)) + (i64.store offset=0x121 align=1 (i32.const 0) (get_local 0x121)) + (i64.store offset=0x122 align=1 (i32.const 0) (get_local 0x122)) + (i64.store offset=0x123 align=1 (i32.const 0) (get_local 0x123)) + (i64.store offset=0x124 align=1 (i32.const 0) (get_local 0x124)) + (i64.store offset=0x125 align=1 (i32.const 0) (get_local 0x125)) + (i64.store offset=0x126 align=1 (i32.const 0) (get_local 0x126)) + (i64.store offset=0x127 align=1 (i32.const 0) (get_local 0x127)) + (i64.store offset=0x128 align=1 (i32.const 0) (get_local 0x128)) + (i64.store offset=0x129 align=1 (i32.const 0) (get_local 0x129)) + (i64.store offset=0x12a align=1 (i32.const 0) (get_local 0x12a)) + (i64.store offset=0x12b align=1 (i32.const 0) (get_local 0x12b)) + (i64.store offset=0x12c align=1 (i32.const 0) (get_local 0x12c)) + (i64.store offset=0x12d align=1 (i32.const 0) (get_local 0x12d)) + (i64.store offset=0x12e align=1 (i32.const 0) (get_local 0x12e)) + (i64.store offset=0x12f align=1 (i32.const 0) (get_local 0x12f)) + (i64.store offset=0x130 align=1 (i32.const 0) (get_local 0x130)) + (i64.store offset=0x131 align=1 (i32.const 0) (get_local 0x131)) + (i64.store offset=0x132 align=1 (i32.const 0) (get_local 0x132)) + (i64.store offset=0x133 align=1 (i32.const 0) (get_local 0x133)) + (i64.store offset=0x134 align=1 (i32.const 0) (get_local 0x134)) + (i64.store offset=0x135 align=1 (i32.const 0) (get_local 0x135)) + (i64.store offset=0x136 align=1 (i32.const 0) (get_local 0x136)) + (i64.store offset=0x137 align=1 (i32.const 0) (get_local 0x137)) + (i64.store offset=0x138 align=1 (i32.const 0) (get_local 0x138)) + (i64.store offset=0x139 align=1 (i32.const 0) (get_local 0x139)) + (i64.store offset=0x13a align=1 (i32.const 0) (get_local 0x13a)) + (i64.store offset=0x13b align=1 (i32.const 0) (get_local 0x13b)) + (i64.store offset=0x13c align=1 (i32.const 0) (get_local 0x13c)) + (i64.store offset=0x13d align=1 (i32.const 0) (get_local 0x13d)) + (i64.store offset=0x13e align=1 (i32.const 0) (get_local 0x13e)) + (i64.store offset=0x13f align=1 (i32.const 0) (get_local 0x13f)) + (i64.store offset=0x140 align=1 (i32.const 0) (get_local 0x140)) + (i64.store offset=0x141 align=1 (i32.const 0) (get_local 0x141)) + (i64.store offset=0x142 align=1 (i32.const 0) (get_local 0x142)) + (i64.store offset=0x143 align=1 (i32.const 0) (get_local 0x143)) + (i64.store offset=0x144 align=1 (i32.const 0) (get_local 0x144)) + (i64.store offset=0x145 align=1 (i32.const 0) (get_local 0x145)) + (i64.store offset=0x146 align=1 (i32.const 0) (get_local 0x146)) + (i64.store offset=0x147 align=1 (i32.const 0) (get_local 0x147)) + (i64.store offset=0x148 align=1 (i32.const 0) (get_local 0x148)) + (i64.store offset=0x149 align=1 (i32.const 0) (get_local 0x149)) + (i64.store offset=0x14a align=1 (i32.const 0) (get_local 0x14a)) + (i64.store offset=0x14b align=1 (i32.const 0) (get_local 0x14b)) + (i64.store offset=0x14c align=1 (i32.const 0) (get_local 0x14c)) + (i64.store offset=0x14d align=1 (i32.const 0) (get_local 0x14d)) + (i64.store offset=0x14e align=1 (i32.const 0) (get_local 0x14e)) + (i64.store offset=0x14f align=1 (i32.const 0) (get_local 0x14f)) + (i64.store offset=0x150 align=1 (i32.const 0) (get_local 0x150)) + (i64.store offset=0x151 align=1 (i32.const 0) (get_local 0x151)) + (i64.store offset=0x152 align=1 (i32.const 0) (get_local 0x152)) + (i64.store offset=0x153 align=1 (i32.const 0) (get_local 0x153)) + (i64.store offset=0x154 align=1 (i32.const 0) (get_local 0x154)) + (i64.store offset=0x155 align=1 (i32.const 0) (get_local 0x155)) + (i64.store offset=0x156 align=1 (i32.const 0) (get_local 0x156)) + (i64.store offset=0x157 align=1 (i32.const 0) (get_local 0x157)) + (i64.store offset=0x158 align=1 (i32.const 0) (get_local 0x158)) + (i64.store offset=0x159 align=1 (i32.const 0) (get_local 0x159)) + (i64.store offset=0x15a align=1 (i32.const 0) (get_local 0x15a)) + (i64.store offset=0x15b align=1 (i32.const 0) (get_local 0x15b)) + (i64.store offset=0x15c align=1 (i32.const 0) (get_local 0x15c)) + (i64.store offset=0x15d align=1 (i32.const 0) (get_local 0x15d)) + (i64.store offset=0x15e align=1 (i32.const 0) (get_local 0x15e)) + (i64.store offset=0x15f align=1 (i32.const 0) (get_local 0x15f)) + (i64.store offset=0x160 align=1 (i32.const 0) (get_local 0x160)) + (i64.store offset=0x161 align=1 (i32.const 0) (get_local 0x161)) + (i64.store offset=0x162 align=1 (i32.const 0) (get_local 0x162)) + (i64.store offset=0x163 align=1 (i32.const 0) (get_local 0x163)) + (i64.store offset=0x164 align=1 (i32.const 0) (get_local 0x164)) + (i64.store offset=0x165 align=1 (i32.const 0) (get_local 0x165)) + (i64.store offset=0x166 align=1 (i32.const 0) (get_local 0x166)) + (i64.store offset=0x167 align=1 (i32.const 0) (get_local 0x167)) + (i64.store offset=0x168 align=1 (i32.const 0) (get_local 0x168)) + (i64.store offset=0x169 align=1 (i32.const 0) (get_local 0x169)) + (i64.store offset=0x16a align=1 (i32.const 0) (get_local 0x16a)) + (i64.store offset=0x16b align=1 (i32.const 0) (get_local 0x16b)) + (i64.store offset=0x16c align=1 (i32.const 0) (get_local 0x16c)) + (i64.store offset=0x16d align=1 (i32.const 0) (get_local 0x16d)) + (i64.store offset=0x16e align=1 (i32.const 0) (get_local 0x16e)) + (i64.store offset=0x16f align=1 (i32.const 0) (get_local 0x16f)) + (i64.store offset=0x170 align=1 (i32.const 0) (get_local 0x170)) + (i64.store offset=0x171 align=1 (i32.const 0) (get_local 0x171)) + (i64.store offset=0x172 align=1 (i32.const 0) (get_local 0x172)) + (i64.store offset=0x173 align=1 (i32.const 0) (get_local 0x173)) + (i64.store offset=0x174 align=1 (i32.const 0) (get_local 0x174)) + (i64.store offset=0x175 align=1 (i32.const 0) (get_local 0x175)) + (i64.store offset=0x176 align=1 (i32.const 0) (get_local 0x176)) + (i64.store offset=0x177 align=1 (i32.const 0) (get_local 0x177)) + (i64.store offset=0x178 align=1 (i32.const 0) (get_local 0x178)) + (i64.store offset=0x179 align=1 (i32.const 0) (get_local 0x179)) + (i64.store offset=0x17a align=1 (i32.const 0) (get_local 0x17a)) + (i64.store offset=0x17b align=1 (i32.const 0) (get_local 0x17b)) + (i64.store offset=0x17c align=1 (i32.const 0) (get_local 0x17c)) + (i64.store offset=0x17d align=1 (i32.const 0) (get_local 0x17d)) + (i64.store offset=0x17e align=1 (i32.const 0) (get_local 0x17e)) + (i64.store offset=0x17f align=1 (i32.const 0) (get_local 0x17f)) + (i64.store offset=0x180 align=1 (i32.const 0) (get_local 0x180)) + (i64.store offset=0x181 align=1 (i32.const 0) (get_local 0x181)) + (i64.store offset=0x182 align=1 (i32.const 0) (get_local 0x182)) + (i64.store offset=0x183 align=1 (i32.const 0) (get_local 0x183)) + (i64.store offset=0x184 align=1 (i32.const 0) (get_local 0x184)) + (i64.store offset=0x185 align=1 (i32.const 0) (get_local 0x185)) + (i64.store offset=0x186 align=1 (i32.const 0) (get_local 0x186)) + (i64.store offset=0x187 align=1 (i32.const 0) (get_local 0x187)) + (i64.store offset=0x188 align=1 (i32.const 0) (get_local 0x188)) + (i64.store offset=0x189 align=1 (i32.const 0) (get_local 0x189)) + (i64.store offset=0x18a align=1 (i32.const 0) (get_local 0x18a)) + (i64.store offset=0x18b align=1 (i32.const 0) (get_local 0x18b)) + (i64.store offset=0x18c align=1 (i32.const 0) (get_local 0x18c)) + (i64.store offset=0x18d align=1 (i32.const 0) (get_local 0x18d)) + (i64.store offset=0x18e align=1 (i32.const 0) (get_local 0x18e)) + (i64.store offset=0x18f align=1 (i32.const 0) (get_local 0x18f)) + (i64.store offset=0x190 align=1 (i32.const 0) (get_local 0x190)) + (i64.store offset=0x191 align=1 (i32.const 0) (get_local 0x191)) + (i64.store offset=0x192 align=1 (i32.const 0) (get_local 0x192)) + (i64.store offset=0x193 align=1 (i32.const 0) (get_local 0x193)) + (i64.store offset=0x194 align=1 (i32.const 0) (get_local 0x194)) + (i64.store offset=0x195 align=1 (i32.const 0) (get_local 0x195)) + (i64.store offset=0x196 align=1 (i32.const 0) (get_local 0x196)) + (i64.store offset=0x197 align=1 (i32.const 0) (get_local 0x197)) + (i64.store offset=0x198 align=1 (i32.const 0) (get_local 0x198)) + (i64.store offset=0x199 align=1 (i32.const 0) (get_local 0x199)) + (i64.store offset=0x19a align=1 (i32.const 0) (get_local 0x19a)) + (i64.store offset=0x19b align=1 (i32.const 0) (get_local 0x19b)) + (i64.store offset=0x19c align=1 (i32.const 0) (get_local 0x19c)) + (i64.store offset=0x19d align=1 (i32.const 0) (get_local 0x19d)) + (i64.store offset=0x19e align=1 (i32.const 0) (get_local 0x19e)) + (i64.store offset=0x19f align=1 (i32.const 0) (get_local 0x19f)) + (i64.store offset=0x1a0 align=1 (i32.const 0) (get_local 0x1a0)) + (i64.store offset=0x1a1 align=1 (i32.const 0) (get_local 0x1a1)) + (i64.store offset=0x1a2 align=1 (i32.const 0) (get_local 0x1a2)) + (i64.store offset=0x1a3 align=1 (i32.const 0) (get_local 0x1a3)) + (i64.store offset=0x1a4 align=1 (i32.const 0) (get_local 0x1a4)) + (i64.store offset=0x1a5 align=1 (i32.const 0) (get_local 0x1a5)) + (i64.store offset=0x1a6 align=1 (i32.const 0) (get_local 0x1a6)) + (i64.store offset=0x1a7 align=1 (i32.const 0) (get_local 0x1a7)) + (i64.store offset=0x1a8 align=1 (i32.const 0) (get_local 0x1a8)) + (i64.store offset=0x1a9 align=1 (i32.const 0) (get_local 0x1a9)) + (i64.store offset=0x1aa align=1 (i32.const 0) (get_local 0x1aa)) + (i64.store offset=0x1ab align=1 (i32.const 0) (get_local 0x1ab)) + (i64.store offset=0x1ac align=1 (i32.const 0) (get_local 0x1ac)) + (i64.store offset=0x1ad align=1 (i32.const 0) (get_local 0x1ad)) + (i64.store offset=0x1ae align=1 (i32.const 0) (get_local 0x1ae)) + (i64.store offset=0x1af align=1 (i32.const 0) (get_local 0x1af)) + (i64.store offset=0x1b0 align=1 (i32.const 0) (get_local 0x1b0)) + (i64.store offset=0x1b1 align=1 (i32.const 0) (get_local 0x1b1)) + (i64.store offset=0x1b2 align=1 (i32.const 0) (get_local 0x1b2)) + (i64.store offset=0x1b3 align=1 (i32.const 0) (get_local 0x1b3)) + (i64.store offset=0x1b4 align=1 (i32.const 0) (get_local 0x1b4)) + (i64.store offset=0x1b5 align=1 (i32.const 0) (get_local 0x1b5)) + (i64.store offset=0x1b6 align=1 (i32.const 0) (get_local 0x1b6)) + (i64.store offset=0x1b7 align=1 (i32.const 0) (get_local 0x1b7)) + (i64.store offset=0x1b8 align=1 (i32.const 0) (get_local 0x1b8)) + (i64.store offset=0x1b9 align=1 (i32.const 0) (get_local 0x1b9)) + (i64.store offset=0x1ba align=1 (i32.const 0) (get_local 0x1ba)) + (i64.store offset=0x1bb align=1 (i32.const 0) (get_local 0x1bb)) + (i64.store offset=0x1bc align=1 (i32.const 0) (get_local 0x1bc)) + (i64.store offset=0x1bd align=1 (i32.const 0) (get_local 0x1bd)) + (i64.store offset=0x1be align=1 (i32.const 0) (get_local 0x1be)) + (i64.store offset=0x1bf align=1 (i32.const 0) (get_local 0x1bf)) + (i64.store offset=0x1c0 align=1 (i32.const 0) (get_local 0x1c0)) + (i64.store offset=0x1c1 align=1 (i32.const 0) (get_local 0x1c1)) + (i64.store offset=0x1c2 align=1 (i32.const 0) (get_local 0x1c2)) + (i64.store offset=0x1c3 align=1 (i32.const 0) (get_local 0x1c3)) + (i64.store offset=0x1c4 align=1 (i32.const 0) (get_local 0x1c4)) + (i64.store offset=0x1c5 align=1 (i32.const 0) (get_local 0x1c5)) + (i64.store offset=0x1c6 align=1 (i32.const 0) (get_local 0x1c6)) + (i64.store offset=0x1c7 align=1 (i32.const 0) (get_local 0x1c7)) + (i64.store offset=0x1c8 align=1 (i32.const 0) (get_local 0x1c8)) + (i64.store offset=0x1c9 align=1 (i32.const 0) (get_local 0x1c9)) + (i64.store offset=0x1ca align=1 (i32.const 0) (get_local 0x1ca)) + (i64.store offset=0x1cb align=1 (i32.const 0) (get_local 0x1cb)) + (i64.store offset=0x1cc align=1 (i32.const 0) (get_local 0x1cc)) + (i64.store offset=0x1cd align=1 (i32.const 0) (get_local 0x1cd)) + (i64.store offset=0x1ce align=1 (i32.const 0) (get_local 0x1ce)) + (i64.store offset=0x1cf align=1 (i32.const 0) (get_local 0x1cf)) + (i64.store offset=0x1d0 align=1 (i32.const 0) (get_local 0x1d0)) + (i64.store offset=0x1d1 align=1 (i32.const 0) (get_local 0x1d1)) + (i64.store offset=0x1d2 align=1 (i32.const 0) (get_local 0x1d2)) + (i64.store offset=0x1d3 align=1 (i32.const 0) (get_local 0x1d3)) + (i64.store offset=0x1d4 align=1 (i32.const 0) (get_local 0x1d4)) + (i64.store offset=0x1d5 align=1 (i32.const 0) (get_local 0x1d5)) + (i64.store offset=0x1d6 align=1 (i32.const 0) (get_local 0x1d6)) + (i64.store offset=0x1d7 align=1 (i32.const 0) (get_local 0x1d7)) + (i64.store offset=0x1d8 align=1 (i32.const 0) (get_local 0x1d8)) + (i64.store offset=0x1d9 align=1 (i32.const 0) (get_local 0x1d9)) + (i64.store offset=0x1da align=1 (i32.const 0) (get_local 0x1da)) + (i64.store offset=0x1db align=1 (i32.const 0) (get_local 0x1db)) + (i64.store offset=0x1dc align=1 (i32.const 0) (get_local 0x1dc)) + (i64.store offset=0x1dd align=1 (i32.const 0) (get_local 0x1dd)) + (i64.store offset=0x1de align=1 (i32.const 0) (get_local 0x1de)) + (i64.store offset=0x1df align=1 (i32.const 0) (get_local 0x1df)) + (i64.store offset=0x1e0 align=1 (i32.const 0) (get_local 0x1e0)) + (i64.store offset=0x1e1 align=1 (i32.const 0) (get_local 0x1e1)) + (i64.store offset=0x1e2 align=1 (i32.const 0) (get_local 0x1e2)) + (i64.store offset=0x1e3 align=1 (i32.const 0) (get_local 0x1e3)) + (i64.store offset=0x1e4 align=1 (i32.const 0) (get_local 0x1e4)) + (i64.store offset=0x1e5 align=1 (i32.const 0) (get_local 0x1e5)) + (i64.store offset=0x1e6 align=1 (i32.const 0) (get_local 0x1e6)) + (i64.store offset=0x1e7 align=1 (i32.const 0) (get_local 0x1e7)) + (i64.store offset=0x1e8 align=1 (i32.const 0) (get_local 0x1e8)) + (i64.store offset=0x1e9 align=1 (i32.const 0) (get_local 0x1e9)) + (i64.store offset=0x1ea align=1 (i32.const 0) (get_local 0x1ea)) + (i64.store offset=0x1eb align=1 (i32.const 0) (get_local 0x1eb)) + (i64.store offset=0x1ec align=1 (i32.const 0) (get_local 0x1ec)) + (i64.store offset=0x1ed align=1 (i32.const 0) (get_local 0x1ed)) + (i64.store offset=0x1ee align=1 (i32.const 0) (get_local 0x1ee)) + (i64.store offset=0x1ef align=1 (i32.const 0) (get_local 0x1ef)) + (i64.store offset=0x1f0 align=1 (i32.const 0) (get_local 0x1f0)) + (i64.store offset=0x1f1 align=1 (i32.const 0) (get_local 0x1f1)) + (i64.store offset=0x1f2 align=1 (i32.const 0) (get_local 0x1f2)) + (i64.store offset=0x1f3 align=1 (i32.const 0) (get_local 0x1f3)) + (i64.store offset=0x1f4 align=1 (i32.const 0) (get_local 0x1f4)) + (i64.store offset=0x1f5 align=1 (i32.const 0) (get_local 0x1f5)) + (i64.store offset=0x1f6 align=1 (i32.const 0) (get_local 0x1f6)) + (i64.store offset=0x1f7 align=1 (i32.const 0) (get_local 0x1f7)) + (i64.store offset=0x1f8 align=1 (i32.const 0) (get_local 0x1f8)) + (i64.store offset=0x1f9 align=1 (i32.const 0) (get_local 0x1f9)) + (i64.store offset=0x1fa align=1 (i32.const 0) (get_local 0x1fa)) + (i64.store offset=0x1fb align=1 (i32.const 0) (get_local 0x1fb)) + (i64.store offset=0x1fc align=1 (i32.const 0) (get_local 0x1fc)) + (i64.store offset=0x1fd align=1 (i32.const 0) (get_local 0x1fd)) + (i64.store offset=0x1fe align=1 (i32.const 0) (get_local 0x1fe)) + (i64.store offset=0x1ff align=1 (i32.const 0) (get_local 0x1ff)) + (i64.store offset=0x200 align=1 (i32.const 0) (get_local 0x200)) + (i64.store offset=0x201 align=1 (i32.const 0) (get_local 0x201)) + (i64.store offset=0x202 align=1 (i32.const 0) (get_local 0x202)) + (i64.store offset=0x203 align=1 (i32.const 0) (get_local 0x203)) + (i64.store offset=0x204 align=1 (i32.const 0) (get_local 0x204)) + (i64.store offset=0x205 align=1 (i32.const 0) (get_local 0x205)) + (i64.store offset=0x206 align=1 (i32.const 0) (get_local 0x206)) + (i64.store offset=0x207 align=1 (i32.const 0) (get_local 0x207)) + (i64.store offset=0x208 align=1 (i32.const 0) (get_local 0x208)) + (i64.store offset=0x209 align=1 (i32.const 0) (get_local 0x209)) + (i64.store offset=0x20a align=1 (i32.const 0) (get_local 0x20a)) + (i64.store offset=0x20b align=1 (i32.const 0) (get_local 0x20b)) + (i64.store offset=0x20c align=1 (i32.const 0) (get_local 0x20c)) + (i64.store offset=0x20d align=1 (i32.const 0) (get_local 0x20d)) + (i64.store offset=0x20e align=1 (i32.const 0) (get_local 0x20e)) + (i64.store offset=0x20f align=1 (i32.const 0) (get_local 0x20f)) + (i64.store offset=0x210 align=1 (i32.const 0) (get_local 0x210)) + (i64.store offset=0x211 align=1 (i32.const 0) (get_local 0x211)) + (i64.store offset=0x212 align=1 (i32.const 0) (get_local 0x212)) + (i64.store offset=0x213 align=1 (i32.const 0) (get_local 0x213)) + (i64.store offset=0x214 align=1 (i32.const 0) (get_local 0x214)) + (i64.store offset=0x215 align=1 (i32.const 0) (get_local 0x215)) + (i64.store offset=0x216 align=1 (i32.const 0) (get_local 0x216)) + (i64.store offset=0x217 align=1 (i32.const 0) (get_local 0x217)) + (i64.store offset=0x218 align=1 (i32.const 0) (get_local 0x218)) + (i64.store offset=0x219 align=1 (i32.const 0) (get_local 0x219)) + (i64.store offset=0x21a align=1 (i32.const 0) (get_local 0x21a)) + (i64.store offset=0x21b align=1 (i32.const 0) (get_local 0x21b)) + (i64.store offset=0x21c align=1 (i32.const 0) (get_local 0x21c)) + (i64.store offset=0x21d align=1 (i32.const 0) (get_local 0x21d)) + (i64.store offset=0x21e align=1 (i32.const 0) (get_local 0x21e)) + (i64.store offset=0x21f align=1 (i32.const 0) (get_local 0x21f)) + (i64.store offset=0x220 align=1 (i32.const 0) (get_local 0x220)) + (i64.store offset=0x221 align=1 (i32.const 0) (get_local 0x221)) + (i64.store offset=0x222 align=1 (i32.const 0) (get_local 0x222)) + (i64.store offset=0x223 align=1 (i32.const 0) (get_local 0x223)) + (i64.store offset=0x224 align=1 (i32.const 0) (get_local 0x224)) + (i64.store offset=0x225 align=1 (i32.const 0) (get_local 0x225)) + (i64.store offset=0x226 align=1 (i32.const 0) (get_local 0x226)) + (i64.store offset=0x227 align=1 (i32.const 0) (get_local 0x227)) + (i64.store offset=0x228 align=1 (i32.const 0) (get_local 0x228)) + (i64.store offset=0x229 align=1 (i32.const 0) (get_local 0x229)) + (i64.store offset=0x22a align=1 (i32.const 0) (get_local 0x22a)) + (i64.store offset=0x22b align=1 (i32.const 0) (get_local 0x22b)) + (i64.store offset=0x22c align=1 (i32.const 0) (get_local 0x22c)) + (i64.store offset=0x22d align=1 (i32.const 0) (get_local 0x22d)) + (i64.store offset=0x22e align=1 (i32.const 0) (get_local 0x22e)) + (i64.store offset=0x22f align=1 (i32.const 0) (get_local 0x22f)) + (i64.store offset=0x230 align=1 (i32.const 0) (get_local 0x230)) + (i64.store offset=0x231 align=1 (i32.const 0) (get_local 0x231)) + (i64.store offset=0x232 align=1 (i32.const 0) (get_local 0x232)) + (i64.store offset=0x233 align=1 (i32.const 0) (get_local 0x233)) + (i64.store offset=0x234 align=1 (i32.const 0) (get_local 0x234)) + (i64.store offset=0x235 align=1 (i32.const 0) (get_local 0x235)) + (i64.store offset=0x236 align=1 (i32.const 0) (get_local 0x236)) + (i64.store offset=0x237 align=1 (i32.const 0) (get_local 0x237)) + (i64.store offset=0x238 align=1 (i32.const 0) (get_local 0x238)) + (i64.store offset=0x239 align=1 (i32.const 0) (get_local 0x239)) + (i64.store offset=0x23a align=1 (i32.const 0) (get_local 0x23a)) + (i64.store offset=0x23b align=1 (i32.const 0) (get_local 0x23b)) + (i64.store offset=0x23c align=1 (i32.const 0) (get_local 0x23c)) + (i64.store offset=0x23d align=1 (i32.const 0) (get_local 0x23d)) + (i64.store offset=0x23e align=1 (i32.const 0) (get_local 0x23e)) + (i64.store offset=0x23f align=1 (i32.const 0) (get_local 0x23f)) + (i64.store offset=0x240 align=1 (i32.const 0) (get_local 0x240)) + (i64.store offset=0x241 align=1 (i32.const 0) (get_local 0x241)) + (i64.store offset=0x242 align=1 (i32.const 0) (get_local 0x242)) + (i64.store offset=0x243 align=1 (i32.const 0) (get_local 0x243)) + (i64.store offset=0x244 align=1 (i32.const 0) (get_local 0x244)) + (i64.store offset=0x245 align=1 (i32.const 0) (get_local 0x245)) + (i64.store offset=0x246 align=1 (i32.const 0) (get_local 0x246)) + (i64.store offset=0x247 align=1 (i32.const 0) (get_local 0x247)) + (i64.store offset=0x248 align=1 (i32.const 0) (get_local 0x248)) + (i64.store offset=0x249 align=1 (i32.const 0) (get_local 0x249)) + (i64.store offset=0x24a align=1 (i32.const 0) (get_local 0x24a)) + (i64.store offset=0x24b align=1 (i32.const 0) (get_local 0x24b)) + (i64.store offset=0x24c align=1 (i32.const 0) (get_local 0x24c)) + (i64.store offset=0x24d align=1 (i32.const 0) (get_local 0x24d)) + (i64.store offset=0x24e align=1 (i32.const 0) (get_local 0x24e)) + (i64.store offset=0x24f align=1 (i32.const 0) (get_local 0x24f)) + (i64.store offset=0x250 align=1 (i32.const 0) (get_local 0x250)) + (i64.store offset=0x251 align=1 (i32.const 0) (get_local 0x251)) + (i64.store offset=0x252 align=1 (i32.const 0) (get_local 0x252)) + (i64.store offset=0x253 align=1 (i32.const 0) (get_local 0x253)) + (i64.store offset=0x254 align=1 (i32.const 0) (get_local 0x254)) + (i64.store offset=0x255 align=1 (i32.const 0) (get_local 0x255)) + (i64.store offset=0x256 align=1 (i32.const 0) (get_local 0x256)) + (i64.store offset=0x257 align=1 (i32.const 0) (get_local 0x257)) + (i64.store offset=0x258 align=1 (i32.const 0) (get_local 0x258)) + (i64.store offset=0x259 align=1 (i32.const 0) (get_local 0x259)) + (i64.store offset=0x25a align=1 (i32.const 0) (get_local 0x25a)) + (i64.store offset=0x25b align=1 (i32.const 0) (get_local 0x25b)) + (i64.store offset=0x25c align=1 (i32.const 0) (get_local 0x25c)) + (i64.store offset=0x25d align=1 (i32.const 0) (get_local 0x25d)) + (i64.store offset=0x25e align=1 (i32.const 0) (get_local 0x25e)) + (i64.store offset=0x25f align=1 (i32.const 0) (get_local 0x25f)) + (i64.store offset=0x260 align=1 (i32.const 0) (get_local 0x260)) + (i64.store offset=0x261 align=1 (i32.const 0) (get_local 0x261)) + (i64.store offset=0x262 align=1 (i32.const 0) (get_local 0x262)) + (i64.store offset=0x263 align=1 (i32.const 0) (get_local 0x263)) + (i64.store offset=0x264 align=1 (i32.const 0) (get_local 0x264)) + (i64.store offset=0x265 align=1 (i32.const 0) (get_local 0x265)) + (i64.store offset=0x266 align=1 (i32.const 0) (get_local 0x266)) + (i64.store offset=0x267 align=1 (i32.const 0) (get_local 0x267)) + (i64.store offset=0x268 align=1 (i32.const 0) (get_local 0x268)) + (i64.store offset=0x269 align=1 (i32.const 0) (get_local 0x269)) + (i64.store offset=0x26a align=1 (i32.const 0) (get_local 0x26a)) + (i64.store offset=0x26b align=1 (i32.const 0) (get_local 0x26b)) + (i64.store offset=0x26c align=1 (i32.const 0) (get_local 0x26c)) + (i64.store offset=0x26d align=1 (i32.const 0) (get_local 0x26d)) + (i64.store offset=0x26e align=1 (i32.const 0) (get_local 0x26e)) + (i64.store offset=0x26f align=1 (i32.const 0) (get_local 0x26f)) + (i64.store offset=0x270 align=1 (i32.const 0) (get_local 0x270)) + (i64.store offset=0x271 align=1 (i32.const 0) (get_local 0x271)) + (i64.store offset=0x272 align=1 (i32.const 0) (get_local 0x272)) + (i64.store offset=0x273 align=1 (i32.const 0) (get_local 0x273)) + (i64.store offset=0x274 align=1 (i32.const 0) (get_local 0x274)) + (i64.store offset=0x275 align=1 (i32.const 0) (get_local 0x275)) + (i64.store offset=0x276 align=1 (i32.const 0) (get_local 0x276)) + (i64.store offset=0x277 align=1 (i32.const 0) (get_local 0x277)) + (i64.store offset=0x278 align=1 (i32.const 0) (get_local 0x278)) + (i64.store offset=0x279 align=1 (i32.const 0) (get_local 0x279)) + (i64.store offset=0x27a align=1 (i32.const 0) (get_local 0x27a)) + (i64.store offset=0x27b align=1 (i32.const 0) (get_local 0x27b)) + (i64.store offset=0x27c align=1 (i32.const 0) (get_local 0x27c)) + (i64.store offset=0x27d align=1 (i32.const 0) (get_local 0x27d)) + (i64.store offset=0x27e align=1 (i32.const 0) (get_local 0x27e)) + (i64.store offset=0x27f align=1 (i32.const 0) (get_local 0x27f)) + (i64.store offset=0x280 align=1 (i32.const 0) (get_local 0x280)) + (i64.store offset=0x281 align=1 (i32.const 0) (get_local 0x281)) + (i64.store offset=0x282 align=1 (i32.const 0) (get_local 0x282)) + (i64.store offset=0x283 align=1 (i32.const 0) (get_local 0x283)) + (i64.store offset=0x284 align=1 (i32.const 0) (get_local 0x284)) + (i64.store offset=0x285 align=1 (i32.const 0) (get_local 0x285)) + (i64.store offset=0x286 align=1 (i32.const 0) (get_local 0x286)) + (i64.store offset=0x287 align=1 (i32.const 0) (get_local 0x287)) + (i64.store offset=0x288 align=1 (i32.const 0) (get_local 0x288)) + (i64.store offset=0x289 align=1 (i32.const 0) (get_local 0x289)) + (i64.store offset=0x28a align=1 (i32.const 0) (get_local 0x28a)) + (i64.store offset=0x28b align=1 (i32.const 0) (get_local 0x28b)) + (i64.store offset=0x28c align=1 (i32.const 0) (get_local 0x28c)) + (i64.store offset=0x28d align=1 (i32.const 0) (get_local 0x28d)) + (i64.store offset=0x28e align=1 (i32.const 0) (get_local 0x28e)) + (i64.store offset=0x28f align=1 (i32.const 0) (get_local 0x28f)) + (i64.store offset=0x290 align=1 (i32.const 0) (get_local 0x290)) + (i64.store offset=0x291 align=1 (i32.const 0) (get_local 0x291)) + (i64.store offset=0x292 align=1 (i32.const 0) (get_local 0x292)) + (i64.store offset=0x293 align=1 (i32.const 0) (get_local 0x293)) + (i64.store offset=0x294 align=1 (i32.const 0) (get_local 0x294)) + (i64.store offset=0x295 align=1 (i32.const 0) (get_local 0x295)) + (i64.store offset=0x296 align=1 (i32.const 0) (get_local 0x296)) + (i64.store offset=0x297 align=1 (i32.const 0) (get_local 0x297)) + (i64.store offset=0x298 align=1 (i32.const 0) (get_local 0x298)) + (i64.store offset=0x299 align=1 (i32.const 0) (get_local 0x299)) + (i64.store offset=0x29a align=1 (i32.const 0) (get_local 0x29a)) + (i64.store offset=0x29b align=1 (i32.const 0) (get_local 0x29b)) + (i64.store offset=0x29c align=1 (i32.const 0) (get_local 0x29c)) + (i64.store offset=0x29d align=1 (i32.const 0) (get_local 0x29d)) + (i64.store offset=0x29e align=1 (i32.const 0) (get_local 0x29e)) + (i64.store offset=0x29f align=1 (i32.const 0) (get_local 0x29f)) + (i64.store offset=0x2a0 align=1 (i32.const 0) (get_local 0x2a0)) + (i64.store offset=0x2a1 align=1 (i32.const 0) (get_local 0x2a1)) + (i64.store offset=0x2a2 align=1 (i32.const 0) (get_local 0x2a2)) + (i64.store offset=0x2a3 align=1 (i32.const 0) (get_local 0x2a3)) + (i64.store offset=0x2a4 align=1 (i32.const 0) (get_local 0x2a4)) + (i64.store offset=0x2a5 align=1 (i32.const 0) (get_local 0x2a5)) + (i64.store offset=0x2a6 align=1 (i32.const 0) (get_local 0x2a6)) + (i64.store offset=0x2a7 align=1 (i32.const 0) (get_local 0x2a7)) + (i64.store offset=0x2a8 align=1 (i32.const 0) (get_local 0x2a8)) + (i64.store offset=0x2a9 align=1 (i32.const 0) (get_local 0x2a9)) + (i64.store offset=0x2aa align=1 (i32.const 0) (get_local 0x2aa)) + (i64.store offset=0x2ab align=1 (i32.const 0) (get_local 0x2ab)) + (i64.store offset=0x2ac align=1 (i32.const 0) (get_local 0x2ac)) + (i64.store offset=0x2ad align=1 (i32.const 0) (get_local 0x2ad)) + (i64.store offset=0x2ae align=1 (i32.const 0) (get_local 0x2ae)) + (i64.store offset=0x2af align=1 (i32.const 0) (get_local 0x2af)) + (i64.store offset=0x2b0 align=1 (i32.const 0) (get_local 0x2b0)) + (i64.store offset=0x2b1 align=1 (i32.const 0) (get_local 0x2b1)) + (i64.store offset=0x2b2 align=1 (i32.const 0) (get_local 0x2b2)) + (i64.store offset=0x2b3 align=1 (i32.const 0) (get_local 0x2b3)) + (i64.store offset=0x2b4 align=1 (i32.const 0) (get_local 0x2b4)) + (i64.store offset=0x2b5 align=1 (i32.const 0) (get_local 0x2b5)) + (i64.store offset=0x2b6 align=1 (i32.const 0) (get_local 0x2b6)) + (i64.store offset=0x2b7 align=1 (i32.const 0) (get_local 0x2b7)) + (i64.store offset=0x2b8 align=1 (i32.const 0) (get_local 0x2b8)) + (i64.store offset=0x2b9 align=1 (i32.const 0) (get_local 0x2b9)) + (i64.store offset=0x2ba align=1 (i32.const 0) (get_local 0x2ba)) + (i64.store offset=0x2bb align=1 (i32.const 0) (get_local 0x2bb)) + (i64.store offset=0x2bc align=1 (i32.const 0) (get_local 0x2bc)) + (i64.store offset=0x2bd align=1 (i32.const 0) (get_local 0x2bd)) + (i64.store offset=0x2be align=1 (i32.const 0) (get_local 0x2be)) + (i64.store offset=0x2bf align=1 (i32.const 0) (get_local 0x2bf)) + (i64.store offset=0x2c0 align=1 (i32.const 0) (get_local 0x2c0)) + (i64.store offset=0x2c1 align=1 (i32.const 0) (get_local 0x2c1)) + (i64.store offset=0x2c2 align=1 (i32.const 0) (get_local 0x2c2)) + (i64.store offset=0x2c3 align=1 (i32.const 0) (get_local 0x2c3)) + (i64.store offset=0x2c4 align=1 (i32.const 0) (get_local 0x2c4)) + (i64.store offset=0x2c5 align=1 (i32.const 0) (get_local 0x2c5)) + (i64.store offset=0x2c6 align=1 (i32.const 0) (get_local 0x2c6)) + (i64.store offset=0x2c7 align=1 (i32.const 0) (get_local 0x2c7)) + (i64.store offset=0x2c8 align=1 (i32.const 0) (get_local 0x2c8)) + (i64.store offset=0x2c9 align=1 (i32.const 0) (get_local 0x2c9)) + (i64.store offset=0x2ca align=1 (i32.const 0) (get_local 0x2ca)) + (i64.store offset=0x2cb align=1 (i32.const 0) (get_local 0x2cb)) + (i64.store offset=0x2cc align=1 (i32.const 0) (get_local 0x2cc)) + (i64.store offset=0x2cd align=1 (i32.const 0) (get_local 0x2cd)) + (i64.store offset=0x2ce align=1 (i32.const 0) (get_local 0x2ce)) + (i64.store offset=0x2cf align=1 (i32.const 0) (get_local 0x2cf)) + (i64.store offset=0x2d0 align=1 (i32.const 0) (get_local 0x2d0)) + (i64.store offset=0x2d1 align=1 (i32.const 0) (get_local 0x2d1)) + (i64.store offset=0x2d2 align=1 (i32.const 0) (get_local 0x2d2)) + (i64.store offset=0x2d3 align=1 (i32.const 0) (get_local 0x2d3)) + (i64.store offset=0x2d4 align=1 (i32.const 0) (get_local 0x2d4)) + (i64.store offset=0x2d5 align=1 (i32.const 0) (get_local 0x2d5)) + (i64.store offset=0x2d6 align=1 (i32.const 0) (get_local 0x2d6)) + (i64.store offset=0x2d7 align=1 (i32.const 0) (get_local 0x2d7)) + (i64.store offset=0x2d8 align=1 (i32.const 0) (get_local 0x2d8)) + (i64.store offset=0x2d9 align=1 (i32.const 0) (get_local 0x2d9)) + (i64.store offset=0x2da align=1 (i32.const 0) (get_local 0x2da)) + (i64.store offset=0x2db align=1 (i32.const 0) (get_local 0x2db)) + (i64.store offset=0x2dc align=1 (i32.const 0) (get_local 0x2dc)) + (i64.store offset=0x2dd align=1 (i32.const 0) (get_local 0x2dd)) + (i64.store offset=0x2de align=1 (i32.const 0) (get_local 0x2de)) + (i64.store offset=0x2df align=1 (i32.const 0) (get_local 0x2df)) + (i64.store offset=0x2e0 align=1 (i32.const 0) (get_local 0x2e0)) + (i64.store offset=0x2e1 align=1 (i32.const 0) (get_local 0x2e1)) + (i64.store offset=0x2e2 align=1 (i32.const 0) (get_local 0x2e2)) + (i64.store offset=0x2e3 align=1 (i32.const 0) (get_local 0x2e3)) + (i64.store offset=0x2e4 align=1 (i32.const 0) (get_local 0x2e4)) + (i64.store offset=0x2e5 align=1 (i32.const 0) (get_local 0x2e5)) + (i64.store offset=0x2e6 align=1 (i32.const 0) (get_local 0x2e6)) + (i64.store offset=0x2e7 align=1 (i32.const 0) (get_local 0x2e7)) + (i64.store offset=0x2e8 align=1 (i32.const 0) (get_local 0x2e8)) + (i64.store offset=0x2e9 align=1 (i32.const 0) (get_local 0x2e9)) + (i64.store offset=0x2ea align=1 (i32.const 0) (get_local 0x2ea)) + (i64.store offset=0x2eb align=1 (i32.const 0) (get_local 0x2eb)) + (i64.store offset=0x2ec align=1 (i32.const 0) (get_local 0x2ec)) + (i64.store offset=0x2ed align=1 (i32.const 0) (get_local 0x2ed)) + (i64.store offset=0x2ee align=1 (i32.const 0) (get_local 0x2ee)) + (i64.store offset=0x2ef align=1 (i32.const 0) (get_local 0x2ef)) + (i64.store offset=0x2f0 align=1 (i32.const 0) (get_local 0x2f0)) + (i64.store offset=0x2f1 align=1 (i32.const 0) (get_local 0x2f1)) + (i64.store offset=0x2f2 align=1 (i32.const 0) (get_local 0x2f2)) + (i64.store offset=0x2f3 align=1 (i32.const 0) (get_local 0x2f3)) + (i64.store offset=0x2f4 align=1 (i32.const 0) (get_local 0x2f4)) + (i64.store offset=0x2f5 align=1 (i32.const 0) (get_local 0x2f5)) + (i64.store offset=0x2f6 align=1 (i32.const 0) (get_local 0x2f6)) + (i64.store offset=0x2f7 align=1 (i32.const 0) (get_local 0x2f7)) + (i64.store offset=0x2f8 align=1 (i32.const 0) (get_local 0x2f8)) + (i64.store offset=0x2f9 align=1 (i32.const 0) (get_local 0x2f9)) + (i64.store offset=0x2fa align=1 (i32.const 0) (get_local 0x2fa)) + (i64.store offset=0x2fb align=1 (i32.const 0) (get_local 0x2fb)) + (i64.store offset=0x2fc align=1 (i32.const 0) (get_local 0x2fc)) + (i64.store offset=0x2fd align=1 (i32.const 0) (get_local 0x2fd)) + (i64.store offset=0x2fe align=1 (i32.const 0) (get_local 0x2fe)) + (i64.store offset=0x2ff align=1 (i32.const 0) (get_local 0x2ff)) + (i64.store offset=0x300 align=1 (i32.const 0) (get_local 0x300)) + (i64.store offset=0x301 align=1 (i32.const 0) (get_local 0x301)) + (i64.store offset=0x302 align=1 (i32.const 0) (get_local 0x302)) + (i64.store offset=0x303 align=1 (i32.const 0) (get_local 0x303)) + (i64.store offset=0x304 align=1 (i32.const 0) (get_local 0x304)) + (i64.store offset=0x305 align=1 (i32.const 0) (get_local 0x305)) + (i64.store offset=0x306 align=1 (i32.const 0) (get_local 0x306)) + (i64.store offset=0x307 align=1 (i32.const 0) (get_local 0x307)) + (i64.store offset=0x308 align=1 (i32.const 0) (get_local 0x308)) + (i64.store offset=0x309 align=1 (i32.const 0) (get_local 0x309)) + (i64.store offset=0x30a align=1 (i32.const 0) (get_local 0x30a)) + (i64.store offset=0x30b align=1 (i32.const 0) (get_local 0x30b)) + (i64.store offset=0x30c align=1 (i32.const 0) (get_local 0x30c)) + (i64.store offset=0x30d align=1 (i32.const 0) (get_local 0x30d)) + (i64.store offset=0x30e align=1 (i32.const 0) (get_local 0x30e)) + (i64.store offset=0x30f align=1 (i32.const 0) (get_local 0x30f)) + (i64.store offset=0x310 align=1 (i32.const 0) (get_local 0x310)) + (i64.store offset=0x311 align=1 (i32.const 0) (get_local 0x311)) + (i64.store offset=0x312 align=1 (i32.const 0) (get_local 0x312)) + (i64.store offset=0x313 align=1 (i32.const 0) (get_local 0x313)) + (i64.store offset=0x314 align=1 (i32.const 0) (get_local 0x314)) + (i64.store offset=0x315 align=1 (i32.const 0) (get_local 0x315)) + (i64.store offset=0x316 align=1 (i32.const 0) (get_local 0x316)) + (i64.store offset=0x317 align=1 (i32.const 0) (get_local 0x317)) + (i64.store offset=0x318 align=1 (i32.const 0) (get_local 0x318)) + (i64.store offset=0x319 align=1 (i32.const 0) (get_local 0x319)) + (i64.store offset=0x31a align=1 (i32.const 0) (get_local 0x31a)) + (i64.store offset=0x31b align=1 (i32.const 0) (get_local 0x31b)) + (i64.store offset=0x31c align=1 (i32.const 0) (get_local 0x31c)) + (i64.store offset=0x31d align=1 (i32.const 0) (get_local 0x31d)) + (i64.store offset=0x31e align=1 (i32.const 0) (get_local 0x31e)) + (i64.store offset=0x31f align=1 (i32.const 0) (get_local 0x31f)) + (i64.store offset=0x320 align=1 (i32.const 0) (get_local 0x320)) + (i64.store offset=0x321 align=1 (i32.const 0) (get_local 0x321)) + (i64.store offset=0x322 align=1 (i32.const 0) (get_local 0x322)) + (i64.store offset=0x323 align=1 (i32.const 0) (get_local 0x323)) + (i64.store offset=0x324 align=1 (i32.const 0) (get_local 0x324)) + (i64.store offset=0x325 align=1 (i32.const 0) (get_local 0x325)) + (i64.store offset=0x326 align=1 (i32.const 0) (get_local 0x326)) + (i64.store offset=0x327 align=1 (i32.const 0) (get_local 0x327)) + (i64.store offset=0x328 align=1 (i32.const 0) (get_local 0x328)) + (i64.store offset=0x329 align=1 (i32.const 0) (get_local 0x329)) + (i64.store offset=0x32a align=1 (i32.const 0) (get_local 0x32a)) + (i64.store offset=0x32b align=1 (i32.const 0) (get_local 0x32b)) + (i64.store offset=0x32c align=1 (i32.const 0) (get_local 0x32c)) + (i64.store offset=0x32d align=1 (i32.const 0) (get_local 0x32d)) + (i64.store offset=0x32e align=1 (i32.const 0) (get_local 0x32e)) + (i64.store offset=0x32f align=1 (i32.const 0) (get_local 0x32f)) + (i64.store offset=0x330 align=1 (i32.const 0) (get_local 0x330)) + (i64.store offset=0x331 align=1 (i32.const 0) (get_local 0x331)) + (i64.store offset=0x332 align=1 (i32.const 0) (get_local 0x332)) + (i64.store offset=0x333 align=1 (i32.const 0) (get_local 0x333)) + (i64.store offset=0x334 align=1 (i32.const 0) (get_local 0x334)) + (i64.store offset=0x335 align=1 (i32.const 0) (get_local 0x335)) + (i64.store offset=0x336 align=1 (i32.const 0) (get_local 0x336)) + (i64.store offset=0x337 align=1 (i32.const 0) (get_local 0x337)) + (i64.store offset=0x338 align=1 (i32.const 0) (get_local 0x338)) + (i64.store offset=0x339 align=1 (i32.const 0) (get_local 0x339)) + (i64.store offset=0x33a align=1 (i32.const 0) (get_local 0x33a)) + (i64.store offset=0x33b align=1 (i32.const 0) (get_local 0x33b)) + (i64.store offset=0x33c align=1 (i32.const 0) (get_local 0x33c)) + (i64.store offset=0x33d align=1 (i32.const 0) (get_local 0x33d)) + (i64.store offset=0x33e align=1 (i32.const 0) (get_local 0x33e)) + (i64.store offset=0x33f align=1 (i32.const 0) (get_local 0x33f)) + (i64.store offset=0x340 align=1 (i32.const 0) (get_local 0x340)) + (i64.store offset=0x341 align=1 (i32.const 0) (get_local 0x341)) + (i64.store offset=0x342 align=1 (i32.const 0) (get_local 0x342)) + (i64.store offset=0x343 align=1 (i32.const 0) (get_local 0x343)) + (i64.store offset=0x344 align=1 (i32.const 0) (get_local 0x344)) + (i64.store offset=0x345 align=1 (i32.const 0) (get_local 0x345)) + (i64.store offset=0x346 align=1 (i32.const 0) (get_local 0x346)) + (i64.store offset=0x347 align=1 (i32.const 0) (get_local 0x347)) + (i64.store offset=0x348 align=1 (i32.const 0) (get_local 0x348)) + (i64.store offset=0x349 align=1 (i32.const 0) (get_local 0x349)) + (i64.store offset=0x34a align=1 (i32.const 0) (get_local 0x34a)) + (i64.store offset=0x34b align=1 (i32.const 0) (get_local 0x34b)) + (i64.store offset=0x34c align=1 (i32.const 0) (get_local 0x34c)) + (i64.store offset=0x34d align=1 (i32.const 0) (get_local 0x34d)) + (i64.store offset=0x34e align=1 (i32.const 0) (get_local 0x34e)) + (i64.store offset=0x34f align=1 (i32.const 0) (get_local 0x34f)) + (i64.store offset=0x350 align=1 (i32.const 0) (get_local 0x350)) + (i64.store offset=0x351 align=1 (i32.const 0) (get_local 0x351)) + (i64.store offset=0x352 align=1 (i32.const 0) (get_local 0x352)) + (i64.store offset=0x353 align=1 (i32.const 0) (get_local 0x353)) + (i64.store offset=0x354 align=1 (i32.const 0) (get_local 0x354)) + (i64.store offset=0x355 align=1 (i32.const 0) (get_local 0x355)) + (i64.store offset=0x356 align=1 (i32.const 0) (get_local 0x356)) + (i64.store offset=0x357 align=1 (i32.const 0) (get_local 0x357)) + (i64.store offset=0x358 align=1 (i32.const 0) (get_local 0x358)) + (i64.store offset=0x359 align=1 (i32.const 0) (get_local 0x359)) + (i64.store offset=0x35a align=1 (i32.const 0) (get_local 0x35a)) + (i64.store offset=0x35b align=1 (i32.const 0) (get_local 0x35b)) + (i64.store offset=0x35c align=1 (i32.const 0) (get_local 0x35c)) + (i64.store offset=0x35d align=1 (i32.const 0) (get_local 0x35d)) + (i64.store offset=0x35e align=1 (i32.const 0) (get_local 0x35e)) + (i64.store offset=0x35f align=1 (i32.const 0) (get_local 0x35f)) + (i64.store offset=0x360 align=1 (i32.const 0) (get_local 0x360)) + (i64.store offset=0x361 align=1 (i32.const 0) (get_local 0x361)) + (i64.store offset=0x362 align=1 (i32.const 0) (get_local 0x362)) + (i64.store offset=0x363 align=1 (i32.const 0) (get_local 0x363)) + (i64.store offset=0x364 align=1 (i32.const 0) (get_local 0x364)) + (i64.store offset=0x365 align=1 (i32.const 0) (get_local 0x365)) + (i64.store offset=0x366 align=1 (i32.const 0) (get_local 0x366)) + (i64.store offset=0x367 align=1 (i32.const 0) (get_local 0x367)) + (i64.store offset=0x368 align=1 (i32.const 0) (get_local 0x368)) + (i64.store offset=0x369 align=1 (i32.const 0) (get_local 0x369)) + (i64.store offset=0x36a align=1 (i32.const 0) (get_local 0x36a)) + (i64.store offset=0x36b align=1 (i32.const 0) (get_local 0x36b)) + (i64.store offset=0x36c align=1 (i32.const 0) (get_local 0x36c)) + (i64.store offset=0x36d align=1 (i32.const 0) (get_local 0x36d)) + (i64.store offset=0x36e align=1 (i32.const 0) (get_local 0x36e)) + (i64.store offset=0x36f align=1 (i32.const 0) (get_local 0x36f)) + (i64.store offset=0x370 align=1 (i32.const 0) (get_local 0x370)) + (i64.store offset=0x371 align=1 (i32.const 0) (get_local 0x371)) + (i64.store offset=0x372 align=1 (i32.const 0) (get_local 0x372)) + (i64.store offset=0x373 align=1 (i32.const 0) (get_local 0x373)) + (i64.store offset=0x374 align=1 (i32.const 0) (get_local 0x374)) + (i64.store offset=0x375 align=1 (i32.const 0) (get_local 0x375)) + (i64.store offset=0x376 align=1 (i32.const 0) (get_local 0x376)) + (i64.store offset=0x377 align=1 (i32.const 0) (get_local 0x377)) + (i64.store offset=0x378 align=1 (i32.const 0) (get_local 0x378)) + (i64.store offset=0x379 align=1 (i32.const 0) (get_local 0x379)) + (i64.store offset=0x37a align=1 (i32.const 0) (get_local 0x37a)) + (i64.store offset=0x37b align=1 (i32.const 0) (get_local 0x37b)) + (i64.store offset=0x37c align=1 (i32.const 0) (get_local 0x37c)) + (i64.store offset=0x37d align=1 (i32.const 0) (get_local 0x37d)) + (i64.store offset=0x37e align=1 (i32.const 0) (get_local 0x37e)) + (i64.store offset=0x37f align=1 (i32.const 0) (get_local 0x37f)) + (i64.store offset=0x380 align=1 (i32.const 0) (get_local 0x380)) + (i64.store offset=0x381 align=1 (i32.const 0) (get_local 0x381)) + (i64.store offset=0x382 align=1 (i32.const 0) (get_local 0x382)) + (i64.store offset=0x383 align=1 (i32.const 0) (get_local 0x383)) + (i64.store offset=0x384 align=1 (i32.const 0) (get_local 0x384)) + (i64.store offset=0x385 align=1 (i32.const 0) (get_local 0x385)) + (i64.store offset=0x386 align=1 (i32.const 0) (get_local 0x386)) + (i64.store offset=0x387 align=1 (i32.const 0) (get_local 0x387)) + (i64.store offset=0x388 align=1 (i32.const 0) (get_local 0x388)) + (i64.store offset=0x389 align=1 (i32.const 0) (get_local 0x389)) + (i64.store offset=0x38a align=1 (i32.const 0) (get_local 0x38a)) + (i64.store offset=0x38b align=1 (i32.const 0) (get_local 0x38b)) + (i64.store offset=0x38c align=1 (i32.const 0) (get_local 0x38c)) + (i64.store offset=0x38d align=1 (i32.const 0) (get_local 0x38d)) + (i64.store offset=0x38e align=1 (i32.const 0) (get_local 0x38e)) + (i64.store offset=0x38f align=1 (i32.const 0) (get_local 0x38f)) + (i64.store offset=0x390 align=1 (i32.const 0) (get_local 0x390)) + (i64.store offset=0x391 align=1 (i32.const 0) (get_local 0x391)) + (i64.store offset=0x392 align=1 (i32.const 0) (get_local 0x392)) + (i64.store offset=0x393 align=1 (i32.const 0) (get_local 0x393)) + (i64.store offset=0x394 align=1 (i32.const 0) (get_local 0x394)) + (i64.store offset=0x395 align=1 (i32.const 0) (get_local 0x395)) + (i64.store offset=0x396 align=1 (i32.const 0) (get_local 0x396)) + (i64.store offset=0x397 align=1 (i32.const 0) (get_local 0x397)) + (i64.store offset=0x398 align=1 (i32.const 0) (get_local 0x398)) + (i64.store offset=0x399 align=1 (i32.const 0) (get_local 0x399)) + (i64.store offset=0x39a align=1 (i32.const 0) (get_local 0x39a)) + (i64.store offset=0x39b align=1 (i32.const 0) (get_local 0x39b)) + (i64.store offset=0x39c align=1 (i32.const 0) (get_local 0x39c)) + (i64.store offset=0x39d align=1 (i32.const 0) (get_local 0x39d)) + (i64.store offset=0x39e align=1 (i32.const 0) (get_local 0x39e)) + (i64.store offset=0x39f align=1 (i32.const 0) (get_local 0x39f)) + (i64.store offset=0x3a0 align=1 (i32.const 0) (get_local 0x3a0)) + (i64.store offset=0x3a1 align=1 (i32.const 0) (get_local 0x3a1)) + (i64.store offset=0x3a2 align=1 (i32.const 0) (get_local 0x3a2)) + (i64.store offset=0x3a3 align=1 (i32.const 0) (get_local 0x3a3)) + (i64.store offset=0x3a4 align=1 (i32.const 0) (get_local 0x3a4)) + (i64.store offset=0x3a5 align=1 (i32.const 0) (get_local 0x3a5)) + (i64.store offset=0x3a6 align=1 (i32.const 0) (get_local 0x3a6)) + (i64.store offset=0x3a7 align=1 (i32.const 0) (get_local 0x3a7)) + (i64.store offset=0x3a8 align=1 (i32.const 0) (get_local 0x3a8)) + (i64.store offset=0x3a9 align=1 (i32.const 0) (get_local 0x3a9)) + (i64.store offset=0x3aa align=1 (i32.const 0) (get_local 0x3aa)) + (i64.store offset=0x3ab align=1 (i32.const 0) (get_local 0x3ab)) + (i64.store offset=0x3ac align=1 (i32.const 0) (get_local 0x3ac)) + (i64.store offset=0x3ad align=1 (i32.const 0) (get_local 0x3ad)) + (i64.store offset=0x3ae align=1 (i32.const 0) (get_local 0x3ae)) + (i64.store offset=0x3af align=1 (i32.const 0) (get_local 0x3af)) + (i64.store offset=0x3b0 align=1 (i32.const 0) (get_local 0x3b0)) + (i64.store offset=0x3b1 align=1 (i32.const 0) (get_local 0x3b1)) + (i64.store offset=0x3b2 align=1 (i32.const 0) (get_local 0x3b2)) + (i64.store offset=0x3b3 align=1 (i32.const 0) (get_local 0x3b3)) + (i64.store offset=0x3b4 align=1 (i32.const 0) (get_local 0x3b4)) + (i64.store offset=0x3b5 align=1 (i32.const 0) (get_local 0x3b5)) + (i64.store offset=0x3b6 align=1 (i32.const 0) (get_local 0x3b6)) + (i64.store offset=0x3b7 align=1 (i32.const 0) (get_local 0x3b7)) + (i64.store offset=0x3b8 align=1 (i32.const 0) (get_local 0x3b8)) + (i64.store offset=0x3b9 align=1 (i32.const 0) (get_local 0x3b9)) + (i64.store offset=0x3ba align=1 (i32.const 0) (get_local 0x3ba)) + (i64.store offset=0x3bb align=1 (i32.const 0) (get_local 0x3bb)) + (i64.store offset=0x3bc align=1 (i32.const 0) (get_local 0x3bc)) + (i64.store offset=0x3bd align=1 (i32.const 0) (get_local 0x3bd)) + (i64.store offset=0x3be align=1 (i32.const 0) (get_local 0x3be)) + (i64.store offset=0x3bf align=1 (i32.const 0) (get_local 0x3bf)) + (i64.store offset=0x3c0 align=1 (i32.const 0) (get_local 0x3c0)) + (i64.store offset=0x3c1 align=1 (i32.const 0) (get_local 0x3c1)) + (i64.store offset=0x3c2 align=1 (i32.const 0) (get_local 0x3c2)) + (i64.store offset=0x3c3 align=1 (i32.const 0) (get_local 0x3c3)) + (i64.store offset=0x3c4 align=1 (i32.const 0) (get_local 0x3c4)) + (i64.store offset=0x3c5 align=1 (i32.const 0) (get_local 0x3c5)) + (i64.store offset=0x3c6 align=1 (i32.const 0) (get_local 0x3c6)) + (i64.store offset=0x3c7 align=1 (i32.const 0) (get_local 0x3c7)) + (i64.store offset=0x3c8 align=1 (i32.const 0) (get_local 0x3c8)) + (i64.store offset=0x3c9 align=1 (i32.const 0) (get_local 0x3c9)) + (i64.store offset=0x3ca align=1 (i32.const 0) (get_local 0x3ca)) + (i64.store offset=0x3cb align=1 (i32.const 0) (get_local 0x3cb)) + (i64.store offset=0x3cc align=1 (i32.const 0) (get_local 0x3cc)) + (i64.store offset=0x3cd align=1 (i32.const 0) (get_local 0x3cd)) + (i64.store offset=0x3ce align=1 (i32.const 0) (get_local 0x3ce)) + (i64.store offset=0x3cf align=1 (i32.const 0) (get_local 0x3cf)) + (i64.store offset=0x3d0 align=1 (i32.const 0) (get_local 0x3d0)) + (i64.store offset=0x3d1 align=1 (i32.const 0) (get_local 0x3d1)) + (i64.store offset=0x3d2 align=1 (i32.const 0) (get_local 0x3d2)) + (i64.store offset=0x3d3 align=1 (i32.const 0) (get_local 0x3d3)) + (i64.store offset=0x3d4 align=1 (i32.const 0) (get_local 0x3d4)) + (i64.store offset=0x3d5 align=1 (i32.const 0) (get_local 0x3d5)) + (i64.store offset=0x3d6 align=1 (i32.const 0) (get_local 0x3d6)) + (i64.store offset=0x3d7 align=1 (i32.const 0) (get_local 0x3d7)) + (i64.store offset=0x3d8 align=1 (i32.const 0) (get_local 0x3d8)) + (i64.store offset=0x3d9 align=1 (i32.const 0) (get_local 0x3d9)) + (i64.store offset=0x3da align=1 (i32.const 0) (get_local 0x3da)) + (i64.store offset=0x3db align=1 (i32.const 0) (get_local 0x3db)) + (i64.store offset=0x3dc align=1 (i32.const 0) (get_local 0x3dc)) + (i64.store offset=0x3dd align=1 (i32.const 0) (get_local 0x3dd)) + (i64.store offset=0x3de align=1 (i32.const 0) (get_local 0x3de)) + (i64.store offset=0x3df align=1 (i32.const 0) (get_local 0x3df)) + (i64.store offset=0x3e0 align=1 (i32.const 0) (get_local 0x3e0)) + (i64.store offset=0x3e1 align=1 (i32.const 0) (get_local 0x3e1)) + (i64.store offset=0x3e2 align=1 (i32.const 0) (get_local 0x3e2)) + (i64.store offset=0x3e3 align=1 (i32.const 0) (get_local 0x3e3)) + (i64.store offset=0x3e4 align=1 (i32.const 0) (get_local 0x3e4)) + (i64.store offset=0x3e5 align=1 (i32.const 0) (get_local 0x3e5)) + (i64.store offset=0x3e6 align=1 (i32.const 0) (get_local 0x3e6)) + (i64.store offset=0x3e7 align=1 (i32.const 0) (get_local 0x3e7)) + (i64.store offset=0x3e8 align=1 (i32.const 0) (get_local 0x3e8)) + (i64.store offset=0x3e9 align=1 (i32.const 0) (get_local 0x3e9)) + (i64.store offset=0x3ea align=1 (i32.const 0) (get_local 0x3ea)) + (i64.store offset=0x3eb align=1 (i32.const 0) (get_local 0x3eb)) + (i64.store offset=0x3ec align=1 (i32.const 0) (get_local 0x3ec)) + (i64.store offset=0x3ed align=1 (i32.const 0) (get_local 0x3ed)) + (i64.store offset=0x3ee align=1 (i32.const 0) (get_local 0x3ee)) + (i64.store offset=0x3ef align=1 (i32.const 0) (get_local 0x3ef)) + (i64.store offset=0x3f0 align=1 (i32.const 0) (get_local 0x3f0)) + (i64.store offset=0x3f1 align=1 (i32.const 0) (get_local 0x3f1)) + (i64.store offset=0x3f2 align=1 (i32.const 0) (get_local 0x3f2)) + (i64.store offset=0x3f3 align=1 (i32.const 0) (get_local 0x3f3)) + (i64.store offset=0x3f4 align=1 (i32.const 0) (get_local 0x3f4)) + (i64.store offset=0x3f5 align=1 (i32.const 0) (get_local 0x3f5)) + (i64.store offset=0x3f6 align=1 (i32.const 0) (get_local 0x3f6)) + (i64.store offset=0x3f7 align=1 (i32.const 0) (get_local 0x3f7)) + (i64.store offset=0x3f8 align=1 (i32.const 0) (get_local 0x3f8)) + (i64.store offset=0x3f9 align=1 (i32.const 0) (get_local 0x3f9)) + (i64.store offset=0x3fa align=1 (i32.const 0) (get_local 0x3fa)) + (i64.store offset=0x3fb align=1 (i32.const 0) (get_local 0x3fb)) + (i64.store offset=0x3fc align=1 (i32.const 0) (get_local 0x3fc)) + (i64.store offset=0x3fd align=1 (i32.const 0) (get_local 0x3fd)) + (i64.store offset=0x3fe align=1 (i32.const 0) (get_local 0x3fe)) + (i64.store offset=0x3ff align=1 (i32.const 0) (get_local 0x3ff)) + (i64.store offset=0x400 align=1 (i32.const 0) (get_local 0x400)) + (i64.store offset=0x401 align=1 (i32.const 0) (get_local 0x401)) + (i64.store offset=0x402 align=1 (i32.const 0) (get_local 0x402)) + (i64.store offset=0x403 align=1 (i32.const 0) (get_local 0x403)) + (i64.store offset=0x404 align=1 (i32.const 0) (get_local 0x404)) + (i64.store offset=0x405 align=1 (i32.const 0) (get_local 0x405)) + (i64.store offset=0x406 align=1 (i32.const 0) (get_local 0x406)) + (i64.store offset=0x407 align=1 (i32.const 0) (get_local 0x407)) + (i64.store offset=0x408 align=1 (i32.const 0) (get_local 0x408)) + (i64.store offset=0x409 align=1 (i32.const 0) (get_local 0x409)) + (i64.store offset=0x40a align=1 (i32.const 0) (get_local 0x40a)) + (i64.store offset=0x40b align=1 (i32.const 0) (get_local 0x40b)) + (i64.store offset=0x40c align=1 (i32.const 0) (get_local 0x40c)) + (i64.store offset=0x40d align=1 (i32.const 0) (get_local 0x40d)) + (i64.store offset=0x40e align=1 (i32.const 0) (get_local 0x40e)) + (i64.store offset=0x40f align=1 (i32.const 0) (get_local 0x40f)) + (i64.store offset=0x410 align=1 (i32.const 0) (get_local 0x410)) + (i64.store offset=0x411 align=1 (i32.const 0) (get_local 0x411)) + (i64.store offset=0x412 align=1 (i32.const 0) (get_local 0x412)) + (i64.store offset=0x413 align=1 (i32.const 0) (get_local 0x413)) + (i64.store offset=0x414 align=1 (i32.const 0) (get_local 0x414)) + (i64.store offset=0x415 align=1 (i32.const 0) (get_local 0x415)) + (i64.store offset=0x416 align=1 (i32.const 0) (get_local 0x416)) + (i64.store offset=0x417 align=1 (i32.const 0) (get_local 0x417)) + (i64.store offset=0x418 align=1 (i32.const 0) (get_local 0x418)) + (i64.store offset=0x419 align=1 (i32.const 0) (get_local 0x419)) + (i64.store offset=0x41a align=1 (i32.const 0) (get_local 0x41a)) + (i64.store offset=0x41b align=1 (i32.const 0) (get_local 0x41b)) + (i64.store offset=0x41c align=1 (i32.const 0) (get_local 0x41c)) + (i64.store offset=0x41d align=1 (i32.const 0) (get_local 0x41d)) + (i64.store offset=0x41e align=1 (i32.const 0) (get_local 0x41e)) + (i64.store offset=0x41f align=1 (i32.const 0) (get_local 0x41f)) + ) +) + +(assert_trap (invoke "test-guard-page-skip" (i32.const 0)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 100)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 200)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 300)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 400)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 500)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 600)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 700)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 800)) "call stack exhausted") +(assert_trap (invoke "test-guard-page-skip" (i32.const 900)) "call stack exhausted") \ No newline at end of file diff --git a/test/WasmSpec/testsuite/stack.wast b/test/WasmSpec/testsuite/stack.wast new file mode 100644 index 00000000000..a0559f56160 --- /dev/null +++ b/test/WasmSpec/testsuite/stack.wast @@ -0,0 +1,138 @@ +(module + (func (export "fac-expr") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + (set_local $i (get_local $n)) + (set_local $res (i64.const 1)) + (block $done + (loop $loop + (if + (i64.eq (get_local $i) (i64.const 0)) + (br $done) + (block + (set_local $res (i64.mul (get_local $i) (get_local $res))) + (set_local $i (i64.sub (get_local $i) (i64.const 1))) + ) + ) + (br $loop) + ) + ) + (get_local $res) + ) + + (func (export "fac-stack") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + (get_local $n) + (set_local $i) + (i64.const 1) + (set_local $res) + (block $done + (loop $loop + (get_local $i) + (i64.const 0) + (i64.eq) + (if + (then (br $done)) + (else + (get_local $i) + (get_local $res) + (i64.mul) + (set_local $res) + (get_local $i) + (i64.const 1) + (i64.sub) + (set_local $i) + ) + ) + (br $loop) + ) + ) + (get_local $res) + ) + + (func (export "fac-stack-raw") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + get_local $n + set_local $i + i64.const 1 + set_local $res + block $done + loop $loop + get_local $i + i64.const 0 + i64.eq + if + br $done + else + get_local $i + get_local $res + i64.mul + set_local $res + get_local $i + i64.const 1 + i64.sub + set_local $i + end + br $loop + end + end + get_local $res + ) + + (func (export "fac-mixed") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + (set_local $i (get_local $n)) + (set_local $res (i64.const 1)) + (block $done + (loop $loop + (i64.eq (get_local $i) (i64.const 0)) + (if + (then (br $done)) + (else + (i64.mul (get_local $i) (get_local $res)) + (set_local $res) + (i64.sub (get_local $i) (i64.const 1)) + (set_local $i) + ) + ) + (br $loop) + ) + ) + (get_local $res) + ) + + (func (export "fac-mixed-raw") (param $n i64) (result i64) + (local $i i64) + (local $res i64) + (set_local $i (get_local $n)) + (set_local $res (i64.const 1)) + block $done + loop $loop + (i64.eq (get_local $i) (i64.const 0)) + if + br $done + else + (i64.mul (get_local $i) (get_local $res)) + set_local $res + (i64.sub (get_local $i) (i64.const 1)) + set_local $i + end + br $loop + end + end + get_local $res + ) +) + +(assert_return (invoke "fac-expr" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-stack" (i64.const 25)) (i64.const 7034535277573963776)) +(assert_return (invoke "fac-mixed" (i64.const 25)) (i64.const 7034535277573963776)) + +;; from br_table.wast +(module (func $type-arg-num-vs-void + (block (br_table 0 (i32.const 0) (i32.const 1))) +)) + diff --git a/test/WasmSpec/testsuite/start.wast b/test/WasmSpec/testsuite/start.wast new file mode 100644 index 00000000000..a20c449be9c --- /dev/null +++ b/test/WasmSpec/testsuite/start.wast @@ -0,0 +1,88 @@ +(assert_invalid + (module (func) (start 1)) + "unknown function" +) +(assert_invalid + (module + (func $main (result i32) (return (i32.const 0))) + (start $main) + ) + "start function" +) +(assert_invalid + (module + (func $main (param $a i32)) + (start $main) + ) + "start function" +) +(module + (memory (data "A")) + (func $inc + (i32.store8 + (i32.const 0) + (i32.add + (i32.load8_u (i32.const 0)) + (i32.const 1) + ) + ) + ) + (func $get (result i32) + (return (i32.load8_u (i32.const 0))) + ) + (func $main + (call $inc) + (call $inc) + (call $inc) + ) + + (start $main) + (export "inc" (func $inc)) + (export "get" (func $get)) +) +(assert_return (invoke "get") (i32.const 68)) +(invoke "inc") +(assert_return (invoke "get") (i32.const 69)) +(invoke "inc") +(assert_return (invoke "get") (i32.const 70)) + +(module + (memory (data "A")) + (func $inc + (i32.store8 + (i32.const 0) + (i32.add + (i32.load8_u (i32.const 0)) + (i32.const 1) + ) + ) + ) + (func $get (result i32) + (return (i32.load8_u (i32.const 0))) + ) + (func $main + (call $inc) + (call $inc) + (call $inc) + ) + (start 2) + (export "inc" (func $inc)) + (export "get" (func $get)) +) +(assert_return (invoke "get") (i32.const 68)) +(invoke "inc") +(assert_return (invoke "get") (i32.const 69)) +(invoke "inc") +(assert_return (invoke "get") (i32.const 70)) + +(module + (func $print_i32 (import "spectest" "print") (param i32)) + (func $main (call $print_i32 (i32.const 1))) + (start 1) +) + +(module + (func $print_i32 (import "spectest" "print") (param i32)) + (func $main (call $print_i32 (i32.const 2))) + (start $main) +) diff --git a/test/WasmSpec/testsuite/store_retval.wast b/test/WasmSpec/testsuite/store_retval.wast new file mode 100644 index 00000000000..a4d03582f63 --- /dev/null +++ b/test/WasmSpec/testsuite/store_retval.wast @@ -0,0 +1,55 @@ +(assert_invalid + (module (func (param i32) (result i32) (set_local 0 (i32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (func (param i64) (result i64) (set_local 0 (i64.const 1)))) + "type mismatch" +) +(assert_invalid + (module (func (param f32) (result f32) (set_local 0 (f32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (func (param f64) (result f64) (set_local 0 (f64.const 1)))) + "type mismatch" +) + +(assert_invalid + (module (memory 1) (func (param i32) (result i32) (i32.store (i32.const 0) (i32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param i64) (result i64) (i64.store (i32.const 0) (i64.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param f32) (result f32) (f32.store (i32.const 0) (f32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param f64) (result f64) (f64.store (i32.const 0) (f64.const 1)))) + "type mismatch" +) + +(assert_invalid + (module (memory 1) (func (param i32) (result i32) (i32.store8 (i32.const 0) (i32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param i32) (result i32) (i32.store16 (i32.const 0) (i32.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param i64) (result i64) (i64.store8 (i32.const 0) (i64.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param i64) (result i64) (i64.store16 (i32.const 0) (i64.const 1)))) + "type mismatch" +) +(assert_invalid + (module (memory 1) (func (param i64) (result i64) (i64.store32 (i32.const 0) (i64.const 1)))) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/switch.wast b/test/WasmSpec/testsuite/switch.wast new file mode 100644 index 00000000000..2d4565a5ddb --- /dev/null +++ b/test/WasmSpec/testsuite/switch.wast @@ -0,0 +1,150 @@ +(module + ;; Statement switch + (func (export "stmt") (param $i i32) (result i32) + (local $j i32) + (set_local $j (i32.const 100)) + (block $switch + (block $7 + (block $default + (block $6 + (block $5 + (block $4 + (block $3 + (block $2 + (block $1 + (block $0 + (br_table $0 $1 $2 $3 $4 $5 $6 $7 $default + (get_local $i) + ) + ) ;; 0 + (return (get_local $i)) + ) ;; 1 + (nop) + ;; fallthrough + ) ;; 2 + ;; fallthrough + ) ;; 3 + (set_local $j (i32.sub (i32.const 0) (get_local $i))) + (br $switch) + ) ;; 4 + (br $switch) + ) ;; 5 + (set_local $j (i32.const 101)) + (br $switch) + ) ;; 6 + (set_local $j (i32.const 101)) + ;; fallthrough + ) ;; default + (set_local $j (i32.const 102)) + ) ;; 7 + ;; fallthrough + ) + (return (get_local $j)) + ) + + ;; Expression switch + (func (export "expr") (param $i i64) (result i64) + (local $j i64) + (set_local $j (i64.const 100)) + (return + (block $switch i64 + (block $7 + (block $default + (block $4 + (block $5 + (block $6 + (block $3 + (block $2 + (block $1 + (block $0 + (br_table $0 $1 $2 $3 $4 $5 $6 $7 $default + (i32.wrap/i64 (get_local $i)) + ) + ) ;; 0 + (return (get_local $i)) + ) ;; 1 + (nop) + ;; fallthrough + ) ;; 2 + ;; fallthrough + ) ;; 3 + (br $switch (i64.sub (i64.const 0) (get_local $i))) + ) ;; 6 + (set_local $j (i64.const 101)) + ;; fallthrough + ) ;; 4 + ;; fallthrough + ) ;; 5 + ;; fallthrough + ) ;; default + (br $switch (get_local $j)) + ) ;; 7 + (i64.const -5) + ) + ) + ) + + ;; Argument switch + (func (export "arg") (param $i i32) (result i32) + (return + (block $2 i32 + (i32.add (i32.const 10) + (block $1 i32 + (i32.add (i32.const 100) + (block $0 i32 + (i32.add (i32.const 1000) + (block $default i32 + (br_table $0 $1 $2 $default + (i32.mul (i32.const 2) (get_local $i)) + (i32.and (i32.const 3) (get_local $i)) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + + ;; Corner cases + (func (export "corner") (result i32) + (block + (br_table 0 (i32.const 0)) + ) + (i32.const 1) + ) +) + +(assert_return (invoke "stmt" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "stmt" (i32.const 1)) (i32.const -1)) +(assert_return (invoke "stmt" (i32.const 2)) (i32.const -2)) +(assert_return (invoke "stmt" (i32.const 3)) (i32.const -3)) +(assert_return (invoke "stmt" (i32.const 4)) (i32.const 100)) +(assert_return (invoke "stmt" (i32.const 5)) (i32.const 101)) +(assert_return (invoke "stmt" (i32.const 6)) (i32.const 102)) +(assert_return (invoke "stmt" (i32.const 7)) (i32.const 100)) +(assert_return (invoke "stmt" (i32.const -10)) (i32.const 102)) + +(assert_return (invoke "expr" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "expr" (i64.const 1)) (i64.const -1)) +(assert_return (invoke "expr" (i64.const 2)) (i64.const -2)) +(assert_return (invoke "expr" (i64.const 3)) (i64.const -3)) +(assert_return (invoke "expr" (i64.const 6)) (i64.const 101)) +(assert_return (invoke "expr" (i64.const 7)) (i64.const -5)) +(assert_return (invoke "expr" (i64.const -10)) (i64.const 100)) + +(assert_return (invoke "arg" (i32.const 0)) (i32.const 110)) +(assert_return (invoke "arg" (i32.const 1)) (i32.const 12)) +(assert_return (invoke "arg" (i32.const 2)) (i32.const 4)) +(assert_return (invoke "arg" (i32.const 3)) (i32.const 1116)) +(assert_return (invoke "arg" (i32.const 4)) (i32.const 118)) +(assert_return (invoke "arg" (i32.const 5)) (i32.const 20)) +(assert_return (invoke "arg" (i32.const 6)) (i32.const 12)) +(assert_return (invoke "arg" (i32.const 7)) (i32.const 1124)) +(assert_return (invoke "arg" (i32.const 8)) (i32.const 126)) + +(assert_return (invoke "corner") (i32.const 1)) + +(assert_invalid (module (func (br_table 3 (i32.const 0)))) "unknown label") diff --git a/test/WasmSpec/testsuite/tee_local.wast b/test/WasmSpec/testsuite/tee_local.wast new file mode 100644 index 00000000000..452793e3001 --- /dev/null +++ b/test/WasmSpec/testsuite/tee_local.wast @@ -0,0 +1,236 @@ +;; Test `tee_local` operator + +(module + ;; Typing + + (func (export "type-local-i32") (result i32) (local i32) (tee_local 0 (i32.const 0))) + (func (export "type-local-i64") (result i64) (local i64) (tee_local 0 (i64.const 0))) + (func (export "type-local-f32") (result f32) (local f32) (tee_local 0 (f32.const 0))) + (func (export "type-local-f64") (result f64) (local f64) (tee_local 0 (f64.const 0))) + + (func (export "type-param-i32") (param i32) (result i32) (tee_local 0 (i32.const 10))) + (func (export "type-param-i64") (param i64) (result i64) (tee_local 0 (i64.const 11))) + (func (export "type-param-f32") (param f32) (result f32) (tee_local 0 (f32.const 11.1))) + (func (export "type-param-f64") (param f64) (result f64) (tee_local 0 (f64.const 12.2))) + + (func (export "type-mixed") (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) + (drop (i64.eqz (tee_local 0 (i64.const 0)))) + (drop (f32.neg (tee_local 1 (f32.const 0)))) + (drop (f64.neg (tee_local 2 (f64.const 0)))) + (drop (i32.eqz (tee_local 3 (i32.const 0)))) + (drop (i32.eqz (tee_local 4 (i32.const 0)))) + (drop (f32.neg (tee_local 5 (f32.const 0)))) + (drop (i64.eqz (tee_local 6 (i64.const 0)))) + (drop (i64.eqz (tee_local 7 (i64.const 0)))) + (drop (f64.neg (tee_local 8 (f64.const 0)))) + ) + + ;; Writing + + (func (export "write") (param i64 f32 f64 i32 i32) (result i64) (local f32 i64 i64 f64) + (drop (tee_local 1 (f32.const -0.3))) + (drop (tee_local 3 (i32.const 40))) + (drop (tee_local 4 (i32.const -7))) + (drop (tee_local 5 (f32.const 5.5))) + (drop (tee_local 6 (i64.const 6))) + (drop (tee_local 8 (f64.const 8))) + (i64.trunc_s/f64 + (f64.add + (f64.convert_u/i64 (get_local 0)) + (f64.add + (f64.promote/f32 (get_local 1)) + (f64.add + (get_local 2) + (f64.add + (f64.convert_u/i32 (get_local 3)) + (f64.add + (f64.convert_s/i32 (get_local 4)) + (f64.add + (f64.promote/f32 (get_local 5)) + (f64.add + (f64.convert_u/i64 (get_local 6)) + (f64.add + (f64.convert_u/i64 (get_local 7)) + (get_local 8) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + + ;; Result + + (func (export "result") (param i64 f32 f64 i32 i32) (result f64) + (local f32 i64 i64 f64) + (f64.add + (f64.convert_u/i64 (tee_local 0 (i64.const 1))) + (f64.add + (f64.promote/f32 (tee_local 1 (f32.const 2))) + (f64.add + (tee_local 2 (f64.const 3.3)) + (f64.add + (f64.convert_u/i32 (tee_local 3 (i32.const 4))) + (f64.add + (f64.convert_s/i32 (tee_local 4 (i32.const 5))) + (f64.add + (f64.promote/f32 (tee_local 5 (f32.const 5.5))) + (f64.add + (f64.convert_u/i64 (tee_local 6 (i64.const 6))) + (f64.add + (f64.convert_u/i64 (tee_local 7 (i64.const 0))) + (tee_local 8 (f64.const 8)) + ) + ) + ) + ) + ) + ) + ) + ) + ) +) + +(assert_return (invoke "type-local-i32") (i32.const 0)) +(assert_return (invoke "type-local-i64") (i64.const 0)) +(assert_return (invoke "type-local-f32") (f32.const 0)) +(assert_return (invoke "type-local-f64") (f64.const 0)) + +(assert_return (invoke "type-param-i32" (i32.const 2)) (i32.const 10)) +(assert_return (invoke "type-param-i64" (i64.const 3)) (i64.const 11)) +(assert_return (invoke "type-param-f32" (f32.const 4.4)) (f32.const 11.1)) +(assert_return (invoke "type-param-f64" (f64.const 5.5)) (f64.const 12.2)) + +(assert_return + (invoke "type-mixed" + (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) +) + +(assert_return + (invoke "write" + (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) + ) + (i64.const 56) +) + +(assert_return + (invoke "result" + (i64.const -1) (f32.const -2) (f64.const -3.3) (i32.const -4) (i32.const -5) + ) + (f64.const 34.8) +) + + +;; Invalid typing of access to locals + +(assert_invalid + (module (func $type-local-num-vs-num (result i64) (local i32) (tee_local 0 (i32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f32) (i32.eqz (tee_local 0 (f32.const 0))))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (tee_local 1 (i64.const 0))))) + "type mismatch" +) + +(assert_invalid + (module (func $type-local-arg-void-vs-num (local i32) (tee_local 0 (nop)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local i32) (tee_local 0 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local f32) (tee_local 0 (f64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-local-arg-num-vs-num (local f64 i64) (tee_local 1 (f64.const 0)))) + "type mismatch" +) + + +;; Invalid typing of access to parameters + +(assert_invalid + (module (func $type-param-num-vs-num (param i32) (result i64) (get_local 0))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f32) (i32.eqz (get_local 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (get_local 1)))) + "type mismatch" +) + +(assert_invalid + (module (func $type-param-arg-void-vs-num (param i32) (tee_local 0 (nop)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param i32) (tee_local 0 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param f32) (tee_local 0 (f64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-param-arg-num-vs-num (param f64 i64) (tee_local 1 (f64.const 0)))) + "type mismatch" +) + + +;; Invalid local index + +(assert_invalid + (module (func $unbound-local (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-local (local i32 i64) (get_local 14324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-param (param i32 i64) (get_local 2))) + "unknown local" +) +(assert_invalid + (module (func $large-param (local i32 i64) (get_local 714324343))) + "unknown local" +) + +(assert_invalid + (module (func $unbound-mixed (param i32) (local i32 i64) (get_local 3))) + "unknown local" +) +(assert_invalid + (module (func $large-mixed (param i64) (local i32 i64) (get_local 214324343))) + "unknown local" +) + +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param f32) (local i32) (tee_local 1 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param i64 i32) (local f32) (tee_local 1 (f32.const 0)))) + "type mismatch" +) +(assert_invalid + (module (func $type-mixed-arg-num-vs-num (param i64) (local f64 i64) (tee_local 1 (i64.const 0)))) + "type mismatch" +) + diff --git a/test/WasmSpec/testsuite/traps.wast b/test/WasmSpec/testsuite/traps.wast new file mode 100644 index 00000000000..a9184b654b1 --- /dev/null +++ b/test/WasmSpec/testsuite/traps.wast @@ -0,0 +1,69 @@ +;; Test that traps are preserved even in instructions which might otherwise +;; be dead-code-eliminated. These functions all perform an operation and +;; discard its return value. + +(module + (func (export "no_dce.i32.div_s") (param $x i32) (param $y i32) (result i32) + (i32.div_s (get_local $x) (get_local $y))) + (func (export "no_dce.i32.div_u") (param $x i32) (param $y i32) (result i32) + (i32.div_u (get_local $x) (get_local $y))) + (func (export "no_dce.i64.div_s") (param $x i64) (param $y i64) (result i64) + (i64.div_s (get_local $x) (get_local $y))) + (func (export "no_dce.i64.div_u") (param $x i64) (param $y i64) (result i64) + (i64.div_u (get_local $x) (get_local $y))) +) + +(assert_trap (invoke "no_dce.i32.div_s" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i32.div_u" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i64.div_s" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i64.div_u" (i64.const 1) (i64.const 0)) "integer divide by zero") + +(module + (func (export "no_dce.i32.rem_s") (param $x i32) (param $y i32) (result i32) + (i32.rem_s (get_local $x) (get_local $y))) + (func (export "no_dce.i32.rem_u") (param $x i32) (param $y i32) (result i32) + (i32.rem_u (get_local $x) (get_local $y))) + (func (export "no_dce.i64.rem_s") (param $x i64) (param $y i64) (result i64) + (i64.rem_s (get_local $x) (get_local $y))) + (func (export "no_dce.i64.rem_u") (param $x i64) (param $y i64) (result i64) + (i64.rem_u (get_local $x) (get_local $y))) +) + +(assert_trap (invoke "no_dce.i32.rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i32.rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i64.rem_s" (i64.const 1) (i64.const 0)) "integer divide by zero") +(assert_trap (invoke "no_dce.i64.rem_u" (i64.const 1) (i64.const 0)) "integer divide by zero") + +(module + (func (export "no_dce.i32.trunc_s_f32") (param $x f32) (result i32) (i32.trunc_s/f32 (get_local $x))) + (func (export "no_dce.i32.trunc_u_f32") (param $x f32) (result i32) (i32.trunc_u/f32 (get_local $x))) + (func (export "no_dce.i32.trunc_s_f64") (param $x f64) (result i32) (i32.trunc_s/f64 (get_local $x))) + (func (export "no_dce.i32.trunc_u_f64") (param $x f64) (result i32) (i32.trunc_u/f64 (get_local $x))) + (func (export "no_dce.i64.trunc_s_f32") (param $x f32) (result i64) (i64.trunc_s/f32 (get_local $x))) + (func (export "no_dce.i64.trunc_u_f32") (param $x f32) (result i64) (i64.trunc_u/f32 (get_local $x))) + (func (export "no_dce.i64.trunc_s_f64") (param $x f64) (result i64) (i64.trunc_s/f64 (get_local $x))) + (func (export "no_dce.i64.trunc_u_f64") (param $x f64) (result i64) (i64.trunc_u/f64 (get_local $x))) +) + +(assert_trap (invoke "no_dce.i32.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i32.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i32.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i32.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i64.trunc_s_f32" (f32.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i64.trunc_u_f32" (f32.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i64.trunc_s_f64" (f64.const nan)) "invalid conversion to integer") +(assert_trap (invoke "no_dce.i64.trunc_u_f64" (f64.const nan)) "invalid conversion to integer") + +(module + (memory 1) + + (func (export "no_dce.i32.load") (param $i i32) (result i32) (i32.load (get_local $i))) + (func (export "no_dce.i64.load") (param $i i32) (result i64) (i64.load (get_local $i))) + (func (export "no_dce.f32.load") (param $i i32) (result f32) (f32.load (get_local $i))) + (func (export "no_dce.f64.load") (param $i i32) (result f64) (f64.load (get_local $i))) +) + +(assert_trap (invoke "no_dce.i32.load" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "no_dce.i64.load" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "no_dce.f32.load" (i32.const 65536)) "out of bounds memory access") +(assert_trap (invoke "no_dce.f64.load" (i32.const 65536)) "out of bounds memory access") diff --git a/test/WasmSpec/testsuite/typecheck.wast b/test/WasmSpec/testsuite/typecheck.wast new file mode 100644 index 00000000000..444e0556df7 --- /dev/null +++ b/test/WasmSpec/testsuite/typecheck.wast @@ -0,0 +1,433 @@ +;; TODO: move all tests in this file to appropriate operator-specific files. + +(assert_invalid + (module (func $type-unary-operand-missing + (i32.eqz) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-unary-operand-missing-in-block + (i32.const 0) + (block (i32.eqz) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-unary-operand-missing-in-loop + (i32.const 0) + (loop (i32.eqz) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-unary-operand-missing-in-if + (i32.const 0) (i32.const 0) + (if (then (i32.eqz) (drop))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-unary-operand-missing-in-else + (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (i32.eqz))) (drop) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-binary-1st-operand-missing + (i32.add) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-2nd-operand-missing + (i32.const 0) (i32.add) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-1st-operand-missing-in-block + (i32.const 0) (i32.const 0) + (block (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-2nd-operand-missing-in-block + (i32.const 0) + (block (i32.const 0) (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-1st-operand-missing-in-loop + (i32.const 0) (i32.const 0) + (loop (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-2nd-operand-missing-in-loop + (i32.const 0) + (loop (i32.const 0) (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-1st-operand-missing-in-if + (i32.const 0) (i32.const 0) (i32.const 0) + (if (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-2nd-operand-missing-in-if + (i32.const 0) (i32.const 0) + (if (i32.const 0) (i32.add) (drop)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-1st-operand-missing-in-else + (i32.const 0) (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (i32.add) (i32.const 0))) + (drop) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-binary-2nd-operand-missing-in-else + (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (i32.add))) + (drop) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-if-operand-missing + (if (then)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-if-operand-missing-in-block + (i32.const 0) + (block (if (then))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-if-operand-missing-in-loop + (i32.const 0) + (loop (if (then))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-if-operand-missing-in-if + (i32.const 0) (i32.const 0) + (if (then (if (then)))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-if-operand-missing-in-else + (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (if (then)) (i32.const 0))) + (drop) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-br-operand-missing + (block i32 (br 0)) + (i32.eqz) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-br-operand-missing-in-block + (i32.const 0) + (block i32 (br 0)) + (i32.eqz) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-br-operand-missing-in-loop + (i32.const 0) + (loop i32 (br 0)) + (i32.eqz) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-br-operand-missing-in-if + (block + (i32.const 0) (i32.const 0) + (if i32 (then (br 0))) + ) + (i32.eqz) (drop) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-br-operand-missing-in-else + (block + (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (br 0))) + ) + (i32.eqz) (drop) + )) + "type mismatch" +) + +(assert_invalid + (module (func $type-return-operand-missing (result i32) + (return) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-operand-missing-in-block (result i32) + (i32.const 0) + (block (return)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-operand-missing-in-loop (result i32) + (i32.const 0) + (loop (return)) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-operand-missing-in-if (result i32) + (i32.const 0) (i32.const 0) + (if (then (return))) + )) + "type mismatch" +) +(assert_invalid + (module (func $type-return-operand-missing-in-else (result i32) + (i32.const 0) (i32.const 0) + (if i32 (then (i32.const 0)) (else (return))) (drop) + )) + "type mismatch" +) + +;; TODO(stack): more of the above + +;; if condition +(assert_invalid (module (func (if (f32.const 0) (nop) (nop)))) "type mismatch") + +;; br_if condition +(assert_invalid (module (func (block (br_if 0 (f32.const 0))))) "type mismatch") + +;; br_table key +(assert_invalid + (module (func (block (br_table 0 (f32.const 0))))) + "type mismatch") + +;; call params +(assert_invalid (module (func (param i32)) (func (call 0 (f32.const 0)))) "type mismatch") +(assert_invalid + (module + (type (func (param i32))) + (func (type 0)) + (table 0 anyfunc) + (func + (call_indirect 0 (i32.const 0) (f32.const 0)))) + "type mismatch") + +;; call_indirect index +(assert_invalid + (module + (type (func)) + (func (type 0)) + (table 0 anyfunc) + (func (call_indirect 0 (f32.const 0)))) + "type mismatch") + +;; return +(assert_invalid (module (func (result i32) (return (f32.const 0)))) "type mismatch") + +;; set_local +(assert_invalid (module (func (local i32) (set_local 0 (f32.const 0)))) "type mismatch") + +;; load index +(assert_invalid (module (memory 1) (func (i32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load32_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.load32_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f64.load (f32.const 0)))) "type mismatch") + +;; store index +(assert_invalid (module (memory 1) (func (i32.store (f32.const 0) (i32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.store8 (f32.const 0) (i32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.store16 (f32.const 0) (i32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store (f32.const 0) (i32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store8 (f32.const 0) (i64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store16 (f32.const 0) (i64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store32 (f32.const 0) (i64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f32.store (f32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f64.store (f32.const 0) (f64.const 0)))) "type mismatch") + +;; store value +(assert_invalid (module (memory 1) (func (i32.store (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.store8 (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i32.store16 (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store8 (i32.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store16 (i32.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (i64.store32 (i32.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f32.store (i32.const 0) (i32.const 0)))) "type mismatch") +(assert_invalid (module (memory 1) (func (f64.store (i32.const 0) (i64.const 0)))) "type mismatch") + +;; binary +(assert_invalid (module (func (i32.add (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.and (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.or (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.add (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.and (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.div_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.div_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.mul (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.or (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.rem_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.rem_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.rotl (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.rotr (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.shl (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.shr_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.shr_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.sub (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.xor (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.add (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.copysign (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.div (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.max (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.min (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.mul (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.sub (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.add (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.copysign (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.div (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.max (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.min (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.mul (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.sub (i64.const 0) (f32.const 0)))) "type mismatch") + +;; unary +(assert_invalid (module (func (i32.eqz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.clz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.ctz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.popcnt (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.eqz (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.clz (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.ctz (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.popcnt (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.abs (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.ceil (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.floor (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.nearest (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.neg (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.sqrt (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.trunc (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.abs (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.ceil (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.floor (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.nearest (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.neg (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.sqrt (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.trunc (i64.const 0)))) "type mismatch") + +;; compare +(assert_invalid (module (func (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.eq (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.ge_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.ge_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.gt_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.gt_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.le_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.le_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.lt_s (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.lt_u (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.ne (i32.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.eq (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.ge (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.gt (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.le (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.lt (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.ne (i64.const 0) (f64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.eq (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.ge (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.gt (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.le (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.lt (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.ne (i64.const 0) (f32.const 0)))) "type mismatch") + +;; convert +(assert_invalid (module (func (i32.wrap/i64 (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.trunc_s/f32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.trunc_u/f32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.trunc_s/f64 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.trunc_u/f64 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i32.reinterpret/f32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.extend_s/i32 (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.extend_u/i32 (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.trunc_s/f32 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.trunc_u/f32 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.trunc_s/f64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.trunc_u/f64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (i64.reinterpret/f64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.convert_s/i32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.convert_u/i32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.convert_s/i64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.convert_u/i64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.demote/f64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f32.reinterpret/i32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.convert_s/i32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.convert_u/i32 (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.convert_s/i64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.convert_u/i64 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.promote/f32 (i32.const 0)))) "type mismatch") +(assert_invalid (module (func (f64.reinterpret/i64 (i32.const 0)))) "type mismatch") + +;; grow_memory +(assert_invalid (module (memory 1) (func (grow_memory (f32.const 0)))) "type mismatch") diff --git a/test/WasmSpec/testsuite/unreachable.wast b/test/WasmSpec/testsuite/unreachable.wast new file mode 100644 index 00000000000..389dc8aec2f --- /dev/null +++ b/test/WasmSpec/testsuite/unreachable.wast @@ -0,0 +1,262 @@ +;; Test `unreachable` operator + +(module + ;; Auxiliary definitions + (func $dummy) + (func $dummy3 (param i32 i32 i32)) + + (func (export "type-i32") (result i32) (unreachable)) + (func (export "type-i64") (result i32) (unreachable)) + (func (export "type-f32") (result f64) (unreachable)) + (func (export "type-f64") (result f64) (unreachable)) + + (func (export "as-func-first") (result i32) + (unreachable) (i32.const -1) + ) + (func (export "as-func-mid") (result i32) + (call $dummy) (unreachable) (i32.const -1) + ) + (func (export "as-func-last") + (call $dummy) (unreachable) + ) + (func (export "as-func-value") (result i32) + (call $dummy) (unreachable) + ) + + (func (export "as-block-first") (result i32) + (block i32 (unreachable) (i32.const 2)) + ) + (func (export "as-block-mid") (result i32) + (block i32 (call $dummy) (unreachable) (i32.const 2)) + ) + (func (export "as-block-last") + (block (nop) (call $dummy) (unreachable)) + ) + (func (export "as-block-value") (result i32) + (block i32 (nop) (call $dummy) (unreachable)) + ) + (func (export "as-block-broke") (result i32) + (block i32 (call $dummy) (br 0 (i32.const 1)) (unreachable)) + ) + + (func (export "as-loop-first") (result i32) + (loop i32 (unreachable) (i32.const 2)) + ) + (func (export "as-loop-mid") (result i32) + (loop i32 (call $dummy) (unreachable) (i32.const 2)) + ) + (func (export "as-loop-last") + (loop (nop) (call $dummy) (unreachable)) + ) + (func (export "as-loop-broke") (result i32) + (block i32 (loop i32 (call $dummy) (br 1 (i32.const 1)) (unreachable))) + ) + + (func (export "as-br-value") (result i32) + (block i32 (br 0 (unreachable))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (unreachable))) + ) + (func (export "as-br_if-value") (result i32) + (block i32 (br_if 0 (unreachable) (i32.const 1)) (i32.const 7)) + ) + (func (export "as-br_if-value-cond") (result i32) + (block i32 (drop (br_if 0 (i32.const 6) (unreachable))) (i32.const 7)) + ) + + (func (export "as-br_table-index") + (block (br_table 0 0 0 (unreachable))) + ) + (func (export "as-br_table-value") (result i32) + (block i32 (br_table 0 0 0 (unreachable) (i32.const 1)) (i32.const 7)) + ) + (func (export "as-br_table-value-index") (result i32) + (block i32 (br_table 0 0 (i32.const 6) (unreachable)) (i32.const 7)) + ) + + (func (export "as-return-value") (result i64) + (return (unreachable)) + ) + + (func (export "as-if-cond") (result i32) + (if (unreachable) (i32.const 0) (i32.const 1)) + ) + (func (export "as-if-then") (param i32 i32) (result i32) + (if i32 (get_local 0) (unreachable) (get_local 1)) + ) + (func (export "as-if-else") (param i32 i32) (result i32) + (if i32 (get_local 0) (get_local 1) (unreachable)) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (select (unreachable) (get_local 0) (get_local 1)) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (select (get_local 0) (unreachable) (get_local 1)) + ) + (func (export "as-select-cond") (result i32) + (select (i32.const 0) (i32.const 1) (unreachable)) + ) + + (func (export "as-call-first") + (call $dummy3 (unreachable) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call-mid") + (call $dummy3 (i32.const 1) (unreachable) (i32.const 3)) + ) + (func (export "as-call-last") + (call $dummy3 (i32.const 1) (i32.const 2) (unreachable)) + ) + + (type $sig (func (param i32 i32 i32))) + (table anyfunc (elem $dummy3)) + (func (export "as-call_indirect-func") + (call_indirect $sig (unreachable) (i32.const 1) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call_indirect-first") + (call_indirect $sig (i32.const 0) (unreachable) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call_indirect-mid") + (call_indirect $sig (i32.const 0) (i32.const 1) (unreachable) (i32.const 3)) + ) + (func (export "as-call_indirect-last") + (call_indirect $sig (i32.const 0) (i32.const 1) (i32.const 2) (unreachable)) + ) + + (func (export "as-set_local-value") (local f32) + (set_local 0 (unreachable)) + ) + + (memory 1) + (func (export "as-load-address") (result f32) + (f32.load (unreachable)) + ) + (func (export "as-loadN-address") (result i64) + (i64.load8_s (unreachable)) + ) + + (func (export "as-store-address") + (f64.store (unreachable) (f64.const 7)) + ) + (func (export "as-store-value") + (i64.store (i32.const 2) (unreachable)) + ) + + (func (export "as-storeN-address") + (i32.store8 (unreachable) (i32.const 7)) + ) + (func (export "as-storeN-value") + (i64.store16 (i32.const 2) (unreachable)) + ) + + (func (export "as-unary-operand") (result f32) + (f32.neg (unreachable)) + ) + + (func (export "as-binary-left") (result i32) + (i32.add (unreachable) (i32.const 10)) + ) + (func (export "as-binary-right") (result i64) + (i64.sub (i64.const 10) (unreachable)) + ) + + (func (export "as-test-operand") (result i32) + (i32.eqz (unreachable)) + ) + + (func (export "as-compare-left") (result i32) + (f64.le (unreachable) (f64.const 10)) + ) + (func (export "as-compare-right") (result i32) + (f32.ne (f32.const 10) (unreachable)) + ) + + (func (export "as-convert-operand") (result i32) + (i32.wrap/i64 (unreachable)) + ) + + (func (export "as-grow_memory-size") (result i32) + (grow_memory (unreachable)) + ) +) + +(assert_trap (invoke "type-i32") "unreachable") +(assert_trap (invoke "type-i64") "unreachable") +(assert_trap (invoke "type-f32") "unreachable") +(assert_trap (invoke "type-f64") "unreachable") + +(assert_trap (invoke "as-func-first") "unreachable") +(assert_trap (invoke "as-func-mid") "unreachable") +(assert_trap (invoke "as-func-last") "unreachable") +(assert_trap (invoke "as-func-value") "unreachable") + +(assert_trap (invoke "as-block-first") "unreachable") +(assert_trap (invoke "as-block-mid") "unreachable") +(assert_trap (invoke "as-block-last") "unreachable") +(assert_trap (invoke "as-block-value") "unreachable") +(assert_return (invoke "as-block-broke") (i32.const 1)) + +(assert_trap (invoke "as-loop-first") "unreachable") +(assert_trap (invoke "as-loop-mid") "unreachable") +(assert_trap (invoke "as-loop-last") "unreachable") +(assert_return (invoke "as-loop-broke") (i32.const 1)) + +(assert_trap (invoke "as-br-value") "unreachable") + +(assert_trap (invoke "as-br_if-cond") "unreachable") +(assert_trap (invoke "as-br_if-value") "unreachable") +(assert_trap (invoke "as-br_if-value-cond") "unreachable") + +(assert_trap (invoke "as-br_table-index") "unreachable") +(assert_trap (invoke "as-br_table-value") "unreachable") +(assert_trap (invoke "as-br_table-value-index") "unreachable") + +(assert_trap (invoke "as-return-value") "unreachable") + +(assert_trap (invoke "as-if-cond") "unreachable") +(assert_trap (invoke "as-if-then" (i32.const 1) (i32.const 6)) "unreachable") +(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 6)) (i32.const 6)) +(assert_trap (invoke "as-if-else" (i32.const 0) (i32.const 6)) "unreachable") +(assert_return (invoke "as-if-else" (i32.const 1) (i32.const 6)) (i32.const 6)) + +(assert_trap (invoke "as-select-first" (i32.const 0) (i32.const 6)) "unreachable") +(assert_trap (invoke "as-select-first" (i32.const 1) (i32.const 6)) "unreachable") +(assert_trap (invoke "as-select-second" (i32.const 0) (i32.const 6)) "unreachable") +(assert_trap (invoke "as-select-second" (i32.const 1) (i32.const 6)) "unreachable") +(assert_trap (invoke "as-select-cond") "unreachable") + +(assert_trap (invoke "as-call-first") "unreachable") +(assert_trap (invoke "as-call-mid") "unreachable") +(assert_trap (invoke "as-call-last") "unreachable") + +(assert_trap (invoke "as-call_indirect-func") "unreachable") +(assert_trap (invoke "as-call_indirect-first") "unreachable") +(assert_trap (invoke "as-call_indirect-mid") "unreachable") +(assert_trap (invoke "as-call_indirect-last") "unreachable") + +(assert_trap (invoke "as-set_local-value") "unreachable") + +(assert_trap (invoke "as-load-address") "unreachable") +(assert_trap (invoke "as-loadN-address") "unreachable") + +(assert_trap (invoke "as-store-address") "unreachable") +(assert_trap (invoke "as-store-value") "unreachable") +(assert_trap (invoke "as-storeN-address") "unreachable") +(assert_trap (invoke "as-storeN-value") "unreachable") + +(assert_trap (invoke "as-unary-operand") "unreachable") + +(assert_trap (invoke "as-binary-left") "unreachable") +(assert_trap (invoke "as-binary-right") "unreachable") + +(assert_trap (invoke "as-test-operand") "unreachable") + +(assert_trap (invoke "as-compare-left") "unreachable") +(assert_trap (invoke "as-compare-right") "unreachable") + +(assert_trap (invoke "as-convert-operand") "unreachable") + +(assert_trap (invoke "as-grow_memory-size") "unreachable") + diff --git a/test/WasmSpec/testsuite/unwind.wast b/test/WasmSpec/testsuite/unwind.wast new file mode 100644 index 00000000000..8db16c75bdd --- /dev/null +++ b/test/WasmSpec/testsuite/unwind.wast @@ -0,0 +1,167 @@ +;; Test that control-flow transfer unwinds stack and it can be anything after. + +(module + (func (export "block-unwind-by-unreachable") + (block (i32.const 3) (i64.const 1) (unreachable)) + ) + (func (export "block-unwind-by-br") (result i32) + (block (i32.const 3) (i64.const 1) (br 0)) (i32.const 9) + ) + (func (export "block-unwind-by-br-value") (result i32) + (block i32 (i32.const 3) (i64.const 1) (br 0 (i32.const 9))) + ) + (func (export "block-unwind-by-br_table") (result i32) + (block (i32.const 3) (i64.const 1) (br_table 0 (i32.const 0))) (i32.const 9) + ) + (func (export "block-unwind-by-br_table-value") (result i32) + (block i32 + (i32.const 3) (i64.const 1) (br_table 0 (i32.const 9) (i32.const 0)) + ) + ) + (func (export "block-unwind-by-return") (result i32) + (block i32 (i32.const 3) (i64.const 1) (return (i32.const 9))) + ) + + (func (export "block-nested-unwind-by-unreachable") (result i32) + (block i32 (i32.const 3) (block (i64.const 1) (unreachable))) + ) + (func (export "block-nested-unwind-by-br") (result i32) + (block (i32.const 3) (block (i64.const 1) (br 1)) (drop)) (i32.const 9) + ) + (func (export "block-nested-unwind-by-br-value") (result i32) + (block i32 (i32.const 3) (block (i64.const 1) (br 1 (i32.const 9)))) + ) + (func (export "block-nested-unwind-by-br_table") (result i32) + (block + (i32.const 3) (block (i64.const 1) (br_table 1 (i32.const 1))) + (drop) + ) + (i32.const 9) + ) + (func (export "block-nested-unwind-by-br_table-value") (result i32) + (block i32 + (i32.const 3) + (block (i64.const 1) (br_table 1 (i32.const 9) (i32.const 1))) + ) + ) + (func (export "block-nested-unwind-by-return") (result i32) + (block i32 (i32.const 3) (block (i64.const 1) (return (i32.const 9)))) + ) + + (func (export "unary-after-unreachable") (result i32) + (f32.const 0) (unreachable) (i64.eqz) + ) + (func (export "unary-after-br") (result i32) + (block i32 (f32.const 0) (br 0 (i32.const 9)) (i64.eqz)) + ) + (func (export "unary-after-br_table") (result i32) + (block i32 + (f32.const 0) (br_table 0 0 (i32.const 9) (i32.const 0)) (i64.eqz) + ) + ) + (func (export "unary-after-return") (result i32) + (f32.const 0) (return (i32.const 9)) (i64.eqz) + ) + + (func (export "binary-after-unreachable") (result i32) + (f32.const 0) (f64.const 1) (unreachable) (i64.eq) + ) + (func (export "binary-after-br") (result i32) + (block i32 (f32.const 0) (f64.const 1) (br 0 (i32.const 9)) (i64.eq)) + ) + (func (export "binary-after-br_table") (result i32) + (block i32 + (f32.const 0) (f64.const 1) (br_table 0 (i32.const 9) (i32.const 0)) + (i64.eq) + ) + ) + (func (export "binary-after-return") (result i32) + (f32.const 0) (f64.const 1) (return (i32.const 9)) (i64.eq) + ) + + (func (export "select-after-unreachable") (result i32) + (f32.const 0) (f64.const 1) (i64.const 0) (unreachable) (select) + ) + (func (export "select-after-br") (result i32) + (block i32 + (f32.const 0) (f64.const 1) (i64.const 0) (br 0 (i32.const 9)) (select) + ) + ) + (func (export "select-after-br_table") (result i32) + (block i32 + (f32.const 0) (f64.const 1) (i64.const 0) + (br_table 0 (i32.const 9) (i32.const 0)) + (select) + ) + ) + (func (export "select-after-return") (result i32) + (f32.const 0) (f64.const 1) (i64.const 1) (return (i32.const 9)) (select) + ) + + (func (export "block-value-after-unreachable") (result i32) + (block i32 (f32.const 0) (unreachable)) + ) + (func (export "block-value-after-br") (result i32) + (block i32 (f32.const 0) (br 0 (i32.const 9))) + ) + (func (export "block-value-after-br_table") (result i32) + (block i32 (f32.const 0) (br_table 0 0 (i32.const 9) (i32.const 0))) + ) + (func (export "block-value-after-return") (result i32) + (block i32 (f32.const 0) (return (i32.const 9))) + ) + + (func (export "loop-value-after-unreachable") (result i32) + (loop i32 (f32.const 0) (unreachable)) + ) + (func (export "loop-value-after-br") (result i32) + (block i32 (loop i32 (f32.const 0) (br 1 (i32.const 9)))) + ) + (func (export "loop-value-after-br_table") (result i32) + (block i32 + (loop i32 (f32.const 0) (br_table 1 1 (i32.const 9) (i32.const 0))) + ) + ) + (func (export "loop-value-after-return") (result i32) + (loop i32 (f32.const 0) (return (i32.const 9))) + ) +) + +(assert_trap (invoke "block-unwind-by-unreachable") "unreachable") +(assert_return (invoke "block-unwind-by-br") (i32.const 9)) +(assert_return (invoke "block-unwind-by-br-value") (i32.const 9)) +(assert_return (invoke "block-unwind-by-br_table") (i32.const 9)) +(assert_return (invoke "block-unwind-by-br_table-value") (i32.const 9)) +(assert_return (invoke "block-unwind-by-return") (i32.const 9)) + +(assert_trap (invoke "block-nested-unwind-by-unreachable") "unreachable") +(assert_return (invoke "block-nested-unwind-by-br") (i32.const 9)) +(assert_return (invoke "block-nested-unwind-by-br-value") (i32.const 9)) +(assert_return (invoke "block-nested-unwind-by-br_table") (i32.const 9)) +(assert_return (invoke "block-nested-unwind-by-br_table-value") (i32.const 9)) +(assert_return (invoke "block-nested-unwind-by-return") (i32.const 9)) + +(assert_trap (invoke "unary-after-unreachable") "unreachable") +(assert_return (invoke "unary-after-br") (i32.const 9)) +(assert_return (invoke "unary-after-br_table") (i32.const 9)) +(assert_return (invoke "unary-after-return") (i32.const 9)) + +(assert_trap (invoke "binary-after-unreachable") "unreachable") +(assert_return (invoke "binary-after-br") (i32.const 9)) +(assert_return (invoke "binary-after-br_table") (i32.const 9)) +(assert_return (invoke "binary-after-return") (i32.const 9)) + +(assert_trap (invoke "select-after-unreachable") "unreachable") +(assert_return (invoke "select-after-br") (i32.const 9)) +(assert_return (invoke "select-after-br_table") (i32.const 9)) +(assert_return (invoke "select-after-return") (i32.const 9)) + +(assert_trap (invoke "block-value-after-unreachable") "unreachable") +(assert_return (invoke "block-value-after-br") (i32.const 9)) +(assert_return (invoke "block-value-after-br_table") (i32.const 9)) +(assert_return (invoke "block-value-after-return") (i32.const 9)) + +(assert_trap (invoke "loop-value-after-unreachable") "unreachable") +(assert_return (invoke "loop-value-after-br") (i32.const 9)) +(assert_return (invoke "loop-value-after-br_table") (i32.const 9)) +(assert_return (invoke "loop-value-after-return") (i32.const 9)) diff --git a/test/es5/es5array_objproto_builtin.js b/test/es5/es5array_objproto_builtin.js new file mode 100644 index 00000000000..4a4bed910a0 --- /dev/null +++ b/test/es5/es5array_objproto_builtin.js @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +var ary = Array(1); +ary.prop = "Got array property. Failed"; +Object.prototype.prop = "pass"; +Array.prototype.prop = "Got array prototype. Failed"; +Object.defineProperty(Object.prototype, 0, { + get: function () { + print(this.prop); + return 3; + } +}); +ary.slice(); + diff --git a/test/es5/rlexe.xml b/test/es5/rlexe.xml index 51d7fbd6c81..6af2c48aabe 100644 --- a/test/es5/rlexe.xml +++ b/test/es5/rlexe.xml @@ -284,6 +284,11 @@ es5array_objproto.baseline + + + es5array_objproto_builtin.js + + es5array_arrayproto.js diff --git a/test/es6/rlexe.xml b/test/es6/rlexe.xml index 01c349cd2e4..8c20d2cbccb 100644 --- a/test/es6/rlexe.xml +++ b/test/es6/rlexe.xml @@ -488,7 +488,7 @@ es6_stable.js - -verbose -es6 -ES6DefaultArgs -enableoutofprocjit- -WERExceptionSupport + -verbose -es6 -ES6DefaultArgs -oopjit- -WERExceptionSupport es6_stable.baseline exclude_dynapogo @@ -497,7 +497,7 @@ es6_stable.js - -verbose -es6 -es6- -ES6DefaultArgs -enableoutofprocjit- -WERExceptionSupport + -verbose -es6 -es6- -ES6DefaultArgs -oopjit- -WERExceptionSupport es6_stable.enable_disable.baseline exclude_dynapogo @@ -506,7 +506,7 @@ es6_all.js - -verbose -es6all -enableoutofprocjit- -WERExceptionSupport + -verbose -es6all -oopjit- -WERExceptionSupport es6_all.baseline exclude_dynapogo diff --git a/test/es6/spread.js b/test/es6/spread.js index 9c079ee0cc0..40de318c179 100644 --- a/test/es6/spread.js +++ b/test/es6/spread.js @@ -231,6 +231,8 @@ var tests = [ assert.throws(function() { eval('a(...x)--'); }, ReferenceError, "Spread with CallIPut throws a ReferenceError"); } }, +/* + A fix for an unsafe optimization makes this portion of the test time out. { name: "BLUE 596934, 597412: Incorrect spread argument length handling", body: function () { @@ -247,6 +249,25 @@ var tests = [ assert.throws(function () { a(...new Array(3), ...new Array(1 << 32 - 2)); }, RangeError, "Total spread size greater than max call arg count throws RangeError"); } }, +*/ + { + name: "MSRC 34309: Guard against getter in prototype", + body: function () { + var x = [0x40]; + x.length = 0x9; + + Object.defineProperty(Array.prototype, 1, { + get: function() { + x.length = 0; + } + }); + + var f = function(){ + assert.areEqual(arguments.length, 2, "Changing length of x during spreading should truncate the spread."); + } + f(...x); + } + }, { name: "BLUE 611774: Spread with a prefix operator is allowed anywhere", body: function () { diff --git a/test/rlexedirs.xml b/test/rlexedirs.xml index 05911822091..51a342cbf57 100644 --- a/test/rlexedirs.xml +++ b/test/rlexedirs.xml @@ -371,6 +371,19 @@ exclude_serialized,exclude_arm,exclude_arm64,require_backend + + + WasmSpec + exclude_serialized,exclude_arm,exclude_arm64,require_backend,exclude_xplat + + + + + wasm + exclude_serialized,exclude_arm,exclude_arm64,require_backend,exclude_xplat + exclude_arm,exclude_arm64 + + Debugger diff --git a/test/typedarray/crossthread_es6.baseline b/test/typedarray/crossthread_es6.baseline index 2824f1302cc..14091c16ab0 100644 --- a/test/typedarray/crossthread_es6.baseline +++ b/test/typedarray/crossthread_es6.baseline @@ -1,7 +1,7 @@ testing file dataview.js test one value 0 set little endian value offset 0 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10,7 +10,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20,7 +20,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -29,7 +29,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -39,7 +39,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -48,7 +48,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -58,7 +58,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -67,7 +67,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -77,7 +77,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -86,7 +86,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -96,7 +96,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -105,7 +105,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -115,7 +115,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -124,7 +124,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -134,7 +134,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -143,7 +143,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -153,7 +153,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -162,7 +162,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -172,7 +172,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -181,7 +181,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -191,7 +191,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -200,7 +200,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -210,7 +210,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -219,7 +219,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -229,7 +229,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -238,7 +238,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -248,7 +248,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -257,7 +257,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -267,7 +267,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -276,7 +276,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -286,7 +286,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 0 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -295,7 +295,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -305,7 +305,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -314,7 +314,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -324,7 +324,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -333,7 +333,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -343,7 +343,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -352,7 +352,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -362,7 +362,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -371,7 +371,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -381,7 +381,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -390,7 +390,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -400,7 +400,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -409,7 +409,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -419,7 +419,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -428,7 +428,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -438,7 +438,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -447,7 +447,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -457,7 +457,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -466,7 +466,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -476,7 +476,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -485,7 +485,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -495,7 +495,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -504,7 +504,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -514,7 +514,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -523,7 +523,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -533,7 +533,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -542,7 +542,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -552,7 +552,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -561,7 +561,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -571,7 +571,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -580,7 +580,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -590,7 +590,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 1 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -599,7 +599,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -609,7 +609,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -618,7 +618,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -628,7 +628,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -637,7 +637,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -647,7 +647,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -656,7 +656,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -666,7 +666,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -675,7 +675,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -685,7 +685,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -694,7 +694,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -704,7 +704,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -713,7 +713,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -723,7 +723,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -732,7 +732,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -742,7 +742,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -751,7 +751,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -761,7 +761,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -770,7 +770,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -780,7 +780,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -789,7 +789,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -799,7 +799,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -808,7 +808,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -818,7 +818,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -827,7 +827,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -837,7 +837,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -846,7 +846,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -856,7 +856,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -865,7 +865,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -875,7 +875,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -884,7 +884,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -894,7 +894,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 2 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -903,7 +903,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -913,7 +913,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -922,7 +922,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -932,7 +932,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -941,7 +941,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -951,7 +951,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -960,7 +960,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -970,7 +970,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -979,7 +979,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -989,7 +989,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -998,7 +998,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1008,7 +1008,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1017,7 +1017,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1027,7 +1027,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1036,7 +1036,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1046,7 +1046,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1055,7 +1055,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1065,7 +1065,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1074,7 +1074,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1084,7 +1084,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1093,7 +1093,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1103,7 +1103,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1112,7 +1112,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1122,7 +1122,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1131,7 +1131,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1141,7 +1141,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1150,7 +1150,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1160,7 +1160,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1169,7 +1169,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1179,7 +1179,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1188,7 +1188,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1198,7 +1198,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 3 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1207,7 +1207,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1217,7 +1217,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1226,7 +1226,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1236,7 +1236,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1245,7 +1245,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1255,7 +1255,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1264,7 +1264,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1274,7 +1274,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1283,7 +1283,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1293,7 +1293,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1302,7 +1302,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1312,7 +1312,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1321,7 +1321,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1331,7 +1331,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1340,7 +1340,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1350,7 +1350,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1359,7 +1359,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1369,7 +1369,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1378,7 +1378,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1388,7 +1388,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1397,7 +1397,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1407,7 +1407,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1416,7 +1416,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1426,7 +1426,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1435,7 +1435,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1445,7 +1445,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1454,7 +1454,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1464,7 +1464,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1473,7 +1473,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1483,7 +1483,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1492,7 +1492,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1502,7 +1502,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 4 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1511,7 +1511,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1521,7 +1521,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1530,7 +1530,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1540,7 +1540,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1549,7 +1549,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1559,7 +1559,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1568,7 +1568,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1578,7 +1578,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1587,7 +1587,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1597,7 +1597,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1606,7 +1606,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1616,7 +1616,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1625,7 +1625,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1635,7 +1635,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1644,7 +1644,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1654,7 +1654,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1663,7 +1663,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1673,7 +1673,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1682,7 +1682,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1692,7 +1692,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1701,7 +1701,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1711,7 +1711,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1720,7 +1720,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1730,7 +1730,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1739,7 +1739,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1749,7 +1749,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1758,7 +1758,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1768,7 +1768,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1777,7 +1777,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1787,7 +1787,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1796,7 +1796,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1806,7 +1806,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 5 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1815,7 +1815,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1825,7 +1825,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1834,7 +1834,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1844,7 +1844,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1853,7 +1853,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1863,7 +1863,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1872,7 +1872,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1882,7 +1882,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1891,7 +1891,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1901,7 +1901,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1910,7 +1910,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1920,7 +1920,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1929,7 +1929,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1939,7 +1939,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1948,7 +1948,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1958,7 +1958,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1967,7 +1967,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1977,7 +1977,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1986,7 +1986,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -1996,7 +1996,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2005,7 +2005,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2015,7 +2015,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2024,7 +2024,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2034,7 +2034,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2043,7 +2043,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2053,7 +2053,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2062,7 +2062,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2072,7 +2072,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2081,7 +2081,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2091,7 +2091,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2100,7 +2100,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2110,7 +2110,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 6 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2119,7 +2119,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2129,7 +2129,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2138,7 +2138,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2148,7 +2148,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2157,7 +2157,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2167,7 +2167,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2176,7 +2176,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2186,7 +2186,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2195,7 +2195,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2205,7 +2205,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2214,7 +2214,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2224,7 +2224,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2233,7 +2233,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2243,7 +2243,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2252,7 +2252,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2262,7 +2262,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2271,7 +2271,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2281,7 +2281,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2290,7 +2290,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2300,7 +2300,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2309,7 +2309,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2319,7 +2319,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2328,7 +2328,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2338,7 +2338,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2347,7 +2347,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2357,7 +2357,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2366,7 +2366,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2376,7 +2376,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2385,7 +2385,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2395,7 +2395,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2404,7 +2404,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2414,7 +2414,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 7 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2423,7 +2423,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2433,7 +2433,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2442,7 +2442,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2452,7 +2452,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2461,7 +2461,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2471,7 +2471,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2480,7 +2480,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2490,7 +2490,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2499,7 +2499,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2509,7 +2509,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2518,7 +2518,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2528,7 +2528,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2537,7 +2537,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2547,7 +2547,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2556,7 +2556,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2566,7 +2566,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2575,7 +2575,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2585,7 +2585,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2594,7 +2594,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2604,7 +2604,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2613,7 +2613,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2623,7 +2623,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2632,7 +2632,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2642,7 +2642,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2651,7 +2651,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2661,7 +2661,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2670,7 +2670,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2680,7 +2680,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2689,7 +2689,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2699,7 +2699,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2708,7 +2708,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2718,7 +2718,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 8 value 0 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2727,7 +2727,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 0 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2737,7 +2737,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 0 set little endian value offset 9 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2746,7 +2746,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2756,7 +2756,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2765,7 +2765,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2775,7 +2775,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2784,7 +2784,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2794,7 +2794,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2803,7 +2803,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2813,7 +2813,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2822,7 +2822,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2832,7 +2832,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2841,7 +2841,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2851,7 +2851,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2860,7 +2860,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2870,7 +2870,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2879,7 +2879,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2889,7 +2889,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2898,7 +2898,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2908,7 +2908,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2917,7 +2917,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2927,7 +2927,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2936,7 +2936,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2946,7 +2946,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2955,7 +2955,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2965,7 +2965,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2974,7 +2974,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2984,7 +2984,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 9 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -2993,7 +2993,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3004,7 +3004,7 @@ getFloat32 = 0 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 10 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3013,7 +3013,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3023,7 +3023,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3032,7 +3032,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3042,7 +3042,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3051,7 +3051,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3061,7 +3061,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3070,7 +3070,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3080,7 +3080,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3089,7 +3089,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3099,7 +3099,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3108,7 +3108,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3118,7 +3118,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3127,7 +3127,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3137,7 +3137,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3146,7 +3146,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3156,7 +3156,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3165,7 +3165,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3175,7 +3175,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3184,7 +3184,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3194,7 +3194,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3203,7 +3203,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3213,7 +3213,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3222,7 +3222,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3232,7 +3232,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3241,7 +3241,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3251,7 +3251,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 10 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3260,7 +3260,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3271,7 +3271,7 @@ getFloat32 = 0 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 11 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3280,7 +3280,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3290,7 +3290,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3299,7 +3299,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3309,7 +3309,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3318,7 +3318,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3328,7 +3328,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3337,7 +3337,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3347,7 +3347,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3356,7 +3356,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3366,7 +3366,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3375,7 +3375,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3385,7 +3385,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3394,7 +3394,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3404,7 +3404,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3413,7 +3413,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3423,7 +3423,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3432,7 +3432,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3442,7 +3442,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3451,7 +3451,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3461,7 +3461,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3470,7 +3470,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3480,7 +3480,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3489,7 +3489,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3499,7 +3499,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3508,7 +3508,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3518,7 +3518,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 11 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3527,7 +3527,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3538,7 +3538,7 @@ getFloat32 = 0 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 12 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3547,7 +3547,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3557,7 +3557,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3566,7 +3566,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3576,7 +3576,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3585,7 +3585,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3595,7 +3595,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3604,7 +3604,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3614,7 +3614,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3623,7 +3623,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3633,7 +3633,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3642,7 +3642,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3652,7 +3652,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3661,7 +3661,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3671,7 +3671,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3680,7 +3680,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3690,7 +3690,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3699,7 +3699,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3709,7 +3709,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3718,7 +3718,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3728,7 +3728,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3737,7 +3737,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3747,7 +3747,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3756,7 +3756,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3766,7 +3766,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3775,7 +3775,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3785,7 +3785,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = undefined set little endian value offset 12 value 0 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3794,7 +3794,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3805,7 +3805,7 @@ getFloat32 = 0 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 13 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3814,7 +3814,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3824,7 +3824,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3833,7 +3833,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3843,7 +3843,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3852,7 +3852,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3862,7 +3862,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3871,7 +3871,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3881,7 +3881,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3890,7 +3890,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3900,7 +3900,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3909,7 +3909,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3919,7 +3919,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3928,7 +3928,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3938,7 +3938,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3947,7 +3947,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3961,7 +3961,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 14 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3970,7 +3970,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3980,7 +3980,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3989,7 +3989,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -3999,7 +3999,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4008,7 +4008,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4018,7 +4018,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4027,7 +4027,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4037,7 +4037,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4046,7 +4046,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4056,7 +4056,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4065,7 +4065,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4075,7 +4075,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4084,7 +4084,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4094,7 +4094,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 0 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4103,7 +4103,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4117,7 +4117,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 15 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4126,7 +4126,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4136,7 +4136,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 0 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4145,7 +4145,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4155,7 +4155,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4164,7 +4164,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4174,7 +4174,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 0 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4183,7 +4183,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = undefined @@ -4200,7 +4200,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length test one value 1 set little endian value offset 0 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4209,7 +4209,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4219,7 +4219,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4228,7 +4228,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4238,7 +4238,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4247,7 +4247,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4257,7 +4257,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4266,7 +4266,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4276,7 +4276,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4285,7 +4285,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4295,7 +4295,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4304,7 +4304,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4314,7 +4314,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 0 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4323,7 +4323,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4333,7 +4333,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4342,7 +4342,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4352,7 +4352,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 0 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4361,7 +4361,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4371,7 +4371,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4380,7 +4380,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4390,7 +4390,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 0 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4399,7 +4399,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4409,7 +4409,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 0 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4418,7 +4418,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4428,7 +4428,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 0 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4437,7 +4437,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4447,7 +4447,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 0 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -4456,7 +4456,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -4466,7 +4466,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 0 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4475,7 +4475,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4485,7 +4485,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 0 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -4494,7 +4494,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -4504,7 +4504,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 1 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4513,7 +4513,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4523,7 +4523,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4532,7 +4532,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4542,7 +4542,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4551,7 +4551,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4561,7 +4561,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4570,7 +4570,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4580,7 +4580,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4589,7 +4589,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4599,7 +4599,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4608,7 +4608,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4618,7 +4618,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 1 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4627,7 +4627,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4637,7 +4637,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4646,7 +4646,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4656,7 +4656,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 1 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4665,7 +4665,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4675,7 +4675,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4684,7 +4684,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4694,7 +4694,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 1 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4703,7 +4703,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4713,7 +4713,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 1 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4722,7 +4722,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4732,7 +4732,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 1 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4741,7 +4741,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4751,7 +4751,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 1 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -4760,7 +4760,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -4770,7 +4770,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 1 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4779,7 +4779,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4789,7 +4789,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 1 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -4798,7 +4798,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -4808,7 +4808,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 2 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4817,7 +4817,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4827,7 +4827,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4836,7 +4836,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4846,7 +4846,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4855,7 +4855,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4865,7 +4865,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4874,7 +4874,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4884,7 +4884,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4893,7 +4893,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4903,7 +4903,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4912,7 +4912,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4922,7 +4922,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 2 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4931,7 +4931,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4941,7 +4941,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -4950,7 +4950,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -4960,7 +4960,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 2 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -4969,7 +4969,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -4979,7 +4979,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4988,7 +4988,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -4998,7 +4998,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 2 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5007,7 +5007,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5017,7 +5017,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 2 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5026,7 +5026,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5036,7 +5036,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 2 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5045,7 +5045,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5055,7 +5055,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 2 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -5064,7 +5064,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -5074,7 +5074,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 2 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5083,7 +5083,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5093,7 +5093,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 2 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -5102,7 +5102,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -5112,7 +5112,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 3 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5121,7 +5121,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5131,7 +5131,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5140,7 +5140,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5150,7 +5150,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5159,7 +5159,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5169,7 +5169,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5178,7 +5178,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5188,7 +5188,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5197,7 +5197,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5207,7 +5207,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5216,7 +5216,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5226,7 +5226,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 3 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5235,7 +5235,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5245,7 +5245,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5254,7 +5254,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5264,7 +5264,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 3 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5273,7 +5273,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5283,7 +5283,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5292,7 +5292,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5302,7 +5302,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 3 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5311,7 +5311,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5321,7 +5321,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 3 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5330,7 +5330,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5340,7 +5340,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 3 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5349,7 +5349,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5359,7 +5359,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 3 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -5368,7 +5368,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -5378,7 +5378,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 3 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5387,7 +5387,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5397,7 +5397,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 3 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -5406,7 +5406,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -5416,7 +5416,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 4 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5425,7 +5425,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5435,7 +5435,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5444,7 +5444,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5454,7 +5454,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5463,7 +5463,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5473,7 +5473,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5482,7 +5482,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5492,7 +5492,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5501,7 +5501,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5511,7 +5511,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5520,7 +5520,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5530,7 +5530,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 4 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5539,7 +5539,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5549,7 +5549,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5558,7 +5558,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5568,7 +5568,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 4 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5577,7 +5577,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5587,7 +5587,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5596,7 +5596,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5606,7 +5606,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 4 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5615,7 +5615,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5625,7 +5625,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 4 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5634,7 +5634,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5644,7 +5644,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 4 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5653,7 +5653,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5663,7 +5663,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 4 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -5672,7 +5672,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -5682,7 +5682,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 4 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5691,7 +5691,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5701,7 +5701,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 4 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -5710,7 +5710,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -5720,7 +5720,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 5 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5729,7 +5729,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5739,7 +5739,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5748,7 +5748,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5758,7 +5758,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5767,7 +5767,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5777,7 +5777,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5786,7 +5786,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5796,7 +5796,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5805,7 +5805,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5815,7 +5815,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5824,7 +5824,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5834,7 +5834,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 5 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5843,7 +5843,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5853,7 +5853,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -5862,7 +5862,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -5872,7 +5872,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 5 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5881,7 +5881,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5891,7 +5891,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5900,7 +5900,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5910,7 +5910,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 5 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -5919,7 +5919,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -5929,7 +5929,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 5 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5938,7 +5938,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5948,7 +5948,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 5 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5957,7 +5957,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5967,7 +5967,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 5 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -5976,7 +5976,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -5986,7 +5986,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 5 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -5995,7 +5995,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6005,7 +6005,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 5 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -6014,7 +6014,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -6024,7 +6024,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 6 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6033,7 +6033,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6043,7 +6043,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6052,7 +6052,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6062,7 +6062,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6071,7 +6071,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6081,7 +6081,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6090,7 +6090,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6100,7 +6100,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6109,7 +6109,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6119,7 +6119,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6128,7 +6128,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6138,7 +6138,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 6 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6147,7 +6147,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6157,7 +6157,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6166,7 +6166,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6176,7 +6176,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 6 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6185,7 +6185,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6195,7 +6195,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6204,7 +6204,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6214,7 +6214,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 6 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6223,7 +6223,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6233,7 +6233,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 6 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6242,7 +6242,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6252,7 +6252,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 6 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6261,7 +6261,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6271,7 +6271,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 6 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -6280,7 +6280,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -6290,7 +6290,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 6 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6299,7 +6299,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6309,7 +6309,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 6 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -6318,7 +6318,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -6328,7 +6328,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 7 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6337,7 +6337,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6347,7 +6347,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6356,7 +6356,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6366,7 +6366,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6375,7 +6375,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6385,7 +6385,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6394,7 +6394,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6404,7 +6404,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6413,7 +6413,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6423,7 +6423,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6432,7 +6432,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6442,7 +6442,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 7 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6451,7 +6451,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6461,7 +6461,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6470,7 +6470,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6480,7 +6480,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 7 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6489,7 +6489,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6499,7 +6499,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6508,7 +6508,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6518,7 +6518,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 7 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6527,7 +6527,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6537,7 +6537,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 7 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6546,7 +6546,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6556,7 +6556,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 7 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6565,7 +6565,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6575,7 +6575,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 7 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -6584,7 +6584,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -6594,7 +6594,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 7 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6603,7 +6603,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6613,7 +6613,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 7 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -6622,7 +6622,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -6632,7 +6632,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 8 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6641,7 +6641,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6651,7 +6651,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6660,7 +6660,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6670,7 +6670,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6679,7 +6679,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6689,7 +6689,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6698,7 +6698,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6708,7 +6708,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6717,7 +6717,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6727,7 +6727,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6736,7 +6736,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6746,7 +6746,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 8 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6755,7 +6755,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6765,7 +6765,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -6774,7 +6774,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = 1.265e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -6784,7 +6784,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = 1.390671161567e-309 set little endian value offset 8 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6793,7 +6793,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6803,7 +6803,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6812,7 +6812,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6822,7 +6822,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 8 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6831,7 +6831,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 5e-324 -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6841,7 +6841,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 7.291122019556398e-304 set little endian value offset 8 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6850,7 +6850,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = 8.289046e-317 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6860,7 +6860,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = 2.121995791e-314 set little endian value offset 8 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6869,7 +6869,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 5.263544247e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6879,7 +6879,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 6.9667243813181e-310 set little endian value offset 8 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -6888,7 +6888,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = 1.62207e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -6898,7 +6898,7 @@ getUint32 = 1065353216 getFloat32 = 1 getFloat64 = 0.0078125 set little endian value offset 8 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6907,7 +6907,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 1 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -6917,7 +6917,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.03865e-319 set little endian value offset 8 value 1 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -4033 @@ -6926,7 +6926,7 @@ getInt32 = 61503 getUint32 = 61503 getFloat32 = 8.618405945136922e-41 getFloat64 = 3.03865e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16368 @@ -6936,7 +6936,7 @@ getUint32 = 1072693248 getFloat32 = 1.875 getFloat64 = 1 set little endian value offset 9 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6945,7 +6945,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6955,7 +6955,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6964,7 +6964,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6974,7 +6974,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -6983,7 +6983,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -6993,7 +6993,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7002,7 +7002,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7012,7 +7012,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7021,7 +7021,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7031,7 +7031,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7040,7 +7040,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7050,7 +7050,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 9 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7059,7 +7059,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7069,7 +7069,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7078,7 +7078,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7088,7 +7088,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 9 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7097,7 +7097,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7107,7 +7107,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7116,7 +7116,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7126,7 +7126,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 9 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7135,7 +7135,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7145,7 +7145,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 9 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7154,7 +7154,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7164,7 +7164,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 9 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7173,7 +7173,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7183,7 +7183,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined set little endian value offset 9 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -7192,7 +7192,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -7203,7 +7203,7 @@ getFloat32 = 1 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 10 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7212,7 +7212,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7222,7 +7222,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7231,7 +7231,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7241,7 +7241,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7250,7 +7250,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7260,7 +7260,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7269,7 +7269,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7279,7 +7279,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7288,7 +7288,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7298,7 +7298,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7307,7 +7307,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7317,7 +7317,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 10 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7326,7 +7326,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7336,7 +7336,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7345,7 +7345,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7355,7 +7355,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 10 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7364,7 +7364,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7374,7 +7374,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7383,7 +7383,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7393,7 +7393,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 10 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7402,7 +7402,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7412,7 +7412,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 10 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7421,7 +7421,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7431,7 +7431,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 10 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7440,7 +7440,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7450,7 +7450,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined set little endian value offset 10 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -7459,7 +7459,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -7470,7 +7470,7 @@ getFloat32 = 1 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 11 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7479,7 +7479,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7489,7 +7489,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7498,7 +7498,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7508,7 +7508,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7517,7 +7517,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7527,7 +7527,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7536,7 +7536,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7546,7 +7546,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7555,7 +7555,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7565,7 +7565,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7574,7 +7574,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7584,7 +7584,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 11 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7593,7 +7593,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7603,7 +7603,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7612,7 +7612,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7622,7 +7622,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 11 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7631,7 +7631,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7641,7 +7641,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7650,7 +7650,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7660,7 +7660,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 11 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7669,7 +7669,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7679,7 +7679,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 11 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7688,7 +7688,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7698,7 +7698,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 11 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7707,7 +7707,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7717,7 +7717,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined set little endian value offset 11 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -7726,7 +7726,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -7737,7 +7737,7 @@ getFloat32 = 1 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 12 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7746,7 +7746,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7756,7 +7756,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7765,7 +7765,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7775,7 +7775,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7784,7 +7784,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7794,7 +7794,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7803,7 +7803,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7813,7 +7813,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7822,7 +7822,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7832,7 +7832,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7841,7 +7841,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7851,7 +7851,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 12 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7860,7 +7860,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7870,7 +7870,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -7879,7 +7879,7 @@ getInt32 = 256 getUint32 = 256 getFloat32 = 3.587324068671532e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -7889,7 +7889,7 @@ getUint32 = 65536 getFloat32 = 9.183549615799121e-41 getFloat64 = undefined set little endian value offset 12 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7898,7 +7898,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7908,7 +7908,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7917,7 +7917,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7927,7 +7927,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 12 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -7936,7 +7936,7 @@ getInt32 = 1 getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -7946,7 +7946,7 @@ getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined set little endian value offset 12 value 1 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7955,7 +7955,7 @@ getInt32 = 16777216 getUint32 = 16777216 getFloat32 = 2.350988701644575e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7965,7 +7965,7 @@ getUint32 = 1 getFloat32 = 1.401298464324817e-45 getFloat64 = undefined set little endian value offset 12 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7974,7 +7974,7 @@ getInt32 = 1065353216 getUint32 = 1065353216 getFloat32 = 1 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -7984,7 +7984,7 @@ getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined set little endian value offset 12 value 1 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = -32705 @@ -7993,7 +7993,7 @@ getInt32 = 32831 getUint32 = 32831 getFloat32 = 4.600602988224807e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 63 getUint8 = 63 getInt16 = 16256 @@ -8004,7 +8004,7 @@ getFloat32 = 1 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 13 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8013,7 +8013,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8023,7 +8023,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8032,7 +8032,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8042,7 +8042,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8051,7 +8051,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8061,7 +8061,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8070,7 +8070,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8080,7 +8080,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8089,7 +8089,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8099,7 +8099,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -8108,7 +8108,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -8118,7 +8118,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8127,7 +8127,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8137,7 +8137,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -8146,7 +8146,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -8160,7 +8160,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 14 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8169,7 +8169,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8179,7 +8179,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8188,7 +8188,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8198,7 +8198,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8207,7 +8207,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8217,7 +8217,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8226,7 +8226,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8236,7 +8236,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8245,7 +8245,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8255,7 +8255,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -8264,7 +8264,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -8274,7 +8274,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 1 @@ -8283,7 +8283,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = 256 @@ -8293,7 +8293,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 1 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 256 @@ -8302,7 +8302,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1 @@ -8316,7 +8316,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 15 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8325,7 +8325,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8335,7 +8335,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 1 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8344,7 +8344,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8354,7 +8354,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8363,7 +8363,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8373,7 +8373,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 1 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8382,7 +8382,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 1 getUint8 = 1 getInt16 = undefined @@ -8399,7 +8399,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length test one value 2 set little endian value offset 0 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8408,7 +8408,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8418,7 +8418,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8427,7 +8427,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8437,7 +8437,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8446,7 +8446,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8456,7 +8456,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8465,7 +8465,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8475,7 +8475,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8484,7 +8484,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8494,7 +8494,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -8503,7 +8503,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -8513,7 +8513,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 0 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8522,7 +8522,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8532,7 +8532,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -8541,7 +8541,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -8551,7 +8551,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 0 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8560,7 +8560,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8570,7 +8570,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8579,7 +8579,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8589,7 +8589,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 0 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8598,7 +8598,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8608,7 +8608,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 0 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8617,7 +8617,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8627,7 +8627,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 0 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8636,7 +8636,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8646,7 +8646,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 0 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -8655,7 +8655,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -8665,7 +8665,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 0 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8674,7 +8674,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8684,7 +8684,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 0 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -8693,7 +8693,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -8703,7 +8703,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 1 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8712,7 +8712,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8722,7 +8722,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8731,7 +8731,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8741,7 +8741,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8750,7 +8750,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8760,7 +8760,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8769,7 +8769,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8779,7 +8779,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8788,7 +8788,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8798,7 +8798,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -8807,7 +8807,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -8817,7 +8817,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 1 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8826,7 +8826,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8836,7 +8836,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -8845,7 +8845,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -8855,7 +8855,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 1 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8864,7 +8864,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8874,7 +8874,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8883,7 +8883,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8893,7 +8893,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 1 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -8902,7 +8902,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -8912,7 +8912,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 1 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8921,7 +8921,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8931,7 +8931,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 1 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8940,7 +8940,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8950,7 +8950,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 1 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -8959,7 +8959,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -8969,7 +8969,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 1 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8978,7 +8978,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -8988,7 +8988,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 1 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -8997,7 +8997,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9007,7 +9007,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 2 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9016,7 +9016,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9026,7 +9026,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9035,7 +9035,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9045,7 +9045,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9054,7 +9054,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9064,7 +9064,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9073,7 +9073,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9083,7 +9083,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9092,7 +9092,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9102,7 +9102,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9111,7 +9111,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9121,7 +9121,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 2 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9130,7 +9130,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9140,7 +9140,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9149,7 +9149,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9159,7 +9159,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 2 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9168,7 +9168,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9178,7 +9178,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9187,7 +9187,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9197,7 +9197,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 2 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9206,7 +9206,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9216,7 +9216,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 2 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9225,7 +9225,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9235,7 +9235,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 2 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9244,7 +9244,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9254,7 +9254,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 2 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9263,7 +9263,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9273,7 +9273,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 2 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9282,7 +9282,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9292,7 +9292,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 2 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9301,7 +9301,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9311,7 +9311,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 3 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9320,7 +9320,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9330,7 +9330,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9339,7 +9339,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9349,7 +9349,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9358,7 +9358,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9368,7 +9368,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9377,7 +9377,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9387,7 +9387,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9396,7 +9396,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9406,7 +9406,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9415,7 +9415,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9425,7 +9425,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 3 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9434,7 +9434,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9444,7 +9444,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9453,7 +9453,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9463,7 +9463,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 3 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9472,7 +9472,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9482,7 +9482,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9491,7 +9491,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9501,7 +9501,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 3 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9510,7 +9510,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9520,7 +9520,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 3 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9529,7 +9529,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9539,7 +9539,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 3 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9548,7 +9548,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9558,7 +9558,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 3 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9567,7 +9567,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9577,7 +9577,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 3 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9586,7 +9586,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9596,7 +9596,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 3 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9605,7 +9605,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9615,7 +9615,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 4 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9624,7 +9624,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9634,7 +9634,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9643,7 +9643,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9653,7 +9653,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9662,7 +9662,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9672,7 +9672,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9681,7 +9681,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9691,7 +9691,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9700,7 +9700,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9710,7 +9710,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9719,7 +9719,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9729,7 +9729,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 4 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9738,7 +9738,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9748,7 +9748,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -9757,7 +9757,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -9767,7 +9767,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 4 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9776,7 +9776,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9786,7 +9786,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9795,7 +9795,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9805,7 +9805,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 4 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9814,7 +9814,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9824,7 +9824,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 4 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9833,7 +9833,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9843,7 +9843,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 4 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9852,7 +9852,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9862,7 +9862,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 4 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9871,7 +9871,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9881,7 +9881,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 4 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9890,7 +9890,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -9900,7 +9900,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 4 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -9909,7 +9909,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -9919,7 +9919,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 5 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9928,7 +9928,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9938,7 +9938,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9947,7 +9947,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9957,7 +9957,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9966,7 +9966,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9976,7 +9976,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -9985,7 +9985,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -9995,7 +9995,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10004,7 +10004,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10014,7 +10014,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10023,7 +10023,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10033,7 +10033,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 5 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10042,7 +10042,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10052,7 +10052,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10061,7 +10061,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10071,7 +10071,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 5 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10080,7 +10080,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10090,7 +10090,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10099,7 +10099,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10109,7 +10109,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 5 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10118,7 +10118,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10128,7 +10128,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 5 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10137,7 +10137,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10147,7 +10147,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 5 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10156,7 +10156,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10166,7 +10166,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 5 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10175,7 +10175,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10185,7 +10185,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 5 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10194,7 +10194,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10204,7 +10204,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 5 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10213,7 +10213,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10223,7 +10223,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 6 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10232,7 +10232,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10242,7 +10242,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10251,7 +10251,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10261,7 +10261,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10270,7 +10270,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10280,7 +10280,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10289,7 +10289,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10299,7 +10299,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10308,7 +10308,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10318,7 +10318,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10327,7 +10327,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10337,7 +10337,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 6 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10346,7 +10346,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10356,7 +10356,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10365,7 +10365,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10375,7 +10375,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 6 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10384,7 +10384,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10394,7 +10394,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10403,7 +10403,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10413,7 +10413,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 6 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10422,7 +10422,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10432,7 +10432,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 6 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10441,7 +10441,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10451,7 +10451,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 6 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10460,7 +10460,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10470,7 +10470,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 6 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10479,7 +10479,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10489,7 +10489,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 6 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10498,7 +10498,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10508,7 +10508,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 6 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10517,7 +10517,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10527,7 +10527,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 7 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10536,7 +10536,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10546,7 +10546,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10555,7 +10555,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10565,7 +10565,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10574,7 +10574,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10584,7 +10584,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10593,7 +10593,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10603,7 +10603,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10612,7 +10612,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10622,7 +10622,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10631,7 +10631,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10641,7 +10641,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 7 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10650,7 +10650,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10660,7 +10660,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10669,7 +10669,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10679,7 +10679,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 7 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10688,7 +10688,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10698,7 +10698,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10707,7 +10707,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10717,7 +10717,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 7 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10726,7 +10726,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10736,7 +10736,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 7 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10745,7 +10745,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10755,7 +10755,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 7 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10764,7 +10764,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10774,7 +10774,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 7 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10783,7 +10783,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10793,7 +10793,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 7 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10802,7 +10802,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -10812,7 +10812,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 7 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -10821,7 +10821,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -10831,7 +10831,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 8 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10840,7 +10840,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10850,7 +10850,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10859,7 +10859,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10869,7 +10869,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10878,7 +10878,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10888,7 +10888,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10897,7 +10897,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10907,7 +10907,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10916,7 +10916,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10926,7 +10926,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10935,7 +10935,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10945,7 +10945,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 8 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10954,7 +10954,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -10964,7 +10964,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -10973,7 +10973,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = 2.53e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -10983,7 +10983,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = 2.781342323134e-309 set little endian value offset 8 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -10992,7 +10992,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11002,7 +11002,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11011,7 +11011,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11021,7 +11021,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 8 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11030,7 +11030,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 1e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11040,7 +11040,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 4.778309726736481e-299 set little endian value offset 8 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11049,7 +11049,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = 1.6578092e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11059,7 +11059,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = 4.243991582e-314 set little endian value offset 8 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11068,7 +11068,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 5.304989477e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11078,7 +11078,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 1.35807730622e-312 set little endian value offset 8 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -11087,7 +11087,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -11097,7 +11097,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 8 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11106,7 +11106,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 2 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11116,7 +11116,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 3.16e-322 set little endian value offset 8 value 2 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -11125,7 +11125,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = 3.16e-322 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -11135,7 +11135,7 @@ getUint32 = 1073741824 getFloat32 = 2 getFloat64 = 2 set little endian value offset 9 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11144,7 +11144,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11154,7 +11154,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11163,7 +11163,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11173,7 +11173,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11182,7 +11182,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11192,7 +11192,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11201,7 +11201,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11211,7 +11211,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11220,7 +11220,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11230,7 +11230,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11239,7 +11239,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11249,7 +11249,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 9 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11258,7 +11258,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11268,7 +11268,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11277,7 +11277,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11287,7 +11287,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 9 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11296,7 +11296,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11306,7 +11306,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11315,7 +11315,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11325,7 +11325,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 9 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11334,7 +11334,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11344,7 +11344,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 9 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11353,7 +11353,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11363,7 +11363,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 9 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11372,7 +11372,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11382,7 +11382,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined set little endian value offset 9 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -11391,7 +11391,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -11402,7 +11402,7 @@ getFloat32 = 2 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 10 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11411,7 +11411,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11421,7 +11421,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11430,7 +11430,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11440,7 +11440,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11449,7 +11449,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11459,7 +11459,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11468,7 +11468,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11478,7 +11478,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11487,7 +11487,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11497,7 +11497,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11506,7 +11506,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11516,7 +11516,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 10 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11525,7 +11525,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11535,7 +11535,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11544,7 +11544,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11554,7 +11554,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 10 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11563,7 +11563,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11573,7 +11573,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11582,7 +11582,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11592,7 +11592,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 10 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11601,7 +11601,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11611,7 +11611,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 10 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11620,7 +11620,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11630,7 +11630,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 10 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11639,7 +11639,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11649,7 +11649,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined set little endian value offset 10 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -11658,7 +11658,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -11669,7 +11669,7 @@ getFloat32 = 2 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 11 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11678,7 +11678,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11688,7 +11688,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11697,7 +11697,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11707,7 +11707,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11716,7 +11716,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11726,7 +11726,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11735,7 +11735,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11745,7 +11745,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11754,7 +11754,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11764,7 +11764,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11773,7 +11773,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11783,7 +11783,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 11 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11792,7 +11792,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11802,7 +11802,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -11811,7 +11811,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -11821,7 +11821,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 11 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11830,7 +11830,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11840,7 +11840,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11849,7 +11849,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11859,7 +11859,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 11 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11868,7 +11868,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11878,7 +11878,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 11 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11887,7 +11887,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11897,7 +11897,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 11 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11906,7 +11906,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -11916,7 +11916,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined set little endian value offset 11 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -11925,7 +11925,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -11936,7 +11936,7 @@ getFloat32 = 2 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 12 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11945,7 +11945,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11955,7 +11955,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11964,7 +11964,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11974,7 +11974,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -11983,7 +11983,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -11993,7 +11993,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12002,7 +12002,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12012,7 +12012,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12021,7 +12021,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12031,7 +12031,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12040,7 +12040,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12050,7 +12050,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 12 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12059,7 +12059,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12069,7 +12069,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12078,7 +12078,7 @@ getInt32 = 512 getUint32 = 512 getFloat32 = 7.174648137343064e-43 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12088,7 +12088,7 @@ getUint32 = 131072 getFloat32 = 1.8367099231598243e-40 getFloat64 = undefined set little endian value offset 12 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12097,7 +12097,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12107,7 +12107,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12116,7 +12116,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12126,7 +12126,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 12 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12135,7 +12135,7 @@ getInt32 = 2 getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12145,7 +12145,7 @@ getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined set little endian value offset 12 value 2 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12154,7 +12154,7 @@ getInt32 = 33554432 getUint32 = 33554432 getFloat32 = 9.4039548065783e-38 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12164,7 +12164,7 @@ getUint32 = 2 getFloat32 = 2.802596928649634e-45 getFloat64 = undefined set little endian value offset 12 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12173,7 +12173,7 @@ getInt32 = 1073741824 getUint32 = 1073741824 getFloat32 = 2 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12183,7 +12183,7 @@ getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined set little endian value offset 12 value 2 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 64 @@ -12192,7 +12192,7 @@ getInt32 = 64 getUint32 = 64 getFloat32 = 8.96831017167883e-44 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16384 @@ -12203,7 +12203,7 @@ getFloat32 = 2 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 13 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12212,7 +12212,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12222,7 +12222,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12231,7 +12231,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12241,7 +12241,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12250,7 +12250,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12260,7 +12260,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12269,7 +12269,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12279,7 +12279,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12288,7 +12288,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12298,7 +12298,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12307,7 +12307,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12317,7 +12317,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12326,7 +12326,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12336,7 +12336,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12345,7 +12345,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12359,7 +12359,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 14 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12368,7 +12368,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12378,7 +12378,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12387,7 +12387,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12397,7 +12397,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12406,7 +12406,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12416,7 +12416,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12425,7 +12425,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12435,7 +12435,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12444,7 +12444,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12454,7 +12454,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12463,7 +12463,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12473,7 +12473,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 2 @@ -12482,7 +12482,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = 512 @@ -12492,7 +12492,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 2 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 512 @@ -12501,7 +12501,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 2 @@ -12515,7 +12515,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 15 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12524,7 +12524,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12534,7 +12534,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 2 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12543,7 +12543,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12553,7 +12553,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12562,7 +12562,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12572,7 +12572,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 2 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12581,7 +12581,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 2 getUint8 = 2 getInt16 = undefined @@ -12598,7 +12598,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length test one value 3 set little endian value offset 0 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12607,7 +12607,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12617,7 +12617,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12626,7 +12626,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12636,7 +12636,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12645,7 +12645,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12655,7 +12655,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12664,7 +12664,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12674,7 +12674,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12683,7 +12683,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12693,7 +12693,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -12702,7 +12702,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -12712,7 +12712,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 0 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12721,7 +12721,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12731,7 +12731,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -12740,7 +12740,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -12750,7 +12750,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 0 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12759,7 +12759,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12769,7 +12769,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12778,7 +12778,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12788,7 +12788,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 0 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12797,7 +12797,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12807,7 +12807,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 0 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12816,7 +12816,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12826,7 +12826,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 0 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12835,7 +12835,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12845,7 +12845,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 0 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -12854,7 +12854,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -12864,7 +12864,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 0 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12873,7 +12873,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -12883,7 +12883,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 0 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -12892,7 +12892,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -12902,7 +12902,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 1 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12911,7 +12911,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12921,7 +12921,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12930,7 +12930,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12940,7 +12940,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12949,7 +12949,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12959,7 +12959,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12968,7 +12968,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12978,7 +12978,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -12987,7 +12987,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -12997,7 +12997,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13006,7 +13006,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13016,7 +13016,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 1 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13025,7 +13025,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13035,7 +13035,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13044,7 +13044,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13054,7 +13054,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 1 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13063,7 +13063,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13073,7 +13073,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13082,7 +13082,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13092,7 +13092,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 1 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13101,7 +13101,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13111,7 +13111,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 1 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13120,7 +13120,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13130,7 +13130,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 1 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13139,7 +13139,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13149,7 +13149,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 1 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13158,7 +13158,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13168,7 +13168,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 1 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13177,7 +13177,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13187,7 +13187,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 1 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -13196,7 +13196,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -13206,7 +13206,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 2 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13215,7 +13215,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13225,7 +13225,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13234,7 +13234,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13244,7 +13244,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13253,7 +13253,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13263,7 +13263,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13272,7 +13272,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13282,7 +13282,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13291,7 +13291,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13301,7 +13301,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13310,7 +13310,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13320,7 +13320,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 2 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13329,7 +13329,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13339,7 +13339,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13348,7 +13348,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13358,7 +13358,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 2 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13367,7 +13367,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13377,7 +13377,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13386,7 +13386,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13396,7 +13396,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 2 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13405,7 +13405,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13415,7 +13415,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 2 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13424,7 +13424,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13434,7 +13434,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 2 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13443,7 +13443,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13453,7 +13453,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 2 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13462,7 +13462,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13472,7 +13472,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 2 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13481,7 +13481,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13491,7 +13491,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 2 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -13500,7 +13500,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -13510,7 +13510,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 3 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13519,7 +13519,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13529,7 +13529,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13538,7 +13538,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13548,7 +13548,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13557,7 +13557,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13567,7 +13567,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13576,7 +13576,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13586,7 +13586,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13595,7 +13595,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13605,7 +13605,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13614,7 +13614,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13624,7 +13624,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 3 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13633,7 +13633,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13643,7 +13643,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13652,7 +13652,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13662,7 +13662,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 3 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13671,7 +13671,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13681,7 +13681,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13690,7 +13690,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13700,7 +13700,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 3 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13709,7 +13709,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13719,7 +13719,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 3 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13728,7 +13728,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13738,7 +13738,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 3 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13747,7 +13747,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13757,7 +13757,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 3 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13766,7 +13766,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -13776,7 +13776,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 3 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13785,7 +13785,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13795,7 +13795,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 3 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -13804,7 +13804,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -13814,7 +13814,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 4 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13823,7 +13823,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13833,7 +13833,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13842,7 +13842,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13852,7 +13852,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13861,7 +13861,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13871,7 +13871,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13880,7 +13880,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13890,7 +13890,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13899,7 +13899,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13909,7 +13909,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13918,7 +13918,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13928,7 +13928,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 4 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13937,7 +13937,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13947,7 +13947,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -13956,7 +13956,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -13966,7 +13966,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 4 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -13975,7 +13975,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -13985,7 +13985,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -13994,7 +13994,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14004,7 +14004,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 4 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14013,7 +14013,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14023,7 +14023,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 4 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14032,7 +14032,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14042,7 +14042,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 4 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14051,7 +14051,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14061,7 +14061,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 4 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14070,7 +14070,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14080,7 +14080,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 4 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14089,7 +14089,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14099,7 +14099,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 4 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -14108,7 +14108,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -14118,7 +14118,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 5 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14127,7 +14127,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14137,7 +14137,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14146,7 +14146,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14156,7 +14156,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14165,7 +14165,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14175,7 +14175,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14184,7 +14184,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14194,7 +14194,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14203,7 +14203,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14213,7 +14213,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14222,7 +14222,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14232,7 +14232,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 5 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14241,7 +14241,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14251,7 +14251,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14260,7 +14260,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14270,7 +14270,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 5 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14279,7 +14279,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14289,7 +14289,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14298,7 +14298,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14308,7 +14308,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 5 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14317,7 +14317,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14327,7 +14327,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 5 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14336,7 +14336,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14346,7 +14346,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 5 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14355,7 +14355,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14365,7 +14365,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 5 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14374,7 +14374,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14384,7 +14384,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 5 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14393,7 +14393,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14403,7 +14403,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 5 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -14412,7 +14412,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -14422,7 +14422,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 6 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14431,7 +14431,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14441,7 +14441,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14450,7 +14450,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14460,7 +14460,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14469,7 +14469,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14479,7 +14479,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14488,7 +14488,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14498,7 +14498,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14507,7 +14507,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14517,7 +14517,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14526,7 +14526,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14536,7 +14536,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 6 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14545,7 +14545,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14555,7 +14555,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14564,7 +14564,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14574,7 +14574,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 6 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14583,7 +14583,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14593,7 +14593,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14602,7 +14602,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14612,7 +14612,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 6 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14621,7 +14621,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14631,7 +14631,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 6 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14640,7 +14640,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14650,7 +14650,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 6 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14659,7 +14659,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14669,7 +14669,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 6 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14678,7 +14678,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14688,7 +14688,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 6 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14697,7 +14697,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14707,7 +14707,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 6 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -14716,7 +14716,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -14726,7 +14726,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 7 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14735,7 +14735,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14745,7 +14745,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14754,7 +14754,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14764,7 +14764,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14773,7 +14773,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14783,7 +14783,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14792,7 +14792,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14802,7 +14802,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14811,7 +14811,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14821,7 +14821,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14830,7 +14830,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14840,7 +14840,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 7 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14849,7 +14849,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14859,7 +14859,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -14868,7 +14868,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -14878,7 +14878,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 7 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14887,7 +14887,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14897,7 +14897,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14906,7 +14906,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14916,7 +14916,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 7 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -14925,7 +14925,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -14935,7 +14935,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 7 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14944,7 +14944,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14954,7 +14954,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 7 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14963,7 +14963,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -14973,7 +14973,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 7 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14982,7 +14982,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -14992,7 +14992,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 7 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15001,7 +15001,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15011,7 +15011,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 7 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -15020,7 +15020,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -15030,7 +15030,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 8 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15039,7 +15039,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15049,7 +15049,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15058,7 +15058,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15068,7 +15068,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15077,7 +15077,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15087,7 +15087,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15096,7 +15096,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15106,7 +15106,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15115,7 +15115,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15125,7 +15125,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15134,7 +15134,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15144,7 +15144,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 8 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15153,7 +15153,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15163,7 +15163,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15172,7 +15172,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = 3.794e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15182,7 +15182,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = 4.172013484701003e-309 set little endian value offset 8 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15191,7 +15191,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15201,7 +15201,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15210,7 +15210,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15220,7 +15220,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 8 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15229,7 +15229,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 1.5e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15239,7 +15239,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 3.13151306251402e-294 set little endian value offset 8 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15248,7 +15248,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = 2.4867138e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15258,7 +15258,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = 6.365987373e-314 set little endian value offset 8 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15267,7 +15267,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 5.325712093e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15277,7 +15277,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 3.4902586769797e-310 set little endian value offset 8 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15286,7 +15286,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = 8.1264e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15296,7 +15296,7 @@ getUint32 = 1077936128 getFloat32 = 3 getFloat64 = 32 set little endian value offset 8 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15305,7 +15305,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 3 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15315,7 +15315,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 1.0435e-320 set little endian value offset 8 value 3 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 2112 @@ -15324,7 +15324,7 @@ getInt32 = 2112 getUint32 = 2112 getFloat32 = 2.9595423566540136e-42 getFloat64 = 1.0435e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16392 @@ -15334,7 +15334,7 @@ getUint32 = 1074266112 getFloat32 = 2.125 getFloat64 = 3 set little endian value offset 9 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15343,7 +15343,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15353,7 +15353,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15362,7 +15362,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15372,7 +15372,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15381,7 +15381,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15391,7 +15391,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15400,7 +15400,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15410,7 +15410,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15419,7 +15419,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15429,7 +15429,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15438,7 +15438,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15448,7 +15448,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 9 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15457,7 +15457,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15467,7 +15467,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15476,7 +15476,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15486,7 +15486,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 9 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15495,7 +15495,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15505,7 +15505,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15514,7 +15514,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15524,7 +15524,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 9 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15533,7 +15533,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15543,7 +15543,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 9 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15552,7 +15552,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15562,7 +15562,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 9 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15571,7 +15571,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15581,7 +15581,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined set little endian value offset 9 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15590,7 +15590,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15601,7 +15601,7 @@ getFloat32 = 3 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 10 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15610,7 +15610,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15620,7 +15620,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15629,7 +15629,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15639,7 +15639,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15648,7 +15648,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15658,7 +15658,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15667,7 +15667,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15677,7 +15677,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15686,7 +15686,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15696,7 +15696,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15705,7 +15705,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15715,7 +15715,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 10 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15724,7 +15724,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15734,7 +15734,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15743,7 +15743,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15753,7 +15753,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 10 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15762,7 +15762,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15772,7 +15772,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15781,7 +15781,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15791,7 +15791,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 10 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15800,7 +15800,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15810,7 +15810,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 10 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15819,7 +15819,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15829,7 +15829,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 10 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15838,7 +15838,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -15848,7 +15848,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined set little endian value offset 10 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15857,7 +15857,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -15868,7 +15868,7 @@ getFloat32 = 3 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 11 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15877,7 +15877,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15887,7 +15887,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15896,7 +15896,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15906,7 +15906,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15915,7 +15915,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15925,7 +15925,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15934,7 +15934,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15944,7 +15944,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15953,7 +15953,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -15963,7 +15963,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -15972,7 +15972,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -15982,7 +15982,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 11 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -15991,7 +15991,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16001,7 +16001,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16010,7 +16010,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16020,7 +16020,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 11 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16029,7 +16029,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16039,7 +16039,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16048,7 +16048,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16058,7 +16058,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 11 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16067,7 +16067,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16077,7 +16077,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 11 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16086,7 +16086,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16096,7 +16096,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 11 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16105,7 +16105,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16115,7 +16115,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined set little endian value offset 11 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -16124,7 +16124,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -16135,7 +16135,7 @@ getFloat32 = 3 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 12 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16144,7 +16144,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16154,7 +16154,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16163,7 +16163,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16173,7 +16173,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16182,7 +16182,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16192,7 +16192,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16201,7 +16201,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16211,7 +16211,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16220,7 +16220,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16230,7 +16230,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16239,7 +16239,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16249,7 +16249,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 12 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16258,7 +16258,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16268,7 +16268,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16277,7 +16277,7 @@ getInt32 = 768 getUint32 = 768 getFloat32 = 1.0761972206014595e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16287,7 +16287,7 @@ getUint32 = 196608 getFloat32 = 2.7550648847397363e-40 getFloat64 = undefined set little endian value offset 12 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16296,7 +16296,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16306,7 +16306,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16315,7 +16315,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16325,7 +16325,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 12 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16334,7 +16334,7 @@ getInt32 = 3 getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16344,7 +16344,7 @@ getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined set little endian value offset 12 value 3 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16353,7 +16353,7 @@ getInt32 = 50331648 getUint32 = 50331648 getFloat32 = 3.76158192263132e-37 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16363,7 +16363,7 @@ getUint32 = 3 getFloat32 = 4.203895392974451e-45 getFloat64 = undefined set little endian value offset 12 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16372,7 +16372,7 @@ getInt32 = 1077936128 getUint32 = 1077936128 getFloat32 = 3 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16382,7 +16382,7 @@ getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined set little endian value offset 12 value 3 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -16391,7 +16391,7 @@ getInt32 = 16448 getUint32 = 16448 getFloat32 = 2.304855714121459e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16448 @@ -16402,7 +16402,7 @@ getFloat32 = 3 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 13 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16411,7 +16411,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16421,7 +16421,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16430,7 +16430,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16440,7 +16440,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16449,7 +16449,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16459,7 +16459,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16468,7 +16468,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16478,7 +16478,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16487,7 +16487,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16497,7 +16497,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16506,7 +16506,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16516,7 +16516,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16525,7 +16525,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16535,7 +16535,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16544,7 +16544,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16558,7 +16558,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 14 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16567,7 +16567,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16577,7 +16577,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16586,7 +16586,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16596,7 +16596,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16605,7 +16605,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16615,7 +16615,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16624,7 +16624,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16634,7 +16634,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16643,7 +16643,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16653,7 +16653,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16662,7 +16662,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16672,7 +16672,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 3 @@ -16681,7 +16681,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = 768 @@ -16691,7 +16691,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 3 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 768 @@ -16700,7 +16700,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 3 @@ -16714,7 +16714,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 15 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16723,7 +16723,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16733,7 +16733,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 3 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16742,7 +16742,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16752,7 +16752,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16761,7 +16761,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16771,7 +16771,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 3 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16780,7 +16780,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 3 getUint8 = 3 getInt16 = undefined @@ -16797,7 +16797,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length test one value 4 set little endian value offset 0 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16806,7 +16806,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16816,7 +16816,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16825,7 +16825,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16835,7 +16835,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16844,7 +16844,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16854,7 +16854,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16863,7 +16863,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16873,7 +16873,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16882,7 +16882,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16892,7 +16892,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -16901,7 +16901,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -16911,7 +16911,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 0 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16920,7 +16920,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16930,7 +16930,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -16939,7 +16939,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -16949,7 +16949,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 0 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16958,7 +16958,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -16968,7 +16968,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16977,7 +16977,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -16987,7 +16987,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 0 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -16996,7 +16996,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17006,7 +17006,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 0 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17015,7 +17015,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17025,7 +17025,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 0 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17034,7 +17034,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17044,7 +17044,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 0 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -17053,7 +17053,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -17063,7 +17063,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 0 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17072,7 +17072,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17082,7 +17082,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 0 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -17091,7 +17091,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -17101,7 +17101,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 1 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17110,7 +17110,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17120,7 +17120,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17129,7 +17129,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17139,7 +17139,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17148,7 +17148,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17158,7 +17158,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17167,7 +17167,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17177,7 +17177,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17186,7 +17186,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17196,7 +17196,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17205,7 +17205,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17215,7 +17215,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 1 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17224,7 +17224,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17234,7 +17234,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17243,7 +17243,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17253,7 +17253,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 1 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17262,7 +17262,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17272,7 +17272,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17281,7 +17281,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17291,7 +17291,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 1 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17300,7 +17300,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17310,7 +17310,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 1 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17319,7 +17319,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17329,7 +17329,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 1 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17338,7 +17338,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17348,7 +17348,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 1 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -17357,7 +17357,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -17367,7 +17367,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 1 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17376,7 +17376,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17386,7 +17386,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 1 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -17395,7 +17395,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -17405,7 +17405,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 2 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17414,7 +17414,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17424,7 +17424,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17433,7 +17433,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17443,7 +17443,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17452,7 +17452,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17462,7 +17462,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17471,7 +17471,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17481,7 +17481,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17490,7 +17490,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17500,7 +17500,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17509,7 +17509,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17519,7 +17519,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 2 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17528,7 +17528,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17538,7 +17538,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17547,7 +17547,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17557,7 +17557,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 2 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17566,7 +17566,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17576,7 +17576,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17585,7 +17585,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17595,7 +17595,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 2 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17604,7 +17604,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17614,7 +17614,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 2 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17623,7 +17623,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17633,7 +17633,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 2 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17642,7 +17642,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17652,7 +17652,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 2 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -17661,7 +17661,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -17671,7 +17671,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 2 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17680,7 +17680,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17690,7 +17690,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 2 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -17699,7 +17699,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -17709,7 +17709,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 3 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17718,7 +17718,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17728,7 +17728,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17737,7 +17737,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17747,7 +17747,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17756,7 +17756,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17766,7 +17766,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17775,7 +17775,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17785,7 +17785,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17794,7 +17794,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17804,7 +17804,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17813,7 +17813,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17823,7 +17823,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 3 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17832,7 +17832,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17842,7 +17842,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -17851,7 +17851,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -17861,7 +17861,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 3 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17870,7 +17870,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17880,7 +17880,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17889,7 +17889,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17899,7 +17899,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 3 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -17908,7 +17908,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -17918,7 +17918,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 3 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17927,7 +17927,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17937,7 +17937,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 3 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17946,7 +17946,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17956,7 +17956,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 3 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -17965,7 +17965,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -17975,7 +17975,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 3 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17984,7 +17984,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -17994,7 +17994,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 3 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -18003,7 +18003,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -18013,7 +18013,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 4 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18022,7 +18022,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18032,7 +18032,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18041,7 +18041,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18051,7 +18051,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18060,7 +18060,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18070,7 +18070,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18079,7 +18079,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18089,7 +18089,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18098,7 +18098,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18108,7 +18108,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18117,7 +18117,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18127,7 +18127,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 4 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18136,7 +18136,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18146,7 +18146,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18155,7 +18155,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18165,7 +18165,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 4 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18174,7 +18174,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18184,7 +18184,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18193,7 +18193,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18203,7 +18203,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 4 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18212,7 +18212,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18222,7 +18222,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 4 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18231,7 +18231,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18241,7 +18241,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 4 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18250,7 +18250,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18260,7 +18260,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 4 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -18269,7 +18269,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -18279,7 +18279,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 4 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18288,7 +18288,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18298,7 +18298,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 4 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -18307,7 +18307,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -18317,7 +18317,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 5 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18326,7 +18326,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18336,7 +18336,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18345,7 +18345,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18355,7 +18355,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18364,7 +18364,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18374,7 +18374,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18383,7 +18383,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18393,7 +18393,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18402,7 +18402,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18412,7 +18412,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18421,7 +18421,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18431,7 +18431,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 5 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18440,7 +18440,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18450,7 +18450,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18459,7 +18459,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18469,7 +18469,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 5 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18478,7 +18478,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18488,7 +18488,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18497,7 +18497,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18507,7 +18507,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 5 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18516,7 +18516,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18526,7 +18526,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 5 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18535,7 +18535,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18545,7 +18545,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 5 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18554,7 +18554,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18564,7 +18564,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 5 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -18573,7 +18573,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -18583,7 +18583,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 5 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18592,7 +18592,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18602,7 +18602,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 5 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -18611,7 +18611,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -18621,7 +18621,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 6 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18630,7 +18630,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18640,7 +18640,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18649,7 +18649,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18659,7 +18659,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18668,7 +18668,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18678,7 +18678,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18687,7 +18687,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18697,7 +18697,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18706,7 +18706,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18716,7 +18716,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18725,7 +18725,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18735,7 +18735,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 6 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18744,7 +18744,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18754,7 +18754,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -18763,7 +18763,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -18773,7 +18773,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 6 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18782,7 +18782,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18792,7 +18792,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18801,7 +18801,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18811,7 +18811,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 6 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18820,7 +18820,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18830,7 +18830,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 6 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18839,7 +18839,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18849,7 +18849,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 6 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18858,7 +18858,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18868,7 +18868,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 6 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -18877,7 +18877,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -18887,7 +18887,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 6 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18896,7 +18896,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -18906,7 +18906,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 6 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -18915,7 +18915,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -18925,7 +18925,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 7 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18934,7 +18934,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18944,7 +18944,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18953,7 +18953,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18963,7 +18963,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18972,7 +18972,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -18982,7 +18982,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -18991,7 +18991,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19001,7 +19001,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19010,7 +19010,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19020,7 +19020,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19029,7 +19029,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19039,7 +19039,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 7 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19048,7 +19048,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19058,7 +19058,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19067,7 +19067,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19077,7 +19077,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 7 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19086,7 +19086,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19096,7 +19096,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19105,7 +19105,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19115,7 +19115,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 7 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19124,7 +19124,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19134,7 +19134,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 7 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19143,7 +19143,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19153,7 +19153,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 7 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19162,7 +19162,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19172,7 +19172,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 7 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -19181,7 +19181,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -19191,7 +19191,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 7 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19200,7 +19200,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19210,7 +19210,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 7 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -19219,7 +19219,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -19229,7 +19229,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 8 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19238,7 +19238,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19248,7 +19248,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19257,7 +19257,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19267,7 +19267,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19276,7 +19276,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19286,7 +19286,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19295,7 +19295,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19305,7 +19305,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19314,7 +19314,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19324,7 +19324,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19333,7 +19333,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19343,7 +19343,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 8 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19352,7 +19352,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19362,7 +19362,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19371,7 +19371,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = 5.06e-321 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19381,7 +19381,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = 5.562684646268003e-309 set little endian value offset 8 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19390,7 +19390,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19400,7 +19400,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19409,7 +19409,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19419,7 +19419,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 8 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19428,7 +19428,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 2e-323 -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19438,7 +19438,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 2.0522684006491882e-289 set little endian value offset 8 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19447,7 +19447,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = 3.3156184e-316 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19457,7 +19457,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = 8.487983164e-314 set little endian value offset 8 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19466,7 +19466,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 5.34643471e-315 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19476,7 +19476,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 6.9669365808972e-310 set little endian value offset 8 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -19485,7 +19485,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = 1.6221e-319 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -19495,7 +19495,7 @@ getUint32 = 1082130432 getFloat32 = 4 getFloat64 = 512 set little endian value offset 8 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19504,7 +19504,7 @@ getInt32 = 0 getUint32 = 0 getFloat32 = 0 getFloat64 = 4 -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19514,7 +19514,7 @@ getUint32 = 0 getFloat32 = 0 getFloat64 = 2.0553e-320 set little endian value offset 8 value 4 method setFloat64 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 4160 @@ -19523,7 +19523,7 @@ getInt32 = 4160 getUint32 = 4160 getFloat32 = 5.829401611591239e-42 getFloat64 = 2.0553e-320 -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16400 @@ -19533,7 +19533,7 @@ getUint32 = 1074790400 getFloat32 = 2.25 getFloat64 = 4 set little endian value offset 9 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19542,7 +19542,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19552,7 +19552,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19561,7 +19561,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19571,7 +19571,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19580,7 +19580,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19590,7 +19590,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19599,7 +19599,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19609,7 +19609,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19618,7 +19618,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19628,7 +19628,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19637,7 +19637,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19647,7 +19647,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 9 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19656,7 +19656,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19666,7 +19666,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19675,7 +19675,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19685,7 +19685,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 9 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19694,7 +19694,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19704,7 +19704,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19713,7 +19713,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19723,7 +19723,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 9 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19732,7 +19732,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19742,7 +19742,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 9 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19751,7 +19751,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19761,7 +19761,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 9 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19770,7 +19770,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19780,7 +19780,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined set little endian value offset 9 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -19789,7 +19789,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -19800,7 +19800,7 @@ getFloat32 = 4 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 10 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19809,7 +19809,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19819,7 +19819,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19828,7 +19828,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19838,7 +19838,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19847,7 +19847,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19857,7 +19857,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19866,7 +19866,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19876,7 +19876,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19885,7 +19885,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19895,7 +19895,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19904,7 +19904,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19914,7 +19914,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 10 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19923,7 +19923,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19933,7 +19933,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -19942,7 +19942,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -19952,7 +19952,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 10 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19961,7 +19961,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -19971,7 +19971,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19980,7 +19980,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -19990,7 +19990,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 10 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -19999,7 +19999,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20009,7 +20009,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 10 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20018,7 +20018,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20028,7 +20028,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 10 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20037,7 +20037,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20047,7 +20047,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined set little endian value offset 10 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -20056,7 +20056,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -20067,7 +20067,7 @@ getFloat32 = 4 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 11 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20076,7 +20076,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20086,7 +20086,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20095,7 +20095,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20105,7 +20105,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20114,7 +20114,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20124,7 +20124,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20133,7 +20133,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20143,7 +20143,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20152,7 +20152,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20162,7 +20162,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20171,7 +20171,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20181,7 +20181,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 11 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20190,7 +20190,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20200,7 +20200,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20209,7 +20209,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20219,7 +20219,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 11 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20228,7 +20228,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20238,7 +20238,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20247,7 +20247,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20257,7 +20257,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 11 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20266,7 +20266,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20276,7 +20276,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 11 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20285,7 +20285,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20295,7 +20295,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 11 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20304,7 +20304,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20314,7 +20314,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined set little endian value offset 11 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -20323,7 +20323,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -20334,7 +20334,7 @@ getFloat32 = 4 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 12 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20343,7 +20343,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20353,7 +20353,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20362,7 +20362,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20372,7 +20372,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20381,7 +20381,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20391,7 +20391,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20400,7 +20400,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20410,7 +20410,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20419,7 +20419,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20429,7 +20429,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20438,7 +20438,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20448,7 +20448,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 12 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20457,7 +20457,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20467,7 +20467,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20476,7 +20476,7 @@ getInt32 = 1024 getUint32 = 1024 getFloat32 = 1.4349296274686127e-42 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20486,7 +20486,7 @@ getUint32 = 262144 getFloat32 = 3.6734198463196485e-40 getFloat64 = undefined set little endian value offset 12 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20495,7 +20495,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20505,7 +20505,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setInt32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20514,7 +20514,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20524,7 +20524,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 12 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20533,7 +20533,7 @@ getInt32 = 4 getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20543,7 +20543,7 @@ getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined set little endian value offset 12 value 4 method setUint32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20552,7 +20552,7 @@ getInt32 = 67108864 getUint32 = 67108864 getFloat32 = 1.504632769052528e-36 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20562,7 +20562,7 @@ getUint32 = 4 getFloat32 = 5.605193857299268e-45 getFloat64 = undefined set little endian value offset 12 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20571,7 +20571,7 @@ getInt32 = 1082130432 getUint32 = 1082130432 getFloat32 = 4 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 0 @@ -20581,7 +20581,7 @@ getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined set little endian value offset 12 value 4 method setFloat32 -results of little endian reads are: +results of little endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = -32704 @@ -20590,7 +20590,7 @@ getInt32 = 32832 getUint32 = 32832 getFloat32 = 4.600743118071239e-41 getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 64 getUint8 = 64 getInt16 = 16512 @@ -20601,7 +20601,7 @@ getFloat32 = 4 getFloat64 = undefined SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 13 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20610,7 +20610,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20620,7 +20620,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20629,7 +20629,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20639,7 +20639,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20648,7 +20648,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20658,7 +20658,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20667,7 +20667,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20677,7 +20677,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20686,7 +20686,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20696,7 +20696,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20705,7 +20705,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20715,7 +20715,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20724,7 +20724,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20734,7 +20734,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 13 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20743,7 +20743,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20757,7 +20757,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 14 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20766,7 +20766,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20776,7 +20776,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20785,7 +20785,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20795,7 +20795,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20804,7 +20804,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20814,7 +20814,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20823,7 +20823,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20833,7 +20833,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20842,7 +20842,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20852,7 +20852,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setInt16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20861,7 +20861,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20871,7 +20871,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 4 @@ -20880,7 +20880,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = 1024 @@ -20890,7 +20890,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 14 value 4 method setUint16 -results of little endian reads are: +results of little endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 1024 @@ -20899,7 +20899,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 0 getUint8 = 0 getInt16 = 4 @@ -20913,7 +20913,7 @@ SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length SUCCEEDED: exception DataView operation access beyond specified buffer length set little endian value offset 15 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20922,7 +20922,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20932,7 +20932,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 4 method setInt8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20941,7 +20941,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20951,7 +20951,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20960,7 +20960,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20970,7 +20970,7 @@ getUint32 = undefined getFloat32 = undefined getFloat64 = undefined set little endian value offset 15 value 4 method setUint8 -results of little endian reads are: +results of little endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -20979,7 +20979,7 @@ getInt32 = undefined getUint32 = undefined getFloat32 = undefined getFloat64 = undefined -results of big endian reads are: +results of big endian reads are: getInt8 = 4 getUint8 = 4 getInt16 = undefined @@ -21004,37 +21004,37 @@ property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -21843,37 +21843,37 @@ Start two thread test on file int8array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -22787,37 +22787,37 @@ Start two thread test on file uint8array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -23587,37 +23587,37 @@ Start two thread test on file int16array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -24359,37 +24359,37 @@ Start two thread test on file uint16array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -25081,37 +25081,37 @@ Start two thread test on file int32array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -25783,37 +25783,37 @@ Start two thread test on file uint32array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -26492,37 +26492,37 @@ Start two thread test on file float32array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } @@ -27167,37 +27167,37 @@ Start two thread test on file float64array.js property of global: WScript property of global: print property of global: SCA -sub object serialize in SCA is +sub object serialize in SCA is function serialize() { [native code] } -sub object deserialize in SCA is +sub object deserialize in SCA is function deserialize() { [native code] } -sub object lookup in SCA is +sub object lookup in SCA is function lookup() { [native code] } -sub object lookupEx in SCA is +sub object lookupEx in SCA is function lookupEx() { [native code] } -sub object dataToKey in SCA is +sub object dataToKey in SCA is function dataToKey() { [native code] } -sub object makeInt64 in SCA is +sub object makeInt64 in SCA is function makeInt64() { [native code] } -sub object makeUint64 in SCA is +sub object makeUint64 in SCA is function makeUint64() { [native code] } diff --git a/test/typedarray/samethread.baseline b/test/typedarray/samethread.baseline index 1ffe93d0323..67b17c84647 100644 --- a/test/typedarray/samethread.baseline +++ b/test/typedarray/samethread.baseline @@ -21003,6 +21003,8 @@ undefined Start same thread different engine test on file dataview.js property of global: print +property of global: read +property of global: readbuffer property of global: printDataView exception is -2146823281Unable to get property 'toString' of undefined or null reference property of global: GetResult @@ -21934,6 +21936,8 @@ undefined Start same thread different engine test on file int8array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '5' of undefined or null reference property of global: test1 @@ -23019,6 +23023,8 @@ undefined Start same thread different engine test on file uint8array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -23986,6 +23992,8 @@ undefined Start same thread different engine test on file int16array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -24925,6 +24933,8 @@ undefined Start same thread different engine test on file uint16array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -25850,6 +25860,8 @@ byteLength = 28 Start same thread different engine test on file int32array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -26728,6 +26740,8 @@ undefined Start same thread different engine test on file uint32array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -27604,6 +27618,8 @@ undefined Start same thread different engine test on file float32array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 @@ -28446,6 +28462,8 @@ undefined Start same thread different engine test on file float64array.js property of global: print undefined +property of global: read +property of global: readbuffer property of global: oneTest exception is -2146823281Unable to set property '1' of undefined or null reference property of global: test1 diff --git a/test/wasm/WasmObject.js b/test/wasm/WasmObject.js new file mode 100644 index 00000000000..832a443072b --- /dev/null +++ b/test/wasm/WasmObject.js @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +var a = WScript.LoadWasmFile('basic.wast', {foo: function(a){print(a); return 2;}}); + +if (typeof Wasm === "undefined") { + throw new Error("Missing Wasm Object"); +} +const instantiateModuleType = typeof Wasm.instantiateModule; +if (instantiateModuleType !== "function") { + throw new Error(`Wrong Wasm.instantiateModule type. Expected function, Got ${instantiateModuleType}`); +} +try { + Wasm.instantiateModule(); + print("instantiateModule requires arguments"); + print("FAILED"); +} catch (e) { + print(e.message); +} + + +const arrBuffer = new ArrayBuffer(10); +try { + Wasm.instantiateModule(arrBuffer); + print("instantiateModule requires FFI"); + print("FAILED"); +} catch (e) { + print(e.message); +} + +try { + Wasm.instantiateModule(12, {}); + print("instantiateModule requires an ArrayBuffer as first argument"); + print("FAILED"); +} catch (e) { + print(e.message); +} + +try { + Wasm.instantiateModule(arrBuffer, "some string"); + print("instantiateModule requires an Object as second argument"); + print("FAILED"); +} catch (e) { + print(e.message); +} diff --git a/test/wasm/basic.asm_module.js b/test/wasm/basic.asm_module.js new file mode 100644 index 00000000000..bc1fbc5f664 --- /dev/null +++ b/test/wasm/basic.asm_module.js @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +function asmModule($a,$b,$c){ +'use asm'; + function func0() + { + return 2|0; + } + function func1(param0) + { + param0 = param0|0; + var local0 = 0; + if ((26|0) > (25|0)) + { + local0 = (local0 + 4)|0; + } + + + local0 = (local0 + 4)|0; + local0 = (local0 + 4)|0; + local0 = (local0 + 2)|0; + + + return (local0 + 42) | 0; + //return 0; + } +return {a:func1}; +} \ No newline at end of file diff --git a/test/wasm/basic.js b/test/wasm/basic.js new file mode 100644 index 00000000000..47540762c6e --- /dev/null +++ b/test/wasm/basic.js @@ -0,0 +1,15 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +var a = Wasm.instantiateModule(readbuffer('basic.wasm'), {test: {foo: function(a){print(a); return 2;}}}); +print(a.exports.a(11)); +print(a.exports.a(11)); +var b = 0; +var c = new Int32Array(a.exports.memory); +for(var i=0; i<10000; i++) +{ + b+= c[i]; +} +print(b); diff --git a/test/wasm/basic.wasm b/test/wasm/basic.wasm new file mode 100644 index 00000000000..439d05b8910 Binary files /dev/null and b/test/wasm/basic.wasm differ diff --git a/test/wasm/basic.wast b/test/wasm/basic.wast new file mode 100644 index 00000000000..cc47965054d --- /dev/null +++ b/test/wasm/basic.wast @@ -0,0 +1,40 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- +(module + (type $t1 (func (result i32))) + (type $t2 (func (param i32) (result i32))) + + (memory (export "memory") 5000 5000) + (import "test" "foo" (func $foo (type $t2))) + (func $f1 (type $t1) + (return (i32.const 2)) + ) + (func $f2 (export "a") (type $t2) (local f32) + (if (i32.ge_s (i32.const 26) (i32.const 25)) + (set_local 0 (i32.add (get_local 0) (i32.const 4))) + ) + (set_local 0 (i32.add (get_local 0) (call_indirect $t1 (i32.const 0)))) + (if_else (i32.ge_s (i32.const 22) (i32.const 25)) + (set_local 0 (i32.add (get_local 0) (i32.const 4))) + (set_local 0 (i32.sub (get_local 0) (i32.const 5))) + ) + (block + (set_local 0 (i32.add (get_local 0) (i32.const 4))) + (set_local 0 (i32.add (get_local 0) (i32.clz (get_local 0)))) + (set_local 0 (i32.add (get_local 0) (call $f1))) + (br_if 0 (select (f32.ne (get_local 1) (get_local 1)) (i32.const 0) (i32.const 1))) + (set_local 0 (i32.add (get_local 0) (i32.const 4))) + ) + (call $foo (get_local 0)) + (i32.store (get_local 0) (i32.add (get_local 0) (i32.const 7))) + (set_local 0 (i32.load (get_local 0))) + (set_local 1 (f32.convert_s/i32 (get_local 0))) + (set_local 1 (f32.add (get_local 1) (get_local 1))) + (set_local 0 (i32.reinterpret/f32 (get_local 1))) + (set_local 0 (i32.add (get_local 0) (call $foo (get_local 0)))) + (return (i32.add (get_local 0) (i32.const 42))) + ) + (table anyfunc (elem $f1 $f2)) +) diff --git a/test/wasm/basicBinary.js b/test/wasm/basicBinary.js new file mode 100644 index 00000000000..d2fe79c61dd --- /dev/null +++ b/test/wasm/basicBinary.js @@ -0,0 +1,10 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('basic.wasm'); +print(blob.byteLength); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}); +print(a.a(11)); diff --git a/test/wasm/controlflow.baseline b/test/wasm/controlflow.baseline new file mode 100644 index 00000000000..4b802192383 --- /dev/null +++ b/test/wasm/controlflow.baseline @@ -0,0 +1,8 @@ +2 +1 +7 +3 +3 +4 +3 +4 diff --git a/test/wasm/controlflow.js b/test/wasm/controlflow.js new file mode 100644 index 00000000000..106ba949f74 --- /dev/null +++ b/test/wasm/controlflow.js @@ -0,0 +1,16 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('controlflow.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; +print(a.a(0)); +print(a.a(1)); +print(a.yield_top(0)) +print(a.yield_top(1)) +print(a.br_if(0)) +print(a.br_if(1)) +print(a.br()) +print(a.block()) diff --git a/test/wasm/controlflow.wasm b/test/wasm/controlflow.wasm new file mode 100644 index 00000000000..ac6e62dca8c Binary files /dev/null and b/test/wasm/controlflow.wasm differ diff --git a/test/wasm/controlflow.wast b/test/wasm/controlflow.wast new file mode 100644 index 00000000000..e242f0ffcfb --- /dev/null +++ b/test/wasm/controlflow.wast @@ -0,0 +1,71 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func $c (result f32) + (return (f32.const 1001.2))) + + (func $b (param i32) (result f32) + (return + (if f32 (get_local 0) + (then (f32.const 1)) + (else (f32.const 2)) + ) + ) + ) + + (func $a (export "a") (param i32) (result f32) + (block f32 (call $b (get_local 0)) (call $c) (drop))) + + (func $e (param i32) (result i32) + (i32.const 0)) + + (func (export "yield_top") (param i32) (result i32) + (block + (return (i32.add + (br_if 0 (i32.const 4) (get_local 0)) + (i32.const 3) + )) + ) + (i32.const 3) + ) + + (func (export "br_if") (param i32) (result i32) + (block i32 + (block + (br_if 1 (i32.const 4) (get_local 0)) + (drop) + ) + (i32.const 3) + ) + ) + + (func (export "br") (result i32) + (block + (i32.const 4) + (br 0) + (drop) + ) + (i32.const 3) + ) + + (func (export "block") (result i32) + (i32.const 4) + (block + (i32.const 5) + (br 0) + (drop) + ) + ) +) + +(assert_return (invoke "a" (i32.const 0)) (f32.const 2)) +(assert_return (invoke "a" (i32.const 1)) (f32.const 1)) +(assert_return (invoke "yield_top" (i32.const 0)) (i32.const 7)) +(assert_return (invoke "yield_top" (i32.const 1)) (i32.const 3)) +(assert_return (invoke "br_if" (i32.const 0)) (i32.const 3)) +(assert_return (invoke "br_if" (i32.const 1)) (i32.const 4)) +(assert_return (invoke "br") (i32.const 3)) +(assert_return (invoke "block") (i32.const 4)) diff --git a/test/wasm/dropteelocal.baseline b/test/wasm/dropteelocal.baseline new file mode 100644 index 00000000000..9f9d37e19da --- /dev/null +++ b/test/wasm/dropteelocal.baseline @@ -0,0 +1 @@ +100 diff --git a/test/wasm/dropteelocal.js b/test/wasm/dropteelocal.js new file mode 100644 index 00000000000..03a5b4c618d --- /dev/null +++ b/test/wasm/dropteelocal.js @@ -0,0 +1,9 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('dropteelocal.wasm') +const view = new Uint8Array(blob); +var a = Wasm.instantiateModule(view, {}).exports; +print(a.tee(1)); // == 100 diff --git a/test/wasm/dropteelocal.wasm b/test/wasm/dropteelocal.wasm new file mode 100644 index 00000000000..f2745b382b8 Binary files /dev/null and b/test/wasm/dropteelocal.wasm differ diff --git a/test/wasm/dropteelocal.wast b/test/wasm/dropteelocal.wast new file mode 100644 index 00000000000..a52bdf5f210 --- /dev/null +++ b/test/wasm/dropteelocal.wast @@ -0,0 +1,21 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + + (func $tee (export "tee") (param i32) (result i32) + (local i32 i32) + (set_local 1 (get_local 0)) + (set_local 2 (i32.const 1)) + (block + (set_local 2 (i32.mul (get_local 1) (get_local 2))) + (drop (get_local 2)) + (if (i32.eqz (tee_local 1 (i32.sub (get_local 1) (i32.const 1)))) + (set_local 2 (i32.const 100)) + (set_local 2 (i32.const 200))) + ) + (get_local 2) + ) +) diff --git a/test/wasm/f32.baseline b/test/wasm/f32.baseline new file mode 100644 index 00000000000..359e97797b1 --- /dev/null +++ b/test/wasm/f32.baseline @@ -0,0 +1,9 @@ +11 +11.010000228881836 +NaN +NaN +NaN +Infinity +NaN +NaN +NaN diff --git a/test/wasm/f32.js b/test/wasm/f32.js new file mode 100644 index 00000000000..7d592d4db4e --- /dev/null +++ b/test/wasm/f32.js @@ -0,0 +1,18 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('f32.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; +print(a.min(11, 11.01)); // 11 +print(a.max(11, 11.01)); // 11.010000228881836 +print(a.min(NaN, 11.01)); // NaN +print(a.max(NaN, 11.01)); // NaN +print(a.min(11, NaN)); // NaN +print(a.max(1/0, 11.01)); // Infinity +print(a.max(11.01, 0/0)); // NaN +print(a.max(0/0, 11.01)); // NaN +print(a.max(NaN, -NaN)); // NaN + diff --git a/test/wasm/f32.wasm b/test/wasm/f32.wasm new file mode 100644 index 00000000000..a024fe2a2a0 Binary files /dev/null and b/test/wasm/f32.wasm differ diff --git a/test/wasm/f32.wast b/test/wasm/f32.wast new file mode 100644 index 00000000000..f2f52c141f2 --- /dev/null +++ b/test/wasm/f32.wast @@ -0,0 +1,14 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func (export "min") (param f32) (param f32) (result f32) + (return (f32.min (get_local 0) (get_local 1))) + ) + + (func (export "max") (param f32) (param f32) (result f32) + (return (f32.max (get_local 0) (get_local 1))) + ) +) diff --git a/test/wasm/f32address.js b/test/wasm/f32address.js new file mode 100644 index 00000000000..5825b048003 --- /dev/null +++ b/test/wasm/f32address.js @@ -0,0 +1,110 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- +this.WScript.LoadScriptFile("..\\UnitTestFramework\\SimdJsHelpers.js"); + var memory = null; + var ffi = {spectest: {print: print}}; + var module = Wasm.instantiateModule(readbuffer('f32address.wasm'), ffi); + + +equal(2145386496, module.exports['i32.load']()); +equal(NaN , module.exports['f32.load']()); +module.exports['reset'](); +equal(0 , module.exports['i32.load']()); +equal(0 , module.exports['f32.load']()); +module.exports['f32.store'](); +equal(1325350912, module.exports['i32.load']()); +equal(2141192192, module.exports['f32.load']()); +module.exports['reset'](); +equal(0 , module.exports['i32.load']()); +equal(0 , module.exports['f32.load']()); +module.exports['i32.store'](); +equal(2141192192, module.exports['i32.load']()); +equal(NaN , module.exports['f32.load']()); + +equal(8364032 , module.exports['i32.load1']()); +equal(1.1720505197163628e-38, module.exports['f32.load1']()); +module.exports['reset1'](); +equal(0 , module.exports['i32.load1']()); +equal(0 , module.exports['f32.load1']()); +module.exports['f32.store1'](); +equal(1325350912, module.exports['i32.load1']()); +equal(2141192192, module.exports['f32.load1']()); +module.exports['reset1'](); +equal(0 , module.exports['i32.load1']()); +equal(0 , module.exports['f32.load1']()); +module.exports['i32.store1'](); +equal(2141192192, module.exports['i32.load1']()); +equal(NaN, module.exports['f32.load1']()); + + +module.exports['i32.store'](); + +equal(8355744 , module.exports['i32.load2']()); +equal(1.1708891235491304e-38, module.exports['f32.load2']()); +module.exports['reset2'](); +equal(0 , module.exports['i32.load2']()); +equal(0 , module.exports['f32.load2']()); +module.exports['f32.store2'](); +equal(1325350912, module.exports['i32.load2']()); +equal(2141192192, module.exports['f32.load2']()); +module.exports['reset2'](); +equal(0 , module.exports['i32.load2']()); +equal(0 , module.exports['f32.load2']()); +module.exports['i32.store2'](); +equal(2141192192, module.exports['i32.load2']()); +equal(NaN , module.exports['f32.load2']()); + +print("PASSED"); + +//To Generate Baselines +// print(module.exports['i32.load']()); +// print(module.exports['f32.load']()); +// module.exports['reset'](); +// print(module.exports['i32.load']()); +// print(module.exports['f32.load']()); +// module.exports['f32.store'](); +// print(module.exports['i32.load']()); +// print(module.exports['f32.load']()); +// module.exports['reset'](); +// print(module.exports['i32.load']()); +// print(module.exports['f32.load']()); +// module.exports['i32.store'](); +// print(module.exports['i32.load']()); +// print(module.exports['f32.load']()); +// +// +// print(); +// print(module.exports['i32.load1']()); +// print(module.exports['f32.load1']()); +// module.exports['reset1'](); +// print(module.exports['i32.load1']()); +// print(module.exports['f32.load1']()); +// module.exports['f32.store1'](); +// print(module.exports['i32.load1']()); +// print(module.exports['f32.load1']()); +// module.exports['reset1'](); +// print(module.exports['i32.load1']()); +// print(module.exports['f32.load1']()); +// module.exports['i32.store1'](); +// print(module.exports['i32.load1']()); +// print(module.exports['f32.load1']()); +// +// module.exports['i32.store'](); +// +// print(); +// print(module.exports['i32.load2']()); +// print(module.exports['f32.load2']()); +// module.exports['reset2'](); +// print(module.exports['i32.load2']()); +// print(module.exports['f32.load2']()); +// module.exports['f32.store2'](); +// print(module.exports['i32.load2']()); +// print(module.exports['f32.load2']()); +// module.exports['reset2'](); +// print(module.exports['i32.load2']()); +// print(module.exports['f32.load2']()); +// module.exports['i32.store2'](); +// print(module.exports['i32.load2']()); +// print(module.exports['f32.load2']()); diff --git a/test/wasm/f32address.wasm b/test/wasm/f32address.wasm new file mode 100644 index 00000000000..9e98bf4cb5c Binary files /dev/null and b/test/wasm/f32address.wasm differ diff --git a/test/wasm/f32address.wast b/test/wasm/f32address.wast new file mode 100644 index 00000000000..aab1fba35da --- /dev/null +++ b/test/wasm/f32address.wast @@ -0,0 +1,43 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- +(module + (memory 1 1) + (data (i32.const 1) "\00\00\e0\7f") + + (func (export "f32.load") (result f32) (f32.load offset=0 align=1 (i32.const 1))) + (func (export "i32.load") (result i32) (i32.load offset=0 align=2 (i32.const 1))) + (func (export "f32.store") (f32.store (i32.const 1) (f32.const 0x7fa00000))) + (func (export "i32.store") (i32.store (i32.const 1) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i32.const 1) (i32.const 0))) + + + (func (export "f32.load1") (result f32) (f32.load offset=1 align=1 (i32.const 1))) + (func (export "i32.load1") (result i32) (i32.load offset=1 align=2 (i32.const 1))) + (func (export "f32.store1") (f32.store offset=1 (i32.const 1) (f32.const 0x7fa00000))) + (func (export "i32.store1") (i32.store offset=1 (i32.const 1) (i32.const 0x7fa00000))) + (func (export "reset1") (i32.store offset=1 (i32.const 1) (i32.const 0))) + + (func (export "f32.load2") (result f32) (f32.load offset=2 align=1 (i32.const 1))) + (func (export "i32.load2") (result i32) (i32.load offset=2 align=2 (i32.const 1))) + (func (export "f32.store2") (f32.store offset=2 (i32.const 1) (f32.const 0x7fa00000))) + (func (export "i32.store2") (i32.store offset=2 (i32.const 1) (i32.const 0x7fa00000))) + (func (export "reset2") (i32.store offset=2 (i32.const 1) (i32.const 0))) +) + + +;;(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +;;(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +;;(invoke "reset") +;;(assert_return (invoke "i32.load") (i32.const 0x0)) +;;(assert_return (invoke "f32.load") (f32.const 0.0)) +;;(invoke "f32.store") +;;(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +;;(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +;;(invoke "reset") +;;(assert_return (invoke "i32.load") (i32.const 0x0)) +;;(assert_return (invoke "f32.load") (f32.const 0.0)) +;;(invoke "i32.store") +;;(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +;;(assert_return (invoke "f32.load") (f32.const nan:0x200000)) diff --git a/test/wasm/global.baseline b/test/wasm/global.baseline new file mode 100644 index 00000000000..892963262c1 --- /dev/null +++ b/test/wasm/global.baseline @@ -0,0 +1,53 @@ +printing module +get-a -2 +get-x 10 +get-y 5 +get-z 777 +get-b 1001 +get-c 9.5 +get-d 9.5 +get-e 10 +get-f 18 +printing exported globals +x 10 +z 777 +c 9.5 +d 9.5 +e 10 +printing module +get-a -2 +get-x 10 +get-y 123 +get-z 777 +get-b 1001 +get-c 9.5 +get-d 9.5 +get-e 10 +get-f 18 +printing module +get-a -2 +get-x 10 +get-y 123 +get-z 777 +get-b 0.125 +get-c 9.5 +get-d 9.5 +get-e 10 +get-f 18 +printing exported globals +x 10 +z 777 +c 9.5 +d 9.5 +e 10 +printing module b +printing module +get-a 13 +get-x 10 +get-y 0 +get-z 777 +get-b 5 +get-c 9.5 +get-d 9.5 +get-e 10 +get-f 9.5 diff --git a/test/wasm/global.js b/test/wasm/global.js new file mode 100755 index 00000000000..05573429bc4 --- /dev/null +++ b/test/wasm/global.js @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +function printAll (a) { + + print("printing module"); + print("get-a " + a["get-a"]()); + print("get-x " + a["get-x"]()); + print("get-y " + a["get-y"]()); + print("get-z " + a["get-z"]()); + print("get-b " + a["get-b"]()); + print("get-c " + a["get-c"]()); + print("get-d " + a["get-d"]()); + print("get-e " + a["get-e"]()); + print("get-f " + a["get-f"]()); +} + +function printExportedGlobals (a) { + + print("printing exported globals"); + print("x " + a["x"]); + print("z " + a["z"]); + print("c " + a["c"]); + print("d " + a["d"]); + print("e " + a["e"]); +} + +const blob = WScript.LoadBinaryFile('global.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; + +const blob2 = WScript.LoadBinaryFile('import.wasm'); +const moduleBytesView2 = new Uint8Array(blob2); +var b = Wasm.instantiateModule(moduleBytesView2, {"m" : a}).exports; + +printAll(a); +printExportedGlobals(a); +a["set-y"](123); +printAll(a); +a["set-b"](0.125); +printAll(a); +printExportedGlobals(a); +print ("printing module b"); +printAll(b); diff --git a/test/wasm/global.wasm b/test/wasm/global.wasm new file mode 100755 index 00000000000..a794770a16e Binary files /dev/null and b/test/wasm/global.wasm differ diff --git a/test/wasm/global.wast b/test/wasm/global.wast new file mode 100755 index 00000000000..df58a46941b --- /dev/null +++ b/test/wasm/global.wast @@ -0,0 +1,31 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- +(module + (global $a i32 (i32.const -2)) + (global $x (export "x") i32 (i32.const 10)) + (global $y (mut f32) (f32.const 5)) + (global $z (export "z") f64 (f64.const 777)) + (global $b (mut f64) (f64.const 1001)) + (global $c (export "c") f64 (f64.const 9.5)) + (global $d (export "d") f64 (get_global $c)) + (global $e (export "e") i32 (get_global $x)) + (global $f (export "f") i32 (i32.const 18)) + + (func (export "get-a") (result i32) (get_global $a)) + (func (export "get-x") (result i32) (get_global $x)) + (func (export "get-y") (result f32) (get_global $y)) + (func (export "get-z") (result f64) (get_global $z)) + (func (export "get-b") (result f64) (get_global $b)) + (func (export "get-c") (result f64) (get_global $c)) + (func (export "get-d") (result f64) (get_global $d)) + (func (export "get-e") (result i32) (get_global $e)) + (func (export "get-f") (result i32) (get_global $f)) + + (func (export "set-y") (param f32) (set_global 2 (get_local 0))) + (func (export "set-b") (param f64) (set_global 4 (get_local 0))) +) + + + diff --git a/test/wasm/i32_popcnt.baseline b/test/wasm/i32_popcnt.baseline new file mode 100644 index 00000000000..006ed1df88f --- /dev/null +++ b/test/wasm/i32_popcnt.baseline @@ -0,0 +1,5 @@ +2 +3 +1 +32 +0 diff --git a/test/wasm/i32_popcnt.js b/test/wasm/i32_popcnt.js new file mode 100755 index 00000000000..30910acd5c2 --- /dev/null +++ b/test/wasm/i32_popcnt.js @@ -0,0 +1,15 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('i32_popcnt.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; +print(a.popcount(3)); +print(a.popcount(7)); +print(a.popcount(8)); +print (a.popcount(-1)); +print (a.popcount(0)); + + diff --git a/test/wasm/i32_popcnt.wasm b/test/wasm/i32_popcnt.wasm new file mode 100644 index 00000000000..3f44d4c94e8 Binary files /dev/null and b/test/wasm/i32_popcnt.wasm differ diff --git a/test/wasm/i32_popcnt.wast b/test/wasm/i32_popcnt.wast new file mode 100755 index 00000000000..69095f51571 --- /dev/null +++ b/test/wasm/i32_popcnt.wast @@ -0,0 +1,7 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- +(module + (func (export "popcount") (param i32) (result i32) (i32.popcnt (get_local 0))) +) diff --git a/test/wasm/import.wasm b/test/wasm/import.wasm new file mode 100755 index 00000000000..9aaaa5a5059 Binary files /dev/null and b/test/wasm/import.wasm differ diff --git a/test/wasm/import.wast b/test/wasm/import.wast new file mode 100755 index 00000000000..df04edb56b5 --- /dev/null +++ b/test/wasm/import.wast @@ -0,0 +1,30 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- +(module + (global $x (import "m" "x") i32) + (global $z (import "m" "z") f64) + (global $c (import "m" "c") f64) + (global $d (import "m" "d") f64) + (global $e (import "m" "e") i32) + + (global $a i32 (i32.const 13)) + (global $b f32 (f32.const 5)) + (global $f f64 (get_global $d)) + (global $y i32 (i32.const 0)) + + (func (export "get-x") (result i32) (get_global $x)) + (func (export "get-z") (result f64) (get_global $z)) + (func (export "get-c") (result f64) (get_global $c)) + (func (export "get-d") (result f64) (get_global $d)) + (func (export "get-e") (result i32) (get_global $e)) + + (func (export "get-a") (result i32) (get_global $a)) + (func (export "get-b") (result f32) (get_global $b)) + (func (export "get-f") (result f64) (get_global $f)) + (func (export "get-y") (result i32) (get_global $y)) +) + + + diff --git a/test/wasm/math.js b/test/wasm/math.js new file mode 100644 index 00000000000..0861aef4705 --- /dev/null +++ b/test/wasm/math.js @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +let passed = true; +let check = function(expected, funName, ...args) +{ + let fun = eval(funName); + let result = fun(...args); + if(result != expected) + { + passed = false; + print(`${funName}(${[...args]}) produced ${result}, expected ${expected}`); + } +} + + +let ffi = {}; +let wasm = readbuffer("math.wasm"); +let exports = Wasm.instantiateModule(new Uint8Array(wasm), ffi).exports; +check(0, "exports.ctz", 1); +check(2, "exports.ctz", 4); +check(31, "exports.ctz", -Math.pow(2,31)); +check(32, "exports.ctz", 0); + + +if(passed) +{ + print("Passed"); +} diff --git a/test/wasm/math.wast b/test/wasm/math.wast new file mode 100644 index 00000000000..c73c8316e5d --- /dev/null +++ b/test/wasm/math.wast @@ -0,0 +1,10 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func (export "ctz") (param $a i32) (result i32) + (i32.ctz (get_local $a)) + ) +) diff --git a/test/wasm/misc.baseline b/test/wasm/misc.baseline new file mode 100644 index 00000000000..17f1a4a85b4 --- /dev/null +++ b/test/wasm/misc.baseline @@ -0,0 +1,38 @@ +40 +-40 +1 +-1 +-255 +255 +1 +0 +0 +0 +-1 +NaN +NaN +Infinity +-Infinity +0 +-1 +NaN +NaN +Infinity +-Infinity +1 +0 +0 +-1 +-2 +NaN +NaN +Infinity +-Infinity +0 +-1 +-2 +NaN +NaN +Infinity +-Infinity +-255 diff --git a/test/wasm/misc.js b/test/wasm/misc.js new file mode 100644 index 00000000000..066298294be --- /dev/null +++ b/test/wasm/misc.js @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('misc.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; +print(a.f32copysign(-40.0,2.0)); // == 40.0 +print(a.f32copysign(-40.0,-2.0)); // == -40.0 +print(a.f32copysign(-1.0,2.0)); // == 1.0 +print(a.f32copysign(-1.0,-2.0)); // == -1.0 +print(a.f32copysign(255.0,-1.0)); // == -255.0 +print(a.f32copysign(255.0,1.0)); // == 255.0 +print(a.eqz(0)); // == 1 +print(a.eqz(-1)); // == 0 +print(a.eqz(1)); // == 0 +print(a.trunc(0.5)); // == 0 +print(a.trunc(-1.5)); // == -1 +print(a.trunc(NaN)); // == NaN +print(a.trunc(-NaN)); // == NaN +print(a.trunc(Infinity)); // == Infinity +print(a.trunc(-Infinity)); // == -Infinity +print(a.f64trunc(0.5)); // == 0 +print(a.f64trunc(-1.5)); // == -1 +print(a.f64trunc(NaN)); // == NaN +print(a.f64trunc(-NaN)); // == NaN +print(a.f64trunc(Infinity)); // == Infinity +print(a.f64trunc(-Infinity)); // == -Infinity +print(a.ifeqz(0)); // == 1 +print(a.ifeqz(-1)); // == 0 +print(a.nearest(-0.1)); // == 0 +print(a.nearest(-0.7)); // == -1 +print(a.nearest(-1.5)); // == -2 +print(a.nearest(NaN)); // == NaN +print(a.nearest(-NaN)); // == NaN +print(a.nearest(Infinity)); // == Infinity +print(a.nearest(-Infinity)); // == -Infinity +print(a.f64nearest(-0.1)); // == 0 +print(a.f64nearest(-0.7)); // == -1 +print(a.f64nearest(-1.5)); // == -2 +print(a.f64nearest(NaN)); // == NaN +print(a.f64nearest(-NaN)); // == NaN +print(a.f64nearest(Infinity)); // == Infinity +print(a.f64nearest(-Infinity)); // == -Infinity +print(a.f64copysign(255.0,-1.0)); // == -255.0 diff --git a/test/wasm/misc.wasm b/test/wasm/misc.wasm new file mode 100644 index 00000000000..311652e6481 Binary files /dev/null and b/test/wasm/misc.wasm differ diff --git a/test/wasm/misc.wast b/test/wasm/misc.wast new file mode 100644 index 00000000000..7fdf9c0723a --- /dev/null +++ b/test/wasm/misc.wast @@ -0,0 +1,31 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func (export "f32copysign") (param f32) (param f32) (result f32) + (return (f32.copysign (get_local 0) (get_local 1)))) + + (func (export "f64copysign") (param f64) (param f64) (result f64) + (return (f64.copysign (get_local 0) (get_local 1)))) + + (func (export "eqz") (param i32) (result i32) + (return (i32.eqz (get_local 0)))) + + (func (export "trunc") (param f32) (result f32) + (return (f32.trunc (get_local 0)))) + + (func (export "f64trunc") (param f64) (result f64) + (return (f64.trunc (get_local 0)))) + + (func (export "nearest") (param f32) (result f32) + (return (f32.nearest (get_local 0)))) + + (func (export "f64nearest") (param f64) (result f64) + (return (f64.nearest (get_local 0)))) + + (func (export "ifeqz") (param i32) (result i32) + (if (i32.eqz (get_local 0)) (return (i32.const 1))) + (return (i32.const 0))) +) diff --git a/test/wasm/rlexe.xml b/test/wasm/rlexe.xml new file mode 100644 index 00000000000..3b299a72203 --- /dev/null +++ b/test/wasm/rlexe.xml @@ -0,0 +1,64 @@ + + + + + rot.js + rot.baseline + -on:wasm + + + + + misc.js + misc.baseline + -on:wasm -on:wasmlazytrap + + + + + controlflow.js + controlflow.baseline + -on:wasm + + + + + f32.js + f32.baseline + -on:Wasm + + + + + dropteelocal.js + dropteelocal.baseline + -on:Wasm + + + + + i32_popcnt.js + i32_popcnt.baseline + -on:Wasm + + + + + f32address.js + -on:Wasm -on:wasmlazytrap + + + + + unreachable.js + -on:Wasm + + + + + global.js + global.baseline + -on:Wasm + + + diff --git a/test/wasm/rot.baseline b/test/wasm/rot.baseline new file mode 100644 index 00000000000..6ba393090ee --- /dev/null +++ b/test/wasm/rot.baseline @@ -0,0 +1,6 @@ +44 +262144 +16384 +255 +2 +-2147483648 diff --git a/test/wasm/rot.js b/test/wasm/rot.js new file mode 100644 index 00000000000..692047c19ef --- /dev/null +++ b/test/wasm/rot.js @@ -0,0 +1,14 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('rot.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; +print(a.rotl(11,2)); // == 44 +print(a.rotl(65536,2)); // == 262144 +print(a.rotr(65536,2)); // == 16384 +print(a.rotl(0xff00, 24)); // == 255 +print(a.rotl(0x80000000, 2)); // == 2 +print(a.rotr(0x00000001, 1)); // == -2147483648 diff --git a/test/wasm/rot.wasm b/test/wasm/rot.wasm new file mode 100644 index 00000000000..69801834354 Binary files /dev/null and b/test/wasm/rot.wasm differ diff --git a/test/wasm/rot.wast b/test/wasm/rot.wast new file mode 100644 index 00000000000..9f19508ad7d --- /dev/null +++ b/test/wasm/rot.wast @@ -0,0 +1,14 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func (export "rotl") (param i32) (param i32) (result i32) + (return (i32.rotl (get_local 0) (get_local 1))) + ) + + (func (export "rotr") (param i32) (param i32) (result i32) + (return (i32.rotr (get_local 0) (get_local 1))) + ) +) diff --git a/test/wasm/unreachable.js b/test/wasm/unreachable.js new file mode 100755 index 00000000000..1d7eaaf156b --- /dev/null +++ b/test/wasm/unreachable.js @@ -0,0 +1,17 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft Corporation and contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +const blob = WScript.LoadBinaryFile('unreachable.wasm'); +const moduleBytesView = new Uint8Array(blob); +var a = Wasm.instantiateModule(moduleBytesView, {}).exports; + +try { + a.test_unreachable(); + print("FAILED"); +} +catch(e) { + print(e.message.includes("Unreachable") ? "PASSED" : "FAILED"); +} + diff --git a/test/wasm/unreachable.wasm b/test/wasm/unreachable.wasm new file mode 100755 index 00000000000..4b03a806b4f Binary files /dev/null and b/test/wasm/unreachable.wasm differ diff --git a/test/wasm/unreachable.wast b/test/wasm/unreachable.wast new file mode 100755 index 00000000000..cc89174a5cf --- /dev/null +++ b/test/wasm/unreachable.wast @@ -0,0 +1,10 @@ +;;------------------------------------------------------------------------------------------------------- +;; Copyright (C) Microsoft Corporation and contributors. All rights reserved. +;; Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +;;------------------------------------------------------------------------------------------------------- + +(module + (func (export "test_unreachable") (result i32) (unreachable) (i32.const 1)) +) + +(assert_return (invoke "test_unreachable") (i32.const 1))