blob: 53e68f5e95d737400b825c3cdea771ea5e140fe7 [file] [log] [blame]
Alex Bradburyffc435e2017-11-21 08:11:03 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
3; RUN: | FileCheck %s -check-prefix=RV32I
Alex Bradburybc96a982018-11-30 09:38:44 +00004; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
5; RUN: | FileCheck %s -check-prefix=RV64I
Alex Bradburyffc435e2017-11-21 08:11:03 +00006
Alex Bradbury5dabe032019-05-23 12:43:13 +00007define i8 @sext_i1_to_i8(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +00008; RV32I-LABEL: sext_i1_to_i8:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +00009; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000010; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +000011; RV32I-NEXT: neg a0, a0
Alex Bradbury59136ff2017-12-15 09:47:01 +000012; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000013;
14; RV64I-LABEL: sext_i1_to_i8:
15; RV64I: # %bb.0:
16; RV64I-NEXT: andi a0, a0, 1
17; RV64I-NEXT: neg a0, a0
18; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000019 %1 = sext i1 %a to i8
20 ret i8 %1
21}
22
Alex Bradbury5dabe032019-05-23 12:43:13 +000023define i16 @sext_i1_to_i16(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +000024; RV32I-LABEL: sext_i1_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000025; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000026; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +000027; RV32I-NEXT: neg a0, a0
Alex Bradbury59136ff2017-12-15 09:47:01 +000028; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000029;
30; RV64I-LABEL: sext_i1_to_i16:
31; RV64I: # %bb.0:
32; RV64I-NEXT: andi a0, a0, 1
33; RV64I-NEXT: neg a0, a0
34; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000035 %1 = sext i1 %a to i16
36 ret i16 %1
37}
38
Alex Bradbury5dabe032019-05-23 12:43:13 +000039define i32 @sext_i1_to_i32(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +000040; RV32I-LABEL: sext_i1_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000041; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000042; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +000043; RV32I-NEXT: neg a0, a0
Alex Bradbury59136ff2017-12-15 09:47:01 +000044; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000045;
46; RV64I-LABEL: sext_i1_to_i32:
47; RV64I: # %bb.0:
48; RV64I-NEXT: andi a0, a0, 1
49; RV64I-NEXT: neg a0, a0
50; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000051 %1 = sext i1 %a to i32
52 ret i32 %1
53}
54
Alex Bradbury5dabe032019-05-23 12:43:13 +000055define i64 @sext_i1_to_i64(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +000056; RV32I-LABEL: sext_i1_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000057; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000058; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +000059; RV32I-NEXT: neg a0, a0
60; RV32I-NEXT: mv a1, a0
Alex Bradbury59136ff2017-12-15 09:47:01 +000061; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000062;
63; RV64I-LABEL: sext_i1_to_i64:
64; RV64I: # %bb.0:
65; RV64I-NEXT: andi a0, a0, 1
66; RV64I-NEXT: neg a0, a0
67; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000068 %1 = sext i1 %a to i64
69 ret i64 %1
70}
71
Alex Bradbury5dabe032019-05-23 12:43:13 +000072define i16 @sext_i8_to_i16(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +000073; RV32I-LABEL: sext_i8_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000074; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000075; RV32I-NEXT: slli a0, a0, 24
76; RV32I-NEXT: srai a0, a0, 24
Alex Bradbury59136ff2017-12-15 09:47:01 +000077; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000078;
79; RV64I-LABEL: sext_i8_to_i16:
80; RV64I: # %bb.0:
81; RV64I-NEXT: slli a0, a0, 56
82; RV64I-NEXT: srai a0, a0, 56
83; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000084 %1 = sext i8 %a to i16
85 ret i16 %1
86}
87
Alex Bradbury5dabe032019-05-23 12:43:13 +000088define i32 @sext_i8_to_i32(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +000089; RV32I-LABEL: sext_i8_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000090; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +000091; RV32I-NEXT: slli a0, a0, 24
92; RV32I-NEXT: srai a0, a0, 24
Alex Bradbury59136ff2017-12-15 09:47:01 +000093; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +000094;
95; RV64I-LABEL: sext_i8_to_i32:
96; RV64I: # %bb.0:
97; RV64I-NEXT: slli a0, a0, 56
98; RV64I-NEXT: srai a0, a0, 56
99; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000100 %1 = sext i8 %a to i32
101 ret i32 %1
102}
103
Alex Bradbury5dabe032019-05-23 12:43:13 +0000104define i64 @sext_i8_to_i64(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000105; RV32I-LABEL: sext_i8_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000106; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000107; RV32I-NEXT: slli a1, a0, 24
108; RV32I-NEXT: srai a0, a1, 24
109; RV32I-NEXT: srai a1, a1, 31
Alex Bradbury59136ff2017-12-15 09:47:01 +0000110; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000111;
112; RV64I-LABEL: sext_i8_to_i64:
113; RV64I: # %bb.0:
114; RV64I-NEXT: slli a0, a0, 56
115; RV64I-NEXT: srai a0, a0, 56
116; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000117 %1 = sext i8 %a to i64
118 ret i64 %1
119}
120
Alex Bradbury5dabe032019-05-23 12:43:13 +0000121define i32 @sext_i16_to_i32(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000122; RV32I-LABEL: sext_i16_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000123; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000124; RV32I-NEXT: slli a0, a0, 16
125; RV32I-NEXT: srai a0, a0, 16
Alex Bradbury59136ff2017-12-15 09:47:01 +0000126; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000127;
128; RV64I-LABEL: sext_i16_to_i32:
129; RV64I: # %bb.0:
130; RV64I-NEXT: slli a0, a0, 48
131; RV64I-NEXT: srai a0, a0, 48
132; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000133 %1 = sext i16 %a to i32
134 ret i32 %1
135}
136
Alex Bradbury5dabe032019-05-23 12:43:13 +0000137define i64 @sext_i16_to_i64(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000138; RV32I-LABEL: sext_i16_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000139; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000140; RV32I-NEXT: slli a1, a0, 16
141; RV32I-NEXT: srai a0, a1, 16
142; RV32I-NEXT: srai a1, a1, 31
Alex Bradbury59136ff2017-12-15 09:47:01 +0000143; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000144;
145; RV64I-LABEL: sext_i16_to_i64:
146; RV64I: # %bb.0:
147; RV64I-NEXT: slli a0, a0, 48
148; RV64I-NEXT: srai a0, a0, 48
149; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000150 %1 = sext i16 %a to i64
151 ret i64 %1
152}
153
Alex Bradbury5dabe032019-05-23 12:43:13 +0000154define i64 @sext_i32_to_i64(i32 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000155; RV32I-LABEL: sext_i32_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000156; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000157; RV32I-NEXT: srai a1, a0, 31
Alex Bradbury59136ff2017-12-15 09:47:01 +0000158; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000159;
160; RV64I-LABEL: sext_i32_to_i64:
161; RV64I: # %bb.0:
162; RV64I-NEXT: sext.w a0, a0
163; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000164 %1 = sext i32 %a to i64
165 ret i64 %1
166}
167
Alex Bradbury5dabe032019-05-23 12:43:13 +0000168define i8 @zext_i1_to_i8(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000169; RV32I-LABEL: zext_i1_to_i8:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000170; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000171; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000172; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000173;
174; RV64I-LABEL: zext_i1_to_i8:
175; RV64I: # %bb.0:
176; RV64I-NEXT: andi a0, a0, 1
177; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000178 %1 = zext i1 %a to i8
179 ret i8 %1
180}
181
Alex Bradbury5dabe032019-05-23 12:43:13 +0000182define i16 @zext_i1_to_i16(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000183; RV32I-LABEL: zext_i1_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000184; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000185; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000186; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000187;
188; RV64I-LABEL: zext_i1_to_i16:
189; RV64I: # %bb.0:
190; RV64I-NEXT: andi a0, a0, 1
191; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000192 %1 = zext i1 %a to i16
193 ret i16 %1
194}
195
Alex Bradbury5dabe032019-05-23 12:43:13 +0000196define i32 @zext_i1_to_i32(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000197; RV32I-LABEL: zext_i1_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000198; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000199; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000200; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000201;
202; RV64I-LABEL: zext_i1_to_i32:
203; RV64I: # %bb.0:
204; RV64I-NEXT: andi a0, a0, 1
205; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000206 %1 = zext i1 %a to i32
207 ret i32 %1
208}
209
Alex Bradbury5dabe032019-05-23 12:43:13 +0000210define i64 @zext_i1_to_i64(i1 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000211; RV32I-LABEL: zext_i1_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000212; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000213; RV32I-NEXT: andi a0, a0, 1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000214; RV32I-NEXT: mv a1, zero
Alex Bradbury59136ff2017-12-15 09:47:01 +0000215; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000216;
217; RV64I-LABEL: zext_i1_to_i64:
218; RV64I: # %bb.0:
219; RV64I-NEXT: andi a0, a0, 1
220; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000221 %1 = zext i1 %a to i64
222 ret i64 %1
223}
224
Alex Bradbury5dabe032019-05-23 12:43:13 +0000225define i16 @zext_i8_to_i16(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000226; RV32I-LABEL: zext_i8_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000227; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000228; RV32I-NEXT: andi a0, a0, 255
Alex Bradbury59136ff2017-12-15 09:47:01 +0000229; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000230;
231; RV64I-LABEL: zext_i8_to_i16:
232; RV64I: # %bb.0:
233; RV64I-NEXT: andi a0, a0, 255
234; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000235 %1 = zext i8 %a to i16
236 ret i16 %1
237}
238
Alex Bradbury5dabe032019-05-23 12:43:13 +0000239define i32 @zext_i8_to_i32(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000240; RV32I-LABEL: zext_i8_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000241; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000242; RV32I-NEXT: andi a0, a0, 255
Alex Bradbury59136ff2017-12-15 09:47:01 +0000243; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000244;
245; RV64I-LABEL: zext_i8_to_i32:
246; RV64I: # %bb.0:
247; RV64I-NEXT: andi a0, a0, 255
248; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000249 %1 = zext i8 %a to i32
250 ret i32 %1
251}
252
Alex Bradbury5dabe032019-05-23 12:43:13 +0000253define i64 @zext_i8_to_i64(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000254; RV32I-LABEL: zext_i8_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000255; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000256; RV32I-NEXT: andi a0, a0, 255
Alex Bradbury59136ff2017-12-15 09:47:01 +0000257; RV32I-NEXT: mv a1, zero
Alex Bradbury59136ff2017-12-15 09:47:01 +0000258; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000259;
260; RV64I-LABEL: zext_i8_to_i64:
261; RV64I: # %bb.0:
262; RV64I-NEXT: andi a0, a0, 255
263; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000264 %1 = zext i8 %a to i64
265 ret i64 %1
266}
267
Alex Bradbury5dabe032019-05-23 12:43:13 +0000268define i32 @zext_i16_to_i32(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000269; RV32I-LABEL: zext_i16_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000270; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000271; RV32I-NEXT: lui a1, 16
272; RV32I-NEXT: addi a1, a1, -1
273; RV32I-NEXT: and a0, a0, a1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000274; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000275;
276; RV64I-LABEL: zext_i16_to_i32:
277; RV64I: # %bb.0:
278; RV64I-NEXT: lui a1, 16
279; RV64I-NEXT: addiw a1, a1, -1
280; RV64I-NEXT: and a0, a0, a1
281; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000282 %1 = zext i16 %a to i32
283 ret i32 %1
284}
285
Alex Bradbury5dabe032019-05-23 12:43:13 +0000286define i64 @zext_i16_to_i64(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000287; RV32I-LABEL: zext_i16_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000288; RV32I: # %bb.0:
Alex Bradburyffc435e2017-11-21 08:11:03 +0000289; RV32I-NEXT: lui a1, 16
290; RV32I-NEXT: addi a1, a1, -1
291; RV32I-NEXT: and a0, a0, a1
Alex Bradbury59136ff2017-12-15 09:47:01 +0000292; RV32I-NEXT: mv a1, zero
Alex Bradbury59136ff2017-12-15 09:47:01 +0000293; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000294;
295; RV64I-LABEL: zext_i16_to_i64:
296; RV64I: # %bb.0:
297; RV64I-NEXT: lui a1, 16
298; RV64I-NEXT: addiw a1, a1, -1
299; RV64I-NEXT: and a0, a0, a1
300; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000301 %1 = zext i16 %a to i64
302 ret i64 %1
303}
304
Alex Bradbury5dabe032019-05-23 12:43:13 +0000305define i64 @zext_i32_to_i64(i32 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000306; RV32I-LABEL: zext_i32_to_i64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000307; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000308; RV32I-NEXT: mv a1, zero
Alex Bradbury59136ff2017-12-15 09:47:01 +0000309; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000310;
311; RV64I-LABEL: zext_i32_to_i64:
312; RV64I: # %bb.0:
313; RV64I-NEXT: slli a0, a0, 32
314; RV64I-NEXT: srli a0, a0, 32
315; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000316 %1 = zext i32 %a to i64
317 ret i64 %1
318}
319
Alex Bradbury5dabe032019-05-23 12:43:13 +0000320define i1 @trunc_i8_to_i1(i8 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000321; RV32I-LABEL: trunc_i8_to_i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000322; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000323; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000324;
325; RV64I-LABEL: trunc_i8_to_i1:
326; RV64I: # %bb.0:
327; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000328 %1 = trunc i8 %a to i1
329 ret i1 %1
330}
331
Alex Bradbury5dabe032019-05-23 12:43:13 +0000332define i1 @trunc_i16_to_i1(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000333; RV32I-LABEL: trunc_i16_to_i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000334; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000335; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000336;
337; RV64I-LABEL: trunc_i16_to_i1:
338; RV64I: # %bb.0:
339; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000340 %1 = trunc i16 %a to i1
341 ret i1 %1
342}
343
Alex Bradbury5dabe032019-05-23 12:43:13 +0000344define i1 @trunc_i32_to_i1(i32 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000345; RV32I-LABEL: trunc_i32_to_i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000346; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000347; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000348;
349; RV64I-LABEL: trunc_i32_to_i1:
350; RV64I: # %bb.0:
351; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000352 %1 = trunc i32 %a to i1
353 ret i1 %1
354}
355
Alex Bradbury5dabe032019-05-23 12:43:13 +0000356define i1 @trunc_i64_to_i1(i64 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000357; RV32I-LABEL: trunc_i64_to_i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000358; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000359; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000360;
361; RV64I-LABEL: trunc_i64_to_i1:
362; RV64I: # %bb.0:
363; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000364 %1 = trunc i64 %a to i1
365 ret i1 %1
366}
367
Alex Bradbury5dabe032019-05-23 12:43:13 +0000368define i8 @trunc_i16_to_i8(i16 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000369; RV32I-LABEL: trunc_i16_to_i8:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000370; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000371; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000372;
373; RV64I-LABEL: trunc_i16_to_i8:
374; RV64I: # %bb.0:
375; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000376 %1 = trunc i16 %a to i8
377 ret i8 %1
378}
379
Alex Bradbury5dabe032019-05-23 12:43:13 +0000380define i8 @trunc_i32_to_i8(i32 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000381; RV32I-LABEL: trunc_i32_to_i8:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000382; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000383; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000384;
385; RV64I-LABEL: trunc_i32_to_i8:
386; RV64I: # %bb.0:
387; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000388 %1 = trunc i32 %a to i8
389 ret i8 %1
390}
391
Alex Bradbury5dabe032019-05-23 12:43:13 +0000392define i8 @trunc_i64_to_i8(i64 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000393; RV32I-LABEL: trunc_i64_to_i8:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000394; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000395; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000396;
397; RV64I-LABEL: trunc_i64_to_i8:
398; RV64I: # %bb.0:
399; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000400 %1 = trunc i64 %a to i8
401 ret i8 %1
402}
403
Alex Bradbury5dabe032019-05-23 12:43:13 +0000404define i16 @trunc_i32_to_i16(i32 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000405; RV32I-LABEL: trunc_i32_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000406; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000407; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000408;
409; RV64I-LABEL: trunc_i32_to_i16:
410; RV64I: # %bb.0:
411; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000412 %1 = trunc i32 %a to i16
413 ret i16 %1
414}
415
Alex Bradbury5dabe032019-05-23 12:43:13 +0000416define i16 @trunc_i64_to_i16(i64 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000417; RV32I-LABEL: trunc_i64_to_i16:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000418; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000419; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000420;
421; RV64I-LABEL: trunc_i64_to_i16:
422; RV64I: # %bb.0:
423; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000424 %1 = trunc i64 %a to i16
425 ret i16 %1
426}
427
Alex Bradbury5dabe032019-05-23 12:43:13 +0000428define i32 @trunc_i64_to_i32(i64 %a) nounwind {
Alex Bradburyffc435e2017-11-21 08:11:03 +0000429; RV32I-LABEL: trunc_i64_to_i32:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000430; RV32I: # %bb.0:
Alex Bradbury59136ff2017-12-15 09:47:01 +0000431; RV32I-NEXT: ret
Alex Bradburybc96a982018-11-30 09:38:44 +0000432;
433; RV64I-LABEL: trunc_i64_to_i32:
434; RV64I: # %bb.0:
435; RV64I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +0000436 %1 = trunc i64 %a to i32
437 ret i32 %1
438}