Skip to content

[gardening][vm][fuzz] divergence clamp in SIMARM and SIMARM64 #56589

@dcharkes

Description

@dcharkes
solate (/b/s/w/itxb1yll64/dart_fuzzUXAVAV) FP NO-FFI FLAT : JIT-SLOWPATH-DET-ReleaseSIMARM64 - JIT-OPTCOUNTER-DET-DebugSIMARM64C: !DIVERGENCE! 1.101:1203086137 (output)

out1 and out2 are different:

is different.
Expected: ... 0.565459, 0.000000,  ...
  Actual: ... 0.565459, -0.000000, ...
                        ^
 Differ at offset 6137

-- BEGIN REPRODUCE  --

DART SDK REVISION: 

dart runtime/tools/dartfuzz/dartfuzz.dart --fp --no-ffi --flat --seed 1203086137 fuzz.dart

-- RUN 1 --

out/ReleaseSIMARM64/dart --use-slow-path --deterministic --old_gen_heap_size=128 /b/s/w/itxb1yll64/dart_fuzzUXAVAV/fuzz.dart

-- RUN 2 --

out/DebugSIMARM64C/dart --optimization_counter_threshold=1 --deterministic --old_gen_heap_size=128 /b/s/w/itxb1yll64/dart_fuzzUXAVAV/fuzz.dart

-- END REPRODUCE  --

https://logs.chromium.org/logs/dart/buildbucket/cr-buildbucket/8738390725973939873/+/u/collect_shards/dartfuzz_-_generated_programs_shard_42/task_stdout_stderr:_dartfuzz_-_generated_programs_shard_42

Repros locally on 0329ebf.

Smaller repro: https://dart-review.googlesource.com/c/sdk/+/382600

 main() {
  final float32x4 = Float32x4(-0.0, 0.0, -0.0, 0.0);
  final lowerLimit = Float32x4(-1.0, -1.0, -0.0, -0.0);
  final result = float32x4.clamp(
    lowerLimit,
    Float32x4.zero(),
  );
  print(result);
  final resultAsInt = Int32x4.fromFloat32x4Bits(result);
  print(resultAsInt);
  Expect.equals(0x0, resultAsInt.x);
  Expect.equals(0x0, resultAsInt.y);
  Expect.equals(-0x80000000, resultAsInt.z);
  Expect.equals(-0x80000000, resultAsInt.w);
}

Metadata

Metadata

Assignees

Labels

area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.dartfuzzFound with Dart fuzzing (DartFuzz, libFuzzer, etc.)gardening

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions