blob: 4aa66b0b63c3ff3a926a277e9f7938c7cc98b536 [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
4
5; Basic shift support is tested as part of ALU.ll. This file ensures that
6; shifts which may not be supported natively are lowered properly.
7
8define i64 @lshr64(i64 %a, i64 %b) nounwind {
9; RV32I-LABEL: lshr64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000010; RV32I: # %bb.0:
Alex Bradburyb014e3d2017-12-11 12:34:11 +000011; RV32I-NEXT: addi sp, sp, -16
Alex Bradbury660bcce2017-12-11 11:53:54 +000012; RV32I-NEXT: sw ra, 12(sp)
Shiva Chend58bd8d2018-04-25 14:19:12 +000013; RV32I-NEXT: call __lshrdi3
Alex Bradbury660bcce2017-12-11 11:53:54 +000014; RV32I-NEXT: lw ra, 12(sp)
Alex Bradburyb014e3d2017-12-11 12:34:11 +000015; RV32I-NEXT: addi sp, sp, 16
Alex Bradbury59136ff2017-12-15 09:47:01 +000016; RV32I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000017 %1 = lshr i64 %a, %b
18 ret i64 %1
19}
20
21define i64 @ashr64(i64 %a, i64 %b) nounwind {
22; RV32I-LABEL: ashr64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000023; RV32I: # %bb.0:
Alex Bradburyb014e3d2017-12-11 12:34:11 +000024; RV32I-NEXT: addi sp, sp, -16
Alex Bradbury660bcce2017-12-11 11:53:54 +000025; RV32I-NEXT: sw ra, 12(sp)
Shiva Chend58bd8d2018-04-25 14:19:12 +000026; RV32I-NEXT: call __ashrdi3
Alex Bradbury660bcce2017-12-11 11:53:54 +000027; RV32I-NEXT: lw ra, 12(sp)
Alex Bradburyb014e3d2017-12-11 12:34:11 +000028; RV32I-NEXT: addi sp, sp, 16
Alex Bradbury59136ff2017-12-15 09:47:01 +000029; RV32I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000030 %1 = ashr i64 %a, %b
31 ret i64 %1
32}
33
34define i64 @shl64(i64 %a, i64 %b) nounwind {
35; RV32I-LABEL: shl64:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000036; RV32I: # %bb.0:
Alex Bradburyb014e3d2017-12-11 12:34:11 +000037; RV32I-NEXT: addi sp, sp, -16
Alex Bradbury660bcce2017-12-11 11:53:54 +000038; RV32I-NEXT: sw ra, 12(sp)
Shiva Chend58bd8d2018-04-25 14:19:12 +000039; RV32I-NEXT: call __ashldi3
Alex Bradbury660bcce2017-12-11 11:53:54 +000040; RV32I-NEXT: lw ra, 12(sp)
Alex Bradburyb014e3d2017-12-11 12:34:11 +000041; RV32I-NEXT: addi sp, sp, 16
Alex Bradbury59136ff2017-12-15 09:47:01 +000042; RV32I-NEXT: ret
Alex Bradburyffc435e2017-11-21 08:11:03 +000043 %1 = shl i64 %a, %b
44 ret i64 %1
45}