From e4959200b5cada48d141e551af9080963d2f8541 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Thu, 19 Oct 2017 14:59:26 +0000 Subject: [PATCH] [X86] Add scalar (abs (abs x)) -> (abs x) combine test. Before landing D38895 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@316160 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/combine-abs.ll | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/CodeGen/X86/combine-abs.ll b/test/CodeGen/X86/combine-abs.ll index 7df16a3008d..fa476a2a5da 100644 --- a/test/CodeGen/X86/combine-abs.ll +++ b/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: -- 2.11.0