brintos

brintos / llvm-project-archived public Read only

0
0
Text · 102.0 KiB · 31fc1ee Raw
1957 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn -mcpu=tahiti -denormal-fp-math=ieee < %s | FileCheck -check-prefixes=GCN,GFX6 %s3; RUN: llc -global-isel -mtriple=amdgcn -mcpu=tahiti -denormal-fp-math=preserve-sign < %s | FileCheck -check-prefixes=GCN,GFX6 %s4 5; RUN: llc -global-isel -mtriple=amdgcn -mcpu=fiji -denormal-fp-math=ieee < %s | FileCheck -check-prefixes=GCN,GFX8 %s6; RUN: llc -global-isel -mtriple=amdgcn -mcpu=fiji -denormal-fp-math=preserve-sign < %s | FileCheck -check-prefixes=GCN,GFX8 %s7 8; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -denormal-fp-math=ieee < %s | FileCheck -check-prefixes=GCN,GFX9 %s9; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -denormal-fp-math=preserve-sign < %s | FileCheck -check-prefixes=GCN,GFX9 %s10 11; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -denormal-fp-math=ieee < %s | FileCheck -check-prefixes=GFX10 %s12; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -denormal-fp-math=preserve-sign < %s | FileCheck -check-prefixes=GFX10 %s13 14; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -denormal-fp-math=ieee < %s | FileCheck -check-prefixes=GFX11 %s15; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -denormal-fp-math=preserve-sign < %s | FileCheck -check-prefixes=GFX11 %s16 17define double @v_fdiv_f64(double %a, double %b) {18; GFX6-LABEL: v_fdiv_f64:19; GFX6:       ; %bb.0:20; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)21; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]22; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[0:1], v[2:3], v[0:1]23; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]24; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v525; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v1126; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]27; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.028; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]29; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.030; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]31; GFX6-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]32; GFX6-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]33; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]34; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]35; GFX6-NEXT:    s_setpc_b64 s[30:31]36;37; GFX8-LABEL: v_fdiv_f64:38; GFX8:       ; %bb.0:39; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)40; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]41; GFX8-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]42; GFX8-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.043; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]44; GFX8-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]45; GFX8-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.046; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]47; GFX8-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]48; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]49; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]50; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]51; GFX8-NEXT:    s_setpc_b64 s[30:31]52;53; GFX9-LABEL: v_fdiv_f64:54; GFX9:       ; %bb.0:55; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)56; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]57; GFX9-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]58; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.059; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]60; GFX9-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]61; GFX9-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.062; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]63; GFX9-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]64; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]65; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]66; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]67; GFX9-NEXT:    s_setpc_b64 s[30:31]68;69; GFX10-LABEL: v_fdiv_f64:70; GFX10:       ; %bb.0:71; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[2:3], v[2:3], v[0:1]73; GFX10-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]74; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]75; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.076; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]77; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.078; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]79; GFX10-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]80; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]81; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]82; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]83; GFX10-NEXT:    s_setpc_b64 s[30:31]84;85; GFX11-LABEL: v_fdiv_f64:86; GFX11:       ; %bb.0:87; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)88; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]89; GFX11-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]90; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)91; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]92; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)93; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.094; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]95; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)96; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.097; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]98; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)99; GFX11-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]100; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]101; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)102; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]103; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]104; GFX11-NEXT:    s_setpc_b64 s[30:31]105  %fdiv = fdiv double %a, %b106  ret double %fdiv107}108 109define double @v_fdiv_f64_afn(double %a, double %b) {110; GCN-LABEL: v_fdiv_f64_afn:111; GCN:       ; %bb.0:112; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GCN-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]114; GCN-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0115; GCN-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]116; GCN-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0117; GCN-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]118; GCN-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]119; GCN-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]120; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]121; GCN-NEXT:    s_setpc_b64 s[30:31]122;123; GFX10-LABEL: v_fdiv_f64_afn:124; GFX10:       ; %bb.0:125; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)126; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]127; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0128; GFX10-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]129; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0130; GFX10-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]131; GFX10-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]132; GFX10-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]133; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]134; GFX10-NEXT:    s_setpc_b64 s[30:31]135;136; GFX11-LABEL: v_fdiv_f64_afn:137; GFX11:       ; %bb.0:138; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]140; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)141; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0142; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)143; GFX11-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]144; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0145; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)146; GFX11-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]147; GFX11-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]148; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)149; GFX11-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]150; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]151; GFX11-NEXT:    s_setpc_b64 s[30:31]152  %fdiv = fdiv afn double %a, %b153  ret double %fdiv154}155 156define double @v_fdiv_f64_ulp25(double %a, double %b) {157; GFX6-LABEL: v_fdiv_f64_ulp25:158; GFX6:       ; %bb.0:159; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)160; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]161; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[0:1], v[2:3], v[0:1]162; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]163; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v5164; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v11165; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]166; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0167; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]168; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0169; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]170; GFX6-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]171; GFX6-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]172; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]173; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]174; GFX6-NEXT:    s_setpc_b64 s[30:31]175;176; GFX8-LABEL: v_fdiv_f64_ulp25:177; GFX8:       ; %bb.0:178; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)179; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]180; GFX8-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]181; GFX8-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0182; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]183; GFX8-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]184; GFX8-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.0185; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]186; GFX8-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]187; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]188; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]189; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]190; GFX8-NEXT:    s_setpc_b64 s[30:31]191;192; GFX9-LABEL: v_fdiv_f64_ulp25:193; GFX9:       ; %bb.0:194; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]196; GFX9-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]197; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0198; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]199; GFX9-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]200; GFX9-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.0201; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]202; GFX9-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]203; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]204; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]205; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]206; GFX9-NEXT:    s_setpc_b64 s[30:31]207;208; GFX10-LABEL: v_fdiv_f64_ulp25:209; GFX10:       ; %bb.0:210; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)211; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[2:3], v[2:3], v[0:1]212; GFX10-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]213; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]214; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0215; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]216; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0217; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]218; GFX10-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]219; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]220; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]221; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]222; GFX10-NEXT:    s_setpc_b64 s[30:31]223;224; GFX11-LABEL: v_fdiv_f64_ulp25:225; GFX11:       ; %bb.0:226; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)227; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]228; GFX11-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]229; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)230; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]231; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)232; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0233; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]234; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)235; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0236; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]237; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)238; GFX11-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]239; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]240; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)241; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]242; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]243; GFX11-NEXT:    s_setpc_b64 s[30:31]244  %fdiv = fdiv double %a, %b, !fpmath !0245  ret double %fdiv246}247 248define double @v_rcp_f64(double %x) {249; GFX6-LABEL: v_rcp_f64:250; GFX6:       ; %bb.0:251; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)252; GFX6-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0253; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.0254; GFX6-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]255; GFX6-NEXT:    v_mov_b32_e32 v10, 0x3ff00000256; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v10257; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v3258; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0259; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]260; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]261; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0262; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]263; GFX6-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]264; GFX6-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]265; GFX6-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]266; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0267; GFX6-NEXT:    s_setpc_b64 s[30:31]268;269; GFX8-LABEL: v_rcp_f64:270; GFX8:       ; %bb.0:271; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX8-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0273; GFX8-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]274; GFX8-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0275; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]276; GFX8-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0277; GFX8-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0278; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]279; GFX8-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]280; GFX8-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]281; GFX8-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]282; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0283; GFX8-NEXT:    s_setpc_b64 s[30:31]284;285; GFX9-LABEL: v_rcp_f64:286; GFX9:       ; %bb.0:287; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)288; GFX9-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0289; GFX9-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]290; GFX9-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0291; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]292; GFX9-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0293; GFX9-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0294; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]295; GFX9-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]296; GFX9-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]297; GFX9-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]298; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0299; GFX9-NEXT:    s_setpc_b64 s[30:31]300;301; GFX10-LABEL: v_rcp_f64:302; GFX10:       ; %bb.0:303; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)304; GFX10-NEXT:    v_div_scale_f64 v[2:3], s4, v[0:1], v[0:1], 1.0305; GFX10-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0306; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]307; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0308; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]309; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0310; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]311; GFX10-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]312; GFX10-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]313; GFX10-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]314; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0315; GFX10-NEXT:    s_setpc_b64 s[30:31]316;317; GFX11-LABEL: v_rcp_f64:318; GFX11:       ; %bb.0:319; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)320; GFX11-NEXT:    v_div_scale_f64 v[2:3], null, v[0:1], v[0:1], 1.0321; GFX11-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0322; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)323; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]324; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)325; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0326; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]327; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)328; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0329; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]330; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)331; GFX11-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]332; GFX11-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]333; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)334; GFX11-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]335; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0336; GFX11-NEXT:    s_setpc_b64 s[30:31]337  %fdiv = fdiv double 1.0, %x338  ret double %fdiv339}340 341define double @v_rcp_f64_arcp(double %x) {342; GFX6-LABEL: v_rcp_f64_arcp:343; GFX6:       ; %bb.0:344; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)345; GFX6-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0346; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.0347; GFX6-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]348; GFX6-NEXT:    v_mov_b32_e32 v10, 0x3ff00000349; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v10350; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v3351; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0352; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]353; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]354; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0355; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]356; GFX6-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]357; GFX6-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]358; GFX6-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]359; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0360; GFX6-NEXT:    s_setpc_b64 s[30:31]361;362; GFX8-LABEL: v_rcp_f64_arcp:363; GFX8:       ; %bb.0:364; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX8-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0366; GFX8-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]367; GFX8-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0368; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]369; GFX8-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0370; GFX8-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0371; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]372; GFX8-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]373; GFX8-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]374; GFX8-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]375; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0376; GFX8-NEXT:    s_setpc_b64 s[30:31]377;378; GFX9-LABEL: v_rcp_f64_arcp:379; GFX9:       ; %bb.0:380; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)381; GFX9-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0382; GFX9-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]383; GFX9-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0384; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]385; GFX9-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0386; GFX9-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0387; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]388; GFX9-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]389; GFX9-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]390; GFX9-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]391; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0392; GFX9-NEXT:    s_setpc_b64 s[30:31]393;394; GFX10-LABEL: v_rcp_f64_arcp:395; GFX10:       ; %bb.0:396; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; GFX10-NEXT:    v_div_scale_f64 v[2:3], s4, v[0:1], v[0:1], 1.0398; GFX10-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0399; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]400; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0401; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]402; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0403; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]404; GFX10-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]405; GFX10-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]406; GFX10-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]407; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0408; GFX10-NEXT:    s_setpc_b64 s[30:31]409;410; GFX11-LABEL: v_rcp_f64_arcp:411; GFX11:       ; %bb.0:412; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)413; GFX11-NEXT:    v_div_scale_f64 v[2:3], null, v[0:1], v[0:1], 1.0414; GFX11-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0415; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)416; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]417; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)418; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0419; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]420; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)421; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0422; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]423; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)424; GFX11-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]425; GFX11-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]426; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)427; GFX11-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]428; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0429; GFX11-NEXT:    s_setpc_b64 s[30:31]430  %fdiv = fdiv arcp double 1.0, %x431  ret double %fdiv432}433 434define double @v_rcp_f64_arcp_afn(double %x) {435; GCN-LABEL: v_rcp_f64_arcp_afn:436; GCN:       ; %bb.0:437; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)438; GCN-NEXT:    v_rcp_f64_e32 v[2:3], v[0:1]439; GCN-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0440; GCN-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]441; GCN-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0442; GCN-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]443; GCN-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[2:3], 1.0444; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[2:3], v[2:3]445; GCN-NEXT:    s_setpc_b64 s[30:31]446;447; GFX10-LABEL: v_rcp_f64_arcp_afn:448; GFX10:       ; %bb.0:449; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)450; GFX10-NEXT:    v_rcp_f64_e32 v[2:3], v[0:1]451; GFX10-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0452; GFX10-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]453; GFX10-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0454; GFX10-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]455; GFX10-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[2:3], 1.0456; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[2:3], v[2:3]457; GFX10-NEXT:    s_setpc_b64 s[30:31]458;459; GFX11-LABEL: v_rcp_f64_arcp_afn:460; GFX11:       ; %bb.0:461; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)462; GFX11-NEXT:    v_rcp_f64_e32 v[2:3], v[0:1]463; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)464; GFX11-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0465; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)466; GFX11-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]467; GFX11-NEXT:    v_fma_f64 v[4:5], -v[0:1], v[2:3], 1.0468; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)469; GFX11-NEXT:    v_fma_f64 v[2:3], v[4:5], v[2:3], v[2:3]470; GFX11-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[2:3], 1.0471; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)472; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[2:3], v[2:3]473; GFX11-NEXT:    s_setpc_b64 s[30:31]474  %fdiv = fdiv arcp afn double 1.0, %x475  ret double %fdiv476}477 478define double @v_rcp_f64_ulp25(double %x) {479; GFX6-LABEL: v_rcp_f64_ulp25:480; GFX6:       ; %bb.0:481; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)482; GFX6-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0483; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.0484; GFX6-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]485; GFX6-NEXT:    v_mov_b32_e32 v10, 0x3ff00000486; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v10487; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v3488; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0489; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]490; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]491; GFX6-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0492; GFX6-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]493; GFX6-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]494; GFX6-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]495; GFX6-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]496; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0497; GFX6-NEXT:    s_setpc_b64 s[30:31]498;499; GFX8-LABEL: v_rcp_f64_ulp25:500; GFX8:       ; %bb.0:501; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX8-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0503; GFX8-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]504; GFX8-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0505; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]506; GFX8-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0507; GFX8-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0508; GFX8-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]509; GFX8-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]510; GFX8-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]511; GFX8-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]512; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0513; GFX8-NEXT:    s_setpc_b64 s[30:31]514;515; GFX9-LABEL: v_rcp_f64_ulp25:516; GFX9:       ; %bb.0:517; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)518; GFX9-NEXT:    v_div_scale_f64 v[2:3], s[4:5], v[0:1], v[0:1], 1.0519; GFX9-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]520; GFX9-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0521; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]522; GFX9-NEXT:    v_div_scale_f64 v[6:7], vcc, 1.0, v[0:1], 1.0523; GFX9-NEXT:    v_fma_f64 v[8:9], -v[2:3], v[4:5], 1.0524; GFX9-NEXT:    v_fma_f64 v[4:5], v[4:5], v[8:9], v[4:5]525; GFX9-NEXT:    v_mul_f64 v[8:9], v[6:7], v[4:5]526; GFX9-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[8:9], v[6:7]527; GFX9-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[8:9]528; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0529; GFX9-NEXT:    s_setpc_b64 s[30:31]530;531; GFX10-LABEL: v_rcp_f64_ulp25:532; GFX10:       ; %bb.0:533; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX10-NEXT:    v_div_scale_f64 v[2:3], s4, v[0:1], v[0:1], 1.0535; GFX10-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0536; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]537; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0538; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]539; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0540; GFX10-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]541; GFX10-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]542; GFX10-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]543; GFX10-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]544; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0545; GFX10-NEXT:    s_setpc_b64 s[30:31]546;547; GFX11-LABEL: v_rcp_f64_ulp25:548; GFX11:       ; %bb.0:549; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)550; GFX11-NEXT:    v_div_scale_f64 v[2:3], null, v[0:1], v[0:1], 1.0551; GFX11-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, 1.0, v[0:1], 1.0552; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)553; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]554; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)555; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0556; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]557; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)558; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0559; GFX11-NEXT:    v_fma_f64 v[4:5], v[4:5], v[6:7], v[4:5]560; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)561; GFX11-NEXT:    v_mul_f64 v[6:7], v[8:9], v[4:5]562; GFX11-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], v[8:9]563; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)564; GFX11-NEXT:    v_div_fmas_f64 v[2:3], v[2:3], v[4:5], v[6:7]565; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[2:3], v[0:1], 1.0566; GFX11-NEXT:    s_setpc_b64 s[30:31]567  %fdiv = fdiv double 1.0, %x, !fpmath !0568  ret double %fdiv569}570 571define double @v_fdiv_f64_afn_ulp25(double %a, double %b) {572; GCN-LABEL: v_fdiv_f64_afn_ulp25:573; GCN:       ; %bb.0:574; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)575; GCN-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]576; GCN-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0577; GCN-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]578; GCN-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0579; GCN-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]580; GCN-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]581; GCN-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]582; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]583; GCN-NEXT:    s_setpc_b64 s[30:31]584;585; GFX10-LABEL: v_fdiv_f64_afn_ulp25:586; GFX10:       ; %bb.0:587; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)588; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]589; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0590; GFX10-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]591; GFX10-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0592; GFX10-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]593; GFX10-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]594; GFX10-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]595; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]596; GFX10-NEXT:    s_setpc_b64 s[30:31]597;598; GFX11-LABEL: v_fdiv_f64_afn_ulp25:599; GFX11:       ; %bb.0:600; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)601; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[2:3]602; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)603; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0604; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)605; GFX11-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]606; GFX11-NEXT:    v_fma_f64 v[6:7], -v[2:3], v[4:5], 1.0607; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)608; GFX11-NEXT:    v_fma_f64 v[4:5], v[6:7], v[4:5], v[4:5]609; GFX11-NEXT:    v_mul_f64 v[6:7], v[0:1], v[4:5]610; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)611; GFX11-NEXT:    v_fma_f64 v[0:1], -v[2:3], v[6:7], v[0:1]612; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[6:7]613; GFX11-NEXT:    s_setpc_b64 s[30:31]614  %fdiv = fdiv afn double %a, %b, !fpmath !0615  ret double %fdiv616}617 618define double @v_fdiv_f64_arcp_ulp25(double %a, double %b) {619; GFX6-LABEL: v_fdiv_f64_arcp_ulp25:620; GFX6:       ; %bb.0:621; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)622; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]623; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[0:1], v[2:3], v[0:1]624; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]625; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v5626; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v11627; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]628; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0629; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]630; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0631; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]632; GFX6-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]633; GFX6-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]634; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]635; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]636; GFX6-NEXT:    s_setpc_b64 s[30:31]637;638; GFX8-LABEL: v_fdiv_f64_arcp_ulp25:639; GFX8:       ; %bb.0:640; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]642; GFX8-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]643; GFX8-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0644; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]645; GFX8-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]646; GFX8-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.0647; GFX8-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]648; GFX8-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]649; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]650; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]651; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]652; GFX8-NEXT:    s_setpc_b64 s[30:31]653;654; GFX9-LABEL: v_fdiv_f64_arcp_ulp25:655; GFX9:       ; %bb.0:656; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[2:3], v[2:3], v[0:1]658; GFX9-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]659; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0660; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]661; GFX9-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]662; GFX9-NEXT:    v_fma_f64 v[10:11], -v[4:5], v[6:7], 1.0663; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[10:11], v[6:7]664; GFX9-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]665; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]666; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]667; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]668; GFX9-NEXT:    s_setpc_b64 s[30:31]669;670; GFX10-LABEL: v_fdiv_f64_arcp_ulp25:671; GFX10:       ; %bb.0:672; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)673; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[2:3], v[2:3], v[0:1]674; GFX10-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]675; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]676; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0677; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]678; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0679; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]680; GFX10-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]681; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]682; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]683; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]684; GFX10-NEXT:    s_setpc_b64 s[30:31]685;686; GFX11-LABEL: v_fdiv_f64_arcp_ulp25:687; GFX11:       ; %bb.0:688; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)689; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]690; GFX11-NEXT:    v_div_scale_f64 v[10:11], vcc_lo, v[0:1], v[2:3], v[0:1]691; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)692; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]693; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)694; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0695; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]696; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)697; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.0698; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]699; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)700; GFX11-NEXT:    v_mul_f64 v[8:9], v[10:11], v[6:7]701; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[8:9], v[10:11]702; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)703; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[8:9]704; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[2:3], v[0:1]705; GFX11-NEXT:    s_setpc_b64 s[30:31]706  %fdiv = fdiv arcp double %a, %b, !fpmath !0707  ret double %fdiv708}709 710define <2 x double> @v_fdiv_v2f64(<2 x double> %a, <2 x double> %b) {711; GFX6-LABEL: v_fdiv_v2f64:712; GFX6:       ; %bb.0:713; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)714; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]715; GFX6-NEXT:    v_div_scale_f64 v[14:15], s[4:5], v[6:7], v[6:7], v[2:3]716; GFX6-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]717; GFX6-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[0:1], v[4:5], v[0:1]718; GFX6-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]719; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.0720; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v19721; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]722; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v9723; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.0724; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]725; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]726; GFX6-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[16:17], 1.0727; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v15728; GFX6-NEXT:    v_fma_f64 v[12:13], v[16:17], v[12:13], v[16:17]729; GFX6-NEXT:    v_mul_f64 v[16:17], v[18:19], v[10:11]730; GFX6-NEXT:    v_fma_f64 v[18:19], -v[8:9], v[16:17], v[18:19]731; GFX6-NEXT:    v_fma_f64 v[8:9], -v[14:15], v[12:13], 1.0732; GFX6-NEXT:    v_div_fmas_f64 v[10:11], v[18:19], v[10:11], v[16:17]733; GFX6-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[12:13]734; GFX6-NEXT:    v_div_scale_f64 v[12:13], s[6:7], v[2:3], v[6:7], v[2:3]735; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[10:11], v[4:5], v[0:1]736; GFX6-NEXT:    v_mul_f64 v[16:17], v[12:13], v[8:9]737; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v13738; GFX6-NEXT:    v_fma_f64 v[18:19], -v[14:15], v[16:17], v[12:13]739; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]740; GFX6-NEXT:    s_nop 1741; GFX6-NEXT:    v_div_fmas_f64 v[8:9], v[18:19], v[8:9], v[16:17]742; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[8:9], v[6:7], v[2:3]743; GFX6-NEXT:    s_setpc_b64 s[30:31]744;745; GFX8-LABEL: v_fdiv_v2f64:746; GFX8:       ; %bb.0:747; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)748; GFX8-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]749; GFX8-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]750; GFX8-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]751; GFX8-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]752; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0753; GFX8-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0754; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]755; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]756; GFX8-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]757; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0758; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]759; GFX8-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.0760; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]761; GFX8-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]762; GFX8-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]763; GFX8-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]764; GFX8-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]765; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]766; GFX8-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]767; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]768; GFX8-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]769; GFX8-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]770; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]771; GFX8-NEXT:    s_setpc_b64 s[30:31]772;773; GFX9-LABEL: v_fdiv_v2f64:774; GFX9:       ; %bb.0:775; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)776; GFX9-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]777; GFX9-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]778; GFX9-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]779; GFX9-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]780; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0781; GFX9-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0782; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]783; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]784; GFX9-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]785; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0786; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]787; GFX9-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.0788; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]789; GFX9-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]790; GFX9-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]791; GFX9-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]792; GFX9-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]793; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]794; GFX9-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]795; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]796; GFX9-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]797; GFX9-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]798; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]799; GFX9-NEXT:    s_setpc_b64 s[30:31]800;801; GFX10-LABEL: v_fdiv_v2f64:802; GFX10:       ; %bb.0:803; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)804; GFX10-NEXT:    v_div_scale_f64 v[8:9], s4, v[4:5], v[4:5], v[0:1]805; GFX10-NEXT:    v_div_scale_f64 v[10:11], s4, v[6:7], v[6:7], v[2:3]806; GFX10-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]807; GFX10-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]808; GFX10-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]809; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0810; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0811; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]812; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]813; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0814; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0815; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]816; GFX10-NEXT:    v_div_scale_f64 v[16:17], s4, v[2:3], v[6:7], v[2:3]817; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]818; GFX10-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]819; GFX10-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]820; GFX10-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]821; GFX10-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]822; GFX10-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]823; GFX10-NEXT:    s_mov_b32 vcc_lo, s4824; GFX10-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]825; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]826; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]827; GFX10-NEXT:    s_setpc_b64 s[30:31]828;829; GFX11-LABEL: v_fdiv_v2f64:830; GFX11:       ; %bb.0:831; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)832; GFX11-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], v[0:1]833; GFX11-NEXT:    v_div_scale_f64 v[10:11], null, v[6:7], v[6:7], v[2:3]834; GFX11-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]835; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)836; GFX11-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]837; GFX11-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]838; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)839; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0840; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0841; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)842; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]843; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]844; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)845; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0846; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0847; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)848; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]849; GFX11-NEXT:    v_div_scale_f64 v[16:17], s0, v[2:3], v[6:7], v[2:3]850; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]851; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)852; GFX11-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]853; GFX11-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]854; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)855; GFX11-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]856; GFX11-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]857; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)858; GFX11-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]859; GFX11-NEXT:    s_mov_b32 vcc_lo, s0860; GFX11-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]861; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)862; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]863; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]864; GFX11-NEXT:    s_setpc_b64 s[30:31]865  %fdiv = fdiv <2 x double> %a, %b866  ret <2 x double> %fdiv867}868 869define <2 x double> @v_fdiv_v2f64_afn(<2 x double> %a, <2 x double> %b) {870; GCN-LABEL: v_fdiv_v2f64_afn:871; GCN:       ; %bb.0:872; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)873; GCN-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]874; GCN-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]875; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0876; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0877; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]878; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]879; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0880; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0881; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]882; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]883; GCN-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]884; GCN-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]885; GCN-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]886; GCN-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]887; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]888; GCN-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]889; GCN-NEXT:    s_setpc_b64 s[30:31]890;891; GFX10-LABEL: v_fdiv_v2f64_afn:892; GFX10:       ; %bb.0:893; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]895; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]896; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0897; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0898; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]899; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]900; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0901; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0902; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]903; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]904; GFX10-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]905; GFX10-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]906; GFX10-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]907; GFX10-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]908; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]909; GFX10-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]910; GFX10-NEXT:    s_setpc_b64 s[30:31]911;912; GFX11-LABEL: v_fdiv_v2f64_afn:913; GFX11:       ; %bb.0:914; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)915; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]916; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]917; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)918; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0919; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0920; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)921; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]922; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]923; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)924; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.0925; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.0926; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)927; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]928; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]929; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)930; GFX11-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]931; GFX11-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]932; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)933; GFX11-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]934; GFX11-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]935; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)936; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]937; GFX11-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]938; GFX11-NEXT:    s_setpc_b64 s[30:31]939  %fdiv = fdiv afn <2 x double> %a, %b940  ret <2 x double> %fdiv941}942 943define <2 x double> @v_fdiv_v2f64_ulp25(<2 x double> %a, <2 x double> %b) {944; GFX6-LABEL: v_fdiv_v2f64_ulp25:945; GFX6:       ; %bb.0:946; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)947; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]948; GFX6-NEXT:    v_div_scale_f64 v[14:15], s[4:5], v[6:7], v[6:7], v[2:3]949; GFX6-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]950; GFX6-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[0:1], v[4:5], v[0:1]951; GFX6-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]952; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.0953; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v19954; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]955; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v9956; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.0957; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]958; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]959; GFX6-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[16:17], 1.0960; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v15961; GFX6-NEXT:    v_fma_f64 v[12:13], v[16:17], v[12:13], v[16:17]962; GFX6-NEXT:    v_mul_f64 v[16:17], v[18:19], v[10:11]963; GFX6-NEXT:    v_fma_f64 v[18:19], -v[8:9], v[16:17], v[18:19]964; GFX6-NEXT:    v_fma_f64 v[8:9], -v[14:15], v[12:13], 1.0965; GFX6-NEXT:    v_div_fmas_f64 v[10:11], v[18:19], v[10:11], v[16:17]966; GFX6-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[12:13]967; GFX6-NEXT:    v_div_scale_f64 v[12:13], s[6:7], v[2:3], v[6:7], v[2:3]968; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[10:11], v[4:5], v[0:1]969; GFX6-NEXT:    v_mul_f64 v[16:17], v[12:13], v[8:9]970; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v13971; GFX6-NEXT:    v_fma_f64 v[18:19], -v[14:15], v[16:17], v[12:13]972; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]973; GFX6-NEXT:    s_nop 1974; GFX6-NEXT:    v_div_fmas_f64 v[8:9], v[18:19], v[8:9], v[16:17]975; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[8:9], v[6:7], v[2:3]976; GFX6-NEXT:    s_setpc_b64 s[30:31]977;978; GFX8-LABEL: v_fdiv_v2f64_ulp25:979; GFX8:       ; %bb.0:980; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)981; GFX8-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]982; GFX8-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]983; GFX8-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]984; GFX8-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]985; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0986; GFX8-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.0987; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]988; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]989; GFX8-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]990; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.0991; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]992; GFX8-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.0993; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]994; GFX8-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]995; GFX8-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]996; GFX8-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]997; GFX8-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]998; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]999; GFX8-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]1000; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1001; GFX8-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]1002; GFX8-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]1003; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1004; GFX8-NEXT:    s_setpc_b64 s[30:31]1005;1006; GFX9-LABEL: v_fdiv_v2f64_ulp25:1007; GFX9:       ; %bb.0:1008; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1009; GFX9-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]1010; GFX9-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]1011; GFX9-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1012; GFX9-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1013; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01014; GFX9-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01015; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1016; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1017; GFX9-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]1018; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01019; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1020; GFX9-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01021; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1022; GFX9-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]1023; GFX9-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]1024; GFX9-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]1025; GFX9-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]1026; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]1027; GFX9-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]1028; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1029; GFX9-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]1030; GFX9-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]1031; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1032; GFX9-NEXT:    s_setpc_b64 s[30:31]1033;1034; GFX10-LABEL: v_fdiv_v2f64_ulp25:1035; GFX10:       ; %bb.0:1036; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1037; GFX10-NEXT:    v_div_scale_f64 v[8:9], s4, v[4:5], v[4:5], v[0:1]1038; GFX10-NEXT:    v_div_scale_f64 v[10:11], s4, v[6:7], v[6:7], v[2:3]1039; GFX10-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]1040; GFX10-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1041; GFX10-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1042; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01043; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01044; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1045; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1046; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01047; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01048; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1049; GFX10-NEXT:    v_div_scale_f64 v[16:17], s4, v[2:3], v[6:7], v[2:3]1050; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1051; GFX10-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]1052; GFX10-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]1053; GFX10-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]1054; GFX10-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]1055; GFX10-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]1056; GFX10-NEXT:    s_mov_b32 vcc_lo, s41057; GFX10-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]1058; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1059; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1060; GFX10-NEXT:    s_setpc_b64 s[30:31]1061;1062; GFX11-LABEL: v_fdiv_v2f64_ulp25:1063; GFX11:       ; %bb.0:1064; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1065; GFX11-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], v[0:1]1066; GFX11-NEXT:    v_div_scale_f64 v[10:11], null, v[6:7], v[6:7], v[2:3]1067; GFX11-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]1068; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1069; GFX11-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1070; GFX11-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1071; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1072; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01073; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01074; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1075; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1076; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1077; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1078; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01079; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01080; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)1081; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1082; GFX11-NEXT:    v_div_scale_f64 v[16:17], s0, v[2:3], v[6:7], v[2:3]1083; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1084; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1085; GFX11-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]1086; GFX11-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]1087; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1088; GFX11-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]1089; GFX11-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]1090; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1091; GFX11-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]1092; GFX11-NEXT:    s_mov_b32 vcc_lo, s01093; GFX11-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]1094; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1095; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1096; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1097; GFX11-NEXT:    s_setpc_b64 s[30:31]1098  %fdiv = fdiv <2 x double> %a, %b, !fpmath !01099  ret <2 x double> %fdiv1100}1101 1102define <2 x double> @v_rcp_v2f64(<2 x double> %x) {1103; GFX6-LABEL: v_rcp_v2f64:1104; GFX6:       ; %bb.0:1105; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01107; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[2:3], v[2:3], 1.01108; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]1109; GFX6-NEXT:    v_mov_b32_e32 v18, 0x3ff000001110; GFX6-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1111; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.01112; GFX6-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01113; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]1114; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.01115; GFX6-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[6:7], 1.01116; GFX6-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1117; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[12:13], v[6:7]1118; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v181119; GFX6-NEXT:    v_mul_f64 v[12:13], v[8:9], v[6:7]1120; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v51121; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[12:13], v[8:9]1122; GFX6-NEXT:    v_fma_f64 v[4:5], -v[10:11], v[14:15], 1.01123; GFX6-NEXT:    v_div_scale_f64 v[16:17], s[6:7], 1.0, v[2:3], 1.01124; GFX6-NEXT:    v_fma_f64 v[4:5], v[14:15], v[4:5], v[14:15]1125; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1126; GFX6-NEXT:    v_mul_f64 v[14:15], v[16:17], v[4:5]1127; GFX6-NEXT:    v_div_fmas_f64 v[6:7], v[8:9], v[6:7], v[12:13]1128; GFX6-NEXT:    v_fma_f64 v[8:9], -v[10:11], v[14:15], v[16:17]1129; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v17, v181130; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v111131; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1132; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[6:7], v[0:1], 1.01133; GFX6-NEXT:    s_nop 01134; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[8:9], v[4:5], v[14:15]1135; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[4:5], v[2:3], 1.01136; GFX6-NEXT:    s_setpc_b64 s[30:31]1137;1138; GFX8-LABEL: v_rcp_v2f64:1139; GFX8:       ; %bb.0:1140; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1141; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01142; GFX8-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01143; GFX8-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01144; GFX8-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1145; GFX8-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1146; GFX8-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01147; GFX8-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01148; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1149; GFX8-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01150; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1151; GFX8-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01152; GFX8-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01153; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1154; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1155; GFX8-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1156; GFX8-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1157; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1158; GFX8-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1159; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1160; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]1161; GFX8-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1162; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01163; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01164; GFX8-NEXT:    s_setpc_b64 s[30:31]1165;1166; GFX9-LABEL: v_rcp_v2f64:1167; GFX9:       ; %bb.0:1168; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1169; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01170; GFX9-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01171; GFX9-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01172; GFX9-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1173; GFX9-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1174; GFX9-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01175; GFX9-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01176; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1177; GFX9-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01178; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1179; GFX9-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01180; GFX9-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01181; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1182; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1183; GFX9-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1184; GFX9-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1185; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1186; GFX9-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1187; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1188; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]1189; GFX9-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1190; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01191; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01192; GFX9-NEXT:    s_setpc_b64 s[30:31]1193;1194; GFX10-LABEL: v_rcp_v2f64:1195; GFX10:       ; %bb.0:1196; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1197; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[0:1], v[0:1], 1.01198; GFX10-NEXT:    v_div_scale_f64 v[6:7], s4, v[2:3], v[2:3], 1.01199; GFX10-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01200; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1201; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1202; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01203; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01204; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1205; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1206; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01207; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01208; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1209; GFX10-NEXT:    v_div_scale_f64 v[12:13], s4, 1.0, v[2:3], 1.01210; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1211; GFX10-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1212; GFX10-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1213; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1214; GFX10-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1215; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1216; GFX10-NEXT:    s_mov_b32 vcc_lo, s41217; GFX10-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1218; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01219; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01220; GFX10-NEXT:    s_setpc_b64 s[30:31]1221;1222; GFX11-LABEL: v_rcp_v2f64:1223; GFX11:       ; %bb.0:1224; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1225; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[0:1], v[0:1], 1.01226; GFX11-NEXT:    v_div_scale_f64 v[6:7], null, v[2:3], v[2:3], 1.01227; GFX11-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01228; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1229; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1230; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1231; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1232; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01233; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01234; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1235; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1236; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1237; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1238; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01239; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01240; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)1241; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1242; GFX11-NEXT:    v_div_scale_f64 v[12:13], s0, 1.0, v[2:3], 1.01243; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1244; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1245; GFX11-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1246; GFX11-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1247; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1248; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1249; GFX11-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1250; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1251; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1252; GFX11-NEXT:    s_mov_b32 vcc_lo, s01253; GFX11-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1254; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1255; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01256; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01257; GFX11-NEXT:    s_setpc_b64 s[30:31]1258  %fdiv = fdiv <2 x double> <double 1.0, double 1.0>, %x1259  ret <2 x double> %fdiv1260}1261 1262define <2 x double> @v_rcp_v2f64_arcp(<2 x double> %x) {1263; GFX6-LABEL: v_rcp_v2f64_arcp:1264; GFX6:       ; %bb.0:1265; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1266; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01267; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[2:3], v[2:3], 1.01268; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]1269; GFX6-NEXT:    v_mov_b32_e32 v18, 0x3ff000001270; GFX6-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1271; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.01272; GFX6-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01273; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]1274; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.01275; GFX6-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[6:7], 1.01276; GFX6-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1277; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[12:13], v[6:7]1278; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v181279; GFX6-NEXT:    v_mul_f64 v[12:13], v[8:9], v[6:7]1280; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v51281; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[12:13], v[8:9]1282; GFX6-NEXT:    v_fma_f64 v[4:5], -v[10:11], v[14:15], 1.01283; GFX6-NEXT:    v_div_scale_f64 v[16:17], s[6:7], 1.0, v[2:3], 1.01284; GFX6-NEXT:    v_fma_f64 v[4:5], v[14:15], v[4:5], v[14:15]1285; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1286; GFX6-NEXT:    v_mul_f64 v[14:15], v[16:17], v[4:5]1287; GFX6-NEXT:    v_div_fmas_f64 v[6:7], v[8:9], v[6:7], v[12:13]1288; GFX6-NEXT:    v_fma_f64 v[8:9], -v[10:11], v[14:15], v[16:17]1289; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v17, v181290; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v111291; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1292; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[6:7], v[0:1], 1.01293; GFX6-NEXT:    s_nop 01294; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[8:9], v[4:5], v[14:15]1295; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[4:5], v[2:3], 1.01296; GFX6-NEXT:    s_setpc_b64 s[30:31]1297;1298; GFX8-LABEL: v_rcp_v2f64_arcp:1299; GFX8:       ; %bb.0:1300; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1301; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01302; GFX8-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01303; GFX8-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01304; GFX8-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1305; GFX8-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1306; GFX8-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01307; GFX8-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01308; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1309; GFX8-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01310; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1311; GFX8-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01312; GFX8-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01313; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1314; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1315; GFX8-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1316; GFX8-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1317; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1318; GFX8-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1319; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1320; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]1321; GFX8-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1322; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01323; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01324; GFX8-NEXT:    s_setpc_b64 s[30:31]1325;1326; GFX9-LABEL: v_rcp_v2f64_arcp:1327; GFX9:       ; %bb.0:1328; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01330; GFX9-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01331; GFX9-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01332; GFX9-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1333; GFX9-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1334; GFX9-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01335; GFX9-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01336; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1337; GFX9-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01338; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1339; GFX9-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01340; GFX9-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01341; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1342; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1343; GFX9-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1344; GFX9-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1345; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1346; GFX9-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1347; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1348; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]1349; GFX9-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1350; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01351; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01352; GFX9-NEXT:    s_setpc_b64 s[30:31]1353;1354; GFX10-LABEL: v_rcp_v2f64_arcp:1355; GFX10:       ; %bb.0:1356; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1357; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[0:1], v[0:1], 1.01358; GFX10-NEXT:    v_div_scale_f64 v[6:7], s4, v[2:3], v[2:3], 1.01359; GFX10-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01360; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1361; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1362; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01363; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01364; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1365; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1366; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01367; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01368; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1369; GFX10-NEXT:    v_div_scale_f64 v[12:13], s4, 1.0, v[2:3], 1.01370; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1371; GFX10-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1372; GFX10-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1373; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1374; GFX10-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1375; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1376; GFX10-NEXT:    s_mov_b32 vcc_lo, s41377; GFX10-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1378; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01379; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01380; GFX10-NEXT:    s_setpc_b64 s[30:31]1381;1382; GFX11-LABEL: v_rcp_v2f64_arcp:1383; GFX11:       ; %bb.0:1384; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[0:1], v[0:1], 1.01386; GFX11-NEXT:    v_div_scale_f64 v[6:7], null, v[2:3], v[2:3], 1.01387; GFX11-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01388; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1389; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1390; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1391; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1392; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01393; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01394; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1395; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1396; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1397; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1398; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01399; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01400; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)1401; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1402; GFX11-NEXT:    v_div_scale_f64 v[12:13], s0, 1.0, v[2:3], 1.01403; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1404; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1405; GFX11-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1406; GFX11-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1407; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1408; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1409; GFX11-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1410; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1411; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1412; GFX11-NEXT:    s_mov_b32 vcc_lo, s01413; GFX11-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1414; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1415; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01416; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01417; GFX11-NEXT:    s_setpc_b64 s[30:31]1418  %fdiv = fdiv arcp <2 x double> <double 1.0, double 1.0>, %x1419  ret <2 x double> %fdiv1420}1421 1422define <2 x double> @v_rcp_v2f64_arcp_afn(<2 x double> %x) {1423; GCN-LABEL: v_rcp_v2f64_arcp_afn:1424; GCN:       ; %bb.0:1425; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1426; GCN-NEXT:    v_rcp_f64_e32 v[4:5], v[0:1]1427; GCN-NEXT:    v_rcp_f64_e32 v[6:7], v[2:3]1428; GCN-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01429; GCN-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01430; GCN-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1431; GCN-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1432; GCN-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01433; GCN-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01434; GCN-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1435; GCN-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1436; GCN-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[4:5], 1.01437; GCN-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], 1.01438; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[4:5]1439; GCN-NEXT:    v_fma_f64 v[2:3], v[2:3], v[6:7], v[6:7]1440; GCN-NEXT:    s_setpc_b64 s[30:31]1441;1442; GFX10-LABEL: v_rcp_v2f64_arcp_afn:1443; GFX10:       ; %bb.0:1444; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1445; GFX10-NEXT:    v_rcp_f64_e32 v[4:5], v[0:1]1446; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[2:3]1447; GFX10-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01448; GFX10-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01449; GFX10-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1450; GFX10-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1451; GFX10-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01452; GFX10-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01453; GFX10-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1454; GFX10-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1455; GFX10-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[4:5], 1.01456; GFX10-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], 1.01457; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[4:5]1458; GFX10-NEXT:    v_fma_f64 v[2:3], v[2:3], v[6:7], v[6:7]1459; GFX10-NEXT:    s_setpc_b64 s[30:31]1460;1461; GFX11-LABEL: v_rcp_v2f64_arcp_afn:1462; GFX11:       ; %bb.0:1463; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1464; GFX11-NEXT:    v_rcp_f64_e32 v[4:5], v[0:1]1465; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[2:3]1466; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1467; GFX11-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01468; GFX11-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01469; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1470; GFX11-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1471; GFX11-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1472; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1473; GFX11-NEXT:    v_fma_f64 v[8:9], -v[0:1], v[4:5], 1.01474; GFX11-NEXT:    v_fma_f64 v[10:11], -v[2:3], v[6:7], 1.01475; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1476; GFX11-NEXT:    v_fma_f64 v[4:5], v[8:9], v[4:5], v[4:5]1477; GFX11-NEXT:    v_fma_f64 v[6:7], v[10:11], v[6:7], v[6:7]1478; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1479; GFX11-NEXT:    v_fma_f64 v[0:1], -v[0:1], v[4:5], 1.01480; GFX11-NEXT:    v_fma_f64 v[2:3], -v[2:3], v[6:7], 1.01481; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1482; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[4:5], v[4:5]1483; GFX11-NEXT:    v_fma_f64 v[2:3], v[2:3], v[6:7], v[6:7]1484; GFX11-NEXT:    s_setpc_b64 s[30:31]1485  %fdiv = fdiv arcp afn <2 x double> <double 1.0, double 1.0>, %x1486  ret <2 x double> %fdiv1487}1488 1489define <2 x double> @v_rcp_v2f64_ulp25(<2 x double> %x) {1490; GFX6-LABEL: v_rcp_v2f64_ulp25:1491; GFX6:       ; %bb.0:1492; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1493; GFX6-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01494; GFX6-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[2:3], v[2:3], 1.01495; GFX6-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]1496; GFX6-NEXT:    v_mov_b32_e32 v18, 0x3ff000001497; GFX6-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1498; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.01499; GFX6-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01500; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]1501; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], 1.0, v[0:1], 1.01502; GFX6-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[6:7], 1.01503; GFX6-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1504; GFX6-NEXT:    v_fma_f64 v[6:7], v[6:7], v[12:13], v[6:7]1505; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v181506; GFX6-NEXT:    v_mul_f64 v[12:13], v[8:9], v[6:7]1507; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v1, v51508; GFX6-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[12:13], v[8:9]1509; GFX6-NEXT:    v_fma_f64 v[4:5], -v[10:11], v[14:15], 1.01510; GFX6-NEXT:    v_div_scale_f64 v[16:17], s[6:7], 1.0, v[2:3], 1.01511; GFX6-NEXT:    v_fma_f64 v[4:5], v[14:15], v[4:5], v[14:15]1512; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1513; GFX6-NEXT:    v_mul_f64 v[14:15], v[16:17], v[4:5]1514; GFX6-NEXT:    v_div_fmas_f64 v[6:7], v[8:9], v[6:7], v[12:13]1515; GFX6-NEXT:    v_fma_f64 v[8:9], -v[10:11], v[14:15], v[16:17]1516; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v17, v181517; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v111518; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1519; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[6:7], v[0:1], 1.01520; GFX6-NEXT:    s_nop 01521; GFX6-NEXT:    v_div_fmas_f64 v[4:5], v[8:9], v[4:5], v[14:15]1522; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[4:5], v[2:3], 1.01523; GFX6-NEXT:    s_setpc_b64 s[30:31]1524;1525; GFX8-LABEL: v_rcp_v2f64_ulp25:1526; GFX8:       ; %bb.0:1527; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1528; GFX8-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01529; GFX8-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01530; GFX8-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01531; GFX8-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1532; GFX8-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1533; GFX8-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01534; GFX8-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01535; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1536; GFX8-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01537; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1538; GFX8-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01539; GFX8-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01540; GFX8-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1541; GFX8-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1542; GFX8-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1543; GFX8-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1544; GFX8-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1545; GFX8-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1546; GFX8-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1547; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]1548; GFX8-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1549; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01550; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01551; GFX8-NEXT:    s_setpc_b64 s[30:31]1552;1553; GFX9-LABEL: v_rcp_v2f64_ulp25:1554; GFX9:       ; %bb.0:1555; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1556; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[4:5], v[0:1], v[0:1], 1.01557; GFX9-NEXT:    v_div_scale_f64 v[6:7], s[4:5], v[2:3], v[2:3], 1.01558; GFX9-NEXT:    v_div_scale_f64 v[16:17], s[4:5], 1.0, v[2:3], 1.01559; GFX9-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1560; GFX9-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1561; GFX9-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01562; GFX9-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01563; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1564; GFX9-NEXT:    v_div_scale_f64 v[12:13], vcc, 1.0, v[0:1], 1.01565; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1566; GFX9-NEXT:    v_fma_f64 v[14:15], -v[4:5], v[8:9], 1.01567; GFX9-NEXT:    v_fma_f64 v[18:19], -v[6:7], v[10:11], 1.01568; GFX9-NEXT:    v_fma_f64 v[8:9], v[8:9], v[14:15], v[8:9]1569; GFX9-NEXT:    v_fma_f64 v[10:11], v[10:11], v[18:19], v[10:11]1570; GFX9-NEXT:    v_mul_f64 v[14:15], v[12:13], v[8:9]1571; GFX9-NEXT:    v_mul_f64 v[18:19], v[16:17], v[10:11]1572; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[12:13]1573; GFX9-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[16:17]1574; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1575; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]1576; GFX9-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1577; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01578; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01579; GFX9-NEXT:    s_setpc_b64 s[30:31]1580;1581; GFX10-LABEL: v_rcp_v2f64_ulp25:1582; GFX10:       ; %bb.0:1583; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1584; GFX10-NEXT:    v_div_scale_f64 v[4:5], s4, v[0:1], v[0:1], 1.01585; GFX10-NEXT:    v_div_scale_f64 v[6:7], s4, v[2:3], v[2:3], 1.01586; GFX10-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01587; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1588; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1589; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01590; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01591; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1592; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1593; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01594; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01595; GFX10-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1596; GFX10-NEXT:    v_div_scale_f64 v[12:13], s4, 1.0, v[2:3], 1.01597; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1598; GFX10-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1599; GFX10-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1600; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1601; GFX10-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1602; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1603; GFX10-NEXT:    s_mov_b32 vcc_lo, s41604; GFX10-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1605; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01606; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01607; GFX10-NEXT:    s_setpc_b64 s[30:31]1608;1609; GFX11-LABEL: v_rcp_v2f64_ulp25:1610; GFX11:       ; %bb.0:1611; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1612; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[0:1], v[0:1], 1.01613; GFX11-NEXT:    v_div_scale_f64 v[6:7], null, v[2:3], v[2:3], 1.01614; GFX11-NEXT:    v_div_scale_f64 v[16:17], vcc_lo, 1.0, v[0:1], 1.01615; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1616; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1617; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1618; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1619; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01620; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01621; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1622; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1623; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1624; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1625; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01626; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01627; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)1628; GFX11-NEXT:    v_fma_f64 v[8:9], v[8:9], v[12:13], v[8:9]1629; GFX11-NEXT:    v_div_scale_f64 v[12:13], s0, 1.0, v[2:3], 1.01630; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]1631; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1632; GFX11-NEXT:    v_mul_f64 v[14:15], v[16:17], v[8:9]1633; GFX11-NEXT:    v_mul_f64 v[18:19], v[12:13], v[10:11]1634; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1635; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[14:15], v[16:17]1636; GFX11-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[18:19], v[12:13]1637; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1638; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[8:9], v[14:15]1639; GFX11-NEXT:    s_mov_b32 vcc_lo, s01640; GFX11-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[10:11], v[18:19]1641; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1642; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[4:5], v[0:1], 1.01643; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[6:7], v[2:3], 1.01644; GFX11-NEXT:    s_setpc_b64 s[30:31]1645  %fdiv = fdiv <2 x double> <double 1.0, double 1.0>, %x, !fpmath !01646  ret <2 x double> %fdiv1647}1648 1649define <2 x double> @v_fdiv_v2f64_afn_ulp25(<2 x double> %a, <2 x double> %b) {1650; GCN-LABEL: v_fdiv_v2f64_afn_ulp25:1651; GCN:       ; %bb.0:1652; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1653; GCN-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1654; GCN-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1655; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01656; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01657; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1658; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1659; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01660; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01661; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1662; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1663; GCN-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1664; GCN-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1665; GCN-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1666; GCN-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1667; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1668; GCN-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1669; GCN-NEXT:    s_setpc_b64 s[30:31]1670;1671; GFX10-LABEL: v_fdiv_v2f64_afn_ulp25:1672; GFX10:       ; %bb.0:1673; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1674; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1675; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1676; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01677; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01678; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1679; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1680; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01681; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01682; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1683; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1684; GFX10-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1685; GFX10-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1686; GFX10-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1687; GFX10-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1688; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1689; GFX10-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1690; GFX10-NEXT:    s_setpc_b64 s[30:31]1691;1692; GFX11-LABEL: v_fdiv_v2f64_afn_ulp25:1693; GFX11:       ; %bb.0:1694; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1695; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1696; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1697; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1698; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01699; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01700; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1701; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1702; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1703; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1704; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01705; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01706; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1707; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1708; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1709; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1710; GFX11-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1711; GFX11-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1712; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1713; GFX11-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1714; GFX11-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1715; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1716; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1717; GFX11-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1718; GFX11-NEXT:    s_setpc_b64 s[30:31]1719  %fdiv = fdiv afn <2 x double> %a, %b, !fpmath !01720  ret <2 x double> %fdiv1721}1722 1723define <2 x double> @v_fdiv_v2f64_arcp_ulp25(<2 x double> %a, <2 x double> %b) {1724; GFX6-LABEL: v_fdiv_v2f64_arcp_ulp25:1725; GFX6:       ; %bb.0:1726; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1727; GFX6-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]1728; GFX6-NEXT:    v_div_scale_f64 v[14:15], s[4:5], v[6:7], v[6:7], v[2:3]1729; GFX6-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]1730; GFX6-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[0:1], v[4:5], v[0:1]1731; GFX6-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]1732; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.01733; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v1, v191734; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]1735; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v91736; GFX6-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.01737; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1738; GFX6-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]1739; GFX6-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[16:17], 1.01740; GFX6-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v151741; GFX6-NEXT:    v_fma_f64 v[12:13], v[16:17], v[12:13], v[16:17]1742; GFX6-NEXT:    v_mul_f64 v[16:17], v[18:19], v[10:11]1743; GFX6-NEXT:    v_fma_f64 v[18:19], -v[8:9], v[16:17], v[18:19]1744; GFX6-NEXT:    v_fma_f64 v[8:9], -v[14:15], v[12:13], 1.01745; GFX6-NEXT:    v_div_fmas_f64 v[10:11], v[18:19], v[10:11], v[16:17]1746; GFX6-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[12:13]1747; GFX6-NEXT:    v_div_scale_f64 v[12:13], s[6:7], v[2:3], v[6:7], v[2:3]1748; GFX6-NEXT:    v_div_fixup_f64 v[0:1], v[10:11], v[4:5], v[0:1]1749; GFX6-NEXT:    v_mul_f64 v[16:17], v[12:13], v[8:9]1750; GFX6-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v131751; GFX6-NEXT:    v_fma_f64 v[18:19], -v[14:15], v[16:17], v[12:13]1752; GFX6-NEXT:    s_xor_b64 vcc, vcc, s[4:5]1753; GFX6-NEXT:    s_nop 11754; GFX6-NEXT:    v_div_fmas_f64 v[8:9], v[18:19], v[8:9], v[16:17]1755; GFX6-NEXT:    v_div_fixup_f64 v[2:3], v[8:9], v[6:7], v[2:3]1756; GFX6-NEXT:    s_setpc_b64 s[30:31]1757;1758; GFX8-LABEL: v_fdiv_v2f64_arcp_ulp25:1759; GFX8:       ; %bb.0:1760; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1761; GFX8-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]1762; GFX8-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]1763; GFX8-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1764; GFX8-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1765; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01766; GFX8-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01767; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1768; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1769; GFX8-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]1770; GFX8-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01771; GFX8-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1772; GFX8-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01773; GFX8-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1774; GFX8-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]1775; GFX8-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]1776; GFX8-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]1777; GFX8-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]1778; GFX8-NEXT:    s_mov_b64 vcc, s[4:5]1779; GFX8-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]1780; GFX8-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1781; GFX8-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]1782; GFX8-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]1783; GFX8-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1784; GFX8-NEXT:    s_setpc_b64 s[30:31]1785;1786; GFX9-LABEL: v_fdiv_v2f64_arcp_ulp25:1787; GFX9:       ; %bb.0:1788; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX9-NEXT:    v_div_scale_f64 v[8:9], s[4:5], v[4:5], v[4:5], v[0:1]1790; GFX9-NEXT:    v_div_scale_f64 v[10:11], s[4:5], v[6:7], v[6:7], v[2:3]1791; GFX9-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1792; GFX9-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1793; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01794; GFX9-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01795; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1796; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1797; GFX9-NEXT:    v_div_scale_f64 v[18:19], vcc, v[0:1], v[4:5], v[0:1]1798; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01799; GFX9-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1800; GFX9-NEXT:    v_fma_f64 v[16:17], -v[10:11], v[14:15], 1.01801; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]1802; GFX9-NEXT:    v_mul_f64 v[16:17], v[18:19], v[12:13]1803; GFX9-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[18:19]1804; GFX9-NEXT:    v_div_scale_f64 v[18:19], s[4:5], v[2:3], v[6:7], v[2:3]1805; GFX9-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[16:17]1806; GFX9-NEXT:    s_mov_b64 vcc, s[4:5]1807; GFX9-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]1808; GFX9-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1809; GFX9-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[20:21], v[18:19]1810; GFX9-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[20:21]1811; GFX9-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1812; GFX9-NEXT:    s_setpc_b64 s[30:31]1813;1814; GFX10-LABEL: v_fdiv_v2f64_arcp_ulp25:1815; GFX10:       ; %bb.0:1816; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1817; GFX10-NEXT:    v_div_scale_f64 v[8:9], s4, v[4:5], v[4:5], v[0:1]1818; GFX10-NEXT:    v_div_scale_f64 v[10:11], s4, v[6:7], v[6:7], v[2:3]1819; GFX10-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]1820; GFX10-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1821; GFX10-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1822; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01823; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01824; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1825; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1826; GFX10-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01827; GFX10-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01828; GFX10-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1829; GFX10-NEXT:    v_div_scale_f64 v[16:17], s4, v[2:3], v[6:7], v[2:3]1830; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1831; GFX10-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]1832; GFX10-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]1833; GFX10-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]1834; GFX10-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]1835; GFX10-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]1836; GFX10-NEXT:    s_mov_b32 vcc_lo, s41837; GFX10-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]1838; GFX10-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1839; GFX10-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1840; GFX10-NEXT:    s_setpc_b64 s[30:31]1841;1842; GFX11-LABEL: v_fdiv_v2f64_arcp_ulp25:1843; GFX11:       ; %bb.0:1844; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; GFX11-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], v[0:1]1846; GFX11-NEXT:    v_div_scale_f64 v[10:11], null, v[6:7], v[6:7], v[2:3]1847; GFX11-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, v[0:1], v[4:5], v[0:1]1848; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1849; GFX11-NEXT:    v_rcp_f64_e32 v[12:13], v[8:9]1850; GFX11-NEXT:    v_rcp_f64_e32 v[14:15], v[10:11]1851; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1852; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01853; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01854; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1855; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1856; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1857; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1858; GFX11-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[12:13], 1.01859; GFX11-NEXT:    v_fma_f64 v[18:19], -v[10:11], v[14:15], 1.01860; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_3)1861; GFX11-NEXT:    v_fma_f64 v[12:13], v[12:13], v[16:17], v[12:13]1862; GFX11-NEXT:    v_div_scale_f64 v[16:17], s0, v[2:3], v[6:7], v[2:3]1863; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]1864; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)1865; GFX11-NEXT:    v_mul_f64 v[18:19], v[20:21], v[12:13]1866; GFX11-NEXT:    v_mul_f64 v[22:23], v[16:17], v[14:15]1867; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1868; GFX11-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[20:21]1869; GFX11-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[22:23], v[16:17]1870; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)1871; GFX11-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[12:13], v[18:19]1872; GFX11-NEXT:    s_mov_b32 vcc_lo, s01873; GFX11-NEXT:    v_div_fmas_f64 v[10:11], v[10:11], v[14:15], v[22:23]1874; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1875; GFX11-NEXT:    v_div_fixup_f64 v[0:1], v[8:9], v[4:5], v[0:1]1876; GFX11-NEXT:    v_div_fixup_f64 v[2:3], v[10:11], v[6:7], v[2:3]1877; GFX11-NEXT:    s_setpc_b64 s[30:31]1878  %fdiv = fdiv arcp <2 x double> %a, %b, !fpmath !01879  ret <2 x double> %fdiv1880}1881 1882define <2 x double> @v_fdiv_v2f64_arcp_afn_ulp25(<2 x double> %a, <2 x double> %b) {1883; GCN-LABEL: v_fdiv_v2f64_arcp_afn_ulp25:1884; GCN:       ; %bb.0:1885; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1886; GCN-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1887; GCN-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1888; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01889; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01890; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1891; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1892; GCN-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01893; GCN-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01894; GCN-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1895; GCN-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1896; GCN-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1897; GCN-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1898; GCN-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1899; GCN-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1900; GCN-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1901; GCN-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1902; GCN-NEXT:    s_setpc_b64 s[30:31]1903;1904; GFX10-LABEL: v_fdiv_v2f64_arcp_afn_ulp25:1905; GFX10:       ; %bb.0:1906; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX10-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1908; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1909; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01910; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01911; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1912; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1913; GFX10-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01914; GFX10-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01915; GFX10-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1916; GFX10-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1917; GFX10-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1918; GFX10-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1919; GFX10-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1920; GFX10-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1921; GFX10-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1922; GFX10-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1923; GFX10-NEXT:    s_setpc_b64 s[30:31]1924;1925; GFX11-LABEL: v_fdiv_v2f64_arcp_afn_ulp25:1926; GFX11:       ; %bb.0:1927; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX11-NEXT:    v_rcp_f64_e32 v[8:9], v[4:5]1929; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[6:7]1930; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1931; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01932; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01933; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1934; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1935; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1936; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1937; GFX11-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[8:9], 1.01938; GFX11-NEXT:    v_fma_f64 v[14:15], -v[6:7], v[10:11], 1.01939; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1940; GFX11-NEXT:    v_fma_f64 v[8:9], v[12:13], v[8:9], v[8:9]1941; GFX11-NEXT:    v_fma_f64 v[10:11], v[14:15], v[10:11], v[10:11]1942; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1943; GFX11-NEXT:    v_mul_f64 v[12:13], v[0:1], v[8:9]1944; GFX11-NEXT:    v_mul_f64 v[14:15], v[2:3], v[10:11]1945; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1946; GFX11-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[12:13], v[0:1]1947; GFX11-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[14:15], v[2:3]1948; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)1949; GFX11-NEXT:    v_fma_f64 v[0:1], v[0:1], v[8:9], v[12:13]1950; GFX11-NEXT:    v_fma_f64 v[2:3], v[2:3], v[10:11], v[14:15]1951; GFX11-NEXT:    s_setpc_b64 s[30:31]1952  %fdiv = fdiv afn arcp <2 x double> %a, %b, !fpmath !01953  ret <2 x double> %fdiv1954}1955 1956!0 = !{float 2.500000e+00}1957