diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-10-19 14:59:26 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-10-19 14:59:26 +0000 |
commit | d0649f978ff06ceee84e81c137ed5e23a536843c (patch) | |
tree | f0afe7d043e740260acb9d6004ac96f34ff62098 | |
parent | ee7c7ecd0366214d6f7a6d38fb4d8c16d98cbb85 (diff) | |
download | bcm5719-llvm-d0649f978ff06ceee84e81c137ed5e23a536843c.tar.gz bcm5719-llvm-d0649f978ff06ceee84e81c137ed5e23a536843c.zip |
[X86] Add scalar (abs (abs x)) -> (abs x) combine test.
Before landing D38895
llvm-svn: 316160
-rw-r--r-- | llvm/test/CodeGen/X86/combine-abs.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/combine-abs.ll b/llvm/test/CodeGen/X86/combine-abs.ll index 7df16a3008d..fa476a2a5da 100644 --- a/llvm/test/CodeGen/X86/combine-abs.ll +++ b/llvm/test/CodeGen/X86/combine-abs.ll @@ -23,6 +23,25 @@ define <16 x i16> @combine_v16i16_abs_constant() { } ; fold (abs (abs x)) -> (abs x) +define i32 @combine_i32_abs_abs(i32 %a) { +; CHECK-LABEL: combine_i32_abs_abs: +; CHECK: # BB#0: +; CHECK-NEXT: movl %edi, %ecx +; CHECK-NEXT: negl %ecx +; CHECK-NEXT: cmovll %edi, %ecx +; CHECK-NEXT: movl %ecx, %eax +; CHECK-NEXT: negl %eax +; CHECK-NEXT: cmovll %ecx, %eax +; CHECK-NEXT: retq + %n1 = sub i32 zeroinitializer, %a + %b1 = icmp slt i32 %a, zeroinitializer + %a1 = select i1 %b1, i32 %n1, i32 %a + %n2 = sub i32 zeroinitializer, %a1 + %b2 = icmp sgt i32 %a1, zeroinitializer + %a2 = select i1 %b2, i32 %a1, i32 %n2 + ret i32 %a2 +} + define <8 x i16> @combine_v8i16_abs_abs(<8 x i16> %a) { ; CHECK-LABEL: combine_v8i16_abs_abs: ; CHECK: # BB#0: |