summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2017-10-19 14:59:26 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2017-10-19 14:59:26 +0000
commitd0649f978ff06ceee84e81c137ed5e23a536843c (patch)
treef0afe7d043e740260acb9d6004ac96f34ff62098
parentee7c7ecd0366214d6f7a6d38fb4d8c16d98cbb85 (diff)
downloadbcm5719-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.ll19
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:
OpenPOWER on IntegriCloud