79 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=riscv64 -mattr=+m | FileCheck %s3 4define signext i8 @trunc_nsw_add(i32 signext %x) nounwind {5; CHECK-LABEL: trunc_nsw_add:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: addiw a0, a0, 18; CHECK-NEXT: ret9entry:10 %add = add nsw i32 %x, 111 %trunc = trunc nsw i32 %add to i812 ret i8 %trunc13}14 15define signext i32 @trunc_nuw_nsw_urem(i64 %x) nounwind {16; CHECK-LABEL: trunc_nuw_nsw_urem:17; CHECK: # %bb.0: # %entry18; CHECK-NEXT: lui a1, 21019; CHECK-NEXT: lui a2, 220; CHECK-NEXT: addi a1, a1, -116721; CHECK-NEXT: slli a1, a1, 1222; CHECK-NEXT: addi a1, a1, 188123; CHECK-NEXT: mul a1, a0, a124; CHECK-NEXT: srli a1, a1, 4525; CHECK-NEXT: addi a2, a2, 180826; CHECK-NEXT: mul a1, a1, a227; CHECK-NEXT: subw a0, a0, a128; CHECK-NEXT: ret29entry:30 %trunc = trunc nuw nsw i64 %x to i3231 %rem = urem i32 %trunc, 1000032 ret i32 %rem33}34 35define i64 @zext_nneg_udiv_trunc_nuw(i64 %x) nounwind {36; CHECK-LABEL: zext_nneg_udiv_trunc_nuw:37; CHECK: # %bb.0: # %entry38; CHECK-NEXT: lui a1, 1339; CHECK-NEXT: addi a1, a1, -81940; CHECK-NEXT: mul a0, a0, a141; CHECK-NEXT: srliw a0, a0, 2342; CHECK-NEXT: ret43entry:44 %trunc = trunc nuw i64 %x to i1645 %div = udiv i16 %trunc, 16046 %ext = zext nneg i16 %div to i6447 ret i64 %ext48}49 50define i64 @sext_udiv_trunc_nuw(i64 %x) nounwind {51; CHECK-LABEL: sext_udiv_trunc_nuw:52; CHECK: # %bb.0: # %entry53; CHECK-NEXT: lui a1, 1354; CHECK-NEXT: addi a1, a1, -81955; CHECK-NEXT: mul a0, a0, a156; CHECK-NEXT: srliw a0, a0, 2357; CHECK-NEXT: ret58entry:59 %trunc = trunc nuw i64 %x to i1660 %div = udiv i16 %trunc, 16061 %ext = sext i16 %div to i6462 ret i64 %ext63}64 65define ptr @gep_nusw_zext_nneg_add_trunc_nuw_nsw(ptr %p, i64 %x) nounwind {66; CHECK-LABEL: gep_nusw_zext_nneg_add_trunc_nuw_nsw:67; CHECK: # %bb.0: # %entry68; CHECK-NEXT: slli a1, a1, 269; CHECK-NEXT: add a0, a1, a070; CHECK-NEXT: addi a0, a0, 2071; CHECK-NEXT: ret72entry:73 %trunc = trunc nuw nsw i64 %x to i3274 %add = add nuw nsw i32 %trunc, 575 %offset = zext nneg i32 %add to i6476 %gep = getelementptr nusw float, ptr %p, i64 %offset77 ret ptr %gep78}79