[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / setcc-03.ll
blob0a125f02aac398f03ec8b04767e2932d8784b10b
1 ; Test SETCC with an i32 result for every integer condition.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s
5 ; Test CC in { 0 }, with 3 don't care.
6 define i64 @f1(i32 %a, i32 %b) {
7 ; CHECK-LABEL: f1:
8 ; CHECK: ipm [[REG:%r[0-5]]]
9 ; CHECK-NEXT: afi [[REG]], -268435456
10 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 33
11 ; CHECK: br %r14
12   %cond = icmp eq i32 %a, %b
13   %res = zext i1 %cond to i64
14   ret i64 %res
17 ; Test CC in { 1 }, with 3 don't care.
18 define i64 @f2(i32 %a, i32 %b) {
19 ; CHECK-LABEL: f2:
20 ; CHECK: ipm [[REG:%r[0-5]]]
21 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 36
22 ; CHECK: br %r14
23   %cond = icmp slt i32 %a, %b
24   %res = zext i1 %cond to i64
25   ret i64 %res
28 ; Test CC in { 0, 1 }, with 3 don't care.
29 define i64 @f3(i32 %a, i32 %b) {
30 ; CHECK-LABEL: f3:
31 ; CHECK: ipm [[REG:%r[0-5]]]
32 ; CHECK-NEXT: afi [[REG]], -536870912
33 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 33
34 ; CHECK: br %r14
35   %cond = icmp sle i32 %a, %b
36   %res = zext i1 %cond to i64
37   ret i64 %res
40 ; Test CC in { 2 }, with 3 don't care.
41 define i64 @f4(i32 %a, i32 %b) {
42 ; CHECK-LABEL: f4:
43 ; CHECK: ipm [[REG:%r[0-5]]]
44 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 35
45 ; CHECK: br %r14
46   %cond = icmp sgt i32 %a, %b
47   %res = zext i1 %cond to i64
48   ret i64 %res
51 ; Test CC in { 0, 2 }, with 3 don't care.
52 define i64 @f5(i32 %a, i32 %b) {
53 ; CHECK-LABEL: f5:
54 ; CHECK: ipm [[REG:%r[0-5]]]
55 ; CHECK-NEXT: xilf [[REG]], 4294967295
56 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 36
57 ; CHECK: br %r14
58   %cond = icmp sge i32 %a, %b
59   %res = zext i1 %cond to i64
60   ret i64 %res
63 ; Test CC in { 1, 2 }, with 3 don't care.
64 define i64 @f6(i32 %a, i32 %b) {
65 ; CHECK-LABEL: f6:
66 ; CHECK: ipm [[REG:%r[0-5]]]
67 ; CHECK-NEXT: afi [[REG]], 1879048192
68 ; CHECK-NEXT: risbg %r2, [[REG]], 63, 191, 33
69 ; CHECK: br %r14
70   %cond = icmp ne i32 %a, %b
71   %res = zext i1 %cond to i64
72   ret i64 %res