diff options
Diffstat (limited to 'test/CodeGen/X86/shift-codegen.ll')
-rw-r--r-- | test/CodeGen/X86/shift-codegen.ll | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/test/CodeGen/X86/shift-codegen.ll b/test/CodeGen/X86/shift-codegen.ll index 7d52bdeb9e3ab..295a55d86a00d 100644 --- a/test/CodeGen/X86/shift-codegen.ll +++ b/test/CodeGen/X86/shift-codegen.ll @@ -1,38 +1,36 @@ -; RUN: llc < %s -relocation-model=static -march=x86 | FileCheck %s +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -relocation-model=static -mtriple=i686-unknown-unknown | FileCheck %s ; This should produce two shll instructions, not any lea's. target triple = "i686-apple-darwin8" -@Y = weak global i32 0 ; <i32*> [#uses=1] -@X = weak global i32 0 ; <i32*> [#uses=2] - +@Y = weak global i32 0 +@X = weak global i32 0 define void @fn1() { ; CHECK-LABEL: fn1: -; CHECK-NOT: ret -; CHECK-NOT: lea -; CHECK: shll $3 -; CHECK-NOT: lea -; CHECK: ret - - %tmp = load i32, i32* @Y ; <i32> [#uses=1] - %tmp1 = shl i32 %tmp, 3 ; <i32> [#uses=1] - %tmp2 = load i32, i32* @X ; <i32> [#uses=1] - %tmp3 = or i32 %tmp1, %tmp2 ; <i32> [#uses=1] +; CHECK: # BB#0: +; CHECK-NEXT: movl Y, %eax +; CHECK-NEXT: shll $3, %eax +; CHECK-NEXT: orl %eax, X +; CHECK-NEXT: retl + %tmp = load i32, i32* @Y + %tmp1 = shl i32 %tmp, 3 + %tmp2 = load i32, i32* @X + %tmp3 = or i32 %tmp1, %tmp2 store i32 %tmp3, i32* @X ret void } define i32 @fn2(i32 %X, i32 %Y) { ; CHECK-LABEL: fn2: -; CHECK-NOT: ret -; CHECK-NOT: lea -; CHECK: shll $3 -; CHECK-NOT: lea -; CHECK: ret - - %tmp2 = shl i32 %Y, 3 ; <i32> [#uses=1] - %tmp4 = or i32 %tmp2, %X ; <i32> [#uses=1] +; CHECK: # BB#0: +; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax +; CHECK-NEXT: shll $3, %eax +; CHECK-NEXT: orl {{[0-9]+}}(%esp), %eax +; CHECK-NEXT: retl + %tmp2 = shl i32 %Y, 3 + %tmp4 = or i32 %tmp2, %X ret i32 %tmp4 } |