• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc < %s -O0 -fast-isel-abort -mtriple=arm64-apple-darwin | FileCheck %s
2
3define i32 @t1(i32 %c) nounwind readnone {
4entry:
5; CHECK: @t1
6; CHECK: and w0, w0, #0x1
7; CHECK: subs w0, w0, #0
8; CHECK: csel w0, w{{[0-9]+}}, w{{[0-9]+}}, ne
9  %0 = icmp sgt i32 %c, 1
10  %1 = select i1 %0, i32 123, i32 357
11  ret i32 %1
12}
13
14define i64 @t2(i32 %c) nounwind readnone {
15entry:
16; CHECK: @t2
17; CHECK: and w0, w0, #0x1
18; CHECK: subs w0, w0, #0
19; CHECK: csel x0, x{{[0-9]+}}, x{{[0-9]+}}, ne
20  %0 = icmp sgt i32 %c, 1
21  %1 = select i1 %0, i64 123, i64 357
22  ret i64 %1
23}
24
25define i32 @t3(i1 %c, i32 %a, i32 %b) nounwind readnone {
26entry:
27; CHECK: @t3
28; CHECK: and w0, w0, #0x1
29; CHECK: subs w0, w0, #0
30; CHECK: csel w0, w{{[0-9]+}}, w{{[0-9]+}}, ne
31  %0 = select i1 %c, i32 %a, i32 %b
32  ret i32 %0
33}
34
35define i64 @t4(i1 %c, i64 %a, i64 %b) nounwind readnone {
36entry:
37; CHECK: @t4
38; CHECK: and w0, w0, #0x1
39; CHECK: subs w0, w0, #0
40; CHECK: csel x0, x{{[0-9]+}}, x{{[0-9]+}}, ne
41  %0 = select i1 %c, i64 %a, i64 %b
42  ret i64 %0
43}
44
45define float @t5(i1 %c, float %a, float %b) nounwind readnone {
46entry:
47; CHECK: @t5
48; CHECK: and w0, w0, #0x1
49; CHECK: subs w0, w0, #0
50; CHECK: fcsel s0, s0, s1, ne
51  %0 = select i1 %c, float %a, float %b
52  ret float %0
53}
54
55define double @t6(i1 %c, double %a, double %b) nounwind readnone {
56entry:
57; CHECK: @t6
58; CHECK: and w0, w0, #0x1
59; CHECK: subs w0, w0, #0
60; CHECK: fcsel d0, d0, d1, ne
61  %0 = select i1 %c, double %a, double %b
62  ret double %0
63}
64