You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SIMD.js load/store type-spec
Lowerer support
Fix asm.js load/store failures. Load/store typespec still in progress
- Fixed globOpt to consider dataWidth when eliminating bound checks based on
range analysis.
- Lowerer was not loading from headSegment. Added loading/use of
headSegment as baseOpnd.
- BoundChecks are not guaranteed to be extracted nor eliminated. Lowerer
adds upper bound check if needed.
- Further fixes in lowerer:
- Inlined bound check subtracts the needed dataWidth from the array
length.
- Wasn't scaling the array index properly.
- GlobOpt fixes:
- Remove fall through code if type-spec doesn't happen was
asserting on dataUseCount != 0 on x64. Added an if-condition to
check before calling DecrementDataUseCount.
TypeSpec only happens on non-Virtual, non-Mixed typed arrays.
- All unit-tests pass at this point.
- Enabled bound-checks on x64 for Virtual and Mixed array ValueTypes.
- Several bug fixes in lowerer and GlobOpt
- Re-enabled SIMD.js ASM.js unit-tests to run with no-asmjs and with
type-spec support (-asmjs-)
- Fixed performance issue where we bailed out excessively on
BailOnNotBuiltIn. We didn't add Int32x4() to builtIn table
Add missing copyright notice
CR fixes:
- Use PSHUFD for Swizzle_I4. Combine if statments in LowerSwizzle
- Load correct lane mask, instead of shifting lane0 mask
Copy file name to clipboardExpand all lines: lib/Backend/GlobOpt.h
+6Lines changed: 6 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1384,11 +1384,17 @@ class GlobOpt
1384
1384
// SIMD_JS
1385
1385
boolTypeSpecializeSimd128(IR::Instr *instr, Value **pSrc1Val, Value **pSrc2Val, Value **pDstVal);
1386
1386
boolSimd128DoTypeSpec(IR::Instr *instr, const Value *src1Val, const Value *src2Val, const Value *dstVal);
1387
+
boolSimd128DoTypeSpecLoadStore(IR::Instr *instr, const Value *src1Val, const Value *src2Val, const Value *dstVal, const ThreadContext::SimdFuncSignature *simdFuncSignature);
0 commit comments