| ... | @@ -357,6 +357,14 @@ test "@memset on array pointers" { | ... | @@ -357,6 +357,14 @@ test "@memset on array pointers" { |
| 357 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 357 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 358 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 358 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 359 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; | 359 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| | 360 | if (builtin.zig_backend == .stage2_wasm) { |
| | 361 | // TODO: implement memset when element ABI size > 1 |
| | 362 | return error.SkipZigTest; |
| | 363 | } |
| | 364 | if (builtin.zig_backend == .stage2_x86_64) { |
| | 365 | // TODO: implement memset when element ABI size > 1 |
| | 366 | return error.SkipZigTest; |
| | 367 | } |
| 360 | | 368 | |
| 361 | try testMemsetArray(); | 369 | try testMemsetArray(); |
| 362 | try comptime testMemsetArray(); | 370 | try comptime testMemsetArray(); |
| ... | @@ -381,6 +389,48 @@ fn testMemsetArray() !void { | ... | @@ -381,6 +389,48 @@ fn testMemsetArray() !void { |
| 381 | } | 389 | } |
| 382 | } | 390 | } |
| 383 | | 391 | |
| | 392 | test "@memset on slices" { |
| | 393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| | 394 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| | 395 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| | 396 | if (builtin.zig_backend == .stage2_wasm) { |
| | 397 | // TODO: implement memset when element ABI size > 1 |
| | 398 | // TODO: implement memset on slices |
| | 399 | return error.SkipZigTest; |
| | 400 | } |
| | 401 | if (builtin.zig_backend == .stage2_x86_64) { |
| | 402 | // TODO: implement memset when element ABI size > 1 |
| | 403 | // TODO: implement memset on slices |
| | 404 | return error.SkipZigTest; |
| | 405 | } |
| | 406 | |
| | 407 | try testMemsetSlice(); |
| | 408 | try comptime testMemsetSlice(); |
| | 409 | } |
| | 410 | |
| | 411 | fn testMemsetSlice() !void { |
| | 412 | { |
| | 413 | // memset slice to non-undefined, ABI size == 1 |
| | 414 | var array: [20]u8 = undefined; |
| | 415 | var len = array.len; |
| | 416 | var slice = array[0..len]; |
| | 417 | @memset(slice, 'A'); |
| | 418 | try expect(slice[0] == 'A'); |
| | 419 | try expect(slice[11] == 'A'); |
| | 420 | try expect(slice[19] == 'A'); |
| | 421 | } |
| | 422 | { |
| | 423 | // memset slice to non-undefined, ABI size > 1 |
| | 424 | var array: [20]u32 = undefined; |
| | 425 | var len = array.len; |
| | 426 | var slice = array[0..len]; |
| | 427 | @memset(slice, 1234); |
| | 428 | try expect(slice[0] == 1234); |
| | 429 | try expect(slice[11] == 1234); |
| | 430 | try expect(slice[19] == 1234); |
| | 431 | } |
| | 432 | } |
| | 433 | |
| 384 | test "memcpy and memset intrinsics" { | 434 | test "memcpy and memset intrinsics" { |
| 385 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 435 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 386 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; | 436 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |