104 lines · plain
1; RUN: llc -mtriple=mips64el -mcpu=mips64r2 < %s | FileCheck %s2 3define i64 @f0(i64 %a0, i64 %a1) nounwind readnone {4entry:5; CHECK: dsllv6 %shl = shl i64 %a0, %a17 ret i64 %shl8}9 10define i64 @f1(i64 %a0, i64 %a1) nounwind readnone {11entry:12; CHECK: dsrav13 %shr = ashr i64 %a0, %a114 ret i64 %shr15}16 17define i64 @f2(i64 %a0, i64 %a1) nounwind readnone {18entry:19; CHECK: dsrlv20 %shr = lshr i64 %a0, %a121 ret i64 %shr22}23 24define i64 @f3(i64 %a0) nounwind readnone {25entry:26; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 1027 %shl = shl i64 %a0, 1028 ret i64 %shl29}30 31define i64 @f4(i64 %a0) nounwind readnone {32entry:33; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 1034 %shr = ashr i64 %a0, 1035 ret i64 %shr36}37 38define i64 @f5(i64 %a0) nounwind readnone {39entry:40; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 1041 %shr = lshr i64 %a0, 1042 ret i64 %shr43}44 45define i64 @f6(i64 %a0) nounwind readnone {46entry:47; CHECK: dsll ${{[0-9]+}}, ${{[0-9]+}}, 4048 %shl = shl i64 %a0, 4049 ret i64 %shl50}51 52define i64 @f7(i64 %a0) nounwind readnone {53entry:54; CHECK: dsra ${{[0-9]+}}, ${{[0-9]+}}, 4055 %shr = ashr i64 %a0, 4056 ret i64 %shr57}58 59define i64 @f8(i64 %a0) nounwind readnone {60entry:61; CHECK: dsrl ${{[0-9]+}}, ${{[0-9]+}}, 4062 %shr = lshr i64 %a0, 4063 ret i64 %shr64}65 66define i64 @f9(i64 %a0, i64 %a1) nounwind readnone {67entry:68; CHECK-NOT: sll69; CHECK: drotrv70 %shr = lshr i64 %a0, %a171 %sub = sub i64 64, %a172 %shl = shl i64 %a0, %sub73 %or = or i64 %shl, %shr74 ret i64 %or75}76 77define i64 @f10(i64 %a0, i64 %a1) nounwind readnone {78entry:79; CHECK: drotrv80 %shl = shl i64 %a0, %a181 %sub = sub i64 64, %a182 %shr = lshr i64 %a0, %sub83 %or = or i64 %shr, %shl84 ret i64 %or85}86 87define i64 @f11(i64 %a0) nounwind readnone {88entry:89; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 1090 %shr = lshr i64 %a0, 1091 %shl = shl i64 %a0, 5492 %or = or i64 %shr, %shl93 ret i64 %or94}95 96define i64 @f12(i64 %a0) nounwind readnone {97entry:98; CHECK: drotr ${{[0-9]+}}, ${{[0-9]+}}, 5499 %shl = shl i64 %a0, 10100 %shr = lshr i64 %a0, 54101 %or = or i64 %shl, %shr102 ret i64 %or103}104