[llvm] e9d4a9d - [X86] Autogen a few tests for ease of update [nfc]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Tue May 3 08:28:56 PDT 2022
Author: Philip Reames
Date: 2022-05-03T08:28:44-07:00
New Revision: e9d4a9dd8bc461e44d2e081df1f94e03ff08b3bd
URL: https://github.com/llvm/llvm-project/commit/e9d4a9dd8bc461e44d2e081df1f94e03ff08b3bd
DIFF: https://github.com/llvm/llvm-project/commit/e9d4a9dd8bc461e44d2e081df1f94e03ff08b3bd.diff
LOG: [X86] Autogen a few tests for ease of update [nfc]
Added:
Modified:
llvm/test/CodeGen/X86/lsr-interesting-step.ll
llvm/test/CodeGen/X86/sink-out-of-loop.ll
llvm/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/lsr-interesting-step.ll b/llvm/test/CodeGen/X86/lsr-interesting-step.ll
index c9096156de015..66afd387c6a30 100644
--- a/llvm/test/CodeGen/X86/lsr-interesting-step.ll
+++ b/llvm/test/CodeGen/X86/lsr-interesting-step.ll
@@ -1,17 +1,35 @@
-; RUN: llc < %s -relocation-model=static -mtriple=x86_64-unknown-linux-gnu -asm-verbose=0 | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -relocation-model=static -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
; The inner loop should require only one add (and no leas either).
; rdar://8100380
-; CHECK: BB0_2:
-; CHECK-NEXT: movb $0, flags(%rcx)
-; CHECK-NEXT: addq %rax, %rcx
-; CHECK-NEXT: cmpq $8192, %rcx
-; CHECK-NEXT: jl
-
@flags = external dso_local global [8192 x i8], align 16 ; <[8192 x i8]*> [#uses=1]
define void @foo() nounwind {
+; CHECK-LABEL: foo:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: movl $2, %eax
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB0_1: # %bb7
+; CHECK-NEXT: # =>This Loop Header: Depth=1
+; CHECK-NEXT: # Child Loop BB0_2 Depth 2
+; CHECK-NEXT: movl $2, %ecx
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB0_2: # %bb11
+; CHECK-NEXT: # Parent Loop BB0_1 Depth=1
+; CHECK-NEXT: # => This Inner Loop Header: Depth=2
+; CHECK-NEXT: movb $0, flags(%rcx)
+; CHECK-NEXT: addq %rax, %rcx
+; CHECK-NEXT: cmpq $8192, %rcx # imm = 0x2000
+; CHECK-NEXT: jl .LBB0_2
+; CHECK-NEXT: # %bb.3: # %bb16
+; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
+; CHECK-NEXT: incq %rax
+; CHECK-NEXT: cmpq $8192, %rax # imm = 0x2000
+; CHECK-NEXT: jl .LBB0_1
+; CHECK-NEXT: # %bb.4: # %bb20
+; CHECK-NEXT: retq
entry:
br label %bb
diff --git a/llvm/test/CodeGen/X86/sink-out-of-loop.ll b/llvm/test/CodeGen/X86/sink-out-of-loop.ll
index e7b721d36a0d9..e3443b9339e27 100644
--- a/llvm/test/CodeGen/X86/sink-out-of-loop.ll
+++ b/llvm/test/CodeGen/X86/sink-out-of-loop.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=x86_64-apple-darwin < %s | FileCheck %s
; A MOV32ri is inside a loop, it has two successors, one successor is inside the
@@ -5,15 +6,48 @@
; MOV32ri outside the loop.
; rdar://11980766
define i32 @sink_succ(i32 %argc, i8** nocapture %argv) nounwind uwtable ssp {
-; CHECK-LABEL: sink_succ
-; CHECK: [[OUTER_LN1:LBB0_[0-9]+]]: ## %preheader
-; CHECK: %exit
-; CHECK-NOT: movl
-; CHECK: jne [[OUTER_LN1]]
-; CHECK: movl
-; CHECK: [[LN2:LBB0_[0-9]+]]: ## %for.body2
-; CHECK: jne [[LN2]]
-; CHECK: ret
+; CHECK-LABEL: sink_succ:
+; CHECK: ## %bb.0: ## %entry
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: LBB0_1: ## %preheader
+; CHECK-NEXT: ## =>This Loop Header: Depth=1
+; CHECK-NEXT: ## Child Loop BB0_2 Depth 2
+; CHECK-NEXT: ## Child Loop BB0_3 Depth 3
+; CHECK-NEXT: movl $1, %ecx
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: LBB0_2: ## %for.body1.lr
+; CHECK-NEXT: ## Parent Loop BB0_1 Depth=1
+; CHECK-NEXT: ## => This Loop Header: Depth=2
+; CHECK-NEXT: ## Child Loop BB0_3 Depth 3
+; CHECK-NEXT: movl %ecx, %edx
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: LBB0_3: ## %for.body1
+; CHECK-NEXT: ## Parent Loop BB0_1 Depth=1
+; CHECK-NEXT: ## Parent Loop BB0_2 Depth=2
+; CHECK-NEXT: ## => This Inner Loop Header: Depth=3
+; CHECK-NEXT: decl %edx
+; CHECK-NEXT: jne LBB0_3
+; CHECK-NEXT: ## %bb.4: ## %for.inc40.i
+; CHECK-NEXT: ## in Loop: Header=BB0_2 Depth=2
+; CHECK-NEXT: incl %ecx
+; CHECK-NEXT: cmpl $32, %ecx
+; CHECK-NEXT: jne LBB0_2
+; CHECK-NEXT: ## %bb.5: ## %exit
+; CHECK-NEXT: ## in Loop: Header=BB0_1 Depth=1
+; CHECK-NEXT: incl %eax
+; CHECK-NEXT: cmpl $10, %eax
+; CHECK-NEXT: jne LBB0_1
+; CHECK-NEXT: ## %bb.6: ## %for.body2.preheader
+; CHECK-NEXT: movl $2048, %eax ## imm = 0x800
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: LBB0_7: ## %for.body2
+; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1
+; CHECK-NEXT: decl %eax
+; CHECK-NEXT: jne LBB0_7
+; CHECK-NEXT: ## %bb.8: ## %for.end20
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: retq
entry:
br label %preheader
@@ -55,6 +89,19 @@ for.end20:
define i32 @sink_out_of_loop(i32 %n, i32* %output) {
; CHECK-LABEL: sink_out_of_loop:
+; CHECK: ## %bb.0: ## %entry
+; CHECK-NEXT: xorl %ecx, %ecx
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: LBB1_1: ## %loop
+; CHECK-NEXT: ## =>This Inner Loop Header: Depth=1
+; CHECK-NEXT: movl %ecx, %eax
+; CHECK-NEXT: movl %ecx, (%rsi,%rcx,4)
+; CHECK-NEXT: incq %rcx
+; CHECK-NEXT: cmpl %edi, %ecx
+; CHECK-NEXT: jl LBB1_1
+; CHECK-NEXT: ## %bb.2: ## %exit
+; CHECK-NEXT: imull %eax, %eax
+; CHECK-NEXT: retq
entry:
br label %loop
@@ -68,8 +115,5 @@ loop:
br i1 %exit_cond, label %exit, label %loop
exit:
-; CHECK: %bb.2
-; CHECK: imull %eax, %eax
-; CHECK: retq
ret i32 %j
}
diff --git a/llvm/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll b/llvm/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll
index 44da8b7f72cf8..b08c1eb862b6c 100644
--- a/llvm/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll
+++ b/llvm/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll
@@ -1,15 +1,61 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -O3 -mtriple=x86_64-- -mcpu=core2 | FileCheck %s
declare i1 @check() nounwind
declare i1 @foo(i8*, i8*, i8*) nounwind
; Check that redundant phi elimination ran
-; CHECK: @test
-; CHECK: %while.body.i
-; CHECK: movs
-; CHECK-NOT: movs
-; CHECK: %for.end.i
define i32 @test(i8* %base) nounwind uwtable ssp {
+; CHECK-LABEL: test:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: pushq %r15
+; CHECK-NEXT: .cfi_def_cfa_offset 16
+; CHECK-NEXT: pushq %r14
+; CHECK-NEXT: .cfi_def_cfa_offset 24
+; CHECK-NEXT: pushq %r13
+; CHECK-NEXT: .cfi_def_cfa_offset 32
+; CHECK-NEXT: pushq %r12
+; CHECK-NEXT: .cfi_def_cfa_offset 40
+; CHECK-NEXT: pushq %rbx
+; CHECK-NEXT: .cfi_def_cfa_offset 48
+; CHECK-NEXT: .cfi_offset %rbx, -48
+; CHECK-NEXT: .cfi_offset %r12, -40
+; CHECK-NEXT: .cfi_offset %r13, -32
+; CHECK-NEXT: .cfi_offset %r14, -24
+; CHECK-NEXT: .cfi_offset %r15, -16
+; CHECK-NEXT: movq %rdi, %r14
+; CHECK-NEXT: leaq 16(%rdi), %r15
+; CHECK-NEXT: movl $16, %eax
+; CHECK-NEXT: xorl %r12d, %r12d
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB0_1: # %while.body.i
+; CHECK-NEXT: # =>This Loop Header: Depth=1
+; CHECK-NEXT: # Child Loop BB0_2 Depth 2
+; CHECK-NEXT: movslq %r12d, %r13
+; CHECK-NEXT: movq %rax, %r12
+; CHECK-NEXT: leaq (%r15,%r13), %rbx
+; CHECK-NEXT: addq $16, %r13
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB0_2: # %for.body.i
+; CHECK-NEXT: # Parent Loop BB0_1 Depth=1
+; CHECK-NEXT: # => This Inner Loop Header: Depth=2
+; CHECK-NEXT: callq check at PLT
+; CHECK-NEXT: incq %rbx
+; CHECK-NEXT: testb $1, %al
+; CHECK-NEXT: je .LBB0_2
+; CHECK-NEXT: # %bb.3: # %for.end.i
+; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
+; CHECK-NEXT: addq %r14, %r13
+; CHECK-NEXT: movq %r13, %rdi
+; CHECK-NEXT: movq %r13, %rsi
+; CHECK-NEXT: callq foo at PLT
+; CHECK-NEXT: testb $1, %al
+; CHECK-NEXT: je .LBB0_5
+; CHECK-NEXT: # %bb.4: # %cond.true29.i
+; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
+; CHECK-NEXT: leaq 16(%r12), %rax
+; CHECK-NEXT: jmp .LBB0_1
+; CHECK-NEXT: .LBB0_5: # %cond.false35.i
entry:
br label %while.body.lr.ph.i
@@ -58,11 +104,20 @@ exit: ; preds = %cond.true29.i, %cond.true.i
; Test phi reuse after LSR that requires SCEVExpander to hoist an
; interesting GEP.
;
-; CHECK: @test2
-; CHECK: %entry
-; CHECK-NOT: mov
-; CHECK: je
define void @test2(i32 %n) nounwind uwtable {
+; CHECK-LABEL: test2:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: testb %al, %al
+; CHECK-NEXT: je .LBB1_1
+; CHECK-NEXT: # %bb.3: # %while.end
+; CHECK-NEXT: retq
+; CHECK-NEXT: .LBB1_1: # %for.cond468.preheader
+; CHECK-NEXT: cmpl $2, %edi
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB1_2: # %for.inc498
+; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
+; CHECK-NEXT: jmp .LBB1_2
entry:
br i1 undef, label %while.end, label %for.cond468
@@ -95,16 +150,36 @@ while.end: ; preds = %entry
; Test redundant phi elimination when the deleted phi's increment is
; itself a phi.
;
-; CHECK: @test3
-; CHECK: %meshBB1
-; CHECK: %meshBB
-; CHECK-NEXT: Parent Loop
-; CHECK-NEXT: Inner Loop
-; CHECK-NEXT: incq
-; CHECK: testb
-; CHECK: je
-; CHECK: jmp
define fastcc void @test3(double* nocapture %u) nounwind uwtable ssp {
+; CHECK-LABEL: test3:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: testb %al, %al
+; CHECK-NEXT: jne .LBB2_6
+; CHECK-NEXT: # %bb.1:
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB2_2: # %meshBB1
+; CHECK-NEXT: # =>This Loop Header: Depth=1
+; CHECK-NEXT: # Child Loop BB2_4 Depth 2
+; CHECK-NEXT: # implicit-def: $rcx
+; CHECK-NEXT: testb %al, %al
+; CHECK-NEXT: jne .LBB2_2
+; CHECK-NEXT: .p2align 4, 0x90
+; CHECK-NEXT: .LBB2_4: # %meshBB
+; CHECK-NEXT: # Parent Loop BB2_2 Depth=1
+; CHECK-NEXT: # => This Inner Loop Header: Depth=2
+; CHECK-NEXT: incq %rcx
+; CHECK-NEXT: testb %al, %al
+; CHECK-NEXT: je .LBB2_4
+; CHECK-NEXT: jmp .LBB2_2
+; CHECK-NEXT: .LBB2_6: # %meshBB5
+; CHECK-NEXT: xorl %eax, %eax
+; CHECK-NEXT: testb %al, %al
+; CHECK-NEXT: je .LBB2_5
+; CHECK-NEXT: # %bb.7: # %eval_At_times_u.exit
+; CHECK-NEXT: retq
+; CHECK-NEXT: .LBB2_5: # %for.inc8.us.i2
entry:
br i1 undef, label %meshBB1, label %meshBB5
More information about the llvm-commits
mailing list