Skip to content

[AVX-512] Fused-load doesn't work for <8 x i64>{ (PowerOf2 - 1), 0, 0, 0, 0, 0, 0, 0 } #136750

Open
@Validark

Description

@Validark

Godbolt

define dso_local zeroext i1 @greaterThan1(<8 x i64> %0) local_unnamed_addr {
Entry:
  %1 = icmp ugt <8 x i64> %0, <i64 1, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0, i64 0>
  %2 = bitcast <8 x i1> %1 to i8
  %3 = icmp ne i8 %2, 0
  ret i1 %3
}

Compiled with -O3 -march=znver5:

.LCPI0_1:
        .byte   1
        .byte   0
greaterThan1:
.LgreaterThan1$local:
        vpmovsxbq       xmm1, word ptr [rip + .LCPI0_1]
        vpcmpnleuq      k0, zmm0, zmm1
        kortestb        k0, k0
        setne   al
        vzeroupper
        ret

Should be:

.LCPI0_0:
        .quad   1
        .quad   0
        .quad   0
        .quad   0
        .quad   0
        .quad   0
        .quad   0
        .quad   0
greaterThan1:
.LgreaterThan1$local:
        vpcmpnleuq      k0, zmm0, zmmword ptr [rip + .LCPI0_0]
        kortestb        k0, k0
        setne   al
        vzeroupper
        ret

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions