llvm.amdgcn.rsq.legacy.ll revision de2d8694e25a814696358e95141f4b1aa4d8847e
1de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
3de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardeclare float @llvm.amdgcn.rsq.legacy(float) #0
4de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
5de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; FUNC-LABEL: {{^}}rsq_legacy_f32:
6de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; SI: v_rsq_legacy_f32_e32 {{v[0-9]+}}, {{s[0-9]+}}
7de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardefine void @rsq_legacy_f32(float addrspace(1)* %out, float %src) #1 {
8de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  %rsq = call float @llvm.amdgcn.rsq.legacy(float %src) #0
9de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  store float %rsq, float addrspace(1)* %out, align 4
10de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  ret void
11de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
12de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
13de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; TODO: Really these should be constant folded
14de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; FUNC-LABEL: {{^}}rsq_legacy_f32_constant_4.0
15de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; SI: v_rsq_legacy_f32_e32 {{v[0-9]+}}, 4.0
16de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardefine void @rsq_legacy_f32_constant_4.0(float addrspace(1)* %out) #1 {
17de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  %rsq = call float @llvm.amdgcn.rsq.legacy(float 4.0) #0
18de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  store float %rsq, float addrspace(1)* %out, align 4
19de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  ret void
20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
21de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
22de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; FUNC-LABEL: {{^}}rsq_legacy_f32_constant_100.0
23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; SI: v_rsq_legacy_f32_e32 {{v[0-9]+}}, 0x42c80000
24de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardefine void @rsq_legacy_f32_constant_100.0(float addrspace(1)* %out) #1 {
25de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  %rsq = call float @llvm.amdgcn.rsq.legacy(float 100.0) #0
26de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  store float %rsq, float addrspace(1)* %out, align 4
27de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  ret void
28de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
29de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
30de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; FUNC-LABEL: {{^}}rsq_legacy_undef_f32:
31de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar; SI-NOT: v_rsq_legacy_f32
32de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainardefine void @rsq_legacy_undef_f32(float addrspace(1)* %out) #1 {
33de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  %rsq = call float @llvm.amdgcn.rsq.legacy(float undef)
34de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  store float %rsq, float addrspace(1)* %out, align 4
35de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar  ret void
36de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar}
37de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar
38de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarattributes #0 = { nounwind readnone }
39de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarattributes #1 = { nounwind }
40