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; RUN: llc -march=amdgcn -mcpu=tonga -mattr=+fp32-denormals -verify-machineinstrs < %s | FileCheck -check-prefix=I754 -check-prefix=FUNC %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs -amdgpu-fast-fdiv < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefix=I754 -check-prefix=FUNC %s 5*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs -enable-unsafe-fp-math < %s | FileCheck -check-prefix=UNSAFE-FP -check-prefix=FUNC %s 6*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=R600 -check-prefix=FUNC %s 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; These tests check that fdiv is expanded correctly and also test that the 9*9880d681SAndroid Build Coastguard Worker; scheduler is scheduling the RECIP_IEEE and MUL_IEEE instructions in separate 10*9880d681SAndroid Build Coastguard Worker; instruction groups. 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; These test check that fdiv using unsafe_fp_math, coarse fp div, and IEEE754 fp div. 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_f32: 15*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[2].W 16*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z, PS 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 19*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 22*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_div_scale_f32 25*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_rcp_f32 26*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_fma_f32 27*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_mul_f32 28*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_fma_f32 29*9880d681SAndroid Build Coastguard Worker; I754-DAG: v_div_fixup_f32 30*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_f32(float addrspace(1)* %out, float %a, float %b) { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %0 = fdiv float %a, %b 33*9880d681SAndroid Build Coastguard Worker store float %0, float addrspace(1)* %out 34*9880d681SAndroid Build Coastguard Worker ret void 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_f32_fast_math: 38*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[2].W 39*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z, PS 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 42*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 45*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 46*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_f32_fast_math(float addrspace(1)* %out, float %a, float %b) { 47*9880d681SAndroid Build Coastguard Workerentry: 48*9880d681SAndroid Build Coastguard Worker %0 = fdiv fast float %a, %b 49*9880d681SAndroid Build Coastguard Worker store float %0, float addrspace(1)* %out 50*9880d681SAndroid Build Coastguard Worker ret void 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_f32_arcp_math: 54*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[2].W 55*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z, PS 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 58*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 61*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 62*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_f32_arcp_math(float addrspace(1)* %out, float %a, float %b) { 63*9880d681SAndroid Build Coastguard Workerentry: 64*9880d681SAndroid Build Coastguard Worker %0 = fdiv arcp float %a, %b 65*9880d681SAndroid Build Coastguard Worker store float %0, float addrspace(1)* %out 66*9880d681SAndroid Build Coastguard Worker ret void 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v2f32: 70*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Z 71*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Y 72*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[3].X, PS 73*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].W, PS 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 76*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 77*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 78*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 81*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 82*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 83*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 86*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 87*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 88*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 89*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 90*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 91*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %a, <2 x float> %b) { 92*9880d681SAndroid Build Coastguard Workerentry: 93*9880d681SAndroid Build Coastguard Worker %0 = fdiv <2 x float> %a, %b 94*9880d681SAndroid Build Coastguard Worker store <2 x float> %0, <2 x float> addrspace(1)* %out 95*9880d681SAndroid Build Coastguard Worker ret void 96*9880d681SAndroid Build Coastguard Worker} 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v2f32_fast_math: 99*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Z 100*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Y 101*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[3].X, PS 102*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].W, PS 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 105*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 106*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 107*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 110*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 111*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 112*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 113*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v2f32_fast_math(<2 x float> addrspace(1)* %out, <2 x float> %a, <2 x float> %b) { 114*9880d681SAndroid Build Coastguard Workerentry: 115*9880d681SAndroid Build Coastguard Worker %0 = fdiv fast <2 x float> %a, %b 116*9880d681SAndroid Build Coastguard Worker store <2 x float> %0, <2 x float> addrspace(1)* %out 117*9880d681SAndroid Build Coastguard Worker ret void 118*9880d681SAndroid Build Coastguard Worker} 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v2f32_arcp_math: 121*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Z 122*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW]}}, KC0[3].Y 123*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[3].X, PS 124*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].W, PS 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 127*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32 128*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 129*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 132*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 133*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 134*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 135*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v2f32_arcp_math(<2 x float> addrspace(1)* %out, <2 x float> %a, <2 x float> %b) { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %0 = fdiv arcp <2 x float> %a, %b 138*9880d681SAndroid Build Coastguard Worker store <2 x float> %0, <2 x float> addrspace(1)* %out 139*9880d681SAndroid Build Coastguard Worker ret void 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v4f32: 143*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 144*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 145*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 146*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 147*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 148*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 149*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 150*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 153*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 154*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 155*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 156*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 157*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 158*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 159*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 162*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 163*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 164*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 165*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 166*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 167*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 168*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 171*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 172*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 173*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 174*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 175*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 176*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 177*9880d681SAndroid Build Coastguard Worker; I754: v_div_scale_f32 178*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 179*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 180*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 181*9880d681SAndroid Build Coastguard Worker; I754: v_div_fixup_f32 182*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v4f32(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in) { 183*9880d681SAndroid Build Coastguard Worker %b_ptr = getelementptr <4 x float>, <4 x float> addrspace(1)* %in, i32 1 184*9880d681SAndroid Build Coastguard Worker %a = load <4 x float>, <4 x float> addrspace(1) * %in 185*9880d681SAndroid Build Coastguard Worker %b = load <4 x float>, <4 x float> addrspace(1) * %b_ptr 186*9880d681SAndroid Build Coastguard Worker %result = fdiv <4 x float> %a, %b 187*9880d681SAndroid Build Coastguard Worker store <4 x float> %result, <4 x float> addrspace(1)* %out 188*9880d681SAndroid Build Coastguard Worker ret void 189*9880d681SAndroid Build Coastguard Worker} 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v4f32_fast_math: 192*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 193*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 194*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 195*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 196*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 197*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 198*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 199*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 202*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 203*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 204*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 205*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 206*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 207*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 208*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 211*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 212*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 213*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 214*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 215*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 216*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 217*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 218*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v4f32_fast_math(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in) { 219*9880d681SAndroid Build Coastguard Worker %b_ptr = getelementptr <4 x float>, <4 x float> addrspace(1)* %in, i32 1 220*9880d681SAndroid Build Coastguard Worker %a = load <4 x float>, <4 x float> addrspace(1) * %in 221*9880d681SAndroid Build Coastguard Worker %b = load <4 x float>, <4 x float> addrspace(1) * %b_ptr 222*9880d681SAndroid Build Coastguard Worker %result = fdiv fast <4 x float> %a, %b 223*9880d681SAndroid Build Coastguard Worker store <4 x float> %result, <4 x float> addrspace(1)* %out 224*9880d681SAndroid Build Coastguard Worker ret void 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}fdiv_v4f32_arcp_math: 228*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 229*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 230*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 231*9880d681SAndroid Build Coastguard Worker; R600-DAG: RECIP_IEEE * T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}} 232*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 233*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 234*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 235*9880d681SAndroid Build Coastguard Worker; R600-DAG: MUL_IEEE {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}, PS 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 238*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 239*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 240*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_rcp_f32_e32 241*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 242*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 243*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 244*9880d681SAndroid Build Coastguard Worker; UNSAFE-FP: v_mul_f32_e32 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 247*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 248*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 249*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 250*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 251*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 252*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_rcp_f32 253*9880d681SAndroid Build Coastguard Worker; SI-DAG: v_mul_f32 254*9880d681SAndroid Build Coastguard Workerdefine void @fdiv_v4f32_arcp_math(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in) { 255*9880d681SAndroid Build Coastguard Worker %b_ptr = getelementptr <4 x float>, <4 x float> addrspace(1)* %in, i32 1 256*9880d681SAndroid Build Coastguard Worker %a = load <4 x float>, <4 x float> addrspace(1) * %in 257*9880d681SAndroid Build Coastguard Worker %b = load <4 x float>, <4 x float> addrspace(1) * %b_ptr 258*9880d681SAndroid Build Coastguard Worker %result = fdiv arcp <4 x float> %a, %b 259*9880d681SAndroid Build Coastguard Worker store <4 x float> %result, <4 x float> addrspace(1)* %out 260*9880d681SAndroid Build Coastguard Worker ret void 261*9880d681SAndroid Build Coastguard Worker} 262