|
5 | 5 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64 --check-prefix=X64-SSE2
|
6 | 6 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx | FileCheck %s --check-prefix=X64 --check-prefix=X64-AVX --check-prefix=X64-AVX1
|
7 | 7 | ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx2 | FileCheck %s --check-prefix=X64 --check-prefix=X64-AVX --check-prefix=X64-AVX2
|
| 8 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512f | FileCheck %s --check-prefix=X64 --check-prefix=X64-AVX512F |
| 9 | +; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx512bw | FileCheck %s --check-prefix=X64 --check-prefix=X64-AVX512F --check-prefix=X64-AVX512BW |
8 | 10 |
|
9 | 11 | ; This tests codegen time inlining/optimization of memcmp
|
10 | 12 | ; rdar://6480398
|
@@ -1540,6 +1542,15 @@ define i1 @length64_eq(i8* %x, i8* %y) nounwind {
|
1540 | 1542 | ; X64-AVX2-NEXT: setne %al
|
1541 | 1543 | ; X64-AVX2-NEXT: vzeroupper
|
1542 | 1544 | ; X64-AVX2-NEXT: retq
|
| 1545 | +; |
| 1546 | +; X64-AVX512F-LABEL: length64_eq: |
| 1547 | +; X64-AVX512F: # %bb.0: |
| 1548 | +; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0 |
| 1549 | +; X64-AVX512F-NEXT: vpcmpeqd (%rsi), %zmm0, %k0 |
| 1550 | +; X64-AVX512F-NEXT: kortestw %k0, %k0 |
| 1551 | +; X64-AVX512F-NEXT: setae %al |
| 1552 | +; X64-AVX512F-NEXT: vzeroupper |
| 1553 | +; X64-AVX512F-NEXT: retq |
1543 | 1554 | %call = tail call i32 @memcmp(i8* %x, i8* %y, i64 64) nounwind
|
1544 | 1555 | %cmp = icmp ne i32 %call, 0
|
1545 | 1556 | ret i1 %cmp
|
@@ -1592,6 +1603,15 @@ define i1 @length64_eq_const(i8* %X) nounwind {
|
1592 | 1603 | ; X64-AVX2-NEXT: sete %al
|
1593 | 1604 | ; X64-AVX2-NEXT: vzeroupper
|
1594 | 1605 | ; X64-AVX2-NEXT: retq
|
| 1606 | +; |
| 1607 | +; X64-AVX512F-LABEL: length64_eq_const: |
| 1608 | +; X64-AVX512F: # %bb.0: |
| 1609 | +; X64-AVX512F-NEXT: vmovdqu64 (%rdi), %zmm0 |
| 1610 | +; X64-AVX512F-NEXT: vpcmpeqd {{.*}}(%rip), %zmm0, %k0 |
| 1611 | +; X64-AVX512F-NEXT: kortestw %k0, %k0 |
| 1612 | +; X64-AVX512F-NEXT: setb %al |
| 1613 | +; X64-AVX512F-NEXT: vzeroupper |
| 1614 | +; X64-AVX512F-NEXT: retq |
1595 | 1615 | %m = tail call i32 @memcmp(i8* %X, i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str, i32 0, i32 0), i64 64) nounwind
|
1596 | 1616 | %c = icmp eq i32 %m, 0
|
1597 | 1617 | ret i1 %c
|
|
0 commit comments