
#pragma OPENCL EXTENSION cl_khr_fp16 : enable

// CHECK-LABEL: {{^}}test_rsqrt_f16:
// CHECK: s_waitcnt
// CHECK-NEXT: v_rsq_f16{{(_e32)?}} v0, v0
// CHECK-NEXT: s_setpc_b64
half test_rsqrt_f16(half x) {
    return rsqrt(x);
}

// CHECK-LABEL: {{^}}test_rsqrt_f32:
// IEEE: v_mul_f32
// IEEE: v_cmp_gt_f32
// IEEE: v_cndmask_b32
// IEEE: v_rsq_f32
// IEEE: v_mul_f32
// IEEE: v_cndmask_b32

// DAZ: s_waitcnt
// DAZ-NEXT: v_rsq_f32{{(_e32)?}} v0, v0
// DAZ-NEXT: s_setpc_b64
float test_rsqrt_f32(float x) {
    return rsqrt(x);
}

// CHECK-LABEL: {{^}}test_rsqrt_f64:
// CHECK: v_rsq_f64
// CHECK: v_cmp_class_f64
// CHECK: v_cndmask_b32
// CHECK: v_cndmask_b32
// CHECK: v_mul_f64
// CHECK: v_fma_f64
// CHECK: v_mul_f64
// CHECK: v_fma_f64
// CHECK: v_fma_f64
double test_rsqrt_f64(double x) {
    return rsqrt(x);
}
