|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 | 2 | ; RUN: llc %s -o - -mtriple=x86_64-unknown-linux -enable-spill2reg -mattr=+sse4.1 | FileCheck %s |
| 3 | +; RUN: llc %s -o - -mtriple=x86_64-unknown-linux -enable-spill2reg -mattr=+avx | FileCheck --check-prefix=AVX %s |
3 | 4 |
|
4 | 5 | ; End-to-end check that Spill2Reg works with 16-bit registers. |
5 | 6 |
|
@@ -130,6 +131,90 @@ define dso_local void @_Z5spillv() local_unnamed_addr #0 { |
130 | 131 | ; CHECK-NEXT: popq %rbp |
131 | 132 | ; CHECK-NEXT: .cfi_def_cfa_offset 8 |
132 | 133 | ; CHECK-NEXT: retq |
| 134 | +; |
| 135 | +; AVX-LABEL: _Z5spillv: |
| 136 | +; AVX: # %bb.0: # %entry |
| 137 | +; AVX-NEXT: pushq %rbp |
| 138 | +; AVX-NEXT: .cfi_def_cfa_offset 16 |
| 139 | +; AVX-NEXT: pushq %r15 |
| 140 | +; AVX-NEXT: .cfi_def_cfa_offset 24 |
| 141 | +; AVX-NEXT: pushq %r14 |
| 142 | +; AVX-NEXT: .cfi_def_cfa_offset 32 |
| 143 | +; AVX-NEXT: pushq %r13 |
| 144 | +; AVX-NEXT: .cfi_def_cfa_offset 40 |
| 145 | +; AVX-NEXT: pushq %r12 |
| 146 | +; AVX-NEXT: .cfi_def_cfa_offset 48 |
| 147 | +; AVX-NEXT: pushq %rbx |
| 148 | +; AVX-NEXT: .cfi_def_cfa_offset 56 |
| 149 | +; AVX-NEXT: .cfi_offset %rbx, -56 |
| 150 | +; AVX-NEXT: .cfi_offset %r12, -48 |
| 151 | +; AVX-NEXT: .cfi_offset %r13, -40 |
| 152 | +; AVX-NEXT: .cfi_offset %r14, -32 |
| 153 | +; AVX-NEXT: .cfi_offset %r15, -24 |
| 154 | +; AVX-NEXT: .cfi_offset %rbp, -16 |
| 155 | +; AVX-NEXT: movw D0(%rip), %ax |
| 156 | +; AVX-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill |
| 157 | +; AVX-NEXT: movzwl D1(%rip), %ecx |
| 158 | +; AVX-NEXT: movzwl D2(%rip), %edx |
| 159 | +; AVX-NEXT: movzwl D3(%rip), %esi |
| 160 | +; AVX-NEXT: movzwl D4(%rip), %edi |
| 161 | +; AVX-NEXT: movzwl D5(%rip), %r8d |
| 162 | +; AVX-NEXT: movzwl D6(%rip), %r9d |
| 163 | +; AVX-NEXT: movzwl D7(%rip), %r10d |
| 164 | +; AVX-NEXT: movzwl D8(%rip), %r11d |
| 165 | +; AVX-NEXT: movzwl D9(%rip), %ebx |
| 166 | +; AVX-NEXT: movzwl D10(%rip), %ebp |
| 167 | +; AVX-NEXT: movzwl D11(%rip), %r14d |
| 168 | +; AVX-NEXT: movzwl D12(%rip), %r15d |
| 169 | +; AVX-NEXT: movzwl D13(%rip), %r12d |
| 170 | +; AVX-NEXT: movzwl D14(%rip), %r13d |
| 171 | +; AVX-NEXT: movw D15(%rip), %ax |
| 172 | +; AVX-NEXT: vmovd %eax, %xmm0 |
| 173 | +; AVX-NEXT: movw D16(%rip), %ax |
| 174 | +; AVX-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill |
| 175 | +; AVX-NEXT: movw D17(%rip), %ax |
| 176 | +; AVX-NEXT: vmovd %eax, %xmm1 |
| 177 | +; AVX-NEXT: movzwl D18(%rip), %eax |
| 178 | +; AVX-NEXT: movw %ax, {{[-0-9]+}}(%r{{[sb]}}p) # 2-byte Spill |
| 179 | +; AVX-NEXT: #APP |
| 180 | +; AVX-NEXT: #NO_APP |
| 181 | +; AVX-NEXT: movzwl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 2-byte Folded Reload |
| 182 | +; AVX-NEXT: movw %ax, U0(%rip) |
| 183 | +; AVX-NEXT: movw %cx, U1(%rip) |
| 184 | +; AVX-NEXT: movw %dx, U2(%rip) |
| 185 | +; AVX-NEXT: movw %si, U3(%rip) |
| 186 | +; AVX-NEXT: movw %di, U4(%rip) |
| 187 | +; AVX-NEXT: movw %r8w, U5(%rip) |
| 188 | +; AVX-NEXT: movw %r9w, U6(%rip) |
| 189 | +; AVX-NEXT: movw %r10w, U7(%rip) |
| 190 | +; AVX-NEXT: movw %r11w, U8(%rip) |
| 191 | +; AVX-NEXT: movw %bx, U9(%rip) |
| 192 | +; AVX-NEXT: movw %bp, U10(%rip) |
| 193 | +; AVX-NEXT: movw %r14w, U11(%rip) |
| 194 | +; AVX-NEXT: movw %r15w, U12(%rip) |
| 195 | +; AVX-NEXT: movw %r12w, U13(%rip) |
| 196 | +; AVX-NEXT: movw %r13w, U14(%rip) |
| 197 | +; AVX-NEXT: vmovd %xmm0, %eax |
| 198 | +; AVX-NEXT: movw %ax, U15(%rip) |
| 199 | +; AVX-NEXT: movzwl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 2-byte Folded Reload |
| 200 | +; AVX-NEXT: movw %ax, U16(%rip) |
| 201 | +; AVX-NEXT: vmovd %xmm1, %eax |
| 202 | +; AVX-NEXT: movw %ax, U17(%rip) |
| 203 | +; AVX-NEXT: movzwl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 2-byte Folded Reload |
| 204 | +; AVX-NEXT: movw %ax, U18(%rip) |
| 205 | +; AVX-NEXT: popq %rbx |
| 206 | +; AVX-NEXT: .cfi_def_cfa_offset 48 |
| 207 | +; AVX-NEXT: popq %r12 |
| 208 | +; AVX-NEXT: .cfi_def_cfa_offset 40 |
| 209 | +; AVX-NEXT: popq %r13 |
| 210 | +; AVX-NEXT: .cfi_def_cfa_offset 32 |
| 211 | +; AVX-NEXT: popq %r14 |
| 212 | +; AVX-NEXT: .cfi_def_cfa_offset 24 |
| 213 | +; AVX-NEXT: popq %r15 |
| 214 | +; AVX-NEXT: .cfi_def_cfa_offset 16 |
| 215 | +; AVX-NEXT: popq %rbp |
| 216 | +; AVX-NEXT: .cfi_def_cfa_offset 8 |
| 217 | +; AVX-NEXT: retq |
133 | 218 | entry: |
134 | 219 | %0 = load i16, i16* @D0 |
135 | 220 | %1 = load i16, i16* @D1 |
|
0 commit comments