[llvm] 23e1b61 - [X86] Regenerate constant-pool-sharing.ll with AVX test coverage
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 20 07:24:57 PST 2023
Author: Simon Pilgrim
Date: 2023-11-20T15:24:38Z
New Revision: 23e1b6159ea1a327fa8ee1fbaec5c503bdcdd518
URL: https://github.com/llvm/llvm-project/commit/23e1b6159ea1a327fa8ee1fbaec5c503bdcdd518
DIFF: https://github.com/llvm/llvm-project/commit/23e1b6159ea1a327fa8ee1fbaec5c503bdcdd518.diff
LOG: [X86] Regenerate constant-pool-sharing.ll with AVX test coverage
Shows failure to share the constant pool load (broadcast) on AVX targets
Added:
Modified:
llvm/test/CodeGen/X86/constant-pool-sharing.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/constant-pool-sharing.ll b/llvm/test/CodeGen/X86/constant-pool-sharing.ll
index 338da14b2a5b287..8c358ba40a5b991 100644
--- a/llvm/test/CodeGen/X86/constant-pool-sharing.ll
+++ b/llvm/test/CodeGen/X86/constant-pool-sharing.ll
@@ -1,15 +1,67 @@
-; RUN: llc < %s -mtriple=x86_64-linux -mcpu=corei7 | FileCheck %s --check-prefix=COMMON --check-prefix=LINUX
-; RUN: llc < %s -mtriple=x86_64-win32 -mcpu=corei7 | FileCheck %s --check-prefix=COMMON --check-prefix=MSVC
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-linux -mcpu=corei7 | FileCheck %s --check-prefixes=SSE-LINUX
+; RUN: llc < %s -mtriple=x86_64-win32 -mcpu=corei7 | FileCheck %s --check-prefixes=SSE-MSVC
+; RUN: llc < %s -mtriple=x86_64-linux -mcpu=corei7-avx | FileCheck %s --check-prefixes=AVX-LINUX
+; RUN: llc < %s -mtriple=x86_64-win32 -mcpu=corei7-avx | FileCheck %s --check-prefixes=AVX-MSVC
; llc should share constant pool entries between this integer vector
; and this floating-point vector since they have the same encoding.
+; FIXME: AVX is duplicating broadcasts
-; LINUX: LCPI0_0(%rip), %xmm0
-; MSVC: __xmm at 40000000400000004000000040000000(%rip), %xmm0
-; COMMON: movaps %xmm0, ({{%rdi|%rcx}})
-; COMMON: movaps %xmm0, ({{%rsi|%rdx}})
-
-define void @foo(ptr %p, ptr %q, i1 %t) nounwind {
+define void @share_v4i32_v4f32(ptr %p, ptr %q, i1 %t) nounwind {
+; SSE-LINUX-LABEL: share_v4i32_v4f32:
+; SSE-LINUX: # %bb.0: # %entry
+; SSE-LINUX-NEXT: movaps {{.*#+}} xmm0 = [1073741824,1073741824,1073741824,1073741824]
+; SSE-LINUX-NEXT: .p2align 4, 0x90
+; SSE-LINUX-NEXT: .LBB0_1: # %loop
+; SSE-LINUX-NEXT: # =>This Inner Loop Header: Depth=1
+; SSE-LINUX-NEXT: movaps %xmm0, (%rdi)
+; SSE-LINUX-NEXT: movaps %xmm0, (%rsi)
+; SSE-LINUX-NEXT: testb $1, %dl
+; SSE-LINUX-NEXT: jne .LBB0_1
+; SSE-LINUX-NEXT: # %bb.2: # %ret
+; SSE-LINUX-NEXT: retq
+;
+; SSE-MSVC-LABEL: share_v4i32_v4f32:
+; SSE-MSVC: # %bb.0: # %entry
+; SSE-MSVC-NEXT: movaps {{.*#+}} xmm0 = [1073741824,1073741824,1073741824,1073741824]
+; SSE-MSVC-NEXT: .p2align 4, 0x90
+; SSE-MSVC-NEXT: .LBB0_1: # %loop
+; SSE-MSVC-NEXT: # =>This Inner Loop Header: Depth=1
+; SSE-MSVC-NEXT: movaps %xmm0, (%rcx)
+; SSE-MSVC-NEXT: movaps %xmm0, (%rdx)
+; SSE-MSVC-NEXT: testb $1, %r8b
+; SSE-MSVC-NEXT: jne .LBB0_1
+; SSE-MSVC-NEXT: # %bb.2: # %ret
+; SSE-MSVC-NEXT: retq
+;
+; AVX-LINUX-LABEL: share_v4i32_v4f32:
+; AVX-LINUX: # %bb.0: # %entry
+; AVX-LINUX-NEXT: vbroadcastss {{.*#+}} xmm0 = [1073741824,1073741824,1073741824,1073741824]
+; AVX-LINUX-NEXT: vbroadcastss {{.*#+}} xmm1 = [1073741824,1073741824,1073741824,1073741824]
+; AVX-LINUX-NEXT: .p2align 4, 0x90
+; AVX-LINUX-NEXT: .LBB0_1: # %loop
+; AVX-LINUX-NEXT: # =>This Inner Loop Header: Depth=1
+; AVX-LINUX-NEXT: vmovaps %xmm0, (%rdi)
+; AVX-LINUX-NEXT: vmovaps %xmm1, (%rsi)
+; AVX-LINUX-NEXT: testb $1, %dl
+; AVX-LINUX-NEXT: jne .LBB0_1
+; AVX-LINUX-NEXT: # %bb.2: # %ret
+; AVX-LINUX-NEXT: retq
+;
+; AVX-MSVC-LABEL: share_v4i32_v4f32:
+; AVX-MSVC: # %bb.0: # %entry
+; AVX-MSVC-NEXT: vbroadcastss {{.*#+}} xmm0 = [1073741824,1073741824,1073741824,1073741824]
+; AVX-MSVC-NEXT: vbroadcastss {{.*#+}} xmm1 = [1073741824,1073741824,1073741824,1073741824]
+; AVX-MSVC-NEXT: .p2align 4, 0x90
+; AVX-MSVC-NEXT: .LBB0_1: # %loop
+; AVX-MSVC-NEXT: # =>This Inner Loop Header: Depth=1
+; AVX-MSVC-NEXT: vmovaps %xmm0, (%rcx)
+; AVX-MSVC-NEXT: vmovaps %xmm1, (%rdx)
+; AVX-MSVC-NEXT: testb $1, %r8b
+; AVX-MSVC-NEXT: jne .LBB0_1
+; AVX-MSVC-NEXT: # %bb.2: # %ret
+; AVX-MSVC-NEXT: retq
entry:
br label %loop
loop:
More information about the llvm-commits
mailing list