Skip to content

Commit a0c27fa

Browse files
authored
fix: Fix SIMD Store Lane signatures (#2697)
1 parent e28f536 commit a0c27fa

File tree

6 files changed

+344
-153
lines changed

6 files changed

+344
-153
lines changed

src/builtins.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4916,7 +4916,7 @@ function builtin_v128_load_lane(ctx: BuiltinFunctionContext): ExpressionRef {
49164916
}
49174917
builtinFunctions.set(BuiltinNames.v128_load_lane, builtin_v128_load_lane);
49184918

4919-
// v128.store_lane<TFrom!>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize) -> v128
4919+
// v128.store_lane<TFrom!>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize) -> void
49204920
function builtin_v128_store_lane(ctx: BuiltinFunctionContext): ExpressionRef {
49214921
let compiler = ctx.compiler;
49224922
let module = compiler.module;
@@ -4958,7 +4958,7 @@ function builtin_v128_store_lane(ctx: BuiltinFunctionContext): ExpressionRef {
49584958
}
49594959
}
49604960
}
4961-
compiler.currentType = Type.v128;
4961+
compiler.currentType = Type.void;
49624962
if (type.isValue) {
49634963
let maxIdx = (16 / assert(type.byteSize)) - 1;
49644964
if (idx < 0 || idx > maxIdx) {

std/assembly/builtins.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1273,7 +1273,7 @@ export namespace v128 {
12731273

12741274
// @ts-ignore: decorator
12751275
@unsafe @builtin
1276-
export declare function store_lane<TFrom>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
1276+
export declare function store_lane<TFrom>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
12771277

12781278
// @ts-ignore: decorator
12791279
@builtin
@@ -1345,19 +1345,19 @@ export namespace v128 {
13451345

13461346
// @ts-ignore: decorator
13471347
@unsafe @builtin
1348-
export declare function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128;
1348+
export declare function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): void;
13491349

13501350
// @ts-ignore: decorator
13511351
@unsafe @builtin
1352-
export declare function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128;
1352+
export declare function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): void;
13531353

13541354
// @ts-ignore: decorator
13551355
@unsafe @builtin
1356-
export declare function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128;
1356+
export declare function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): void;
13571357

13581358
// @ts-ignore: decorator
13591359
@unsafe @builtin
1360-
export declare function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): v128;
1360+
export declare function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: u32, immAlign?: u32): void;
13611361

13621362
// @ts-ignore: decorator
13631363
@unsafe @builtin

std/assembly/index.d.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ declare namespace v128 {
808808
/** Loads a single lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */
809809
export function load_lane<T>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
810810
/** Stores the single lane at the specified index of the given vector to memory. */
811-
export function store_lane<T>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
811+
export function store_lane<T>(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
812812
/** Creates a vector with eight 16-bit integer lanes by loading and sign extending eight 8-bit integers. */
813813
export function load8x8_s(ptr: usize, immOffset?: u32, immAlign?: u32): v128;
814814
/** Creates a vector with eight 16-bit integer lanes by loading and zero extending eight 8-bit integers. */
@@ -844,13 +844,13 @@ declare namespace v128 {
844844
/** Loads a single 64-bit lane from memory into the specified lane of the given vector. Other lanes are bypassed as is. */
845845
export function load64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
846846
/** Stores the 8-bit lane at the specified lane of the given vector to memory. */
847-
export function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
847+
export function store8_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
848848
/** Stores the 16-bit lane at the specified lane of the given vector to memory. */
849-
export function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
849+
export function store16_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
850850
/** Stores the 32-bit lane at the specified lane of the given vector to memory. */
851-
export function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
851+
export function store32_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
852852
/** Stores the 64-bit lane at the specified lane of the given vector to memory. */
853-
export function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): v128;
853+
export function store64_lane(ptr: usize, vec: v128, idx: u8, immOffset?: usize, immAlign?: usize): void;
854854
/** Stores a vector to memory. */
855855
export function store(ptr: usize, value: v128, immOffset?: usize, immAlign?: usize): void;
856856
/** Adds each lane. */

0 commit comments

Comments
 (0)