[llvm] r311016 - [X86] Regenerate immediate store merging tests

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 16 09:22:19 PDT 2017


Author: rksimon
Date: Wed Aug 16 09:22:19 2017
New Revision: 311016

URL: http://llvm.org/viewvc/llvm-project?rev=311016&view=rev
Log:
[X86] Regenerate immediate store merging tests

Modified:
    llvm/trunk/test/CodeGen/X86/immediate_merging.ll

Modified: llvm/trunk/test/CodeGen/X86/immediate_merging.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/immediate_merging.ll?rev=311016&r1=311015&r2=311016&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/immediate_merging.ll (original)
+++ llvm/trunk/test/CodeGen/X86/immediate_merging.ll Wed Aug 16 09:22:19 2017
@@ -1,5 +1,6 @@
-; RUN: llc -o - -mtriple=i386-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -o - -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=i386-unknown-linux-gnu | FileCheck %s --check-prefix=X86
+; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefix=X64
 
 @a = common global i32 0, align 4
 @b = common global i32 0, align 4
@@ -13,15 +14,43 @@
 ; Test -Os to make sure immediates with multiple users don't get pulled in to
 ; instructions.
 define i32 @foo() optsize {
-; CHECK-LABEL: foo:
-; CHECK: movl $1234, [[R1:%[a-z]+]]
-; CHECK-NOT: movl $1234, a
-; CHECK-NOT: movl $1234, b
-; CHECK-NOT: movl $12, c
-; CHECK-NOT: cmpl $12, e
-; CHECK: movl [[R1]], a
-; CHECK: movl [[R1]], b
-
+; X86-LABEL: foo:
+; X86:       # BB#0: # %entry
+; X86-NEXT:    movl $1234, %eax # imm = 0x4D2
+; X86-NEXT:    movl %eax, a
+; X86-NEXT:    movl %eax, b
+; X86-NEXT:    movl $12, %eax
+; X86-NEXT:    movl %eax, c
+; X86-NEXT:    cmpl %eax, e
+; X86-NEXT:    jne .LBB0_2
+; X86-NEXT:  # BB#1: # %if.then
+; X86-NEXT:    movl $1, x
+; X86-NEXT:  .LBB0_2: # %if.end
+; X86-NEXT:    movl $1234, f # imm = 0x4D2
+; X86-NEXT:    movl $555, %eax # imm = 0x22B
+; X86-NEXT:    movl %eax, h
+; X86-NEXT:    addl %eax, i
+; X86-NEXT:    xorl %eax, %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: foo:
+; X64:       # BB#0: # %entry
+; X64-NEXT:    movl $1234, %eax # imm = 0x4D2
+; X64-NEXT:    movl %eax, {{.*}}(%rip)
+; X64-NEXT:    movl %eax, {{.*}}(%rip)
+; X64-NEXT:    movl $12, %eax
+; X64-NEXT:    movl %eax, {{.*}}(%rip)
+; X64-NEXT:    cmpl %eax, {{.*}}(%rip)
+; X64-NEXT:    jne .LBB0_2
+; X64-NEXT:  # BB#1: # %if.then
+; X64-NEXT:    movl $1, {{.*}}(%rip)
+; X64-NEXT:  .LBB0_2: # %if.end
+; X64-NEXT:    movl $1234, {{.*}}(%rip) # imm = 0x4D2
+; X64-NEXT:    movl $555, %eax # imm = 0x22B
+; X64-NEXT:    movl %eax, {{.*}}(%rip)
+; X64-NEXT:    addl %eax, {{.*}}(%rip)
+; X64-NEXT:    xorl %eax, %eax
+; X64-NEXT:    retq
 entry:
   store i32 1234, i32* @a
   store i32 1234, i32* @b
@@ -35,13 +64,6 @@ if.then:
   br label %if.end
 
 ; New block.. Make sure 1234 isn't live across basic blocks from before.
-; CHECK: movl $1234, f
-; CHECK: movl $555, [[R3:%[a-z]+]]
-; CHECK-NOT: movl $555, h
-; CHECK-NOT: addl $555, i
-; CHECK: movl [[R3]], h
-; CHECK: addl [[R3]], i
-
 if.end:                                           ; preds = %if.then, %entry
   store i32 1234, i32* @f
   store i32 555, i32* @h
@@ -53,14 +75,22 @@ if.end:
 
 ; Test -O2 to make sure that all immediates get pulled in to their users.
 define i32 @foo2() {
-; CHECK-LABEL: foo2:
-; CHECK: movl $1234, a
-; CHECK: movl $1234, b
-
+; X86-LABEL: foo2:
+; X86:       # BB#0: # %entry
+; X86-NEXT:    movl $1234, a # imm = 0x4D2
+; X86-NEXT:    movl $1234, b # imm = 0x4D2
+; X86-NEXT:    xorl %eax, %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: foo2:
+; X64:       # BB#0: # %entry
+; X64-NEXT:    movl $1234, {{.*}}(%rip) # imm = 0x4D2
+; X64-NEXT:    movl $1234, {{.*}}(%rip) # imm = 0x4D2
+; X64-NEXT:    xorl %eax, %eax
+; X64-NEXT:    retq
 entry:
   store i32 1234, i32* @a
   store i32 1234, i32* @b
-
   ret i32 0
 }
 
@@ -72,10 +102,24 @@ declare void @llvm.memset.p0i8.i32(i8* n
 ; immediates used to store to the individual memory locations. Make
 ; sure we don't directly store the immediates.
 define void @foomemset() optsize {
-; CHECK-LABEL: foomemset:
-; CHECK-NOT: movl ${{.*}}, AA
-; CHECK: mov{{l|q}} %{{e|r}}ax, AA
-
+; X86-LABEL: foomemset:
+; X86:       # BB#0: # %entry
+; X86-NEXT:    movl $555819297, %eax # imm = 0x21212121
+; X86-NEXT:    movl %eax, AA+20
+; X86-NEXT:    movl %eax, AA+16
+; X86-NEXT:    movl %eax, AA+12
+; X86-NEXT:    movl %eax, AA+8
+; X86-NEXT:    movl %eax, AA+4
+; X86-NEXT:    movl %eax, AA
+; X86-NEXT:    retl
+;
+; X64-LABEL: foomemset:
+; X64:       # BB#0: # %entry
+; X64-NEXT:    movabsq $2387225703656530209, %rax # imm = 0x2121212121212121
+; X64-NEXT:    movq %rax, AA+{{.*}}(%rip)
+; X64-NEXT:    movq %rax, AA+{{.*}}(%rip)
+; X64-NEXT:    movq %rax, {{.*}}(%rip)
+; X64-NEXT:    retq
 entry:
   call void @llvm.memset.p0i8.i32(i8* getelementptr inbounds ([100 x i8], [100 x i8]* @AA, i32 0, i32 0), i8 33, i32 24, i32 1, i1 false)
   ret void




More information about the llvm-commits mailing list