diff options
Diffstat (limited to 'llvm/test/CodeGen/X86')
-rw-r--r-- | llvm/test/CodeGen/X86/MergeConsecutiveStores.ll | 15 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/fixup-bw-inst.ll | 10 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/return-ext.ll | 8 |
3 files changed, 19 insertions, 14 deletions
diff --git a/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll b/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll index ce1779bf04c..b50253bf2b0 100644 --- a/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll +++ b/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll @@ -1,6 +1,6 @@ ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx -fixup-byte-word-insts=1 < %s | FileCheck -check-prefix=CHECK -check-prefix=BWON %s ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx -fixup-byte-word-insts=0 < %s | FileCheck -check-prefix=CHECK -check-prefix=BWOFF %s -; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx -addr-sink-using-gep=1 < %s | FileCheck %s +; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+avx -addr-sink-using-gep=1 < %s | FileCheck -check-prefix=CHECK -check-prefix=BWON %s %struct.A = type { i8, i8, i8, i8, i8, i8, i8, i8 } %struct.B = type { i32, i32, i32, i32, i32, i32, i32, i32 } @@ -185,7 +185,8 @@ define void @merge_loads_i16(i32 %count, %struct.A* noalias nocapture %q, %struc ; BWON: movzbl ; BWOFF: movb ; CHECK: movb -; CHECK: movb +; BWON: movzbl +; BWOFF: movb ; CHECK: movb ; CHECK: ret define void @no_merge_loads(i32 %count, %struct.A* noalias nocapture %q, %struct.A* noalias nocapture %p) nounwind uwtable noinline ssp { @@ -340,8 +341,9 @@ block4: ; preds = %4, %.lr.ph ; Make sure that we merge the consecutive load/store sequence below and use a ; word (16 bit) instead of a byte copy. ; CHECK-LABEL: MergeLoadStoreBaseIndexOffset: -; CHECK: movw (%{{.*}},%{{.*}}), [[REG:%[a-z]+]] -; CHECK: movw [[REG]], (%{{.*}}) +; BWON: movzwl (%{{.*}},%{{.*}}), %e[[REG:[a-z]+]] +; BWOFF: movw (%{{.*}},%{{.*}}), %[[REG:[a-z]+]] +; CHECK: movw %[[REG]], (%{{.*}}) define void @MergeLoadStoreBaseIndexOffset(i64* %a, i8* %b, i8* %c, i32 %n) { br label %1 @@ -372,8 +374,9 @@ define void @MergeLoadStoreBaseIndexOffset(i64* %a, i8* %b, i8* %c, i32 %n) { ; word (16 bit) instead of a byte copy even if there are intermediate sign ; extensions. ; CHECK-LABEL: MergeLoadStoreBaseIndexOffsetSext: -; CHECK: movw (%{{.*}},%{{.*}}), [[REG:%[a-z]+]] -; CHECK: movw [[REG]], (%{{.*}}) +; BWON: movzwl (%{{.*}},%{{.*}}), %e[[REG:[a-z]+]] +; BWOFF: movw (%{{.*}},%{{.*}}), %[[REG:[a-z]+]] +; CHECK: movw %[[REG]], (%{{.*}}) define void @MergeLoadStoreBaseIndexOffsetSext(i8* %a, i8* %b, i8* %c, i32 %n) { br label %1 diff --git a/llvm/test/CodeGen/X86/fixup-bw-inst.ll b/llvm/test/CodeGen/X86/fixup-bw-inst.ll index a2c9ad35b23..6f83e6362d5 100644 --- a/llvm/test/CodeGen/X86/fixup-bw-inst.ll +++ b/llvm/test/CodeGen/X86/fixup-bw-inst.ll @@ -11,8 +11,6 @@ target triple = "x86_64-apple-macosx10.8.0" ; This has byte loads interspersed with byte stores, in a single ; basic-block loop. The upper portion should be dead, so the movb loads ; should have been changed into movzbl instead. -; TODO: The second movb load doesn't get fixed due to register liveness -; not being accurate enough. ; CHECK-LABEL: foo1 ; load: ; BWON: movzbl @@ -20,7 +18,8 @@ target triple = "x86_64-apple-macosx10.8.0" ; store: ; CHECK: movb ; load: -; CHECK: movb +; BWON: movzbl +; BWOFF: movb ; store: ; CHECK: movb ; CHECK: ret @@ -59,8 +58,6 @@ a4: ; preds = %4, %.lr.ph ; This has word loads interspersed with word stores. ; The upper portion should be dead, so the movw loads should have ; been changed into movzwl instead. -; TODO: The second movw load doesn't get fixed due to register liveness -; not being accurate enough. ; CHECK-LABEL: foo2 ; load: ; BWON: movzwl @@ -68,7 +65,8 @@ a4: ; preds = %4, %.lr.ph ; store: ; CHECK: movw ; load: -; CHECK: movw +; BWON: movzwl +; BWOFF: movw ; store: ; CHECK: movw ; CHECK: ret diff --git a/llvm/test/CodeGen/X86/return-ext.ll b/llvm/test/CodeGen/X86/return-ext.ll index 79c89d0fa59..e2ad78815e2 100644 --- a/llvm/test/CodeGen/X86/return-ext.ll +++ b/llvm/test/CodeGen/X86/return-ext.ll @@ -6,7 +6,10 @@ ; RUN: FileCheck -check-prefix=CHECK -check-prefix=BWOFF %s ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -fixup-byte-word-insts=1 | \ ; RUN: FileCheck -check-prefix=CHECK -check-prefix=BWON %s -; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck -check-prefix=DARWIN %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -fixup-byte-word-insts=0 | \ +; RUN: FileCheck -check-prefix=DARWIN -check-prefix=DARWIN-BWOFF %s +; RUN: llc < %s -mtriple=x86_64-apple-darwin -fixup-byte-word-insts=1 | \ +; RUN: FileCheck -check-prefix=DARWIN -check-prefix=DARWIN-BWON %s @x = common global i32 0, align 4 @@ -84,7 +87,8 @@ entry: ; Except on Darwin, for legay reasons. ; DARWIN-LABEL: unsigned_i16: -; DARWIN: movw +; DARWIN-BWOFF: movw +; DARWIN-BWON: movzwl ; DARWIN-NEXT: addw ; DARWIN-NEXT: movzwl ; DARWIN-NEXT: ret |