blob: 6f3a55f261074d36d864799dde45628dc2e5feab [file] [log] [blame]
Sanjay Patel8f200112017-04-10 23:26:31 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s
3
4; FIXME: add (sext i1 X), 1 -> zext (not i1 X)
5
6define i32 @sext_inc(i1 zeroext %x) nounwind {
7; CHECK-LABEL: sext_inc:
8; CHECK: # BB#0:
9; CHECK-NEXT: movzbl %dil, %ecx
10; CHECK-NEXT: movl $1, %eax
11; CHECK-NEXT: subl %ecx, %eax
12; CHECK-NEXT: retq
13 %ext = sext i1 %x to i32
14 %add = add i32 %ext, 1
15 ret i32 %add
16}
17
18; FIXME: add (sext i1 X), 1 -> zext (not i1 X)
19
20define <4 x i32> @sext_inc_vec(<4 x i1> %x) nounwind {
21; CHECK-LABEL: sext_inc_vec:
22; CHECK: # BB#0:
23; CHECK-NEXT: pslld $31, %xmm0
24; CHECK-NEXT: psrad $31, %xmm0
25; CHECK-NEXT: paddd {{.*}}(%rip), %xmm0
26; CHECK-NEXT: retq
27 %ext = sext <4 x i1> %x to <4 x i32>
28 %add = add <4 x i32> %ext, <i32 1, i32 1, i32 1, i32 1>
29 ret <4 x i32> %add
30}
31
Sanjay Patel6b01b4f2017-04-24 22:42:34 +000032define <4 x i32> @cmpgt_sext_inc_vec(<4 x i32> %x, <4 x i32> %y) nounwind {
33; CHECK-LABEL: cmpgt_sext_inc_vec:
34; CHECK: # BB#0:
35; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
36; CHECK-NEXT: paddd {{.*}}(%rip), %xmm0
37; CHECK-NEXT: retq
38 %cmp = icmp sgt <4 x i32> %x, %y
39 %ext = sext <4 x i1> %cmp to <4 x i32>
40 %add = add <4 x i32> %ext, <i32 1, i32 1, i32 1, i32 1>
41 ret <4 x i32> %add
42}
43
44define <4 x i32> @cmpne_sext_inc_vec(<4 x i32> %x, <4 x i32> %y) nounwind {
45; CHECK-LABEL: cmpne_sext_inc_vec:
46; CHECK: # BB#0:
47; CHECK-NEXT: pcmpeqd %xmm1, %xmm0
48; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
49; CHECK-NEXT: pxor %xmm1, %xmm0
50; CHECK-NEXT: paddd {{.*}}(%rip), %xmm0
51; CHECK-NEXT: retq
52 %cmp = icmp ne <4 x i32> %x, %y
53 %ext = sext <4 x i1> %cmp to <4 x i32>
54 %add = add <4 x i32> %ext, <i32 1, i32 1, i32 1, i32 1>
55 ret <4 x i32> %add
56}
Sanjay Patel8f200112017-04-10 23:26:31 +000057