• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
2
3declare float @llvm.sqrt.f32(float) nounwind readnone
4declare double @llvm.sqrt.f64(double) nounwind readnone
5
6; SI-LABEL: @rsq_f32
7; SI: V_RSQ_F32_e32
8; SI: S_ENDPGM
9define void @rsq_f32(float addrspace(1)* noalias %out, float addrspace(1)* noalias %in) nounwind {
10  %val = load float addrspace(1)* %in, align 4
11  %sqrt = call float @llvm.sqrt.f32(float %val) nounwind readnone
12  %div = fdiv float 1.0, %sqrt
13  store float %div, float addrspace(1)* %out, align 4
14  ret void
15}
16
17; SI-LABEL: @rsq_f64
18; SI: V_RSQ_F64_e32
19; SI: S_ENDPGM
20define void @rsq_f64(double addrspace(1)* noalias %out, double addrspace(1)* noalias %in) nounwind {
21  %val = load double addrspace(1)* %in, align 4
22  %sqrt = call double @llvm.sqrt.f64(double %val) nounwind readnone
23  %div = fdiv double 1.0, %sqrt
24  store double %div, double addrspace(1)* %out, align 4
25  ret void
26}
27