Skip to content

[X86[ Failure to merge shuffles of __m128d[2] back into single __m256d load #140234

@RKSimon

Description

@RKSimon
__m256d gg(__m128d x[2], __m128d y[2]) {
    return (__m256d) {x[0][1], y[0][0], x[1][1], y[1][0]};
}

clang -march=avx

gg: # @gg
# %bb.0: # %entry
  vmovapd (%rsi), %xmm0
  vmovupd (%rdi), %ymm1
  vmovddup %ymm0, %ymm0 # ymm0 = ymm0[0,0,2,2]
  vinsertf128 $1, 16(%rsi), %ymm0, %ymm0
  vshufpd $7, %ymm0, %ymm1, %ymm0 # ymm0 = ymm1[1],ymm0[1],ymm1[3],ymm0[2]
  retq
  # -- End function

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions