1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define signext i8 @func1(i8 signext %0, i8 signext %1) {
6 ; CHECK-NEXT: sra.w.sx %s0, %s0, %s1
7 ; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1
8 ; CHECK-NEXT: b.l.t (, %s10)
10 %4 = sext i8 %1 to i32
12 %6 = trunc i32 %5 to i8
16 define signext i16 @func2(i16 signext %0, i16 signext %1) {
19 ; CHECK-NEXT: sra.w.sx %s0, %s0, %s1
20 ; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1
21 ; CHECK-NEXT: b.l.t (, %s10)
22 %3 = sext i16 %0 to i32
23 %4 = sext i16 %1 to i32
25 %6 = trunc i32 %5 to i16
29 define i32 @func3(i32 %0, i32 %1) {
32 ; CHECK-NEXT: sra.w.sx %s0, %s0, %s1
33 ; CHECK-NEXT: b.l.t (, %s10)
38 define i64 @func4(i64 %0, i64 %1) {
41 ; CHECK-NEXT: sra.l %s0, %s0, %s1
42 ; CHECK-NEXT: b.l.t (, %s10)
47 define zeroext i8 @func7(i8 zeroext %0, i8 zeroext %1) {
50 ; CHECK-NEXT: and %s0, %s0, (32)0
51 ; CHECK-NEXT: srl %s0, %s0, %s1
52 ; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
53 ; CHECK-NEXT: b.l.t (, %s10)
54 %3 = zext i8 %0 to i32
55 %4 = zext i8 %1 to i32
57 %6 = trunc i32 %5 to i8
61 define zeroext i16 @func8(i16 zeroext %0, i16 zeroext %1) {
64 ; CHECK-NEXT: and %s0, %s0, (32)0
65 ; CHECK-NEXT: srl %s0, %s0, %s1
66 ; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
67 ; CHECK-NEXT: b.l.t (, %s10)
68 %3 = zext i16 %0 to i32
69 %4 = zext i16 %1 to i32
71 %6 = trunc i32 %5 to i16
75 define i32 @func9(i32 %0, i32 %1) {
78 ; CHECK-NEXT: and %s0, %s0, (32)0
79 ; CHECK-NEXT: srl %s0, %s0, %s1
80 ; CHECK-NEXT: b.l.t (, %s10)
85 define i64 @func10(i64 %0, i64 %1) {
86 ; CHECK-LABEL: func10:
88 ; CHECK-NEXT: srl %s0, %s0, %s1
89 ; CHECK-NEXT: b.l.t (, %s10)
94 define signext i8 @func12(i8 signext %0) {
95 ; CHECK-LABEL: func12:
97 ; CHECK-NEXT: sra.w.sx %s0, %s0, 5
98 ; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1
99 ; CHECK-NEXT: b.l.t (, %s10)
104 define signext i16 @func13(i16 signext %0) {
105 ; CHECK-LABEL: func13:
107 ; CHECK-NEXT: sra.w.sx %s0, %s0, 5
108 ; CHECK-NEXT: adds.w.sx %s0, %s0, (0)1
109 ; CHECK-NEXT: b.l.t (, %s10)
114 define i32 @func14(i32 %0) {
115 ; CHECK-LABEL: func14:
117 ; CHECK-NEXT: sra.w.sx %s0, %s0, 5
118 ; CHECK-NEXT: b.l.t (, %s10)
123 define i64 @func15(i64 %0) {
124 ; CHECK-LABEL: func15:
126 ; CHECK-NEXT: sra.l %s0, %s0, 5
127 ; CHECK-NEXT: b.l.t (, %s10)
132 define zeroext i8 @func17(i8 zeroext %0) {
133 ; CHECK-LABEL: func17:
135 ; CHECK-NEXT: and %s0, %s0, (32)0
136 ; CHECK-NEXT: srl %s0, %s0, 5
137 ; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
138 ; CHECK-NEXT: b.l.t (, %s10)
143 define zeroext i16 @func18(i16 zeroext %0) {
144 ; CHECK-LABEL: func18:
146 ; CHECK-NEXT: and %s0, %s0, (32)0
147 ; CHECK-NEXT: srl %s0, %s0, 5
148 ; CHECK-NEXT: adds.w.zx %s0, %s0, (0)1
149 ; CHECK-NEXT: b.l.t (, %s10)
154 define i32 @func19(i32 %0) {
155 ; CHECK-LABEL: func19:
157 ; CHECK-NEXT: and %s0, %s0, (32)0
158 ; CHECK-NEXT: srl %s0, %s0, 5
159 ; CHECK-NEXT: b.l.t (, %s10)
164 define i64 @func20(i64 %0) {
165 ; CHECK-LABEL: func20:
167 ; CHECK-NEXT: srl %s0, %s0, 5
168 ; CHECK-NEXT: b.l.t (, %s10)