Skip to content

JIT: Failed ccmp recognition #92699

@jakobbotsch

Description

@jakobbotsch
public struct Point
{
    public long X, Y;

    public static unsafe bool Equals(in Point left, in Point right)
    {
        return (left.X == right.X) & (left.Y == right.Y);
    }
}

generates

G_M28859_IG01:  ;; offset=0x0000
            stp     fp, lr, [sp, #-0x10]!
            mov     fp, sp
						;; size=8 bbWeight=1 PerfScore 1.50
G_M28859_IG02:  ;; offset=0x0008
            ldr     x2, [x0]
            ldr     x3, [x1]
            cmp     x2, x3
            cset    x2, eq
            ldr     x0, [x0, #0x08]
            ldr     x1, [x1, #0x08]
            cmp     x0, x1
            cset    x0, eq
            and     w0, w2, w0
						;; size=36 bbWeight=1 PerfScore 14.50
G_M28859_IG03:  ;; offset=0x002C
            ldp     fp, lr, [sp], #0x10
            ret     lr
						;; size=8 bbWeight=1 PerfScore 2.00

I would expect to see ccmp.

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions