llvm.org GIT mirror llvm / release_60 test / CodeGen / PowerPC / fast-isel-ret.ll
release_60

Tree @release_60 (Download .tar.gz)

fast-isel-ret.ll @release_60

1d142d4
26d628d
1d142d4
 
26d628d
055d207
168ef66
6693d0d
 
 
 
 
 
 
168ef66
6693d0d
 
 
 
 
 
 
168ef66
6693d0d
 
 
 
 
 
 
168ef66
6693d0d
 
 
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
168ef66
055d207
6693d0d
47a09dc
055d207
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
168ef66
055d207
6693d0d
47a09dc
055d207
 
 
 
168ef66
055d207
6693d0d
47a09dc
055d207
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
168ef66
055d207
6693d0d
47a09dc
055d207
 
 
 
168ef66
055d207
6693d0d
47a09dc
055d207
 
 
 
168ef66
055d207
6693d0d
055d207
47a09dc
055d207
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
 
168ef66
055d207
6693d0d
055d207
 
 
 
 
e05397b
 
 
 
 
 
 
 
 
 
d1416a5
 
 
 
 
 
 
 
 
; FIXME: FastISel currently returns false if it hits code that uses VSX
; registers and with -fast-isel-abort=1 turned on the test case will then fail.
; When fastisel better supports VSX fix up this test case.
;
; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-vsx | FileCheck %s --check-prefix=ELF64

define zeroext i1 @rettrue() nounwind {
entry:
; ELF64-LABEL: rettrue
; ELF64: li 3, 1
; ELF64: blr
  ret i1 true
}

define zeroext i1 @retfalse() nounwind {
entry:
; ELF64-LABEL: retfalse
; ELF64: li 3, 0
; ELF64: blr
  ret i1 false
}

define signext i1 @retstrue() nounwind {
entry:
; ELF64-LABEL: retstrue
; ELF64: li 3, -1
; ELF64: blr
  ret i1 true
}

define signext i1 @retsfalse() nounwind {
entry:
; ELF64-LABEL: retsfalse
; ELF64: li 3, 0
; ELF64: blr
  ret i1 false
}

define signext i8 @ret2(i8 signext %a) nounwind {
entry:
; ELF64-LABEL: ret2
; ELF64: extsb
; ELF64: blr
  ret i8 %a
}

define zeroext i8 @ret3(i8 signext %a) nounwind {
entry:
; ELF64-LABEL: ret3
; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 56
; ELF64: blr
  ret i8 %a
}

define signext i16 @ret4(i16 signext %a) nounwind {
entry:
; ELF64-LABEL: ret4
; ELF64: extsh
; ELF64: blr
  ret i16 %a
}

define zeroext i16 @ret5(i16 signext %a) nounwind {
entry:
; ELF64-LABEL: ret5
; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
; ELF64: blr
  ret i16 %a
}

define i16 @ret6(i16 %a) nounwind {
entry:
; ELF64-LABEL: ret6
; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
; ELF64: blr
  ret i16 %a
}

define signext i32 @ret7(i32 signext %a) nounwind {
entry:
; ELF64-LABEL: ret7
; ELF64: extsw
; ELF64: blr
  ret i32 %a
}

define zeroext i32 @ret8(i32 signext %a) nounwind {
entry:
; ELF64-LABEL: ret8
; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
; ELF64: blr
  ret i32 %a
}

define i32 @ret9(i32 %a) nounwind {
entry:
; ELF64-LABEL: ret9
; ELF64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
; ELF64: blr
  ret i32 %a
}

define i64 @ret10(i64 %a) nounwind {
entry:
; ELF64-LABEL: ret10
; ELF64-NOT: exts
; ELF64-NOT: clrldi
; ELF64-NOT: rldicl
; ELF64: blr
  ret i64 %a
}

define float @ret11(float %a) nounwind {
entry:
; ELF64-LABEL: ret11
; ELF64: blr
  ret float %a
}

define double @ret12(double %a) nounwind {
entry:
; ELF64-LABEL: ret12
; ELF64: blr
  ret double %a
}

define i8 @ret13() nounwind {
entry:
; ELF64-LABEL: ret13
; ELF64: li
; ELF64: blr
  ret i8 15;
}

define i16 @ret14() nounwind {
entry:
; ELF64-LABEL: ret14
; ELF64: li
; ELF64: blr
  ret i16 -225;
}

define i32 @ret15() nounwind {
entry:
; ELF64-LABEL: ret15
; ELF64: lis
; ELF64: ori
; ELF64: blr
  ret i32 278135;
}

define i64 @ret16() nounwind {
entry:
; ELF64-LABEL: ret16
; ELF64: li
; ELF64: sldi
; ELF64: oris
; ELF64: ori
; ELF64: blr
  ret i64 27813515225;
}

define float @ret17() nounwind {
entry:
; ELF64-LABEL: ret17
; ELF64: addis
; ELF64: lfs
; ELF64: blr
  ret float 2.5;
}

define double @ret18() nounwind {
entry:
; ELF64-LABEL: ret18
; ELF64: addis
; ELF64: lfd
; ELF64: blr
  ret double 2.5e-33;
}

define zeroext i32 @ret19() nounwind {
entry:
; ELF64-LABEL: ret19
; ELF64: li
; ELF64: oris
; ELF64: ori
; ELF64: blr
  ret i32 -1
}

define zeroext i16 @ret20() nounwind {
entry:
; ELF64-LABEL: ret20
; ELF64: lis{{.*}}0
; ELF64: ori{{.*}}32768
; ELF64: blr
  ret i16 32768
}