; RUN: llc -march=mipsel < %s | FileCheck %s

define i64 @shl0(i64 %a, i32 %b) nounwind readnone {
entry:
; CHECK: shl0
; CHECK-NOT: lw $25, %call16(__
  %sh_prom = zext i32 %b to i64
  %shl = shl i64 %a, %sh_prom
  ret i64 %shl
}

define i64 @shr1(i64 %a, i32 %b) nounwind readnone {
entry:
; CHECK: shr1
; CHECK-NOT: lw $25, %call16(__
  %sh_prom = zext i32 %b to i64
  %shr = lshr i64 %a, %sh_prom
  ret i64 %shr
}

define i64 @sra2(i64 %a, i32 %b) nounwind readnone {
entry:
; CHECK: sra2
; CHECK-NOT: lw $25, %call16(__
  %sh_prom = zext i32 %b to i64
  %shr = ashr i64 %a, %sh_prom
  ret i64 %shr
}