1*bf4f9a46SLiaoChunyu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*bf4f9a46SLiaoChunyu; RUN: llc -mtriple=riscv32 -mattr=+m -verify-machineinstrs < %s \ 3*bf4f9a46SLiaoChunyu; RUN: | FileCheck -check-prefixes=RV32IM %s 4*bf4f9a46SLiaoChunyu; RUN: llc -mtriple=riscv64 -mattr=+m -verify-machineinstrs < %s \ 5*bf4f9a46SLiaoChunyu; RUN: | FileCheck -check-prefixes=RV64IM %s 6*bf4f9a46SLiaoChunyu 7*bf4f9a46SLiaoChunyudefine i32 @testsize1(i32 %x) minsize nounwind { 8*bf4f9a46SLiaoChunyu; RV32IM-LABEL: testsize1: 9*bf4f9a46SLiaoChunyu; RV32IM: # %bb.0: # %entry 10*bf4f9a46SLiaoChunyu; RV32IM-NEXT: li a1, 32 11*bf4f9a46SLiaoChunyu; RV32IM-NEXT: div a0, a0, a1 12*bf4f9a46SLiaoChunyu; RV32IM-NEXT: ret 13*bf4f9a46SLiaoChunyu; 14*bf4f9a46SLiaoChunyu; RV64IM-LABEL: testsize1: 15*bf4f9a46SLiaoChunyu; RV64IM: # %bb.0: # %entry 16*bf4f9a46SLiaoChunyu; RV64IM-NEXT: li a1, 32 17*bf4f9a46SLiaoChunyu; RV64IM-NEXT: divw a0, a0, a1 18*bf4f9a46SLiaoChunyu; RV64IM-NEXT: ret 19*bf4f9a46SLiaoChunyuentry: 20*bf4f9a46SLiaoChunyu %div = sdiv i32 %x, 32 21*bf4f9a46SLiaoChunyu ret i32 %div 22*bf4f9a46SLiaoChunyu} 23*bf4f9a46SLiaoChunyu 24*bf4f9a46SLiaoChunyudefine i32 @testsize2(i32 %x) minsize nounwind { 25*bf4f9a46SLiaoChunyu; RV32IM-LABEL: testsize2: 26*bf4f9a46SLiaoChunyu; RV32IM: # %bb.0: # %entry 27*bf4f9a46SLiaoChunyu; RV32IM-NEXT: li a1, 33 28*bf4f9a46SLiaoChunyu; RV32IM-NEXT: div a0, a0, a1 29*bf4f9a46SLiaoChunyu; RV32IM-NEXT: ret 30*bf4f9a46SLiaoChunyu; 31*bf4f9a46SLiaoChunyu; RV64IM-LABEL: testsize2: 32*bf4f9a46SLiaoChunyu; RV64IM: # %bb.0: # %entry 33*bf4f9a46SLiaoChunyu; RV64IM-NEXT: li a1, 33 34*bf4f9a46SLiaoChunyu; RV64IM-NEXT: divw a0, a0, a1 35*bf4f9a46SLiaoChunyu; RV64IM-NEXT: ret 36*bf4f9a46SLiaoChunyuentry: 37*bf4f9a46SLiaoChunyu %div = sdiv i32 %x, 33 38*bf4f9a46SLiaoChunyu ret i32 %div 39*bf4f9a46SLiaoChunyu} 40*bf4f9a46SLiaoChunyu 41*bf4f9a46SLiaoChunyudefine i32 @testsize3(i32 %x) minsize nounwind { 42*bf4f9a46SLiaoChunyu; RV32IM-LABEL: testsize3: 43*bf4f9a46SLiaoChunyu; RV32IM: # %bb.0: # %entry 44*bf4f9a46SLiaoChunyu; RV32IM-NEXT: srli a0, a0, 5 45*bf4f9a46SLiaoChunyu; RV32IM-NEXT: ret 46*bf4f9a46SLiaoChunyu; 47*bf4f9a46SLiaoChunyu; RV64IM-LABEL: testsize3: 48*bf4f9a46SLiaoChunyu; RV64IM: # %bb.0: # %entry 49*bf4f9a46SLiaoChunyu; RV64IM-NEXT: srliw a0, a0, 5 50*bf4f9a46SLiaoChunyu; RV64IM-NEXT: ret 51*bf4f9a46SLiaoChunyuentry: 52*bf4f9a46SLiaoChunyu %div = udiv i32 %x, 32 53*bf4f9a46SLiaoChunyu ret i32 %div 54*bf4f9a46SLiaoChunyu} 55*bf4f9a46SLiaoChunyu 56*bf4f9a46SLiaoChunyudefine i32 @testsize4(i32 %x) minsize nounwind { 57*bf4f9a46SLiaoChunyu; RV32IM-LABEL: testsize4: 58*bf4f9a46SLiaoChunyu; RV32IM: # %bb.0: 59*bf4f9a46SLiaoChunyu; RV32IM-NEXT: li a1, 33 60*bf4f9a46SLiaoChunyu; RV32IM-NEXT: divu a0, a0, a1 61*bf4f9a46SLiaoChunyu; RV32IM-NEXT: ret 62*bf4f9a46SLiaoChunyu; 63*bf4f9a46SLiaoChunyu; RV64IM-LABEL: testsize4: 64*bf4f9a46SLiaoChunyu; RV64IM: # %bb.0: 65*bf4f9a46SLiaoChunyu; RV64IM-NEXT: li a1, 33 66*bf4f9a46SLiaoChunyu; RV64IM-NEXT: divuw a0, a0, a1 67*bf4f9a46SLiaoChunyu; RV64IM-NEXT: ret 68*bf4f9a46SLiaoChunyu %div = udiv i32 %x, 33 69*bf4f9a46SLiaoChunyu ret i32 %div 70*bf4f9a46SLiaoChunyu} 71