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