
This is an attempt at rebooting https://reviews.llvm.org/D28990 I've included AutoUpgrade changes to modify the data layout to satisfy the compatible layout check. But this does mean alloca, loads, stores, etc in old IR will automatically get this new alignment. This should fix PR46320. Reviewed By: echristo, rnk, tmgross Differential Revision: https://reviews.llvm.org/D86310
23 lines
771 B
LLVM
23 lines
771 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx,-slow-unaligned-mem-32 | FileCheck %s --check-prefix=FAST
|
|
; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx,+slow-unaligned-mem-32 | FileCheck %s --check-prefix=SLOW
|
|
|
|
define i256 @foo(<8 x i32> %a) {
|
|
; FAST-LABEL: foo:
|
|
; FAST: # %bb.0:
|
|
; FAST-NEXT: movq %rdi, %rax
|
|
; FAST-NEXT: vmovups %ymm0, (%rdi)
|
|
; FAST-NEXT: vzeroupper
|
|
; FAST-NEXT: retq
|
|
;
|
|
; SLOW-LABEL: foo:
|
|
; SLOW: # %bb.0:
|
|
; SLOW-NEXT: movq %rdi, %rax
|
|
; SLOW-NEXT: vextractf128 $1, %ymm0, 16(%rdi)
|
|
; SLOW-NEXT: vmovaps %xmm0, (%rdi)
|
|
; SLOW-NEXT: vzeroupper
|
|
; SLOW-NEXT: retq
|
|
%r = bitcast <8 x i32> %a to i256
|
|
ret i256 %r
|
|
}
|