xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/cast.ll (revision b5600c6f85c6d1e30b1125e6f943b61f66d7fb9f)
11943b7f1SSimon Moll; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
21943b7f1SSimon Moll
31943b7f1SSimon Molldefine signext i32 @i() {
41943b7f1SSimon Moll; CHECK-LABEL: i:
544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
61943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
81943b7f1SSimon Moll  ret i32 -2147483648
91943b7f1SSimon Moll}
101943b7f1SSimon Moll
111943b7f1SSimon Molldefine zeroext i32 @ui() {
121943b7f1SSimon Moll; CHECK-LABEL: ui:
1344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
141943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
151943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
1644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
171943b7f1SSimon Moll  ret i32 -2147483648
181943b7f1SSimon Moll}
191943b7f1SSimon Moll
201943b7f1SSimon Molldefine i64 @ll() {
211943b7f1SSimon Moll; CHECK-LABEL: ll:
2244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
231943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
2444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
251943b7f1SSimon Moll  ret i64 -2147483648
261943b7f1SSimon Moll}
271943b7f1SSimon Moll
281943b7f1SSimon Molldefine i64 @ull() {
291943b7f1SSimon Moll; CHECK-LABEL: ull:
3044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
311943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
321943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
3344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
341943b7f1SSimon Moll  ret i64 2147483648
351943b7f1SSimon Moll}
361943b7f1SSimon Moll
371943b7f1SSimon Molldefine signext i8 @d2c(double %x) {
381943b7f1SSimon Moll; CHECK-LABEL: d2c:
3944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
401943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
411943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
4244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
431943b7f1SSimon Moll  %r = fptosi double %x to i8
441943b7f1SSimon Moll  ret i8 %r
451943b7f1SSimon Moll}
461943b7f1SSimon Moll
471943b7f1SSimon Molldefine zeroext i8 @d2uc(double %x) {
481943b7f1SSimon Moll; CHECK-LABEL: d2uc:
4944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
501943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
511943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
5244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
531943b7f1SSimon Moll  %r = fptoui double %x to i8
541943b7f1SSimon Moll  ret i8 %r
551943b7f1SSimon Moll}
561943b7f1SSimon Moll
571943b7f1SSimon Molldefine signext i16 @d2s(double %x) {
581943b7f1SSimon Moll; CHECK-LABEL: d2s:
5944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
601943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
611943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
6244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
631943b7f1SSimon Moll  %r = fptosi double %x to i16
641943b7f1SSimon Moll  ret i16 %r
651943b7f1SSimon Moll}
661943b7f1SSimon Moll
671943b7f1SSimon Molldefine zeroext i16 @d2us(double %x) {
681943b7f1SSimon Moll; CHECK-LABEL: d2us:
6944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
701943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
711943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
7244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
731943b7f1SSimon Moll  %r = fptoui double %x to i16
741943b7f1SSimon Moll  ret i16 %r
751943b7f1SSimon Moll}
761943b7f1SSimon Moll
771943b7f1SSimon Molldefine signext i32 @d2i(double %x) {
781943b7f1SSimon Moll; CHECK-LABEL: d2i:
7944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
801943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
811943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
8244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
831943b7f1SSimon Moll  %r = fptosi double %x to i32
841943b7f1SSimon Moll  ret i32 %r
851943b7f1SSimon Moll}
861943b7f1SSimon Moll
871943b7f1SSimon Molldefine zeroext i32 @d2ui(double %x) {
881943b7f1SSimon Moll; CHECK-LABEL: d2ui:
8944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
901943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
911943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
9244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
931943b7f1SSimon Moll  %r = fptoui double %x to i32
941943b7f1SSimon Moll  ret i32 %r
951943b7f1SSimon Moll}
961943b7f1SSimon Moll
971943b7f1SSimon Molldefine i64 @d2ll(double %x) {
981943b7f1SSimon Moll; CHECK-LABEL: d2ll:
9944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1001943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
10144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1021943b7f1SSimon Moll  %r = fptosi double %x to i64
1031943b7f1SSimon Moll  ret i64 %r
1041943b7f1SSimon Moll}
1051943b7f1SSimon Moll
1061943b7f1SSimon Molldefine i64 @d2ull(double %x) {
1071943b7f1SSimon Moll; CHECK-LABEL: d2ull:
10844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1091943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s1, 1138753536
1101943b7f1SSimon Moll; CHECK-NEXT:    fcmp.d %s2, %s0, %s1
1111943b7f1SSimon Moll; CHECK-NEXT:    fsub.d %s1, %s0, %s1
1121943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s1, %s1
1131943b7f1SSimon Moll; CHECK-NEXT:    xor %s1, %s1, (1)1
1141943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
1151943b7f1SSimon Moll; CHECK-NEXT:    cmov.d.lt %s1, %s0, %s2
1161943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s1
11744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1181943b7f1SSimon Moll  %r = fptoui double %x to i64
1191943b7f1SSimon Moll  ret i64 %r
1201943b7f1SSimon Moll}
1211943b7f1SSimon Moll
1221943b7f1SSimon Molldefine float @d2f(double %x) {
1231943b7f1SSimon Moll; CHECK-LABEL: d2f:
12444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1251943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.d %s0, %s0
12644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1271943b7f1SSimon Moll  %r = fptrunc double %x to float
1281943b7f1SSimon Moll  ret float %r
1291943b7f1SSimon Moll}
1301943b7f1SSimon Moll
1311943b7f1SSimon Molldefine double @d2d(double returned %0) {
1321943b7f1SSimon Moll; CHECK-LABEL: d2d:
13344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1351943b7f1SSimon Moll  ret double %0
1361943b7f1SSimon Moll}
1371943b7f1SSimon Moll
1381943b7f1SSimon Molldefine fp128 @d2q(double) {
1391943b7f1SSimon Moll; CHECK-LABEL: d2q:
14044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1411943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
14244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1431943b7f1SSimon Moll  %2 = fpext double %0 to fp128
1441943b7f1SSimon Moll  ret fp128 %2
1451943b7f1SSimon Moll}
1461943b7f1SSimon Moll
1471943b7f1SSimon Molldefine signext i8 @q2c(fp128) {
1481943b7f1SSimon Moll; CHECK-LABEL: q2c:
14944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1501943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
1511943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
1521943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
15344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1541943b7f1SSimon Moll  %2 = fptosi fp128 %0 to i8
1551943b7f1SSimon Moll  ret i8 %2
1561943b7f1SSimon Moll}
1571943b7f1SSimon Moll
1581943b7f1SSimon Molldefine zeroext i8 @q2uc(fp128) {
1591943b7f1SSimon Moll; CHECK-LABEL: q2uc:
16044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1611943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
1621943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
1631943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
16444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1651943b7f1SSimon Moll  %2 = fptoui fp128 %0 to i8
1661943b7f1SSimon Moll  ret i8 %2
1671943b7f1SSimon Moll}
1681943b7f1SSimon Moll
1691943b7f1SSimon Molldefine signext i16 @q2s(fp128) {
1701943b7f1SSimon Moll; CHECK-LABEL: q2s:
17144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1721943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
1731943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
1741943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
17544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1761943b7f1SSimon Moll  %2 = fptosi fp128 %0 to i16
1771943b7f1SSimon Moll  ret i16 %2
1781943b7f1SSimon Moll}
1791943b7f1SSimon Moll
1801943b7f1SSimon Molldefine zeroext i16 @q2us(fp128) {
1811943b7f1SSimon Moll; CHECK-LABEL: q2us:
18244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1831943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
1841943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
1851943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
18644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1871943b7f1SSimon Moll  %2 = fptoui fp128 %0 to i16
1881943b7f1SSimon Moll  ret i16 %2
1891943b7f1SSimon Moll}
1901943b7f1SSimon Moll
1911943b7f1SSimon Molldefine signext i32 @q2i(fp128) {
1921943b7f1SSimon Moll; CHECK-LABEL: q2i:
19344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
1941943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
1951943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
1961943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
19744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
1981943b7f1SSimon Moll  %2 = fptosi fp128 %0 to i32
1991943b7f1SSimon Moll  ret i32 %2
2001943b7f1SSimon Moll}
2011943b7f1SSimon Moll
2021943b7f1SSimon Molldefine zeroext i32 @q2ui(fp128) {
2031943b7f1SSimon Moll; CHECK-LABEL: q2ui:
20444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2051943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
2061943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
2071943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
20844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2091943b7f1SSimon Moll  %2 = fptoui fp128 %0 to i32
2101943b7f1SSimon Moll  ret i32 %2
2111943b7f1SSimon Moll}
2121943b7f1SSimon Moll
2131943b7f1SSimon Molldefine i64 @q2ll(fp128) {
2141943b7f1SSimon Moll; CHECK-LABEL: q2ll:
21544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2161943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
2171943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
21844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2191943b7f1SSimon Moll  %2 = fptosi fp128 %0 to i64
2201943b7f1SSimon Moll  ret i64 %2
2211943b7f1SSimon Moll}
2221943b7f1SSimon Moll
2231943b7f1SSimon Molldefine i64 @q2ull(fp128) {
2241943b7f1SSimon Moll; CHECK-LABEL: q2ull:
22544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2261943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, .LCPI{{[0-9]+}}_0@lo
2271943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
2281943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s2, .LCPI{{[0-9]+}}_0@hi(, %s2)
2291943b7f1SSimon Moll; CHECK-NEXT:    ld %s4, 8(, %s2)
2301943b7f1SSimon Moll; CHECK-NEXT:    ld %s5, (, %s2)
2311943b7f1SSimon Moll; CHECK-NEXT:    fcmp.q %s3, %s0, %s4
2321943b7f1SSimon Moll; CHECK-NEXT:    fsub.q %s4, %s0, %s4
2331943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s2, %s4
2341943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s2, %s2
2351943b7f1SSimon Moll; CHECK-NEXT:    xor %s2, %s2, (1)1
2361943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
2371943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
2381943b7f1SSimon Moll; CHECK-NEXT:    cmov.d.lt %s2, %s0, %s3
2391943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s2
24044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2411943b7f1SSimon Moll  %2 = fptoui fp128 %0 to i64
2421943b7f1SSimon Moll  ret i64 %2
2431943b7f1SSimon Moll}
2441943b7f1SSimon Moll
2451943b7f1SSimon Molldefine float @q2f(fp128) {
2461943b7f1SSimon Moll; CHECK-LABEL: q2f:
24744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2481943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.q %s0, %s0
24944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2501943b7f1SSimon Moll  %2 = fptrunc fp128 %0 to float
2511943b7f1SSimon Moll  ret float %2
2521943b7f1SSimon Moll}
2531943b7f1SSimon Moll
2541943b7f1SSimon Molldefine double @q2d(fp128) {
2551943b7f1SSimon Moll; CHECK-LABEL: q2d:
25644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2571943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.q %s0, %s0
25844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2591943b7f1SSimon Moll  %2 = fptrunc fp128 %0 to double
2601943b7f1SSimon Moll  ret double %2
2611943b7f1SSimon Moll}
2621943b7f1SSimon Moll
2631943b7f1SSimon Molldefine fp128 @q2q(fp128 returned) {
2641943b7f1SSimon Moll; CHECK-LABEL: q2q:
26544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
26644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2671943b7f1SSimon Moll  ret fp128 %0
2681943b7f1SSimon Moll}
2691943b7f1SSimon Moll
2701943b7f1SSimon Molldefine signext i8 @f2c(float %x) {
2711943b7f1SSimon Moll; CHECK-LABEL: f2c:
27244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2731943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
2741943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
27544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2761943b7f1SSimon Moll  %r = fptosi float %x to i8
2771943b7f1SSimon Moll  ret i8 %r
2781943b7f1SSimon Moll}
2791943b7f1SSimon Moll
2801943b7f1SSimon Molldefine zeroext i8 @f2uc(float %x) {
2811943b7f1SSimon Moll; CHECK-LABEL: f2uc:
28244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2831943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
2841943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
28544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2861943b7f1SSimon Moll  %r = fptoui float %x to i8
2871943b7f1SSimon Moll  ret i8 %r
2881943b7f1SSimon Moll}
2891943b7f1SSimon Moll
2901943b7f1SSimon Molldefine signext i16 @f2s(float %x) {
2911943b7f1SSimon Moll; CHECK-LABEL: f2s:
29244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
2931943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
2941943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
29544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
2961943b7f1SSimon Moll  %r = fptosi float %x to i16
2971943b7f1SSimon Moll  ret i16 %r
2981943b7f1SSimon Moll}
2991943b7f1SSimon Moll
3001943b7f1SSimon Molldefine zeroext i16 @f2us(float %x) {
3011943b7f1SSimon Moll; CHECK-LABEL: f2us:
30244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3031943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
3041943b7f1SSimon Moll; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
30544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3061943b7f1SSimon Moll  %r = fptoui float %x to i16
3071943b7f1SSimon Moll  ret i16 %r
3081943b7f1SSimon Moll}
3091943b7f1SSimon Moll
3101943b7f1SSimon Molldefine signext i32 @f2i(float %x) {
3111943b7f1SSimon Moll; CHECK-LABEL: f2i:
31244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3131943b7f1SSimon Moll; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
3141943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
31544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3161943b7f1SSimon Moll  %r = fptosi float %x to i32
3171943b7f1SSimon Moll  ret i32 %r
3181943b7f1SSimon Moll}
3191943b7f1SSimon Moll
3201943b7f1SSimon Molldefine zeroext i32 @f2ui(float %x) {
3211943b7f1SSimon Moll; CHECK-LABEL: f2ui:
32244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3231943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.s %s0, %s0
3241943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
3251943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
32644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3271943b7f1SSimon Moll  %r = fptoui float %x to i32
3281943b7f1SSimon Moll  ret i32 %r
3291943b7f1SSimon Moll}
3301943b7f1SSimon Moll
3311943b7f1SSimon Molldefine i64 @f2ll(float %x) {
3321943b7f1SSimon Moll; CHECK-LABEL: f2ll:
33344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3341943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.s %s0, %s0
3351943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
33644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3371943b7f1SSimon Moll  %r = fptosi float %x to i64
3381943b7f1SSimon Moll  ret i64 %r
3391943b7f1SSimon Moll}
3401943b7f1SSimon Moll
3411943b7f1SSimon Molldefine i64 @f2ull(float %x) {
3421943b7f1SSimon Moll; CHECK-LABEL: f2ull:
34344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3441943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s1, 1593835520
3451943b7f1SSimon Moll; CHECK-NEXT:    fcmp.s %s2, %s0, %s1
3461943b7f1SSimon Moll; CHECK-NEXT:    fsub.s %s1, %s0, %s1
3471943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.s %s1, %s1
3481943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s1, %s1
3491943b7f1SSimon Moll; CHECK-NEXT:    xor %s1, %s1, (1)1
3501943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.s %s0, %s0
3511943b7f1SSimon Moll; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
3521943b7f1SSimon Moll; CHECK-NEXT:    cmov.s.lt %s1, %s0, %s2
3531943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s1
35444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3551943b7f1SSimon Moll  %r = fptoui float %x to i64
3561943b7f1SSimon Moll  ret i64 %r
3571943b7f1SSimon Moll}
3581943b7f1SSimon Moll
3591943b7f1SSimon Molldefine float @f2f(float returned %0) {
3601943b7f1SSimon Moll; CHECK-LABEL: f2f:
36144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
36244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3631943b7f1SSimon Moll  ret float %0
3641943b7f1SSimon Moll}
3651943b7f1SSimon Moll
3661943b7f1SSimon Molldefine double @f2d(float %x) {
3671943b7f1SSimon Moll; CHECK-LABEL: f2d:
36844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3691943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.s %s0, %s0
37044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3711943b7f1SSimon Moll  %r = fpext float %x to double
3721943b7f1SSimon Moll  ret double %r
3731943b7f1SSimon Moll}
3741943b7f1SSimon Moll
3751943b7f1SSimon Molldefine fp128 @f2q(float) {
3761943b7f1SSimon Moll; CHECK-LABEL: f2q:
37744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3781943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.s %s0, %s0
37944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3801943b7f1SSimon Moll  %2 = fpext float %0 to fp128
3811943b7f1SSimon Moll  ret fp128 %2
3821943b7f1SSimon Moll}
3831943b7f1SSimon Moll
3841943b7f1SSimon Molldefine signext i8 @ll2c(i64 %0) {
3851943b7f1SSimon Moll; CHECK-LABEL: ll2c:
38644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3871943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
3881943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
38944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3901943b7f1SSimon Moll  %2 = trunc i64 %0 to i8
3911943b7f1SSimon Moll  ret i8 %2
3921943b7f1SSimon Moll}
3931943b7f1SSimon Moll
3941943b7f1SSimon Molldefine zeroext i8 @ll2uc(i64 %0) {
3951943b7f1SSimon Moll; CHECK-LABEL: ll2uc:
39644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
3971943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
39844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
3991943b7f1SSimon Moll  %2 = trunc i64 %0 to i8
4001943b7f1SSimon Moll  ret i8 %2
4011943b7f1SSimon Moll}
4021943b7f1SSimon Moll
4031943b7f1SSimon Molldefine signext i16 @ll2s(i64 %0) {
4041943b7f1SSimon Moll; CHECK-LABEL: ll2s:
40544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4061943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
4071943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
40844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4091943b7f1SSimon Moll  %2 = trunc i64 %0 to i16
4101943b7f1SSimon Moll  ret i16 %2
4111943b7f1SSimon Moll}
4121943b7f1SSimon Moll
4131943b7f1SSimon Molldefine zeroext i16 @ll2us(i64 %0) {
4141943b7f1SSimon Moll; CHECK-LABEL: ll2us:
41544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4161943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
41744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4181943b7f1SSimon Moll  %2 = trunc i64 %0 to i16
4191943b7f1SSimon Moll  ret i16 %2
4201943b7f1SSimon Moll}
4211943b7f1SSimon Moll
4221943b7f1SSimon Molldefine signext i32 @ll2i(i64 %0) {
4231943b7f1SSimon Moll; CHECK-LABEL: ll2i:
42444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4251943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
42644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4271943b7f1SSimon Moll  %2 = trunc i64 %0 to i32
4281943b7f1SSimon Moll  ret i32 %2
4291943b7f1SSimon Moll}
4301943b7f1SSimon Moll
4311943b7f1SSimon Molldefine zeroext i32 @ll2ui(i64 %0) {
4321943b7f1SSimon Moll; CHECK-LABEL: ll2ui:
43344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4341943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
43544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4361943b7f1SSimon Moll  %2 = trunc i64 %0 to i32
4371943b7f1SSimon Moll  ret i32 %2
4381943b7f1SSimon Moll}
4391943b7f1SSimon Moll
4401943b7f1SSimon Molldefine i64 @ll2ll(i64 returned %0) {
4411943b7f1SSimon Moll; CHECK-LABEL: ll2ll:
44244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
44344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4441943b7f1SSimon Moll  ret i64 %0
4451943b7f1SSimon Moll}
4461943b7f1SSimon Moll
4471943b7f1SSimon Molldefine i64 @ll2ull(i64 returned %0) {
4481943b7f1SSimon Moll; CHECK-LABEL: ll2ull:
44944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
45044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4511943b7f1SSimon Moll  ret i64 %0
4521943b7f1SSimon Moll}
4531943b7f1SSimon Moll
4541943b7f1SSimon Molldefine float @ll2f(i64 %x) {
4551943b7f1SSimon Moll; CHECK-LABEL: ll2f:
45644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4571943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
4581943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.d %s0, %s0
45944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4601943b7f1SSimon Moll  %r = sitofp i64 %x to float
4611943b7f1SSimon Moll  ret float %r
4621943b7f1SSimon Moll}
4631943b7f1SSimon Moll
4641943b7f1SSimon Molldefine double @ll2d(i64 %x) {
4651943b7f1SSimon Moll; CHECK-LABEL: ll2d:
46644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4671943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
46844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4691943b7f1SSimon Moll  %r = sitofp i64 %x to double
4701943b7f1SSimon Moll  ret double %r
4711943b7f1SSimon Moll}
4721943b7f1SSimon Moll
4731943b7f1SSimon Molldefine fp128 @ll2q(i64) {
4741943b7f1SSimon Moll; CHECK-LABEL: ll2q:
47544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4761943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
4771943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
47844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4791943b7f1SSimon Moll  %2 = sitofp i64 %0 to fp128
4801943b7f1SSimon Moll  ret fp128 %2
4811943b7f1SSimon Moll}
4821943b7f1SSimon Moll
4831943b7f1SSimon Molldefine signext i8 @ull2c(i64 %0) {
4841943b7f1SSimon Moll; CHECK-LABEL: ull2c:
48544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4861943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
4871943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
48844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4891943b7f1SSimon Moll  %2 = trunc i64 %0 to i8
4901943b7f1SSimon Moll  ret i8 %2
4911943b7f1SSimon Moll}
4921943b7f1SSimon Moll
4931943b7f1SSimon Molldefine zeroext i8 @ull2uc(i64 %0) {
4941943b7f1SSimon Moll; CHECK-LABEL: ull2uc:
49544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
4961943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
49744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
4981943b7f1SSimon Moll  %2 = trunc i64 %0 to i8
4991943b7f1SSimon Moll  ret i8 %2
5001943b7f1SSimon Moll}
5011943b7f1SSimon Moll
5021943b7f1SSimon Molldefine signext i16 @ull2s(i64 %0) {
5031943b7f1SSimon Moll; CHECK-LABEL: ull2s:
50444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
5051943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
5061943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
50744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5081943b7f1SSimon Moll  %2 = trunc i64 %0 to i16
5091943b7f1SSimon Moll  ret i16 %2
5101943b7f1SSimon Moll}
5111943b7f1SSimon Moll
5121943b7f1SSimon Molldefine zeroext i16 @ull2us(i64 %0) {
5131943b7f1SSimon Moll; CHECK-LABEL: ull2us:
51444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
5151943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
51644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5171943b7f1SSimon Moll  %2 = trunc i64 %0 to i16
5181943b7f1SSimon Moll  ret i16 %2
5191943b7f1SSimon Moll}
5201943b7f1SSimon Moll
5211943b7f1SSimon Molldefine signext i32 @ull2i(i64 %0) {
5221943b7f1SSimon Moll; CHECK-LABEL: ull2i:
52344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
5241943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
52544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5261943b7f1SSimon Moll  %2 = trunc i64 %0 to i32
5271943b7f1SSimon Moll  ret i32 %2
5281943b7f1SSimon Moll}
5291943b7f1SSimon Moll
5301943b7f1SSimon Molldefine zeroext i32 @ull2ui(i64 %0) {
5311943b7f1SSimon Moll; CHECK-LABEL: ull2ui:
53244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
5331943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
53444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5351943b7f1SSimon Moll  %2 = trunc i64 %0 to i32
5361943b7f1SSimon Moll  ret i32 %2
5371943b7f1SSimon Moll}
5381943b7f1SSimon Moll
5391943b7f1SSimon Molldefine i64 @ull2ll(i64 returned %0) {
5401943b7f1SSimon Moll; CHECK-LABEL: ull2ll:
54144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
54244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5431943b7f1SSimon Moll  ret i64 %0
5441943b7f1SSimon Moll}
5451943b7f1SSimon Moll
5461943b7f1SSimon Molldefine i64 @ull2ull(i64 returned %0) {
5471943b7f1SSimon Moll; CHECK-LABEL: ull2ull:
54844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
54944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5501943b7f1SSimon Moll  ret i64 %0
5511943b7f1SSimon Moll}
5521943b7f1SSimon Moll
5531943b7f1SSimon Molldefine float @ull2f(i64 %x) {
5541943b7f1SSimon Moll; CHECK-LABEL: ull2f:
55544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
5561943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s1, %s0
5571943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.d %s1, %s1
55833dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    srl %s2, %s0, 1
55933dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    and %s3, 1, %s0
56033dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    or %s2, %s3, %s2
56133dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    cvt.d.l %s2, %s2
56233dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    cvt.s.d %s2, %s2
56333dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    fadd.s %s2, %s2, %s2
56433dda45dSKazushi (Jam) Marukawa; CHECK-NEXT:    cmov.l.lt %s1, %s2, %s0
5651943b7f1SSimon Moll; CHECK-NEXT:    or %s0, 0, %s1
56644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
5671943b7f1SSimon Moll  %r = uitofp i64 %x to float
5681943b7f1SSimon Moll  ret float %r
5691943b7f1SSimon Moll}
5701943b7f1SSimon Moll
571*b5600c6fSMichael Marjiehdefine float @ull2f_nneg(i64 %x) {
572*b5600c6fSMichael Marjieh; CHECK-LABEL: ull2f_nneg:
573*b5600c6fSMichael Marjieh; CHECK:       # %bb.0:
574*b5600c6fSMichael Marjieh; CHECK-NEXT:    cvt.d.l %s0, %s0
575*b5600c6fSMichael Marjieh; CHECK-NEXT:    cvt.s.d %s0, %s0
576*b5600c6fSMichael Marjieh; CHECK-NEXT:    b.l.t (, %s10)
577*b5600c6fSMichael Marjieh  %r = uitofp nneg i64 %x to float
578*b5600c6fSMichael Marjieh  ret float %r
579*b5600c6fSMichael Marjieh}
580*b5600c6fSMichael Marjieh
581*b5600c6fSMichael Marjiehdefine float @ull2f_strict(i32 %x) {
582*b5600c6fSMichael Marjieh; CHECK-LABEL: ull2f_strict:
583*b5600c6fSMichael Marjieh; CHECK:     # %bb.0:
584*b5600c6fSMichael Marjieh; CHECK-NEXT:	adds.l %s11, -16, %s11
585*b5600c6fSMichael Marjieh; CHECK-NEXT:		brge.l.t %s11, %s8, .LBB58_2
586*b5600c6fSMichael Marjieh; CHECK-NEXT:	# %bb.1:
587*b5600c6fSMichael Marjieh; CHECK-NEXT:		ld %s61, 24(, %s14)
588*b5600c6fSMichael Marjieh; CHECK-NEXT:		or %s62, 0, %s0
589*b5600c6fSMichael Marjieh; CHECK-NEXT:		lea %s63, 315
590*b5600c6fSMichael Marjieh; CHECK-NEXT:		shm.l %s63, (%s61)
591*b5600c6fSMichael Marjieh; CHECK-NEXT:		shm.l %s8, 8(%s61)
592*b5600c6fSMichael Marjieh; CHECK-NEXT:		shm.l %s11, 16(%s61)
593*b5600c6fSMichael Marjieh; CHECK-NEXT:		monc
594*b5600c6fSMichael Marjieh; CHECK-NEXT:		or %s0, 0, %s62
595*b5600c6fSMichael Marjieh; CHECK-NEXT:	.LBB58_2:
596*b5600c6fSMichael Marjieh; CHECK-NEXT:		lea %s1, 1127219200
597*b5600c6fSMichael Marjieh; CHECK-NEXT:		stl %s1, 12(, %s11)
598*b5600c6fSMichael Marjieh; CHECK-NEXT:		stl %s0, 8(, %s11)
599*b5600c6fSMichael Marjieh; CHECK-NEXT:		ld %s0, 8(, %s11)
600*b5600c6fSMichael Marjieh; CHECK-NEXT:		lea.sl %s1, 1127219200
601*b5600c6fSMichael Marjieh; CHECK-NEXT:		fsub.d %s0, %s0, %s1
602*b5600c6fSMichael Marjieh; CHECK-NEXT:		cvt.s.d %s0, %s0
603*b5600c6fSMichael Marjieh; CHECK-NEXT:		adds.l %s11, 16, %s11
604*b5600c6fSMichael Marjieh; CHECK-NEXT:		b.l.t (, %s10)
605*b5600c6fSMichael Marjieh  %val = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %x, metadata !"round.tonearest", metadata !"fpexcept.strict")
606*b5600c6fSMichael Marjieh  ret float %val
607*b5600c6fSMichael Marjieh}
608*b5600c6fSMichael Marjieh
6091943b7f1SSimon Molldefine double @ull2d(i64 %x) {
6101943b7f1SSimon Moll; CHECK-LABEL: ull2d:
61144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6121943b7f1SSimon Moll; CHECK-NEXT:    srl %s1, %s0, 32
6131943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s2, 1160773632
6141943b7f1SSimon Moll; CHECK-NEXT:    or %s1, %s1, %s2
6151943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, 1048576
6161943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s2, -986710016(, %s2)
6171943b7f1SSimon Moll; CHECK-NEXT:    fadd.d %s1, %s1, %s2
6181943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
6191943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s2, 1127219200
6201943b7f1SSimon Moll; CHECK-NEXT:    or %s0, %s0, %s2
6211943b7f1SSimon Moll; CHECK-NEXT:    fadd.d %s0, %s0, %s1
62244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6231943b7f1SSimon Moll  %r = uitofp i64 %x to double
6241943b7f1SSimon Moll  ret double %r
6251943b7f1SSimon Moll}
6261943b7f1SSimon Moll
6271943b7f1SSimon Molldefine fp128 @ull2q(i64) {
6281943b7f1SSimon Moll; CHECK-LABEL: ull2q:
62944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6301943b7f1SSimon Moll; CHECK-NEXT:    srl %s1, %s0, 61
6311943b7f1SSimon Moll; CHECK-NEXT:    and %s1, 4, %s1
6321943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, .LCPI{{[0-9]+}}_0@lo
6331943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
6341943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s2, .LCPI{{[0-9]+}}_0@hi(, %s2)
6351943b7f1SSimon Moll; CHECK-NEXT:    ldu %s1, (%s1, %s2)
6361943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.s %s2, %s1
6371943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
6381943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
6391943b7f1SSimon Moll; CHECK-NEXT:    fadd.q %s0, %s0, %s2
64044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6411943b7f1SSimon Moll  %2 = uitofp i64 %0 to fp128
6421943b7f1SSimon Moll  ret fp128 %2
6431943b7f1SSimon Moll}
6441943b7f1SSimon Moll
6451943b7f1SSimon Molldefine signext i8 @i2c(i32 signext %0) {
6461943b7f1SSimon Moll; CHECK-LABEL: i2c:
64744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6481943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
6491943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
65044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6511943b7f1SSimon Moll  %2 = trunc i32 %0 to i8
6521943b7f1SSimon Moll  ret i8 %2
6531943b7f1SSimon Moll}
6541943b7f1SSimon Moll
6551943b7f1SSimon Molldefine zeroext i8 @i2uc(i32 signext %0) {
6561943b7f1SSimon Moll; CHECK-LABEL: i2uc:
65744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6581943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
65944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6601943b7f1SSimon Moll  %2 = trunc i32 %0 to i8
6611943b7f1SSimon Moll  ret i8 %2
6621943b7f1SSimon Moll}
6631943b7f1SSimon Moll
6641943b7f1SSimon Molldefine signext i16 @i2s(i32 signext %0) {
6651943b7f1SSimon Moll; CHECK-LABEL: i2s:
66644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6671943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
6681943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
66944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6701943b7f1SSimon Moll  %2 = trunc i32 %0 to i16
6711943b7f1SSimon Moll  ret i16 %2
6721943b7f1SSimon Moll}
6731943b7f1SSimon Moll
6741943b7f1SSimon Molldefine zeroext i16 @i2us(i32 signext %0) {
6751943b7f1SSimon Moll; CHECK-LABEL: i2us:
67644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6771943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
67844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6791943b7f1SSimon Moll  %2 = trunc i32 %0 to i16
6801943b7f1SSimon Moll  ret i16 %2
6811943b7f1SSimon Moll}
6821943b7f1SSimon Moll
6831943b7f1SSimon Molldefine signext i32 @i2i(i32 signext returned %0) {
6841943b7f1SSimon Moll; CHECK-LABEL: i2i:
68544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
68644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6871943b7f1SSimon Moll  ret i32 %0
6881943b7f1SSimon Moll}
6891943b7f1SSimon Moll
6901943b7f1SSimon Molldefine zeroext i32 @i2ui(i32 signext returned %0) {
6911943b7f1SSimon Moll; CHECK-LABEL: i2ui:
69244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
6931943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
69444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
6951943b7f1SSimon Moll  ret i32 %0
6961943b7f1SSimon Moll}
6971943b7f1SSimon Moll
6981943b7f1SSimon Molldefine i64 @i2ll(i32 signext %0) {
6991943b7f1SSimon Moll; CHECK-LABEL: i2ll:
70044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
70144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7021943b7f1SSimon Moll  %2 = sext i32 %0 to i64
7031943b7f1SSimon Moll  ret i64 %2
7041943b7f1SSimon Moll}
7051943b7f1SSimon Moll
7061943b7f1SSimon Molldefine i64 @i2ull(i32 signext %0) {
7071943b7f1SSimon Moll; CHECK-LABEL: i2ull:
70844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
70944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7101943b7f1SSimon Moll  %2 = sext i32 %0 to i64
7111943b7f1SSimon Moll  ret i64 %2
7121943b7f1SSimon Moll}
7131943b7f1SSimon Moll
7141943b7f1SSimon Molldefine float @i2f(i32 signext %x) {
7151943b7f1SSimon Moll; CHECK-LABEL: i2f:
71644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7171943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.w %s0, %s0
71844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7191943b7f1SSimon Moll  %r = sitofp i32 %x to float
7201943b7f1SSimon Moll  ret float %r
7211943b7f1SSimon Moll}
7221943b7f1SSimon Moll
7231943b7f1SSimon Molldefine double @i2d(i32 signext %x) {
7241943b7f1SSimon Moll; CHECK-LABEL: i2d:
72544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7261943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
72744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7281943b7f1SSimon Moll  %r = sitofp i32 %x to double
7291943b7f1SSimon Moll  ret double %r
7301943b7f1SSimon Moll}
7311943b7f1SSimon Moll
7321943b7f1SSimon Molldefine fp128 @i2q(i32 signext %x) {
7331943b7f1SSimon Moll; CHECK-LABEL: i2q:
73444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7351943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
7361943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
73744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7381943b7f1SSimon Moll  %r = sitofp i32 %x to fp128
7391943b7f1SSimon Moll  ret fp128 %r
7401943b7f1SSimon Moll}
7411943b7f1SSimon Moll
7421943b7f1SSimon Molldefine signext i8 @ui2c(i32 zeroext %0) {
7431943b7f1SSimon Moll; CHECK-LABEL: ui2c:
74444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7451943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
7461943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
74744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7481943b7f1SSimon Moll  %2 = trunc i32 %0 to i8
7491943b7f1SSimon Moll  ret i8 %2
7501943b7f1SSimon Moll}
7511943b7f1SSimon Moll
7521943b7f1SSimon Molldefine zeroext i8 @ui2uc(i32 zeroext %0) {
7531943b7f1SSimon Moll; CHECK-LABEL: ui2uc:
75444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7551943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
75644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7571943b7f1SSimon Moll  %2 = trunc i32 %0 to i8
7581943b7f1SSimon Moll  ret i8 %2
7591943b7f1SSimon Moll}
7601943b7f1SSimon Moll
7611943b7f1SSimon Molldefine signext i16 @ui2s(i32 zeroext %0) {
7621943b7f1SSimon Moll; CHECK-LABEL: ui2s:
76344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7641943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
7651943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
76644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7671943b7f1SSimon Moll  %2 = trunc i32 %0 to i16
7681943b7f1SSimon Moll  ret i16 %2
7691943b7f1SSimon Moll}
7701943b7f1SSimon Moll
7711943b7f1SSimon Molldefine zeroext i16 @ui2us(i32 zeroext %0) {
7721943b7f1SSimon Moll; CHECK-LABEL: ui2us:
77344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7741943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
77544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7761943b7f1SSimon Moll  %2 = trunc i32 %0 to i16
7771943b7f1SSimon Moll  ret i16 %2
7781943b7f1SSimon Moll}
7791943b7f1SSimon Moll
7801943b7f1SSimon Molldefine signext i32 @ui2i(i32 zeroext returned %0) {
7811943b7f1SSimon Moll; CHECK-LABEL: ui2i:
78244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
7831943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
78444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7851943b7f1SSimon Moll  ret i32 %0
7861943b7f1SSimon Moll}
7871943b7f1SSimon Moll
7881943b7f1SSimon Molldefine zeroext i32 @ui2ui(i32 zeroext returned %0) {
7891943b7f1SSimon Moll; CHECK-LABEL: ui2ui:
79044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
79144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7921943b7f1SSimon Moll  ret i32 %0
7931943b7f1SSimon Moll}
7941943b7f1SSimon Moll
7951943b7f1SSimon Molldefine i64 @ui2ll(i32 zeroext %0) {
7961943b7f1SSimon Moll; CHECK-LABEL: ui2ll:
79744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
79844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
7991943b7f1SSimon Moll  %2 = zext i32 %0 to i64
8001943b7f1SSimon Moll  ret i64 %2
8011943b7f1SSimon Moll}
8021943b7f1SSimon Moll
8031943b7f1SSimon Molldefine i64 @ui2ull(i32 zeroext %0) {
8041943b7f1SSimon Moll; CHECK-LABEL: ui2ull:
80544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
80644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8071943b7f1SSimon Moll  %2 = zext i32 %0 to i64
8081943b7f1SSimon Moll  ret i64 %2
8091943b7f1SSimon Moll}
8101943b7f1SSimon Moll
8111943b7f1SSimon Molldefine float @ui2f(i32 zeroext %x) {
8121943b7f1SSimon Moll; CHECK-LABEL: ui2f:
81344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8141943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
8151943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.d %s0, %s0
81644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8171943b7f1SSimon Moll  %r = uitofp i32 %x to float
8181943b7f1SSimon Moll  ret float %r
8191943b7f1SSimon Moll}
8201943b7f1SSimon Moll
8211943b7f1SSimon Molldefine double @ui2d(i32 zeroext %x) {
8221943b7f1SSimon Moll; CHECK-LABEL: ui2d:
82344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8241943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
82544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8261943b7f1SSimon Moll  %r = uitofp i32 %x to double
8271943b7f1SSimon Moll  ret double %r
8281943b7f1SSimon Moll}
8291943b7f1SSimon Moll
8301943b7f1SSimon Molldefine fp128 @ui2q(i32 zeroext %0) {
8311943b7f1SSimon Moll; CHECK-LABEL: ui2q:
83244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8331943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.l %s0, %s0
8341943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
83544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8361943b7f1SSimon Moll  %2 = uitofp i32 %0 to fp128
8371943b7f1SSimon Moll  ret fp128 %2
8381943b7f1SSimon Moll}
8391943b7f1SSimon Moll
8401943b7f1SSimon Molldefine signext i8 @s2c(i16 signext %0) {
8411943b7f1SSimon Moll; CHECK-LABEL: s2c:
84244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8431943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
8441943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
84544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8461943b7f1SSimon Moll  %2 = trunc i16 %0 to i8
8471943b7f1SSimon Moll  ret i8 %2
8481943b7f1SSimon Moll}
8491943b7f1SSimon Moll
8501943b7f1SSimon Molldefine zeroext i8 @s2uc(i16 signext %0) {
8511943b7f1SSimon Moll; CHECK-LABEL: s2uc:
85244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8531943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
85444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8551943b7f1SSimon Moll  %2 = trunc i16 %0 to i8
8561943b7f1SSimon Moll  ret i8 %2
8571943b7f1SSimon Moll}
8581943b7f1SSimon Moll
8591943b7f1SSimon Molldefine signext i16 @s2s(i16 returned signext %0) {
8601943b7f1SSimon Moll; CHECK-LABEL: s2s:
86144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
86244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8631943b7f1SSimon Moll  ret i16 %0
8641943b7f1SSimon Moll}
8651943b7f1SSimon Moll
8661943b7f1SSimon Molldefine zeroext i16 @s2us(i16 returned signext %0) {
8671943b7f1SSimon Moll; CHECK-LABEL: s2us:
86844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8691943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
87044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8711943b7f1SSimon Moll  ret i16 %0
8721943b7f1SSimon Moll}
8731943b7f1SSimon Moll
8741943b7f1SSimon Molldefine signext i32 @s2i(i16 signext %0) {
8751943b7f1SSimon Moll; CHECK-LABEL: s2i:
87644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
87744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8781943b7f1SSimon Moll  %2 = sext i16 %0 to i32
8791943b7f1SSimon Moll  ret i32 %2
8801943b7f1SSimon Moll}
8811943b7f1SSimon Moll
8821943b7f1SSimon Molldefine zeroext i32 @s2ui(i16 signext %0) {
8831943b7f1SSimon Moll; CHECK-LABEL: s2ui:
88444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
8851943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
88644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8871943b7f1SSimon Moll  %2 = sext i16 %0 to i32
8881943b7f1SSimon Moll  ret i32 %2
8891943b7f1SSimon Moll}
8901943b7f1SSimon Moll
8911943b7f1SSimon Molldefine i64 @s2ll(i16 signext %0) {
8921943b7f1SSimon Moll; CHECK-LABEL: s2ll:
89344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
89444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
8951943b7f1SSimon Moll  %2 = sext i16 %0 to i64
8961943b7f1SSimon Moll  ret i64 %2
8971943b7f1SSimon Moll}
8981943b7f1SSimon Moll
8991943b7f1SSimon Molldefine i64 @s2ull(i16 signext %0) {
9001943b7f1SSimon Moll; CHECK-LABEL: s2ull:
90144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
90244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9031943b7f1SSimon Moll  %2 = sext i16 %0 to i64
9041943b7f1SSimon Moll  ret i64 %2
9051943b7f1SSimon Moll}
9061943b7f1SSimon Moll
9071943b7f1SSimon Molldefine float @s2f(i16 signext %x) {
9081943b7f1SSimon Moll; CHECK-LABEL: s2f:
90944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9101943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.w %s0, %s0
91144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9121943b7f1SSimon Moll  %r = sitofp i16 %x to float
9131943b7f1SSimon Moll  ret float %r
9141943b7f1SSimon Moll}
9151943b7f1SSimon Moll
9161943b7f1SSimon Molldefine double @s2d(i16 signext %x) {
9171943b7f1SSimon Moll; CHECK-LABEL: s2d:
91844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9191943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
92044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9211943b7f1SSimon Moll  %r = sitofp i16 %x to double
9221943b7f1SSimon Moll  ret double %r
9231943b7f1SSimon Moll}
9241943b7f1SSimon Moll
9251943b7f1SSimon Molldefine fp128 @s2q(i16 signext) {
9261943b7f1SSimon Moll; CHECK-LABEL: s2q:
92744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9281943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
9291943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
93044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9311943b7f1SSimon Moll  %2 = sitofp i16 %0 to fp128
9321943b7f1SSimon Moll  ret fp128 %2
9331943b7f1SSimon Moll}
9341943b7f1SSimon Moll
9351943b7f1SSimon Molldefine signext i8 @us2c(i16 zeroext %0) {
9361943b7f1SSimon Moll; CHECK-LABEL: us2c:
93744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9381943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
9391943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
94044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9411943b7f1SSimon Moll  %2 = trunc i16 %0 to i8
9421943b7f1SSimon Moll  ret i8 %2
9431943b7f1SSimon Moll}
9441943b7f1SSimon Moll
9451943b7f1SSimon Molldefine zeroext i8 @us2uc(i16 zeroext %0) {
9461943b7f1SSimon Moll; CHECK-LABEL: us2uc:
94744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9481943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
94944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9501943b7f1SSimon Moll  %2 = trunc i16 %0 to i8
9511943b7f1SSimon Moll  ret i8 %2
9521943b7f1SSimon Moll}
9531943b7f1SSimon Moll
9541943b7f1SSimon Molldefine signext i16 @us2s(i16 returned zeroext %0) {
9551943b7f1SSimon Moll; CHECK-LABEL: us2s:
95644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
9571943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
9581943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
95944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9601943b7f1SSimon Moll  ret i16 %0
9611943b7f1SSimon Moll}
9621943b7f1SSimon Moll
9631943b7f1SSimon Molldefine zeroext i16 @us2us(i16 returned zeroext %0) {
9641943b7f1SSimon Moll; CHECK-LABEL: us2us:
96544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
96644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9671943b7f1SSimon Moll  ret i16 %0
9681943b7f1SSimon Moll}
9691943b7f1SSimon Moll
9701943b7f1SSimon Molldefine signext i32 @us2i(i16 zeroext %0) {
9711943b7f1SSimon Moll; CHECK-LABEL: us2i:
97244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
97344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9741943b7f1SSimon Moll  %2 = zext i16 %0 to i32
9751943b7f1SSimon Moll  ret i32 %2
9761943b7f1SSimon Moll}
9771943b7f1SSimon Moll
9781943b7f1SSimon Molldefine zeroext i32 @us2ui(i16 zeroext %0) {
9791943b7f1SSimon Moll; CHECK-LABEL: us2ui:
98044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
98144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9821943b7f1SSimon Moll  %2 = zext i16 %0 to i32
9831943b7f1SSimon Moll  ret i32 %2
9841943b7f1SSimon Moll}
9851943b7f1SSimon Moll
9861943b7f1SSimon Molldefine i64 @us2ll(i16 zeroext %0) {
9871943b7f1SSimon Moll; CHECK-LABEL: us2ll:
98844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
98944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9901943b7f1SSimon Moll  %2 = zext i16 %0 to i64
9911943b7f1SSimon Moll  ret i64 %2
9921943b7f1SSimon Moll}
9931943b7f1SSimon Moll
9941943b7f1SSimon Molldefine i64 @us2ull(i16 zeroext %0) {
9951943b7f1SSimon Moll; CHECK-LABEL: us2ull:
99644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
99744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
9981943b7f1SSimon Moll  %2 = zext i16 %0 to i64
9991943b7f1SSimon Moll  ret i64 %2
10001943b7f1SSimon Moll}
10011943b7f1SSimon Moll
10021943b7f1SSimon Molldefine float @us2f(i16 zeroext %x) {
10031943b7f1SSimon Moll; CHECK-LABEL: us2f:
100444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10051943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.w %s0, %s0
100644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10071943b7f1SSimon Moll  %r = uitofp i16 %x to float
10081943b7f1SSimon Moll  ret float %r
10091943b7f1SSimon Moll}
10101943b7f1SSimon Moll
10111943b7f1SSimon Molldefine double @us2d(i16 zeroext %x) {
10121943b7f1SSimon Moll; CHECK-LABEL: us2d:
101344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10141943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
101544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10161943b7f1SSimon Moll  %r = uitofp i16 %x to double
10171943b7f1SSimon Moll  ret double %r
10181943b7f1SSimon Moll}
10191943b7f1SSimon Moll
10201943b7f1SSimon Molldefine fp128 @us2q(i16 zeroext) {
10211943b7f1SSimon Moll; CHECK-LABEL: us2q:
102244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10231943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
10241943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
102544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10261943b7f1SSimon Moll  %2 = uitofp i16 %0 to fp128
10271943b7f1SSimon Moll  ret fp128 %2
10281943b7f1SSimon Moll}
10291943b7f1SSimon Moll
10301943b7f1SSimon Molldefine signext i8 @c2c(i8 returned signext %0) {
10311943b7f1SSimon Moll; CHECK-LABEL: c2c:
103244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
103344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10341943b7f1SSimon Moll  ret i8 %0
10351943b7f1SSimon Moll}
10361943b7f1SSimon Moll
10371943b7f1SSimon Molldefine zeroext i8 @c2uc(i8 returned signext %0) {
10381943b7f1SSimon Moll; CHECK-LABEL: c2uc:
103944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10401943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
104144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10421943b7f1SSimon Moll  ret i8 %0
10431943b7f1SSimon Moll}
10441943b7f1SSimon Moll
10451943b7f1SSimon Molldefine signext i16 @c2s(i8 signext %0) {
10461943b7f1SSimon Moll; CHECK-LABEL: c2s:
104744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
104844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10491943b7f1SSimon Moll  %2 = sext i8 %0 to i16
10501943b7f1SSimon Moll  ret i16 %2
10511943b7f1SSimon Moll}
10521943b7f1SSimon Moll
10531943b7f1SSimon Molldefine zeroext i16 @c2us(i8 signext %0) {
10541943b7f1SSimon Moll; CHECK-LABEL: c2us:
105544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10561943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
105744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10581943b7f1SSimon Moll  %2 = sext i8 %0 to i16
10591943b7f1SSimon Moll  ret i16 %2
10601943b7f1SSimon Moll}
10611943b7f1SSimon Moll
10621943b7f1SSimon Molldefine signext i32 @c2i(i8 signext %0) {
10631943b7f1SSimon Moll; CHECK-LABEL: c2i:
106444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
106544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10661943b7f1SSimon Moll  %2 = sext i8 %0 to i32
10671943b7f1SSimon Moll  ret i32 %2
10681943b7f1SSimon Moll}
10691943b7f1SSimon Moll
10701943b7f1SSimon Molldefine zeroext i32 @c2ui(i8 signext %0) {
10711943b7f1SSimon Moll; CHECK-LABEL: c2ui:
107244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10731943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
107444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10751943b7f1SSimon Moll  %2 = sext i8 %0 to i32
10761943b7f1SSimon Moll  ret i32 %2
10771943b7f1SSimon Moll}
10781943b7f1SSimon Moll
10791943b7f1SSimon Molldefine i64 @c2ll(i8 signext %0) {
10801943b7f1SSimon Moll; CHECK-LABEL: c2ll:
108144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
108244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10831943b7f1SSimon Moll  %2 = sext i8 %0 to i64
10841943b7f1SSimon Moll  ret i64 %2
10851943b7f1SSimon Moll}
10861943b7f1SSimon Moll
10871943b7f1SSimon Molldefine i64 @c2ull(i8 signext %0) {
10881943b7f1SSimon Moll; CHECK-LABEL: c2ull:
108944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
109044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
10911943b7f1SSimon Moll  %2 = sext i8 %0 to i64
10921943b7f1SSimon Moll  ret i64 %2
10931943b7f1SSimon Moll}
10941943b7f1SSimon Moll
10951943b7f1SSimon Molldefine float @c2f(i8 signext %x) {
10961943b7f1SSimon Moll; CHECK-LABEL: c2f:
109744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
10981943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.w %s0, %s0
109944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11001943b7f1SSimon Moll  %r = sitofp i8 %x to float
11011943b7f1SSimon Moll  ret float %r
11021943b7f1SSimon Moll}
11031943b7f1SSimon Moll
11041943b7f1SSimon Molldefine double @c2d(i8 signext %x) {
11051943b7f1SSimon Moll; CHECK-LABEL: c2d:
110644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
11071943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
110844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11091943b7f1SSimon Moll  %r = sitofp i8 %x to double
11101943b7f1SSimon Moll  ret double %r
11111943b7f1SSimon Moll}
11121943b7f1SSimon Moll
11131943b7f1SSimon Molldefine fp128 @c2q(i8 signext) {
11141943b7f1SSimon Moll; CHECK-LABEL: c2q:
111544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
11161943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
11171943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
111844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11191943b7f1SSimon Moll  %2 = sitofp i8 %0 to fp128
11201943b7f1SSimon Moll  ret fp128 %2
11211943b7f1SSimon Moll}
11221943b7f1SSimon Moll
11231943b7f1SSimon Molldefine signext i8 @uc2c(i8 returned zeroext %0) {
11241943b7f1SSimon Moll; CHECK-LABEL: uc2c:
112544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
11261943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
11271943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
112844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11291943b7f1SSimon Moll  ret i8 %0
11301943b7f1SSimon Moll}
11311943b7f1SSimon Moll
11321943b7f1SSimon Molldefine zeroext i8 @uc2uc(i8 returned zeroext %0) {
11331943b7f1SSimon Moll; CHECK-LABEL: uc2uc:
113444a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
113544a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11361943b7f1SSimon Moll  ret i8 %0
11371943b7f1SSimon Moll}
11381943b7f1SSimon Moll
11391943b7f1SSimon Molldefine signext i16 @uc2s(i8 zeroext %0) {
11401943b7f1SSimon Moll; CHECK-LABEL: uc2s:
114144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
114244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11431943b7f1SSimon Moll  %2 = zext i8 %0 to i16
11441943b7f1SSimon Moll  ret i16 %2
11451943b7f1SSimon Moll}
11461943b7f1SSimon Moll
11471943b7f1SSimon Molldefine zeroext i16 @uc2us(i8 zeroext %0) {
11481943b7f1SSimon Moll; CHECK-LABEL: uc2us:
114944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
115044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11511943b7f1SSimon Moll  %2 = zext i8 %0 to i16
11521943b7f1SSimon Moll  ret i16 %2
11531943b7f1SSimon Moll}
11541943b7f1SSimon Moll
11551943b7f1SSimon Molldefine signext i32 @uc2i(i8 zeroext %0) {
11561943b7f1SSimon Moll; CHECK-LABEL: uc2i:
115744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
115844a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11591943b7f1SSimon Moll  %2 = zext i8 %0 to i32
11601943b7f1SSimon Moll  ret i32 %2
11611943b7f1SSimon Moll}
11621943b7f1SSimon Moll
11631943b7f1SSimon Molldefine zeroext i32 @uc2ui(i8 zeroext %0) {
11641943b7f1SSimon Moll; CHECK-LABEL: uc2ui:
116544a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
116644a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11671943b7f1SSimon Moll  %2 = zext i8 %0 to i32
11681943b7f1SSimon Moll  ret i32 %2
11691943b7f1SSimon Moll}
11701943b7f1SSimon Moll
11711943b7f1SSimon Molldefine i64 @uc2ll(i8 zeroext %0) {
11721943b7f1SSimon Moll; CHECK-LABEL: uc2ll:
117344a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
117444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11751943b7f1SSimon Moll  %2 = zext i8 %0 to i64
11761943b7f1SSimon Moll  ret i64 %2
11771943b7f1SSimon Moll}
11781943b7f1SSimon Moll
11791943b7f1SSimon Molldefine i64 @uc2ull(i8 zeroext %0) {
11801943b7f1SSimon Moll; CHECK-LABEL: uc2ull:
118144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
118244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11831943b7f1SSimon Moll  %2 = zext i8 %0 to i64
11841943b7f1SSimon Moll  ret i64 %2
11851943b7f1SSimon Moll}
11861943b7f1SSimon Moll
11871943b7f1SSimon Molldefine float @uc2f(i8 zeroext %x) {
11881943b7f1SSimon Moll; CHECK-LABEL: uc2f:
118944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
11901943b7f1SSimon Moll; CHECK-NEXT:    cvt.s.w %s0, %s0
119144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
11921943b7f1SSimon Moll  %r = uitofp i8 %x to float
11931943b7f1SSimon Moll  ret float %r
11941943b7f1SSimon Moll}
11951943b7f1SSimon Moll
11961943b7f1SSimon Molldefine double @uc2d(i8 zeroext %x) {
11971943b7f1SSimon Moll; CHECK-LABEL: uc2d:
119844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
11991943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
120044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12011943b7f1SSimon Moll  %r = uitofp i8 %x to double
12021943b7f1SSimon Moll  ret double %r
12031943b7f1SSimon Moll}
12041943b7f1SSimon Moll
12051943b7f1SSimon Molldefine fp128 @uc2q(i8 zeroext) {
12061943b7f1SSimon Moll; CHECK-LABEL: uc2q:
120744a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12081943b7f1SSimon Moll; CHECK-NEXT:    cvt.d.w %s0, %s0
12091943b7f1SSimon Moll; CHECK-NEXT:    cvt.q.d %s0, %s0
121044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12111943b7f1SSimon Moll  %2 = uitofp i8 %0 to fp128
12121943b7f1SSimon Moll  ret fp128 %2
12131943b7f1SSimon Moll}
12141943b7f1SSimon Moll
12151943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12161943b7f1SSimon Molldefine i128 @i128() {
12171943b7f1SSimon Moll; CHECK-LABEL: i128:
121844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12191943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
12201943b7f1SSimon Moll; CHECK-NEXT:    or %s1, -1, (0)1
122144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12221943b7f1SSimon Moll  ret i128 -2147483648
12231943b7f1SSimon Moll}
12241943b7f1SSimon Moll
12251943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12261943b7f1SSimon Molldefine i128 @ui128() {
12271943b7f1SSimon Moll; CHECK-LABEL: ui128:
122844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12291943b7f1SSimon Moll; CHECK-NEXT:    lea %s0, -2147483648
12301943b7f1SSimon Moll; CHECK-NEXT:    or %s1, -1, (0)1
123144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12321943b7f1SSimon Moll  ret i128 -2147483648
12331943b7f1SSimon Moll}
12341943b7f1SSimon Moll
12351943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12361943b7f1SSimon Molldefine signext i8 @i1282c(i128 %0) {
12371943b7f1SSimon Moll; CHECK-LABEL: i1282c:
123844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12391943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
12401943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
124144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12421943b7f1SSimon Moll  %2 = trunc i128 %0 to i8
12431943b7f1SSimon Moll  ret i8 %2
12441943b7f1SSimon Moll}
12451943b7f1SSimon Moll
12461943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12471943b7f1SSimon Molldefine signext i8 @ui1282c(i128 %0) {
12481943b7f1SSimon Moll; CHECK-LABEL: ui1282c:
124944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12501943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 56
12511943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 56
125244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12531943b7f1SSimon Moll  %2 = trunc i128 %0 to i8
12541943b7f1SSimon Moll  ret i8 %2
12551943b7f1SSimon Moll}
12561943b7f1SSimon Moll
12571943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12581943b7f1SSimon Molldefine zeroext i8 @i1282uc(i128 %0) {
12591943b7f1SSimon Moll; CHECK-LABEL: i1282uc:
126044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12611943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
126244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12631943b7f1SSimon Moll  %2 = trunc i128 %0 to i8
12641943b7f1SSimon Moll  ret i8 %2
12651943b7f1SSimon Moll}
12661943b7f1SSimon Moll
12671943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12681943b7f1SSimon Molldefine zeroext i8 @ui1282uc(i128 %0) {
12691943b7f1SSimon Moll; CHECK-LABEL: ui1282uc:
127044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12711943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (56)0
127244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12731943b7f1SSimon Moll  %2 = trunc i128 %0 to i8
12741943b7f1SSimon Moll  ret i8 %2
12751943b7f1SSimon Moll}
12761943b7f1SSimon Moll
12771943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12781943b7f1SSimon Molldefine signext i16 @i1282s(i128 %0) {
12791943b7f1SSimon Moll; CHECK-LABEL: i1282s:
128044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12811943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
12821943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
128344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12841943b7f1SSimon Moll  %2 = trunc i128 %0 to i16
12851943b7f1SSimon Moll  ret i16 %2
12861943b7f1SSimon Moll}
12871943b7f1SSimon Moll
12881943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
12891943b7f1SSimon Molldefine signext i16 @ui1282s(i128 %0) {
12901943b7f1SSimon Moll; CHECK-LABEL: ui1282s:
129144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
12921943b7f1SSimon Moll; CHECK-NEXT:    sll %s0, %s0, 48
12931943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s0, %s0, 48
129444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
12951943b7f1SSimon Moll  %2 = trunc i128 %0 to i16
12961943b7f1SSimon Moll  ret i16 %2
12971943b7f1SSimon Moll}
12981943b7f1SSimon Moll
12991943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13001943b7f1SSimon Molldefine zeroext i16 @i1282us(i128 %0) {
13011943b7f1SSimon Moll; CHECK-LABEL: i1282us:
130244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13031943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
130444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13051943b7f1SSimon Moll  %2 = trunc i128 %0 to i16
13061943b7f1SSimon Moll  ret i16 %2
13071943b7f1SSimon Moll}
13081943b7f1SSimon Moll
13091943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13101943b7f1SSimon Molldefine zeroext i16 @ui1282us(i128 %0) {
13111943b7f1SSimon Moll; CHECK-LABEL: ui1282us:
131244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13131943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (48)0
131444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13151943b7f1SSimon Moll  %2 = trunc i128 %0 to i16
13161943b7f1SSimon Moll  ret i16 %2
13171943b7f1SSimon Moll}
13181943b7f1SSimon Moll
13191943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13201943b7f1SSimon Molldefine signext i32 @i1282i(i128 %0) {
13211943b7f1SSimon Moll; CHECK-LABEL: i1282i:
132244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13231943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
132444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13251943b7f1SSimon Moll  %2 = trunc i128 %0 to i32
13261943b7f1SSimon Moll  ret i32 %2
13271943b7f1SSimon Moll}
13281943b7f1SSimon Moll
13291943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13301943b7f1SSimon Molldefine signext i32 @ui1282i(i128 %0) {
13311943b7f1SSimon Moll; CHECK-LABEL: ui1282i:
133244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13331943b7f1SSimon Moll; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
133444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13351943b7f1SSimon Moll  %2 = trunc i128 %0 to i32
13361943b7f1SSimon Moll  ret i32 %2
13371943b7f1SSimon Moll}
13381943b7f1SSimon Moll
13391943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13401943b7f1SSimon Molldefine zeroext i32 @i1282ui(i128 %0) {
13411943b7f1SSimon Moll; CHECK-LABEL: i1282ui:
134244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13431943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
134444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13451943b7f1SSimon Moll  %2 = trunc i128 %0 to i32
13461943b7f1SSimon Moll  ret i32 %2
13471943b7f1SSimon Moll}
13481943b7f1SSimon Moll
13491943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13501943b7f1SSimon Molldefine zeroext i32 @ui1282ui(i128 %0) {
13511943b7f1SSimon Moll; CHECK-LABEL: ui1282ui:
135244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
13531943b7f1SSimon Moll; CHECK-NEXT:    and %s0, %s0, (32)0
135444a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13551943b7f1SSimon Moll  %2 = trunc i128 %0 to i32
13561943b7f1SSimon Moll  ret i32 %2
13571943b7f1SSimon Moll}
13581943b7f1SSimon Moll
13591943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13601943b7f1SSimon Molldefine i64 @i1282ll(i128 %0) {
13611943b7f1SSimon Moll; CHECK-LABEL: i1282ll:
136244a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
136344a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13641943b7f1SSimon Moll  %2 = trunc i128 %0 to i64
13651943b7f1SSimon Moll  ret i64 %2
13661943b7f1SSimon Moll}
13671943b7f1SSimon Moll
13681943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13691943b7f1SSimon Molldefine i64 @ui1282ll(i128 %0) {
13701943b7f1SSimon Moll; CHECK-LABEL: ui1282ll:
137144a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
137244a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13731943b7f1SSimon Moll  %2 = trunc i128 %0 to i64
13741943b7f1SSimon Moll  ret i64 %2
13751943b7f1SSimon Moll}
13761943b7f1SSimon Moll
13771943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13781943b7f1SSimon Molldefine i64 @i1282ull(i128 %0) {
13791943b7f1SSimon Moll; CHECK-LABEL: i1282ull:
138044a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
138144a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13821943b7f1SSimon Moll  %2 = trunc i128 %0 to i64
13831943b7f1SSimon Moll  ret i64 %2
13841943b7f1SSimon Moll}
13851943b7f1SSimon Moll
13861943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13871943b7f1SSimon Molldefine i64 @ui1282ull(i128 %0) {
13881943b7f1SSimon Moll; CHECK-LABEL: ui1282ull:
138944a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
139044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
13911943b7f1SSimon Moll  %2 = trunc i128 %0 to i64
13921943b7f1SSimon Moll  ret i64 %2
13931943b7f1SSimon Moll}
13941943b7f1SSimon Moll
13951943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
13961943b7f1SSimon Molldefine i128 @i1282ui128(i128 returned %0) {
13971943b7f1SSimon Moll; CHECK-LABEL: i1282ui128:
139844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
139944a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
14001943b7f1SSimon Moll  ret i128 %0
14011943b7f1SSimon Moll}
14021943b7f1SSimon Moll
14031943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14041943b7f1SSimon Molldefine i128 @ui1282i128(i128 returned %0) {
14051943b7f1SSimon Moll; CHECK-LABEL: ui1282i128:
140644a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
140744a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
14081943b7f1SSimon Moll  ret i128 %0
14091943b7f1SSimon Moll}
14101943b7f1SSimon Moll
14111943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14121943b7f1SSimon Molldefine float @i1282f(i128) {
14131943b7f1SSimon Moll; CHECK-LABEL: i1282f:
14141943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14151943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, __floattisf@lo
14161943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
14171943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __floattisf@hi(, %s2)
14181943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14191943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14201943b7f1SSimon Moll  %2 = sitofp i128 %0 to float
14211943b7f1SSimon Moll  ret float %2
14221943b7f1SSimon Moll}
14231943b7f1SSimon Moll
14241943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14251943b7f1SSimon Molldefine float @ui1282f(i128) {
14261943b7f1SSimon Moll; CHECK-LABEL: ui1282f:
14271943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14281943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, __floatuntisf@lo
14291943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
14301943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __floatuntisf@hi(, %s2)
14311943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14321943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14331943b7f1SSimon Moll  %2 = uitofp i128 %0 to float
14341943b7f1SSimon Moll  ret float %2
14351943b7f1SSimon Moll}
14361943b7f1SSimon Moll
14371943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14381943b7f1SSimon Molldefine double @i1282d(i128) {
14391943b7f1SSimon Moll; CHECK-LABEL: i1282d:
14401943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14411943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, __floattidf@lo
14421943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
14431943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __floattidf@hi(, %s2)
14441943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14451943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14461943b7f1SSimon Moll  %2 = sitofp i128 %0 to double
14471943b7f1SSimon Moll  ret double %2
14481943b7f1SSimon Moll}
14491943b7f1SSimon Moll
14501943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14511943b7f1SSimon Molldefine double @ui1282d(i128) {
14521943b7f1SSimon Moll; CHECK-LABEL: ui1282d:
14531943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14541943b7f1SSimon Moll; CHECK-NEXT:    lea %s2, __floatuntidf@lo
14551943b7f1SSimon Moll; CHECK-NEXT:    and %s2, %s2, (32)0
14561943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __floatuntidf@hi(, %s2)
14571943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14581943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14591943b7f1SSimon Moll  %2 = uitofp i128 %0 to double
14601943b7f1SSimon Moll  ret double %2
14611943b7f1SSimon Moll}
14621943b7f1SSimon Moll
14631943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14641943b7f1SSimon Molldefine i128 @d2i128(double) {
14651943b7f1SSimon Moll; CHECK-LABEL: d2i128:
14661943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14671943b7f1SSimon Moll; CHECK-NEXT:    lea %s1, __fixdfti@lo
14681943b7f1SSimon Moll; CHECK-NEXT:    and %s1, %s1, (32)0
14691943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __fixdfti@hi(, %s1)
14701943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14711943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14721943b7f1SSimon Moll  %2 = fptosi double %0 to i128
14731943b7f1SSimon Moll  ret i128 %2
14741943b7f1SSimon Moll}
14751943b7f1SSimon Moll
14761943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14771943b7f1SSimon Molldefine i128 @d2ui128(double) {
14781943b7f1SSimon Moll; CHECK-LABEL: d2ui128:
14791943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14801943b7f1SSimon Moll; CHECK-NEXT:    lea %s1, __fixunsdfti@lo
14811943b7f1SSimon Moll; CHECK-NEXT:    and %s1, %s1, (32)0
14821943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __fixunsdfti@hi(, %s1)
14831943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14841943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14851943b7f1SSimon Moll  %2 = fptoui double %0 to i128
14861943b7f1SSimon Moll  ret i128 %2
14871943b7f1SSimon Moll}
14881943b7f1SSimon Moll
14891943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
14901943b7f1SSimon Molldefine i128 @f2i128(float) {
14911943b7f1SSimon Moll; CHECK-LABEL: f2i128:
14921943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
14931943b7f1SSimon Moll; CHECK-NEXT:    lea %s1, __fixsfti@lo
14941943b7f1SSimon Moll; CHECK-NEXT:    and %s1, %s1, (32)0
14951943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __fixsfti@hi(, %s1)
14961943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
14971943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
14981943b7f1SSimon Moll  %2 = fptosi float %0 to i128
14991943b7f1SSimon Moll  ret i128 %2
15001943b7f1SSimon Moll}
15011943b7f1SSimon Moll
15021943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15031943b7f1SSimon Molldefine i128 @f2ui128(float) {
15041943b7f1SSimon Moll; CHECK-LABEL: f2ui128:
15051943b7f1SSimon Moll; CHECK:       .LBB{{[0-9]+}}_2:
15061943b7f1SSimon Moll; CHECK-NEXT:    lea %s1, __fixunssfti@lo
15071943b7f1SSimon Moll; CHECK-NEXT:    and %s1, %s1, (32)0
15081943b7f1SSimon Moll; CHECK-NEXT:    lea.sl %s12, __fixunssfti@hi(, %s1)
15091943b7f1SSimon Moll; CHECK-NEXT:    bsic %s10, (, %s12)
15101943b7f1SSimon Moll; CHECK-NEXT:    or %s11, 0, %s9
15111943b7f1SSimon Moll  %2 = fptoui float %0 to i128
15121943b7f1SSimon Moll  ret i128 %2
15131943b7f1SSimon Moll}
15141943b7f1SSimon Moll
15151943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15161943b7f1SSimon Molldefine i128 @ll2i128(i64 %0) {
15171943b7f1SSimon Moll; CHECK-LABEL: ll2i128:
151844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15191943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
152044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15211943b7f1SSimon Moll  %2 = sext i64 %0 to i128
15221943b7f1SSimon Moll  ret i128 %2
15231943b7f1SSimon Moll}
15241943b7f1SSimon Moll
15251943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15261943b7f1SSimon Molldefine i128 @ll2ui128(i64 %0) {
15271943b7f1SSimon Moll; CHECK-LABEL: ll2ui128:
152844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15291943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
153044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15311943b7f1SSimon Moll  %2 = sext i64 %0 to i128
15321943b7f1SSimon Moll  ret i128 %2
15331943b7f1SSimon Moll}
15341943b7f1SSimon Moll
15351943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15361943b7f1SSimon Molldefine i128 @ull2i128(i64 %0) {
15371943b7f1SSimon Moll; CHECK-LABEL: ull2i128:
153844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15391943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
154044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15411943b7f1SSimon Moll  %2 = zext i64 %0 to i128
15421943b7f1SSimon Moll  ret i128 %2
15431943b7f1SSimon Moll}
15441943b7f1SSimon Moll
15451943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15461943b7f1SSimon Molldefine i128 @ull2ui128(i64 %0) {
15471943b7f1SSimon Moll; CHECK-LABEL: ull2ui128:
154844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15491943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
155044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15511943b7f1SSimon Moll  %2 = zext i64 %0 to i128
15521943b7f1SSimon Moll  ret i128 %2
15531943b7f1SSimon Moll}
15541943b7f1SSimon Moll
15551943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15561943b7f1SSimon Molldefine i128 @i2i128(i32 signext %0) {
15571943b7f1SSimon Moll; CHECK-LABEL: i2i128:
155844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15591943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
156044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15611943b7f1SSimon Moll  %2 = sext i32 %0 to i128
15621943b7f1SSimon Moll  ret i128 %2
15631943b7f1SSimon Moll}
15641943b7f1SSimon Moll
15651943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15661943b7f1SSimon Molldefine i128 @i2ui128(i32 signext %0) {
15671943b7f1SSimon Moll; CHECK-LABEL: i2ui128:
156844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15691943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
157044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15711943b7f1SSimon Moll  %2 = sext i32 %0 to i128
15721943b7f1SSimon Moll  ret i128 %2
15731943b7f1SSimon Moll}
15741943b7f1SSimon Moll
15751943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15761943b7f1SSimon Molldefine i128 @ui2i128(i32 zeroext %0) {
15771943b7f1SSimon Moll; CHECK-LABEL: ui2i128:
157844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15791943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
158044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15811943b7f1SSimon Moll  %2 = zext i32 %0 to i128
15821943b7f1SSimon Moll  ret i128 %2
15831943b7f1SSimon Moll}
15841943b7f1SSimon Moll
15851943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15861943b7f1SSimon Molldefine i128 @ui2ui128(i32 zeroext %0) {
15871943b7f1SSimon Moll; CHECK-LABEL: ui2ui128:
158844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15891943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
159044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
15911943b7f1SSimon Moll  %2 = zext i32 %0 to i128
15921943b7f1SSimon Moll  ret i128 %2
15931943b7f1SSimon Moll}
15941943b7f1SSimon Moll
15951943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
15961943b7f1SSimon Molldefine i128 @s2i128(i16 signext %0) {
15971943b7f1SSimon Moll; CHECK-LABEL: s2i128:
159844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
15991943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
160044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16011943b7f1SSimon Moll  %2 = sext i16 %0 to i128
16021943b7f1SSimon Moll  ret i128 %2
16031943b7f1SSimon Moll}
16041943b7f1SSimon Moll
16051943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16061943b7f1SSimon Molldefine i128 @s2ui128(i16 signext %0) {
16071943b7f1SSimon Moll; CHECK-LABEL: s2ui128:
160844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16091943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
161044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16111943b7f1SSimon Moll  %2 = sext i16 %0 to i128
16121943b7f1SSimon Moll  ret i128 %2
16131943b7f1SSimon Moll}
16141943b7f1SSimon Moll
16151943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16161943b7f1SSimon Molldefine i128 @us2i128(i16 zeroext %0) {
16171943b7f1SSimon Moll; CHECK-LABEL: us2i128:
161844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16191943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
162044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16211943b7f1SSimon Moll  %2 = zext i16 %0 to i128
16221943b7f1SSimon Moll  ret i128 %2
16231943b7f1SSimon Moll}
16241943b7f1SSimon Moll
16251943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16261943b7f1SSimon Molldefine i128 @us2ui128(i16 zeroext %0) {
16271943b7f1SSimon Moll; CHECK-LABEL: us2ui128:
162844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16291943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
163044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16311943b7f1SSimon Moll  %2 = zext i16 %0 to i128
16321943b7f1SSimon Moll  ret i128 %2
16331943b7f1SSimon Moll}
16341943b7f1SSimon Moll
16351943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16361943b7f1SSimon Molldefine i128 @c2i128(i8 signext %0) {
16371943b7f1SSimon Moll; CHECK-LABEL: c2i128:
163844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16391943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
164044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16411943b7f1SSimon Moll  %2 = sext i8 %0 to i128
16421943b7f1SSimon Moll  ret i128 %2
16431943b7f1SSimon Moll}
16441943b7f1SSimon Moll
16451943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16461943b7f1SSimon Molldefine i128 @char2ui128(i8 signext %0) {
16471943b7f1SSimon Moll; CHECK-LABEL: char2ui128:
164844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16491943b7f1SSimon Moll; CHECK-NEXT:    sra.l %s1, %s0, 63
165044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16511943b7f1SSimon Moll  %2 = sext i8 %0 to i128
16521943b7f1SSimon Moll  ret i128 %2
16531943b7f1SSimon Moll}
16541943b7f1SSimon Moll
16551943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16561943b7f1SSimon Molldefine i128 @uc2i128(i8 zeroext %0) {
16571943b7f1SSimon Moll; CHECK-LABEL: uc2i128:
165844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16591943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
166044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16611943b7f1SSimon Moll  %2 = zext i8 %0 to i128
16621943b7f1SSimon Moll  ret i128 %2
16631943b7f1SSimon Moll}
16641943b7f1SSimon Moll
16651943b7f1SSimon Moll; Function Attrs: norecurse nounwind readnone
16661943b7f1SSimon Molldefine i128 @uc2ui128(i8 zeroext %0) {
16671943b7f1SSimon Moll; CHECK-LABEL: uc2ui128:
166844a4f939SKazushi (Jam) Marukawa; CHECK:       # %bb.0:
16691943b7f1SSimon Moll; CHECK-NEXT:    or %s1, 0, (0)1
167044a4f939SKazushi (Jam) Marukawa; CHECK-NEXT:    b.l.t (, %s10)
16711943b7f1SSimon Moll  %2 = zext i8 %0 to i128
16721943b7f1SSimon Moll  ret i128 %2
16731943b7f1SSimon Moll}
1674