xref: /llvm-project/llvm/test/CodeGen/MIR/X86/expected-align-in-memory-operand.mir (revision 40a4cbb0f200e5e0bafbd58d55c2da6daab9515d)
1# RUN: not llc -mtriple=x86_64 -run-pass none -o /dev/null %s 2>&1 | FileCheck %s
2
3--- |
4
5  define void @memory_alignment(ptr %vec) {
6  entry:
7    %v = load <8 x float>, ptr %vec
8    %v2 = insertelement <8 x float> %v, float 0.0, i32 4
9    store <8 x float> %v2, ptr %vec
10    ret void
11  }
12
13...
14---
15name:            memory_alignment
16tracksRegLiveness: true
17liveins:
18  - { reg: '$rdi' }
19body: |
20  bb.0.entry:
21    liveins: $rdi
22  ; CHECK: [[@LINE+1]]:69: expected 'align'
23    $xmm0 = MOVAPSrm $rdi, 1, _, 0, _ :: (load (s128) from %ir.vec, 32)
24    $xmm1 = MOVAPSrm $rdi, 1, _, 16, _ :: (load (s128) from %ir.vec + 16, basealign 32)
25    $xmm2 = FsFLD0SS
26    $xmm1 = MOVSSrr killed $xmm1, killed $xmm2
27    MOVAPSmr $rdi, 1, _, 0, _, killed $xmm0 :: (store (s128) into %ir.vec, align 32)
28    MOVAPSmr killed $rdi, 1, _, 16, _, killed $xmm1 :: (store (s128) into %ir.vec + 16, basealign 32)
29    RET64
30...
31