Stream: git-wasmtime

Topic: wasmtime / issue #4969 Cranelift: Regalloc checker error ...


view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2022 at 15:14):

afonso360 labeled issue #4969:

:wave: Hey,

I tried to enable s390x CI for cg_clif today, and its failing with a regalloc checker error.

I've minimized the issue to the following test case. However it should be noted that the filetests/filetests/isa/s390x/tls_elf.clif file also fails if I enable the regalloc_checker flag.

I tried to investigate this a bit, but I don't understand the register allocator very well.

.clif Test Case

test compile precise-output
set tls_model=elf_gd
set regalloc_checker
target s390x

function u0:42() -> i8 system_v {
    gv0 = symbol tls userextname0
block0:
    v0 = tls_value.i64 gv0
    v1 = load.i8 notrap v0
    return v1
}

Steps to Reproduce

`clif-util test .\the-above.clif``

Expected Results

Compile

Actual Results

     Running `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif`
 ERROR cranelift_codegen::machinst::compile > Register allocation checker errors:
CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }
for vcode:
VCode {
  Entry block: 0
  v128 := v138
  v129 := v131
Block 0:
    (original IR block: block0)
    (instruction range: 0 .. 15)
  Inst 0: larl %v132, %ElfGlobalOffsetTable + 0
  Inst 1: bras %r1, 12 ; data userextname0@tlsgd ; lg %v133, 0(%r1)
  Inst 2: lgr %r12, %v132
  Inst 3: lgr %r2, %v133
  Inst 4: brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
  Inst 5: lgr %v134, %r2
  Inst 6: ear %v135, %a0
  Inst 7: sllg %v136, %v135, 32
  Inst 8: lgr %v137, %v136
  Inst 9: ear %v137, %a1
  Inst 10: agrk %v138, %v134, %v137
  Inst 11: llc %v131, 0(%v128)
  Inst 12: lr %v130, %v129
  Inst 13: lr %r2, %v130
  Inst 14: br %r14
}

thread 'worker #0' panicked at 'register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }', cranelift\codegen\src\machinst\comp
ile.rs:69:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent      > FAIL: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i
 }] }
FAIL .\filetests\filetests\isa\s390x\tls_value.clif: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0
i }] }
1 tests
Error: 1 failure
error: process didn't exit successfully: `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif` (exit code: 1)

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: s390x

Extra Info

Maybe we should turn regalloc_checker for the entire filetest suite? Like we do the verifier flag.

cc: @bjorn3 @uweigand @cfallin

view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2022 at 15:14):

afonso360 labeled issue #4969:

:wave: Hey,

I tried to enable s390x CI for cg_clif today, and its failing with a regalloc checker error.

I've minimized the issue to the following test case. However it should be noted that the filetests/filetests/isa/s390x/tls_elf.clif file also fails if I enable the regalloc_checker flag.

I tried to investigate this a bit, but I don't understand the register allocator very well.

.clif Test Case

test compile precise-output
set tls_model=elf_gd
set regalloc_checker
target s390x

function u0:42() -> i8 system_v {
    gv0 = symbol tls userextname0
block0:
    v0 = tls_value.i64 gv0
    v1 = load.i8 notrap v0
    return v1
}

Steps to Reproduce

`clif-util test .\the-above.clif``

Expected Results

Compile

Actual Results

     Running `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif`
 ERROR cranelift_codegen::machinst::compile > Register allocation checker errors:
CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }
for vcode:
VCode {
  Entry block: 0
  v128 := v138
  v129 := v131
Block 0:
    (original IR block: block0)
    (instruction range: 0 .. 15)
  Inst 0: larl %v132, %ElfGlobalOffsetTable + 0
  Inst 1: bras %r1, 12 ; data userextname0@tlsgd ; lg %v133, 0(%r1)
  Inst 2: lgr %r12, %v132
  Inst 3: lgr %r2, %v133
  Inst 4: brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
  Inst 5: lgr %v134, %r2
  Inst 6: ear %v135, %a0
  Inst 7: sllg %v136, %v135, 32
  Inst 8: lgr %v137, %v136
  Inst 9: ear %v137, %a1
  Inst 10: agrk %v138, %v134, %v137
  Inst 11: llc %v131, 0(%v128)
  Inst 12: lr %v130, %v129
  Inst 13: lr %r2, %v130
  Inst 14: br %r14
}

thread 'worker #0' panicked at 'register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }', cranelift\codegen\src\machinst\comp
ile.rs:69:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent      > FAIL: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i
 }] }
FAIL .\filetests\filetests\isa\s390x\tls_value.clif: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0
i }] }
1 tests
Error: 1 failure
error: process didn't exit successfully: `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif` (exit code: 1)

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: s390x

Extra Info

Maybe we should turn regalloc_checker for the entire filetest suite? Like we do the verifier flag.

cc: @bjorn3 @uweigand @cfallin

view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2022 at 15:14):

afonso360 opened issue #4969:

:wave: Hey,

I tried to enable s390x CI for cg_clif today, and its failing with a regalloc checker error.

I've minimized the issue to the following test case. However it should be noted that the filetests/filetests/isa/s390x/tls_elf.clif file also fails if I enable the regalloc_checker flag.

I tried to investigate this a bit, but I don't understand the register allocator very well.

.clif Test Case

test compile precise-output
set tls_model=elf_gd
set regalloc_checker
target s390x

function u0:42() -> i8 system_v {
    gv0 = symbol tls userextname0
block0:
    v0 = tls_value.i64 gv0
    v1 = load.i8 notrap v0
    return v1
}

Steps to Reproduce

`clif-util test .\the-above.clif``

Expected Results

Compile

Actual Results

     Running `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif`
 ERROR cranelift_codegen::machinst::compile > Register allocation checker errors:
CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }
for vcode:
VCode {
  Entry block: 0
  v128 := v138
  v129 := v131
Block 0:
    (original IR block: block0)
    (instruction range: 0 .. 15)
  Inst 0: larl %v132, %ElfGlobalOffsetTable + 0
  Inst 1: bras %r1, 12 ; data userextname0@tlsgd ; lg %v133, 0(%r1)
  Inst 2: lgr %r12, %v132
  Inst 3: lgr %r2, %v133
  Inst 4: brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
  Inst 5: lgr %v134, %r2
  Inst 6: ear %v135, %a0
  Inst 7: sllg %v136, %v135, 32
  Inst 8: lgr %v137, %v136
  Inst 9: ear %v137, %a1
  Inst 10: agrk %v138, %v134, %v137
  Inst 11: llc %v131, 0(%v128)
  Inst 12: lr %v130, %v129
  Inst 13: lr %r2, %v130
  Inst 14: br %r14
}

thread 'worker #0' panicked at 'register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }', cranelift\codegen\src\machinst\comp
ile.rs:69:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent      > FAIL: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i
 }] }
FAIL .\filetests\filetests\isa\s390x\tls_value.clif: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0
i }] }
1 tests
Error: 1 failure
error: process didn't exit successfully: `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif` (exit code: 1)

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: s390x

Extra Info

Maybe we should turn regalloc_checker for the entire filetest suite? Like we do the verifier flag.

cc: @bjorn3 @uweigand @cfallin

view this post on Zulip Wasmtime GitHub notifications bot (Sep 27 2022 at 15:15):

afonso360 edited issue #4969:

:wave: Hey,

I tried to enable s390x CI for cg_clif today, and its failing with a regalloc checker error.

I've minimized the issue to the following test case. However it should be noted that the filetests/filetests/isa/s390x/tls_elf.clif file also fails if I enable the regalloc_checker flag.

I tried to investigate this a bit, but I don't understand the register allocator very well.

.clif Test Case

test compile precise-output
set tls_model=elf_gd
set regalloc_checker
target s390x

function u0:42() -> i8 system_v {
    gv0 = symbol tls userextname0
block0:
    v0 = tls_value.i64 gv0
    v1 = load.i8 notrap v0
    return v1
}

Steps to Reproduce

`clif-util test .\the-above.clif``

Expected Results

Compile

Actual Results

     Running `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif`
 ERROR cranelift_codegen::machinst::compile > Register allocation checker errors:
CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }
for vcode:
VCode {
  Entry block: 0
  v128 := v138
  v129 := v131
Block 0:
    (original IR block: block0)
    (instruction range: 0 .. 15)
  Inst 0: larl %v132, %ElfGlobalOffsetTable + 0
  Inst 1: bras %r1, 12 ; data userextname0@tlsgd ; lg %v133, 0(%r1)
  Inst 2: lgr %r12, %v132
  Inst 3: lgr %r2, %v133
  Inst 4: brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
  Inst 5: lgr %v134, %r2
  Inst 6: ear %v135, %a0
  Inst 7: sllg %v136, %v135, 32
  Inst 8: lgr %v137, %v136
  Inst 9: ear %v137, %a1
  Inst 10: agrk %v138, %v134, %v137
  Inst 11: llc %v131, 0(%v128)
  Inst 12: lr %v130, %v129
  Inst 13: lr %r2, %v130
  Inst 14: br %r14
}

thread 'worker #0' panicked at 'register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }', cranelift\codegen\src\machinst\comp
ile.rs:69:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent      > FAIL: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i
 }] }
FAIL .\filetests\filetests\isa\s390x\tls_value.clif: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0
i }] }
1 tests
Error: 1 failure
error: process didn't exit successfully: `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif` (exit code: 1)

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: s390x

Extra Info

Maybe we should turn on the regalloc_checker flag for the entire filetest suite? Like we do the verifier flag.

cc: @bjorn3 @uweigand @cfallin

view this post on Zulip Wasmtime GitHub notifications bot (Sep 28 2022 at 14:28):

uweigand commented on issue #4969:

Thanks for reporting this! Should be fixed by the PR linked above.

view this post on Zulip Wasmtime GitHub notifications bot (Sep 28 2022 at 15:25):

jameysharp closed issue #4969:

:wave: Hey,

I tried to enable s390x CI for cg_clif today, and its failing with a regalloc checker error.

I've minimized the issue to the following test case. However it should be noted that the filetests/filetests/isa/s390x/tls_elf.clif file also fails if I enable the regalloc_checker flag.

I tried to investigate this a bit, but I don't understand the register allocator very well.

.clif Test Case

test compile precise-output
set tls_model=elf_gd
set regalloc_checker
target s390x

function u0:42() -> i8 system_v {
    gv0 = symbol tls userextname0
block0:
    v0 = tls_value.i64 gv0
    v1 = load.i8 notrap v0
    return v1
}

Steps to Reproduce

`clif-util test .\the-above.clif``

Expected Results

Compile

Actual Results

     Running `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif`
 ERROR cranelift_codegen::machinst::compile > Register allocation checker errors:
CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }
for vcode:
VCode {
  Entry block: 0
  v128 := v138
  v129 := v131
Block 0:
    (original IR block: block0)
    (instruction range: 0 .. 15)
  Inst 0: larl %v132, %ElfGlobalOffsetTable + 0
  Inst 1: bras %r1, 12 ; data userextname0@tlsgd ; lg %v133, 0(%r1)
  Inst 2: lgr %r12, %v132
  Inst 3: lgr %r2, %v133
  Inst 4: brasl %r14, %ElfTlsGetOffset:tls_gdcall:userextname0
  Inst 5: lgr %v134, %r2
  Inst 6: ear %v135, %a0
  Inst 7: sllg %v136, %v135, 32
  Inst 8: lgr %v137, %v136
  Inst 9: ear %v137, %a1
  Inst 10: agrk %v138, %v134, %v137
  Inst 11: llc %v131, 0(%v128)
  Inst 12: lr %v130, %v129
  Inst 13: lr %r2, %v130
  Inst 14: br %r14
}

thread 'worker #0' panicked at 'register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i }] }', cranelift\codegen\src\machinst\comp
ile.rs:69:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
 ERROR cranelift_filetests::concurrent      > FAIL: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0i
 }] }
FAIL .\filetests\filetests\isa\s390x\tls_value.clif: panicked in worker #0: register allocation checker: CheckerErrors { errors: [UnknownValueInAllocation { inst: Inst(7), op: Use: v0i reg, alloc: p0
i }] }
1 tests
Error: 1 failure
error: process didn't exit successfully: `C:\Users\Afonso\CLionProjects\wasmtime\target\debug\clif-util.exe test .\filetests\filetests\isa\s390x\tls_value.clif` (exit code: 1)

Versions and Environment

Cranelift version or commit: main
Operating system: Windows
Architecture: s390x

Extra Info

Maybe we should turn on the regalloc_checker flag for the entire filetest suite? Like we do the verifier flag.

cc: @bjorn3 @uweigand @cfallin


Last updated: Oct 23 2024 at 20:03 UTC