|
5 | 5 | ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=X64 --check-prefix=SSE-X64 --check-prefix=SSE41-X64
|
6 | 6 | ; RUN: llc < %s -mtriple=i686-unknown -mattr=+avx | FileCheck %s --check-prefix=X32 --check-prefix=AVX-X32
|
7 | 7 | ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx | FileCheck %s --check-prefix=X64 --check-prefix=AVX-X64
|
| 8 | +; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx -enable-legalize-types-checking \ |
| 9 | +; RUN: | FileCheck %s --check-prefix=X64 --check-prefix=SSE-X64 --check-prefix=SSE-F128 |
| 10 | +; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx -enable-legalize-types-checking \ |
| 11 | +; RUN: | FileCheck %s --check-prefix=X64 --check-prefix=SSE-X64 --check-prefix=SSE-F128 |
8 | 12 |
|
9 | 13 | define void @extract_i8_0(i8* nocapture %dst, <16 x i8> %foo) nounwind {
|
10 | 14 | ; SSE2-X32-LABEL: extract_i8_0:
|
@@ -458,6 +462,26 @@ define void @extract_f64_1(double* nocapture %dst, <2 x double> %foo) nounwind {
|
458 | 462 | ret void
|
459 | 463 | }
|
460 | 464 |
|
| 465 | +define void @extract_f128_0(fp128* nocapture %dst, <2 x fp128> %foo) nounwind { |
| 466 | +; SSE-F128-LABEL: extract_f128_0: |
| 467 | +; SSE-F128: # BB#0: |
| 468 | +; SSE-F128-NEXT: movaps %xmm0, (%rdi) |
| 469 | +; SSE-F128-NEXT: retq |
| 470 | + %vecext = extractelement <2 x fp128> %foo, i32 0 |
| 471 | + store fp128 %vecext, fp128* %dst, align 1 |
| 472 | + ret void |
| 473 | +} |
| 474 | + |
| 475 | +define void @extract_f128_1(fp128* nocapture %dst, <2 x fp128> %foo) nounwind { |
| 476 | +; SSE-F128-LABEL: extract_f128_1: |
| 477 | +; SSE-F128: # BB#0: |
| 478 | +; SSE-F128-NEXT: movaps %xmm1, (%rdi) |
| 479 | +; SSE-F128-NEXT: retq |
| 480 | + %vecext = extractelement <2 x fp128> %foo, i32 1 |
| 481 | + store fp128 %vecext, fp128* %dst, align 1 |
| 482 | + ret void |
| 483 | +} |
| 484 | + |
461 | 485 | define void @extract_i8_undef(i8* nocapture %dst, <16 x i8> %foo) nounwind {
|
462 | 486 | ; X32-LABEL: extract_i8_undef:
|
463 | 487 | ; X32: # BB#0:
|
@@ -535,3 +559,16 @@ define void @extract_f64_undef(double* nocapture %dst, <2 x double> %foo) nounwi
|
535 | 559 | store double %vecext, double* %dst, align 1
|
536 | 560 | ret void
|
537 | 561 | }
|
| 562 | + |
| 563 | +define void @extract_f128_undef(fp128* nocapture %dst, <2 x fp128> %foo) nounwind { |
| 564 | +; X32-LABEL: extract_f128_undef: |
| 565 | +; X32: # BB#0: |
| 566 | +; X32-NEXT: retl |
| 567 | +; |
| 568 | +; X64-LABEL: extract_f128_undef: |
| 569 | +; X64: # BB#0: |
| 570 | +; X64-NEXT: retq |
| 571 | + %vecext = extractelement <2 x fp128> %foo, i32 2 ; undef |
| 572 | + store fp128 %vecext, fp128* %dst, align 1 |
| 573 | + ret void |
| 574 | +} |
0 commit comments