Skip to content

Cranelift: Optimization results in IR unsupported by x86_64 backend #13790

Description

@bjorn3

.clif Test Case

test compile
set enable_llvm_abi_extensions
set opt_level=speed_and_size
target x86_64

function u0:0() -> i128 system_v {
block1:
    v0 = iconst.i64 0
    v1 = uextend.i128 v0  ; v0 = 0
    v2 = iconst.i64 0
    v3 = iconcat v2, v2  ; v2 = 0, v2 = 0
    v4 = isub v3, v1
    v5 = icmp ugt v4, v3
    v14 = select v5, v3, v4
    return v14
}

Expected Results

Compiles like it does without optimizations.

Actual Results

Unsupported feature: should be implemented in ISLE: inst = `v18 = umin.i128 v4, v1`, type = `Some(types::I128)`

Versions and Environment

Cranelift version or commit: 0.133 and main

Operating system: Not relevant

Architecture: x86_64

Extra Info

This was originally reported as rust-lang/rustc_codegen_cranelift#1670.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIncorrect behavior in the current implementation that needs fixingcraneliftIssues related to the Cranelift code generatorcranelift:area:x64Issues related to x64 codegen

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions