[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / selectccf64c.ll
blobfcc1d67cc6af11448b580972ad290086a3f0e221
1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define double @selectccsgti8(i8, i8, double, double) {
4 ; CHECK-LABEL: selectccsgti8:
5 ; CHECK:       # %bb.0:
6 ; CHECK-NEXT:    sll %s1, %s1, 56
7 ; CHECK-NEXT:    sra.l %s1, %s1, 56
8 ; CHECK-NEXT:    sll %s0, %s0, 56
9 ; CHECK-NEXT:    sra.l %s0, %s0, 56
10 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
11 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
12 ; CHECK-NEXT:    or %s0, 0, %s3
13 ; CHECK-NEXT:    b.l.t (, %s10)
14   %5 = icmp sgt i8 %0, %1
15   %6 = select i1 %5, double %2, double %3
16   ret double %6
19 define double @selectccsgti16(i16, i16, double, double) {
20 ; CHECK-LABEL: selectccsgti16:
21 ; CHECK:       # %bb.0:
22 ; CHECK-NEXT:    sll %s1, %s1, 48
23 ; CHECK-NEXT:    sra.l %s1, %s1, 48
24 ; CHECK-NEXT:    sll %s0, %s0, 48
25 ; CHECK-NEXT:    sra.l %s0, %s0, 48
26 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
27 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
28 ; CHECK-NEXT:    or %s0, 0, %s3
29 ; CHECK-NEXT:    b.l.t (, %s10)
30   %5 = icmp sgt i16 %0, %1
31   %6 = select i1 %5, double %2, double %3
32   ret double %6
35 define double @selectccsgti32(i32, i32, double, double) {
36 ; CHECK-LABEL: selectccsgti32:
37 ; CHECK:       # %bb.0:
38 ; CHECK-NEXT:    cmps.w.zx %s0, %s0, %s1
39 ; CHECK-NEXT:    cmov.w.gt %s3, %s2, %s0
40 ; CHECK-NEXT:    or %s0, 0, %s3
41 ; CHECK-NEXT:    b.l.t (, %s10)
42   %5 = icmp sgt i32 %0, %1
43   %6 = select i1 %5, double %2, double %3
44   ret double %6
47 define double @selectccsgti64(i64, i64, double, double) {
48 ; CHECK-LABEL: selectccsgti64:
49 ; CHECK:       # %bb.0:
50 ; CHECK-NEXT:    cmps.l %s0, %s0, %s1
51 ; CHECK-NEXT:    cmov.l.gt %s3, %s2, %s0
52 ; CHECK-NEXT:    or %s0, 0, %s3
53 ; CHECK-NEXT:    b.l.t (, %s10)
54   %5 = icmp sgt i64 %0, %1
55   %6 = select i1 %5, double %2, double %3
56   ret double %6
59 define double @selectccsgti128(i128, i128, double, double) {
60 ; CHECK-LABEL: selectccsgti128:
61 ; CHECK:       # %bb.0:
62 ; CHECK-NEXT:    cmpu.l %s6, %s1, %s3
63 ; CHECK-NEXT:    cmps.l %s1, %s1, %s3
64 ; CHECK-NEXT:    or %s3, 0, (0)1
65 ; CHECK-NEXT:    or %s7, 0, (0)1
66 ; CHECK-NEXT:    cmov.l.gt %s7, (63)0, %s1
67 ; CHECK-NEXT:    cmpu.l %s0, %s0, %s2
68 ; CHECK-NEXT:    cmov.l.gt %s3, (63)0, %s0
69 ; CHECK-NEXT:    cmov.l.eq %s7, %s3, %s6
70 ; CHECK-NEXT:    cmov.w.ne %s5, %s4, %s7
71 ; CHECK-NEXT:    or %s0, 0, %s5
72 ; CHECK-NEXT:    b.l.t (, %s10)
73   %5 = icmp sgt i128 %0, %1
74   %6 = select i1 %5, double %2, double %3
75   ret double %6
78 define double @selectccogtf32(float, float, double, double) {
79 ; CHECK-LABEL: selectccogtf32:
80 ; CHECK:       # %bb.0:
81 ; CHECK-NEXT:    fcmp.s %s0, %s0, %s1
82 ; CHECK-NEXT:    cmov.s.gt %s3, %s2, %s0
83 ; CHECK-NEXT:    or %s0, 0, %s3
84 ; CHECK-NEXT:    b.l.t (, %s10)
85   %5 = fcmp ogt float %0, %1
86   %6 = select i1 %5, double %2, double %3
87   ret double %6
90 define double @selectccogtf64(double, double, double, double) {
91 ; CHECK-LABEL: selectccogtf64:
92 ; CHECK:       # %bb.0:
93 ; CHECK-NEXT:    fcmp.d %s0, %s0, %s1
94 ; CHECK-NEXT:    cmov.d.gt %s3, %s2, %s0
95 ; CHECK-NEXT:    or %s0, 0, %s3
96 ; CHECK-NEXT:    b.l.t (, %s10)
97   %5 = fcmp ogt double %0, %1
98   %6 = select i1 %5, double %2, double %3
99   ret double %6