1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 define signext i8 @func1(i8 signext %0, i8 signext %1) {
6 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
7 ; CHECK-NEXT: sll %s0, %s0, 56
8 ; CHECK-NEXT: sra.l %s0, %s0, 56
9 ; CHECK-NEXT: b.l.t (, %s10)
10 %3 = sext i8 %0 to i32
11 %4 = sext i8 %1 to i32
13 %6 = trunc i32 %5 to i8
17 define signext i16 @func2(i16 signext %0, i16 signext %1) {
20 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
21 ; CHECK-NEXT: sll %s0, %s0, 48
22 ; CHECK-NEXT: sra.l %s0, %s0, 48
23 ; CHECK-NEXT: b.l.t (, %s10)
24 %3 = sext i16 %0 to i32
25 %4 = sext i16 %1 to i32
27 %6 = trunc i32 %5 to i16
31 define i32 @func3(i32 %0, i32 %1) {
34 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
35 ; CHECK-NEXT: b.l.t (, %s10)
40 define i64 @func4(i64 %0, i64 %1) {
43 ; CHECK-NEXT: sll %s0, %s0, %s1
44 ; CHECK-NEXT: b.l.t (, %s10)
49 define zeroext i8 @func6(i8 zeroext %0, i8 zeroext %1) {
52 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
53 ; CHECK-NEXT: and %s0, %s0, (56)0
54 ; CHECK-NEXT: b.l.t (, %s10)
55 %3 = zext i8 %0 to i32
56 %4 = zext i8 %1 to i32
58 %6 = trunc i32 %5 to i8
62 define zeroext i16 @func7(i16 zeroext %0, i16 zeroext %1) {
65 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
66 ; CHECK-NEXT: and %s0, %s0, (48)0
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 @func8(i32 %0, i32 %1) {
78 ; CHECK-NEXT: sla.w.sx %s0, %s0, %s1
79 ; CHECK-NEXT: b.l.t (, %s10)
84 define i64 @func9(i64 %0, i64 %1) {
87 ; CHECK-NEXT: sll %s0, %s0, %s1
88 ; CHECK-NEXT: b.l.t (, %s10)
93 define signext i8 @func11(i8 signext %0) {
94 ; CHECK-LABEL: func11:
96 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
97 ; CHECK-NEXT: sll %s0, %s0, 56
98 ; CHECK-NEXT: sra.l %s0, %s0, 56
99 ; CHECK-NEXT: b.l.t (, %s10)
104 define signext i16 @func12(i16 signext %0) {
105 ; CHECK-LABEL: func12:
107 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
108 ; CHECK-NEXT: sll %s0, %s0, 48
109 ; CHECK-NEXT: sra.l %s0, %s0, 48
110 ; CHECK-NEXT: b.l.t (, %s10)
115 define i32 @func13(i32 %0) {
116 ; CHECK-LABEL: func13:
118 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
119 ; CHECK-NEXT: b.l.t (, %s10)
124 define i64 @func14(i64 %0) {
125 ; CHECK-LABEL: func14:
127 ; CHECK-NEXT: sll %s0, %s0, 5
128 ; CHECK-NEXT: b.l.t (, %s10)
133 define zeroext i8 @func16(i8 zeroext %0) {
134 ; CHECK-LABEL: func16:
136 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
137 ; CHECK-NEXT: lea %s1, 224
138 ; CHECK-NEXT: and %s0, %s0, %s1
139 ; CHECK-NEXT: b.l.t (, %s10)
144 define zeroext i16 @func17(i16 zeroext %0) {
145 ; CHECK-LABEL: func17:
147 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
148 ; CHECK-NEXT: lea %s1, 65504
149 ; CHECK-NEXT: and %s0, %s0, %s1
150 ; CHECK-NEXT: b.l.t (, %s10)
155 define i32 @func18(i32 %0) {
156 ; CHECK-LABEL: func18:
158 ; CHECK-NEXT: sla.w.sx %s0, %s0, 5
159 ; CHECK-NEXT: b.l.t (, %s10)
164 define i64 @func19(i64 %0) {
165 ; CHECK-LABEL: func19:
167 ; CHECK-NEXT: sll %s0, %s0, 5
168 ; CHECK-NEXT: b.l.t (, %s10)