brintos

brintos / llvm-project-archived public Read only

0
0
Text · 910.8 KiB · 11954ab Raw
18922 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mattr=+mad-mac-f32-insts  < %s | FileCheck --check-prefix=SI %s3; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=bonaire < %s | FileCheck --check-prefix=CI %s4; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=tonga < %s | FileCheck --check-prefix=VI %s5; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck --check-prefix=GFX9 %s6; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck --check-prefix=GFX10 %s7; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck --check-prefixes=GFX11,GFX11-TRUE16 %s8; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck --check-prefixes=GFX11,GFX11-FAKE16 %s9; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1150 -mattr=+real-true16 < %s | FileCheck --check-prefixes=GFX1150,GFX1150-TRUE16 %s10; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1150 -mattr=-real-true16 < %s | FileCheck --check-prefixes=GFX1150,GFX1150-FAKE16 %s11; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck --check-prefixes=GFX1200,GFX1200-TRUE16 %s12; RUN:  llc -amdgpu-scalarize-global-loads=false -enable-misched=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck --check-prefixes=GFX1200,GFX1200-FAKE16 %s13 14define amdgpu_kernel void @frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1,15; SI-LABEL: frem_f16:16; SI:       ; %bb.0:17; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x918; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd19; SI-NEXT:    s_mov_b32 s7, 0xf00020; SI-NEXT:    s_mov_b32 s6, -121; SI-NEXT:    s_waitcnt lgkmcnt(0)22; SI-NEXT:    s_mov_b32 s4, s1023; SI-NEXT:    s_mov_b32 s5, s1124; SI-NEXT:    s_mov_b32 s2, s625; SI-NEXT:    s_mov_b32 s3, s726; SI-NEXT:    buffer_load_ushort v0, off, s[4:7], 027; SI-NEXT:    s_waitcnt vmcnt(0)28; SI-NEXT:    v_cvt_f32_f16_e32 v0, v029; SI-NEXT:    buffer_load_ushort v1, off, s[0:3], 0 offset:830; SI-NEXT:    s_waitcnt vmcnt(0)31; SI-NEXT:    v_cvt_f32_f16_e32 v1, v132; SI-NEXT:    s_brev_b32 s0, -233; SI-NEXT:    v_and_b32_e32 v3, 0x7fffffff, v034; SI-NEXT:    v_and_b32_e32 v2, 0x7fffffff, v135; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|36; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]37; SI-NEXT:    v_cvt_f16_f32_e32 v4, v038; SI-NEXT:    s_cbranch_vccz .LBB0_239; SI-NEXT:  ; %bb.1: ; %frem.else40; SI-NEXT:    v_bfi_b32 v5, s0, 0, v041; SI-NEXT:    v_cvt_f32_f16_e32 v4, v442; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v3, v243; SI-NEXT:    v_cndmask_b32_e32 v4, v4, v5, vcc44; SI-NEXT:    s_mov_b64 vcc, exec45; SI-NEXT:    s_cbranch_execz .LBB0_346; SI-NEXT:    s_branch .LBB0_847; SI-NEXT:  .LBB0_2:48; SI-NEXT:    ; implicit-def: $vgpr449; SI-NEXT:    s_mov_b64 vcc, 050; SI-NEXT:  .LBB0_3: ; %frem.compute51; SI-NEXT:    s_mov_b32 s3, 0x7f80000052; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v3|, s353; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v354; SI-NEXT:    s_and_b64 s[0:1], vcc, exec55; SI-NEXT:    v_readfirstlane_b32 s0, v456; SI-NEXT:    s_cselect_b32 s2, s0, 057; SI-NEXT:    v_frexp_mant_f32_e32 v4, v358; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v4, vcc59; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 1160; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v2|, s361; SI-NEXT:    v_frexp_mant_f32_e32 v4, v262; SI-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc63; SI-NEXT:    v_frexp_exp_i32_f32_e32 v2, v264; SI-NEXT:    s_and_b64 s[0:1], vcc, exec65; SI-NEXT:    v_readfirstlane_b32 s0, v266; SI-NEXT:    s_cselect_b32 s3, s0, 067; SI-NEXT:    s_add_i32 s0, s3, -168; SI-NEXT:    v_ldexp_f32_e64 v2, v4, 169; SI-NEXT:    s_not_b32 s1, s070; SI-NEXT:    s_add_i32 s1, s1, s271; SI-NEXT:    v_div_scale_f32 v4, vcc, 1.0, v2, 1.072; SI-NEXT:    v_div_scale_f32 v5, s[4:5], v2, v2, 1.073; SI-NEXT:    v_rcp_f32_e32 v6, v574; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 375; SI-NEXT:    v_fma_f32 v7, -v5, v6, 1.076; SI-NEXT:    v_fma_f32 v6, v7, v6, v677; SI-NEXT:    v_mul_f32_e32 v7, v4, v678; SI-NEXT:    v_fma_f32 v8, -v5, v7, v479; SI-NEXT:    v_fma_f32 v7, v8, v6, v780; SI-NEXT:    v_fma_f32 v4, -v5, v7, v481; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 082; SI-NEXT:    v_div_fmas_f32 v4, v4, v6, v783; SI-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.084; SI-NEXT:    s_cmp_lt_i32 s1, 1285; SI-NEXT:    s_cbranch_scc1 .LBB0_786; SI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader87; SI-NEXT:    s_sub_i32 s1, s2, s388; SI-NEXT:    s_add_i32 s1, s1, 1189; SI-NEXT:  .LBB0_5: ; %frem.loop_body90; SI-NEXT:    ; =>This Inner Loop Header: Depth=191; SI-NEXT:    v_mov_b32_e32 v5, v392; SI-NEXT:    v_mul_f32_e32 v3, v5, v493; SI-NEXT:    v_rndne_f32_e32 v3, v394; SI-NEXT:    v_fma_f32 v3, -v3, v2, v595; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v396; SI-NEXT:    v_add_f32_e32 v6, v3, v297; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc98; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 1199; SI-NEXT:    s_add_i32 s1, s1, -11100; SI-NEXT:    s_cmp_gt_i32 s1, 11101; SI-NEXT:    s_cbranch_scc1 .LBB0_5102; SI-NEXT:  ; %bb.6: ; %Flow103; SI-NEXT:    v_mov_b32_e32 v3, v5104; SI-NEXT:  .LBB0_7: ; %frem.loop_exit105; SI-NEXT:    s_add_i32 s1, s1, -10106; SI-NEXT:    v_ldexp_f32_e64 v3, v3, s1107; SI-NEXT:    v_mul_f32_e32 v4, v3, v4108; SI-NEXT:    v_rndne_f32_e32 v4, v4109; SI-NEXT:    v_fma_f32 v3, -v4, v2, v3110; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v3111; SI-NEXT:    v_add_f32_e32 v2, v3, v2112; SI-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc113; SI-NEXT:    v_ldexp_f32_e64 v2, v2, s0114; SI-NEXT:    v_cvt_f16_f32_e32 v2, v2115; SI-NEXT:    v_cvt_f32_f16_e32 v2, v2116; SI-NEXT:    s_brev_b32 s0, -2117; SI-NEXT:    v_bfi_b32 v4, s0, v2, v0118; SI-NEXT:  .LBB0_8: ; %Flow19119; SI-NEXT:    s_mov_b32 s11, 0xf000120; SI-NEXT:    s_mov_b32 s10, -1121; SI-NEXT:    v_cvt_f16_f32_e32 v1, v1122; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1123; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v1124; SI-NEXT:    v_cvt_f16_f32_e32 v1, v4125; SI-NEXT:    v_cvt_f32_f16_e32 v1, v1126; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0127; SI-NEXT:    v_and_b32_e32 v0, 0x7fff, v0128; SI-NEXT:    s_movk_i32 s0, 0x7c00129; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, v0130; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc131; SI-NEXT:    v_mov_b32_e32 v0, 0x7fc00000132; SI-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc133; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0134; SI-NEXT:    buffer_store_short v0, off, s[8:11], 0135; SI-NEXT:    s_endpgm136;137; CI-LABEL: frem_f16:138; CI:       ; %bb.0:139; CI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x9140; CI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd141; CI-NEXT:    s_mov_b32 s7, 0xf000142; CI-NEXT:    s_mov_b32 s6, -1143; CI-NEXT:    s_mov_b32 s2, s6144; CI-NEXT:    s_waitcnt lgkmcnt(0)145; CI-NEXT:    s_mov_b32 s4, s10146; CI-NEXT:    s_mov_b32 s5, s11147; CI-NEXT:    buffer_load_ushort v0, off, s[4:7], 0148; CI-NEXT:    s_mov_b32 s3, s7149; CI-NEXT:    buffer_load_ushort v1, off, s[0:3], 0 offset:8150; CI-NEXT:    s_brev_b32 s0, -2151; CI-NEXT:    s_waitcnt vmcnt(1)152; CI-NEXT:    v_cvt_f32_f16_e32 v0, v0153; CI-NEXT:    s_waitcnt vmcnt(0)154; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1155; CI-NEXT:    v_cvt_f16_f32_e32 v3, v0156; CI-NEXT:    v_and_b32_e32 v4, 0x7fffffff, v0157; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|158; CI-NEXT:    v_and_b32_e32 v2, 0x7fffffff, v1159; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]160; CI-NEXT:    s_cbranch_vccz .LBB0_2161; CI-NEXT:  ; %bb.1: ; %frem.else162; CI-NEXT:    v_cvt_f32_f16_e32 v3, v3163; CI-NEXT:    v_bfi_b32 v5, s0, 0, v0164; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v2165; CI-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc166; CI-NEXT:    s_cbranch_execz .LBB0_3167; CI-NEXT:    s_branch .LBB0_8168; CI-NEXT:  .LBB0_2:169; CI-NEXT:    ; implicit-def: $vgpr3170; CI-NEXT:  .LBB0_3: ; %frem.compute171; CI-NEXT:    v_frexp_mant_f32_e32 v3, v4172; CI-NEXT:    v_ldexp_f32_e64 v5, v3, 11173; CI-NEXT:    v_frexp_mant_f32_e32 v3, v2174; CI-NEXT:    v_ldexp_f32_e64 v3, v3, 1175; CI-NEXT:    v_div_scale_f32 v9, s[0:1], v3, v3, 1.0176; CI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v2177; CI-NEXT:    v_add_i32_e32 v2, vcc, -1, v8178; CI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4179; CI-NEXT:    v_not_b32_e32 v4, v2180; CI-NEXT:    v_add_i32_e32 v4, vcc, v4, v7181; CI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.0182; CI-NEXT:    v_rcp_f32_e32 v10, v9183; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3184; CI-NEXT:    v_fma_f32 v11, -v9, v10, 1.0185; CI-NEXT:    v_fma_f32 v10, v11, v10, v10186; CI-NEXT:    v_mul_f32_e32 v11, v6, v10187; CI-NEXT:    v_fma_f32 v12, -v9, v11, v6188; CI-NEXT:    v_fma_f32 v11, v12, v10, v11189; CI-NEXT:    v_fma_f32 v6, -v9, v11, v6190; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0191; CI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11192; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4193; CI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0194; CI-NEXT:    s_cbranch_vccnz .LBB0_7195; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader196; CI-NEXT:    v_sub_i32_e32 v4, vcc, v7, v8197; CI-NEXT:    v_add_i32_e32 v4, vcc, 11, v4198; CI-NEXT:  .LBB0_5: ; %frem.loop_body199; CI-NEXT:    ; =>This Inner Loop Header: Depth=1200; CI-NEXT:    v_mov_b32_e32 v7, v5201; CI-NEXT:    v_mul_f32_e32 v5, v7, v6202; CI-NEXT:    v_rndne_f32_e32 v5, v5203; CI-NEXT:    v_fma_f32 v5, -v5, v3, v7204; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v5205; CI-NEXT:    v_add_f32_e32 v8, v5, v3206; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc207; CI-NEXT:    v_add_i32_e32 v4, vcc, -11, v4208; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4209; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 11210; CI-NEXT:    s_cbranch_vccnz .LBB0_5211; CI-NEXT:  ; %bb.6: ; %Flow212; CI-NEXT:    v_mov_b32_e32 v5, v7213; CI-NEXT:  .LBB0_7: ; %frem.loop_exit214; CI-NEXT:    v_add_i32_e32 v4, vcc, -10, v4215; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v4216; CI-NEXT:    v_mul_f32_e32 v5, v4, v6217; CI-NEXT:    v_rndne_f32_e32 v5, v5218; CI-NEXT:    v_fma_f32 v4, -v5, v3, v4219; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v4220; CI-NEXT:    v_add_f32_e32 v3, v4, v3221; CI-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc222; CI-NEXT:    v_ldexp_f32_e32 v2, v3, v2223; CI-NEXT:    v_cvt_f16_f32_e32 v2, v2224; CI-NEXT:    s_brev_b32 s0, -2225; CI-NEXT:    v_cvt_f32_f16_e32 v2, v2226; CI-NEXT:    v_bfi_b32 v3, s0, v2, v0227; CI-NEXT:  .LBB0_8: ; %Flow19228; CI-NEXT:    v_cvt_f16_f32_e32 v1, v1229; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0230; CI-NEXT:    s_movk_i32 s0, 0x7c00231; CI-NEXT:    s_mov_b32 s11, 0xf000232; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1233; CI-NEXT:    v_and_b32_e32 v0, 0x7fff, v0234; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, v0235; CI-NEXT:    v_mov_b32_e32 v0, 0x7fc00000236; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v1237; CI-NEXT:    v_cvt_f16_f32_e32 v1, v3238; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc239; CI-NEXT:    s_mov_b32 s10, -1240; CI-NEXT:    v_cvt_f32_f16_e32 v1, v1241; CI-NEXT:    v_cndmask_b32_e32 v0, v1, v0, vcc242; CI-NEXT:    v_cvt_f16_f32_e32 v0, v0243; CI-NEXT:    buffer_store_short v0, off, s[8:11], 0244; CI-NEXT:    s_endpgm245;246; VI-LABEL: frem_f16:247; VI:       ; %bb.0:248; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24249; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x34250; VI-NEXT:    s_waitcnt lgkmcnt(0)251; VI-NEXT:    v_mov_b32_e32 v0, s2252; VI-NEXT:    v_mov_b32_e32 v1, s3253; VI-NEXT:    s_add_u32 s2, s4, 8254; VI-NEXT:    s_addc_u32 s3, s5, 0255; VI-NEXT:    flat_load_ushort v0, v[0:1]256; VI-NEXT:    v_mov_b32_e32 v1, s2257; VI-NEXT:    v_mov_b32_e32 v2, s3258; VI-NEXT:    flat_load_ushort v1, v[1:2]259; VI-NEXT:    s_waitcnt vmcnt(1)260; VI-NEXT:    v_cvt_f32_f16_e64 v4, |v0|261; VI-NEXT:    s_waitcnt vmcnt(0)262; VI-NEXT:    v_cvt_f32_f16_e64 v2, |v1|263; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v4, v2264; VI-NEXT:    s_cbranch_vccz .LBB0_2265; VI-NEXT:  ; %bb.1: ; %frem.else266; VI-NEXT:    s_movk_i32 s2, 0x7fff267; VI-NEXT:    v_bfi_b32 v3, s2, 0, v0268; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v2269; VI-NEXT:    v_cndmask_b32_e32 v3, v0, v3, vcc270; VI-NEXT:    s_cbranch_execz .LBB0_3271; VI-NEXT:    s_branch .LBB0_8272; VI-NEXT:  .LBB0_2:273; VI-NEXT:    ; implicit-def: $vgpr3274; VI-NEXT:  .LBB0_3: ; %frem.compute275; VI-NEXT:    v_frexp_mant_f32_e32 v3, v4276; VI-NEXT:    v_ldexp_f32 v5, v3, 11277; VI-NEXT:    v_frexp_mant_f32_e32 v3, v2278; VI-NEXT:    v_ldexp_f32 v3, v3, 1279; VI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.0280; VI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v2281; VI-NEXT:    v_add_u32_e32 v2, vcc, -1, v8282; VI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4283; VI-NEXT:    v_not_b32_e32 v4, v2284; VI-NEXT:    v_add_u32_e32 v4, vcc, v4, v7285; VI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.0286; VI-NEXT:    v_rcp_f32_e32 v10, v9287; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3288; VI-NEXT:    v_fma_f32 v11, -v9, v10, 1.0289; VI-NEXT:    v_fma_f32 v10, v11, v10, v10290; VI-NEXT:    v_mul_f32_e32 v11, v6, v10291; VI-NEXT:    v_fma_f32 v12, -v9, v11, v6292; VI-NEXT:    v_fma_f32 v11, v12, v10, v11293; VI-NEXT:    v_fma_f32 v6, -v9, v11, v6294; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0295; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v11296; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4297; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0298; VI-NEXT:    s_cbranch_vccnz .LBB0_7299; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader300; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v8301; VI-NEXT:    v_add_u32_e32 v4, vcc, 11, v4302; VI-NEXT:  .LBB0_5: ; %frem.loop_body303; VI-NEXT:    ; =>This Inner Loop Header: Depth=1304; VI-NEXT:    v_mov_b32_e32 v7, v5305; VI-NEXT:    v_mul_f32_e32 v5, v7, v6306; VI-NEXT:    v_rndne_f32_e32 v5, v5307; VI-NEXT:    v_fma_f32 v5, -v5, v3, v7308; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v5309; VI-NEXT:    v_add_f32_e32 v8, v5, v3310; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc311; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v4312; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4313; VI-NEXT:    v_ldexp_f32 v5, v5, 11314; VI-NEXT:    s_cbranch_vccnz .LBB0_5315; VI-NEXT:  ; %bb.6: ; %Flow316; VI-NEXT:    v_mov_b32_e32 v5, v7317; VI-NEXT:  .LBB0_7: ; %frem.loop_exit318; VI-NEXT:    v_add_u32_e32 v4, vcc, -10, v4319; VI-NEXT:    v_ldexp_f32 v4, v5, v4320; VI-NEXT:    v_mul_f32_e32 v5, v4, v6321; VI-NEXT:    v_rndne_f32_e32 v5, v5322; VI-NEXT:    v_fma_f32 v4, -v5, v3, v4323; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v4324; VI-NEXT:    v_add_f32_e32 v3, v4, v3325; VI-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc326; VI-NEXT:    v_ldexp_f32 v2, v3, v2327; VI-NEXT:    v_cvt_f16_f32_e32 v2, v2328; VI-NEXT:    s_movk_i32 s2, 0x7fff329; VI-NEXT:    v_bfi_b32 v3, s2, v2, v0330; VI-NEXT:  .LBB0_8: ; %Flow19331; VI-NEXT:    v_mov_b32_e32 v4, s0332; VI-NEXT:    s_movk_i32 s0, 0x7c00333; VI-NEXT:    v_mov_b32_e32 v5, s1334; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v1335; VI-NEXT:    v_cmp_nge_f16_e64 s[0:1], |v0|, s0336; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc337; VI-NEXT:    v_mov_b32_e32 v0, 0x7e00338; VI-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc339; VI-NEXT:    flat_store_short v[4:5], v0340; VI-NEXT:    s_endpgm341;342; GFX9-LABEL: frem_f16:343; GFX9:       ; %bb.0:344; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24345; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34346; GFX9-NEXT:    v_mov_b32_e32 v2, 0347; GFX9-NEXT:    s_waitcnt lgkmcnt(0)348; GFX9-NEXT:    global_load_ushort v0, v2, s[2:3]349; GFX9-NEXT:    global_load_ushort v1, v2, s[6:7] offset:8350; GFX9-NEXT:    s_waitcnt vmcnt(1)351; GFX9-NEXT:    v_cvt_f32_f16_e64 v4, |v0|352; GFX9-NEXT:    s_waitcnt vmcnt(0)353; GFX9-NEXT:    v_cvt_f32_f16_e64 v2, |v1|354; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v4, v2355; GFX9-NEXT:    s_cbranch_vccz .LBB0_2356; GFX9-NEXT:  ; %bb.1: ; %frem.else357; GFX9-NEXT:    s_movk_i32 s2, 0x7fff358; GFX9-NEXT:    v_bfi_b32 v3, s2, 0, v0359; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v2360; GFX9-NEXT:    v_cndmask_b32_e32 v3, v0, v3, vcc361; GFX9-NEXT:    s_cbranch_execz .LBB0_3362; GFX9-NEXT:    s_branch .LBB0_8363; GFX9-NEXT:  .LBB0_2:364; GFX9-NEXT:    ; implicit-def: $vgpr3365; GFX9-NEXT:  .LBB0_3: ; %frem.compute366; GFX9-NEXT:    v_frexp_mant_f32_e32 v3, v4367; GFX9-NEXT:    v_ldexp_f32 v5, v3, 11368; GFX9-NEXT:    v_frexp_mant_f32_e32 v3, v2369; GFX9-NEXT:    v_ldexp_f32 v3, v3, 1370; GFX9-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.0371; GFX9-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.0372; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v7, v4373; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v8, v2374; GFX9-NEXT:    v_add_u32_e32 v2, -1, v8375; GFX9-NEXT:    v_not_b32_e32 v4, v2376; GFX9-NEXT:    v_add_u32_e32 v4, v4, v7377; GFX9-NEXT:    v_rcp_f32_e32 v10, v9378; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 3379; GFX9-NEXT:    v_fma_f32 v11, -v9, v10, 1.0380; GFX9-NEXT:    v_fma_f32 v10, v11, v10, v10381; GFX9-NEXT:    v_mul_f32_e32 v11, v6, v10382; GFX9-NEXT:    v_fma_f32 v12, -v9, v11, v6383; GFX9-NEXT:    v_fma_f32 v11, v12, v10, v11384; GFX9-NEXT:    v_fma_f32 v6, -v9, v11, v6385; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 0386; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v11387; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v4388; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.0389; GFX9-NEXT:    s_cbranch_vccnz .LBB0_7390; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader391; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v8392; GFX9-NEXT:    v_add_u32_e32 v4, 11, v4393; GFX9-NEXT:  .LBB0_5: ; %frem.loop_body394; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=1395; GFX9-NEXT:    v_mov_b32_e32 v7, v5396; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v6397; GFX9-NEXT:    v_rndne_f32_e32 v5, v5398; GFX9-NEXT:    v_fma_f32 v5, -v5, v3, v7399; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v5400; GFX9-NEXT:    v_add_f32_e32 v8, v5, v3401; GFX9-NEXT:    v_add_u32_e32 v4, -11, v4402; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc403; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v4404; GFX9-NEXT:    v_ldexp_f32 v5, v5, 11405; GFX9-NEXT:    s_cbranch_vccnz .LBB0_5406; GFX9-NEXT:  ; %bb.6: ; %Flow407; GFX9-NEXT:    v_mov_b32_e32 v5, v7408; GFX9-NEXT:  .LBB0_7: ; %frem.loop_exit409; GFX9-NEXT:    v_add_u32_e32 v4, -10, v4410; GFX9-NEXT:    v_ldexp_f32 v4, v5, v4411; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v6412; GFX9-NEXT:    v_rndne_f32_e32 v5, v5413; GFX9-NEXT:    v_fma_f32 v4, -v5, v3, v4414; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v4415; GFX9-NEXT:    v_add_f32_e32 v3, v4, v3416; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc417; GFX9-NEXT:    v_ldexp_f32 v2, v3, v2418; GFX9-NEXT:    v_cvt_f16_f32_e32 v2, v2419; GFX9-NEXT:    s_movk_i32 s2, 0x7fff420; GFX9-NEXT:    v_bfi_b32 v3, s2, v2, v0421; GFX9-NEXT:  .LBB0_8: ; %Flow19422; GFX9-NEXT:    s_movk_i32 s2, 0x7c00423; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v1424; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s2425; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc426; GFX9-NEXT:    v_mov_b32_e32 v0, 0x7e00427; GFX9-NEXT:    v_mov_b32_e32 v2, 0428; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc429; GFX9-NEXT:    global_store_short v2, v0, s[0:1]430; GFX9-NEXT:    s_endpgm431;432; GFX10-LABEL: frem_f16:433; GFX10:       ; %bb.0:434; GFX10-NEXT:    s_clause 0x1435; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24436; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34437; GFX10-NEXT:    v_mov_b32_e32 v2, 0438; GFX10-NEXT:    s_waitcnt lgkmcnt(0)439; GFX10-NEXT:    s_clause 0x1440; GFX10-NEXT:    global_load_ushort v0, v2, s[2:3]441; GFX10-NEXT:    global_load_ushort v1, v2, s[6:7] offset:8442; GFX10-NEXT:    s_waitcnt vmcnt(1)443; GFX10-NEXT:    v_cvt_f32_f16_e64 v3, |v0|444; GFX10-NEXT:    s_waitcnt vmcnt(0)445; GFX10-NEXT:    v_cvt_f32_f16_e64 v2, |v1|446; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v3, v2447; GFX10-NEXT:    s_cbranch_vccz .LBB0_2448; GFX10-NEXT:  ; %bb.1: ; %frem.else449; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, 0, v0450; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v3, v2451; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo452; GFX10-NEXT:    s_cbranch_execz .LBB0_3453; GFX10-NEXT:    s_branch .LBB0_8454; GFX10-NEXT:  .LBB0_2:455; GFX10-NEXT:    ; implicit-def: $vgpr4456; GFX10-NEXT:  .LBB0_3: ; %frem.compute457; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v3458; GFX10-NEXT:    v_frexp_mant_f32_e32 v3, v3459; GFX10-NEXT:    v_readfirstlane_b32 s2, v5460; GFX10-NEXT:    v_ldexp_f32 v4, v3, 11461; GFX10-NEXT:    v_frexp_mant_f32_e32 v3, v2462; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v2, v2463; GFX10-NEXT:    v_ldexp_f32 v3, v3, 1464; GFX10-NEXT:    v_readfirstlane_b32 s3, v2465; GFX10-NEXT:    v_add_nc_u32_e32 v2, -1, v2466; GFX10-NEXT:    v_div_scale_f32 v7, s4, v3, v3, 1.0467; GFX10-NEXT:    v_not_b32_e32 v6, v2468; GFX10-NEXT:    v_rcp_f32_e32 v8, v7469; GFX10-NEXT:    v_add_nc_u32_e32 v6, v6, v5470; GFX10-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.0471; GFX10-NEXT:    s_denorm_mode 15472; GFX10-NEXT:    v_fma_f32 v9, -v7, v8, 1.0473; GFX10-NEXT:    v_fmac_f32_e32 v8, v9, v8474; GFX10-NEXT:    v_mul_f32_e32 v9, v5, v8475; GFX10-NEXT:    v_fma_f32 v10, -v7, v9, v5476; GFX10-NEXT:    v_fmac_f32_e32 v9, v10, v8477; GFX10-NEXT:    v_fma_f32 v5, -v7, v9, v5478; GFX10-NEXT:    s_denorm_mode 12479; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v9480; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6481; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0482; GFX10-NEXT:    s_cbranch_vccnz .LBB0_7483; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader484; GFX10-NEXT:    s_sub_i32 s2, s2, s3485; GFX10-NEXT:    s_add_i32 s2, s2, 11486; GFX10-NEXT:  .LBB0_5: ; %frem.loop_body487; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=1488; GFX10-NEXT:    v_mov_b32_e32 v7, v4489; GFX10-NEXT:    s_add_i32 s2, s2, -11490; GFX10-NEXT:    s_cmp_gt_i32 s2, 11491; GFX10-NEXT:    v_mul_f32_e32 v4, v7, v5492; GFX10-NEXT:    v_rndne_f32_e32 v4, v4493; GFX10-NEXT:    v_fma_f32 v4, -v4, v3, v7494; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4495; GFX10-NEXT:    v_add_f32_e32 v6, v4, v3496; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo497; GFX10-NEXT:    v_ldexp_f32 v4, v4, 11498; GFX10-NEXT:    s_cbranch_scc1 .LBB0_5499; GFX10-NEXT:  ; %bb.6: ; %Flow500; GFX10-NEXT:    v_mov_b32_e32 v6, s2501; GFX10-NEXT:    v_mov_b32_e32 v4, v7502; GFX10-NEXT:  .LBB0_7: ; %frem.loop_exit503; GFX10-NEXT:    v_add_nc_u32_e32 v6, -10, v6504; GFX10-NEXT:    v_ldexp_f32 v4, v4, v6505; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v5506; GFX10-NEXT:    v_rndne_f32_e32 v5, v5507; GFX10-NEXT:    v_fma_f32 v4, -v5, v3, v4508; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4509; GFX10-NEXT:    v_add_f32_e32 v3, v4, v3510; GFX10-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo511; GFX10-NEXT:    v_ldexp_f32 v2, v3, v2512; GFX10-NEXT:    v_cvt_f16_f32_e32 v2, v2513; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, v2, v0514; GFX10-NEXT:  .LBB0_8: ; %Flow19515; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1516; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|517; GFX10-NEXT:    v_mov_b32_e32 v2, 0518; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo519; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v4, vcc_lo520; GFX10-NEXT:    global_store_short v2, v0, s[0:1]521; GFX10-NEXT:    s_endpgm522;523; GFX11-TRUE16-LABEL: frem_f16:524; GFX11-TRUE16:       ; %bb.0:525; GFX11-TRUE16-NEXT:    s_clause 0x1526; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24527; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34528; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v0, 0529; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)530; GFX11-TRUE16-NEXT:    s_clause 0x1531; GFX11-TRUE16-NEXT:    global_load_d16_b16 v1, v0, s[2:3]532; GFX11-TRUE16-NEXT:    global_load_d16_b16 v0, v0, s[4:5] offset:8533; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)534; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v3, |v1.l|535; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)536; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v2, |v0.l|537; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)538; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v3, v2539; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB0_2540; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else541; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v1.l542; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, 0543; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v3, v2544; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)545; GFX11-TRUE16-NEXT:    v_bfi_b32 v4, 0x7fff, v5, v4546; GFX11-TRUE16-NEXT:    v_cndmask_b16 v4.l, v1.l, v4.l, vcc_lo547; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB0_3548; GFX11-TRUE16-NEXT:    s_branch .LBB0_8549; GFX11-TRUE16-NEXT:  .LBB0_2:550; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr4551; GFX11-TRUE16-NEXT:  .LBB0_3: ; %frem.compute552; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v3553; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, v3554; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)555; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v5556; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v3, 11557; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, v2558; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, v2559; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)560; GFX11-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 1561; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v2562; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v2563; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)564; GFX11-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.0565; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v2566; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)567; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v8, v7568; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v5569; GFX11-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.0570; GFX11-TRUE16-NEXT:    s_denorm_mode 15571; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)572; GFX11-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.0573; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)574; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v8575; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v8576; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)577; GFX11-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v5578; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v8579; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)580; GFX11-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v5581; GFX11-TRUE16-NEXT:    s_denorm_mode 12582; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9583; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6584; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)585; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0586; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_7587; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader588; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s3589; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)590; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 11591; GFX11-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body592; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1593; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)594; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v4595; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -11596; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 11597; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)598; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v5599; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v4, v4600; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)601; GFX11-TRUE16-NEXT:    v_fma_f32 v4, -v4, v3, v7602; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4603; GFX11-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v3604; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)605; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo606; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11607; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5608; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow609; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s2610; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v7611; GFX11-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit612; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)613; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6614; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6615; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)616; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v5617; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v5, v5618; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)619; GFX11-TRUE16-NEXT:    v_fma_f32 v4, -v5, v3, v4620; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4621; GFX11-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v3622; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)623; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo624; GFX11-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v2625; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v1.l626; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)627; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2628; GFX11-TRUE16-NEXT:    v_bfi_b32 v4, 0x7fff, v2, v3629; GFX11-TRUE16-NEXT:  .LBB0_8: ; %Flow19630; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v0.l631; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1.l|632; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, 0633; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo634; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)635; GFX11-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v4.l, s2636; GFX11-TRUE16-NEXT:    global_store_b16 v2, v0, s[0:1]637; GFX11-TRUE16-NEXT:    s_endpgm638;639; GFX11-FAKE16-LABEL: frem_f16:640; GFX11-FAKE16:       ; %bb.0:641; GFX11-FAKE16-NEXT:    s_clause 0x1642; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x24643; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x34644; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 0645; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)646; GFX11-FAKE16-NEXT:    s_clause 0x1647; GFX11-FAKE16-NEXT:    global_load_u16 v0, v1, s[2:3]648; GFX11-FAKE16-NEXT:    global_load_u16 v1, v1, s[4:5] offset:8649; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)650; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v3, |v0|651; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)652; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v2, |v1|653; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)654; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v3, v2655; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB0_2656; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else657; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, 0, v0658; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v3, v2659; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)660; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo661; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB0_3662; GFX11-FAKE16-NEXT:    s_branch .LBB0_8663; GFX11-FAKE16-NEXT:  .LBB0_2:664; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr4665; GFX11-FAKE16-NEXT:  .LBB0_3: ; %frem.compute666; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v3667; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, v3668; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)669; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v5670; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v3, 11671; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, v2672; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, v2673; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)674; GFX11-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 1675; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v2676; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v2677; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)678; GFX11-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.0679; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v2680; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)681; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v8, v7682; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v5683; GFX11-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.0684; GFX11-FAKE16-NEXT:    s_denorm_mode 15685; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)686; GFX11-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.0687; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)688; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v8689; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v8690; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)691; GFX11-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v5692; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v8693; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)694; GFX11-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v5695; GFX11-FAKE16-NEXT:    s_denorm_mode 12696; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9697; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6698; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)699; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0700; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_7701; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader702; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s3703; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)704; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 11705; GFX11-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body706; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1707; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)708; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v4709; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -11710; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 11711; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)712; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v5713; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v4, v4714; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)715; GFX11-FAKE16-NEXT:    v_fma_f32 v4, -v4, v3, v7716; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4717; GFX11-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v3718; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)719; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo720; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11721; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5722; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow723; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, s2724; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v7725; GFX11-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit726; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)727; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6728; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6729; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)730; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v5731; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v5, v5732; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)733; GFX11-FAKE16-NEXT:    v_fma_f32 v4, -v5, v3, v4734; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4735; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v3736; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)737; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo738; GFX11-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v2739; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)740; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2741; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, v2, v0742; GFX11-FAKE16-NEXT:  .LBB0_8: ; %Flow19743; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1744; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|745; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, 0746; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo747; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v4, vcc_lo748; GFX11-FAKE16-NEXT:    global_store_b16 v2, v0, s[0:1]749; GFX11-FAKE16-NEXT:    s_endpgm750;751; GFX1150-TRUE16-LABEL: frem_f16:752; GFX1150-TRUE16:       ; %bb.0:753; GFX1150-TRUE16-NEXT:    s_clause 0x1754; GFX1150-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24755; GFX1150-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34756; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v1, 0757; GFX1150-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)758; GFX1150-TRUE16-NEXT:    s_clause 0x1759; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v0, v1, s[10:11]760; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v1, v1, s[0:1] offset:8761; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(1)762; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s0, v0763; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)764; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s1, v1765; GFX1150-TRUE16-NEXT:    s_and_b32 s0, s0, 0x7fff766; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s1, 0x7fff767; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s1, s0768; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s0, s2769; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)770; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s1, s0771; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB0_2772; GFX1150-TRUE16-NEXT:  ; %bb.1: ; %frem.else773; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l774; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 0775; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s1, s0776; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 0777; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)778; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v3, v2779; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v2.l, s2780; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB0_3781; GFX1150-TRUE16-NEXT:    s_branch .LBB0_8782; GFX1150-TRUE16-NEXT:  .LBB0_2:783; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr2784; GFX1150-TRUE16-NEXT:  .LBB0_3: ; %frem.compute785; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s0786; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s1787; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1788; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)789; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 1790; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v2, 11791; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s0792; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)793; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s1, v5794; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.0795; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)796; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s0, v2797; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v2798; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v8, v7799; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)800; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v6, v2801; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v5802; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.0803; GFX1150-TRUE16-NEXT:    s_denorm_mode 15804; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)805; GFX1150-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.0806; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v8807; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)808; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v8809; GFX1150-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v5810; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)811; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v8812; GFX1150-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v5813; GFX1150-TRUE16-NEXT:    s_denorm_mode 12814; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)815; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9816; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6817; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0818; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_7819; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader820; GFX1150-TRUE16-NEXT:    s_sub_i32 s0, s1, s0821; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)822; GFX1150-TRUE16-NEXT:    s_add_i32 s0, s0, 11823; GFX1150-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body824; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=1825; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)826; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, v4827; GFX1150-TRUE16-NEXT:    s_add_i32 s0, s0, -11828; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s0, 11829; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)830; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v5831; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v4, v4832; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)833; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v4834; GFX1150-TRUE16-NEXT:    v_fma_f32 v4, v4, v3, v7835; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)836; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4837; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v3838; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo839; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)840; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 11841; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_5842; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow843; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, s0844; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, v7845; GFX1150-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit846; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)847; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6848; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v6849; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)850; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v5851; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v5, v5852; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)853; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v5854; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v4, v5, v3855; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)856; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4857; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v3858; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo859; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)860; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v2861; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v0.l862; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v2863; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)864; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v3865; GFX1150-TRUE16-NEXT:  .LBB0_8: ; %Flow19866; GFX1150-TRUE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0867; GFX1150-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l868; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)869; GFX1150-TRUE16-NEXT:    v_cmp_nle_f16_e64 s0, 0x7c00, v0.l870; GFX1150-TRUE16-NEXT:    s_and_b32 s0, s0, vcc_lo871; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v2.l, s0872; GFX1150-TRUE16-NEXT:    global_store_b16 v3, v0, s[8:9]873; GFX1150-TRUE16-NEXT:    s_endpgm874;875; GFX1150-FAKE16-LABEL: frem_f16:876; GFX1150-FAKE16:       ; %bb.0:877; GFX1150-FAKE16-NEXT:    s_clause 0x1878; GFX1150-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x24879; GFX1150-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x34880; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v1, 0881; GFX1150-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)882; GFX1150-FAKE16-NEXT:    s_clause 0x1883; GFX1150-FAKE16-NEXT:    global_load_u16 v0, v1, s[10:11]884; GFX1150-FAKE16-NEXT:    global_load_u16 v1, v1, s[0:1] offset:8885; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(1)886; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s0, v0887; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)888; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s1, v1889; GFX1150-FAKE16-NEXT:    s_and_b32 s0, s0, 0x7fff890; GFX1150-FAKE16-NEXT:    s_and_b32 s2, s1, 0x7fff891; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s1, s0892; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s0, s2893; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)894; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s1, s0895; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB0_2896; GFX1150-FAKE16-NEXT:  ; %bb.1: ; %frem.else897; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s1, s0898; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, 0, v0899; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 0900; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)901; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo902; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB0_3903; GFX1150-FAKE16-NEXT:    s_branch .LBB0_8904; GFX1150-FAKE16-NEXT:  .LBB0_2:905; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr2906; GFX1150-FAKE16-NEXT:  .LBB0_3: ; %frem.compute907; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s0908; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s1909; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1910; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)911; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 1912; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v2, 11913; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s0914; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)915; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s1, v5916; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.0917; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)918; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s0, v2919; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v2920; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v8, v7921; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)922; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v6, v2923; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v5924; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.0925; GFX1150-FAKE16-NEXT:    s_denorm_mode 15926; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)927; GFX1150-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.0928; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v8929; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)930; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v8931; GFX1150-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v5932; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)933; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v8934; GFX1150-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v5935; GFX1150-FAKE16-NEXT:    s_denorm_mode 12936; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)937; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v9938; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v6939; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.0940; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_7941; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader942; GFX1150-FAKE16-NEXT:    s_sub_i32 s0, s1, s0943; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)944; GFX1150-FAKE16-NEXT:    s_add_i32 s0, s0, 11945; GFX1150-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body946; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=1947; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)948; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, v4949; GFX1150-FAKE16-NEXT:    s_add_i32 s0, s0, -11950; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s0, 11951; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)952; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v5953; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v4, v4954; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)955; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v4956; GFX1150-FAKE16-NEXT:    v_fma_f32 v4, v4, v3, v7957; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)958; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4959; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v3960; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo961; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)962; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 11963; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_5964; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow965; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, s0966; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, v7967; GFX1150-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit968; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)969; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v6970; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v6971; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)972; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v5973; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v5, v5974; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)975; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v5976; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v4, v5, v3977; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)978; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v4979; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v3980; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo981; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)982; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v2983; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v2984; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)985; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v0986; GFX1150-FAKE16-NEXT:  .LBB0_8: ; %Flow19987; GFX1150-FAKE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v0988; GFX1150-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1989; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)990; GFX1150-FAKE16-NEXT:    v_cmp_nle_f16_e64 s0, 0x7c00, v0991; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s0, vcc_lo992; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v2, vcc_lo993; GFX1150-FAKE16-NEXT:    global_store_b16 v3, v0, s[8:9]994; GFX1150-FAKE16-NEXT:    s_endpgm995;996; GFX1200-TRUE16-LABEL: frem_f16:997; GFX1200-TRUE16:       ; %bb.0:998; GFX1200-TRUE16-NEXT:    s_clause 0x1999; GFX1200-TRUE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x241000; GFX1200-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x341001; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v1, 01002; GFX1200-TRUE16-NEXT:    s_wait_kmcnt 0x01003; GFX1200-TRUE16-NEXT:    s_clause 0x11004; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v0, v1, s[10:11]1005; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v1, v1, s[0:1] offset:81006; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x11007; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s0, v01008; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x01009; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s1, v11010; GFX1200-TRUE16-NEXT:    s_and_b32 s0, s0, 0x7fff1011; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s1, 0x7fff1012; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s1, s01013; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s0, s21014; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)1015; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s1, s01016; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB0_21017; GFX1200-TRUE16-NEXT:  ; %bb.1: ; %frem.else1018; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l1019; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 01020; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s1, s01021; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 01022; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1023; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v3, v21024; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v2.l, s21025; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB0_31026; GFX1200-TRUE16-NEXT:    s_branch .LBB0_81027; GFX1200-TRUE16-NEXT:  .LBB0_2:1028; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr21029; GFX1200-TRUE16-NEXT:  .LBB0_3: ; %frem.compute1030; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s01031; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s11032; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s11033; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)1034; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 11035; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v2, 111036; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s01037; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1038; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s1, v51039; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.01040; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)1041; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s0, v21042; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v21043; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v8, v71044; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1045; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v6, v21046; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v51047; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.01048; GFX1200-TRUE16-NEXT:    s_denorm_mode 151049; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1050; GFX1200-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.01051; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v81052; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1053; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v81054; GFX1200-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v51055; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1056; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v81057; GFX1200-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v51058; GFX1200-TRUE16-NEXT:    s_denorm_mode 121059; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1060; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v91061; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v61062; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.01063; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB0_71064; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader1065; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s0, s1, s01066; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1067; GFX1200-TRUE16-NEXT:    s_add_co_i32 s0, s0, 111068; GFX1200-TRUE16-NEXT:  .LBB0_5: ; %frem.loop_body1069; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=11070; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1071; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, v41072; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1073; GFX1200-TRUE16-NEXT:    s_add_co_i32 s0, s0, -111074; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1075; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s0, 111076; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v51077; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1078; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v4, v41079; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v41080; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1081; GFX1200-TRUE16-NEXT:    v_fma_f32 v4, v4, v3, v71082; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v41083; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v31084; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)1085; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1086; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo1087; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 111088; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB0_51089; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow1090; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, s01091; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, v71092; GFX1200-TRUE16-NEXT:  .LBB0_7: ; %frem.loop_exit1093; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1094; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v61095; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v61096; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1097; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v51098; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v5, v51099; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1100; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v51101; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v4, v5, v31102; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1103; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v41104; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v31105; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)1106; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo1107; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1108; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v21109; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v0.l1110; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v21111; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1112; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v31113; GFX1200-TRUE16-NEXT:  .LBB0_8: ; %Flow191114; GFX1200-TRUE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v01115; GFX1200-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l1116; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1117; GFX1200-TRUE16-NEXT:    v_cmp_nle_f16_e64 s0, 0x7c00, v0.l1118; GFX1200-TRUE16-NEXT:    s_and_b32 s0, s0, vcc_lo1119; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1120; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v2.l, s01121; GFX1200-TRUE16-NEXT:    global_store_b16 v3, v0, s[8:9]1122; GFX1200-TRUE16-NEXT:    s_endpgm1123;1124; GFX1200-FAKE16-LABEL: frem_f16:1125; GFX1200-FAKE16:       ; %bb.0:1126; GFX1200-FAKE16-NEXT:    s_clause 0x11127; GFX1200-FAKE16-NEXT:    s_load_b128 s[8:11], s[4:5], 0x241128; GFX1200-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x341129; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v1, 01130; GFX1200-FAKE16-NEXT:    s_wait_kmcnt 0x01131; GFX1200-FAKE16-NEXT:    s_clause 0x11132; GFX1200-FAKE16-NEXT:    global_load_u16 v0, v1, s[10:11]1133; GFX1200-FAKE16-NEXT:    global_load_u16 v1, v1, s[0:1] offset:81134; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x11135; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s0, v01136; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x01137; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s1, v11138; GFX1200-FAKE16-NEXT:    s_and_b32 s0, s0, 0x7fff1139; GFX1200-FAKE16-NEXT:    s_and_b32 s2, s1, 0x7fff1140; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s1, s01141; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s0, s21142; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)1143; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s1, s01144; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB0_21145; GFX1200-FAKE16-NEXT:  ; %bb.1: ; %frem.else1146; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s1, s01147; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, 0, v01148; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 01149; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1150; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo1151; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB0_31152; GFX1200-FAKE16-NEXT:    s_branch .LBB0_81153; GFX1200-FAKE16-NEXT:  .LBB0_2:1154; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr21155; GFX1200-FAKE16-NEXT:  .LBB0_3: ; %frem.compute1156; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s01157; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s11158; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s11159; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)1160; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 11161; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v2, 111162; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s01163; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)1164; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s1, v51165; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.01166; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)1167; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s0, v21168; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v21169; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v8, v71170; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1171; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v6, v21172; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v51173; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.01174; GFX1200-FAKE16-NEXT:    s_denorm_mode 151175; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1176; GFX1200-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.01177; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v81178; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1179; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v81180; GFX1200-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v51181; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1182; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v81183; GFX1200-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v51184; GFX1200-FAKE16-NEXT:    s_denorm_mode 121185; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)1186; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)1187; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v91188; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v61189; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.01190; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB0_71191; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body.preheader1192; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s0, s1, s01193; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1194; GFX1200-FAKE16-NEXT:    s_add_co_i32 s0, s0, 111195; GFX1200-FAKE16-NEXT:  .LBB0_5: ; %frem.loop_body1196; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=11197; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1198; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, v41199; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1200; GFX1200-FAKE16-NEXT:    s_add_co_i32 s0, s0, -111201; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1202; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s0, 111203; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v51204; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1205; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v4, v41206; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v41207; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1208; GFX1200-FAKE16-NEXT:    v_fma_f32 v4, v4, v3, v71209; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v41210; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v31211; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)1212; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1213; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo1214; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 111215; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB0_51216; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow1217; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, s01218; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, v71219; GFX1200-FAKE16-NEXT:  .LBB0_7: ; %frem.loop_exit1220; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)1221; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v61222; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v61223; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1224; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v51225; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v5, v51226; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1227; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v51228; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v4, v5, v31229; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1230; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v41231; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31232; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)1233; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo1234; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1235; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v21236; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v21237; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1238; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v01239; GFX1200-FAKE16-NEXT:  .LBB0_8: ; %Flow191240; GFX1200-FAKE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0x7fff, v01241; GFX1200-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v11242; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)1243; GFX1200-FAKE16-NEXT:    v_cmp_nle_f16_e64 s0, 0x7c00, v01244; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s0, vcc_lo1245; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)1246; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v2, vcc_lo1247; GFX1200-FAKE16-NEXT:    global_store_b16 v3, v0, s[8:9]1248; GFX1200-FAKE16-NEXT:    s_endpgm1249                      ptr addrspace(1) %in2) #0 {1250   %gep2 = getelementptr half, ptr addrspace(1) %in2, i32 41251   %r0 = load half, ptr addrspace(1) %in1, align 41252   %r1 = load half, ptr addrspace(1) %gep2, align 41253   %r2 = frem half %r0, %r11254   store half %r2, ptr addrspace(1) %out, align 41255   ret void1256}1257 1258define amdgpu_kernel void @fast_frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1,1259; SI-LABEL: fast_frem_f16:1260; SI:       ; %bb.0:1261; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91262; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1263; SI-NEXT:    s_mov_b32 s11, 0xf0001264; SI-NEXT:    s_mov_b32 s10, -11265; SI-NEXT:    s_waitcnt lgkmcnt(0)1266; SI-NEXT:    s_mov_b32 s8, s01267; SI-NEXT:    s_mov_b32 s9, s11268; SI-NEXT:    s_mov_b32 s0, s21269; SI-NEXT:    s_mov_b32 s1, s31270; SI-NEXT:    s_mov_b32 s2, s101271; SI-NEXT:    s_mov_b32 s3, s111272; SI-NEXT:    s_mov_b32 s6, s101273; SI-NEXT:    s_mov_b32 s7, s111274; SI-NEXT:    buffer_load_ushort v0, off, s[0:3], 01275; SI-NEXT:    s_waitcnt vmcnt(0)1276; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01277; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:81278; SI-NEXT:    s_waitcnt vmcnt(0)1279; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11280; SI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v01281; SI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v01282; SI-NEXT:    v_rcp_f32_e32 v4, v31283; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 31284; SI-NEXT:    v_fma_f32 v5, -v3, v4, 1.01285; SI-NEXT:    v_fma_f32 v4, v5, v4, v41286; SI-NEXT:    v_mul_f32_e32 v5, v2, v41287; SI-NEXT:    v_fma_f32 v6, -v3, v5, v21288; SI-NEXT:    v_fma_f32 v5, v6, v4, v51289; SI-NEXT:    v_fma_f32 v2, -v3, v5, v21290; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 01291; SI-NEXT:    v_div_fmas_f32 v2, v2, v4, v51292; SI-NEXT:    v_div_fixup_f32 v2, v2, v1, v01293; SI-NEXT:    v_trunc_f32_e32 v2, v21294; SI-NEXT:    v_fma_f32 v0, -v2, v1, v01295; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 2, 2), 01296; SI-NEXT:    v_cvt_f16_f32_e32 v0, v01297; SI-NEXT:    buffer_store_short v0, off, s[8:11], 01298; SI-NEXT:    s_endpgm1299;1300; CI-LABEL: fast_frem_f16:1301; CI:       ; %bb.0:1302; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91303; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1304; CI-NEXT:    s_mov_b32 s11, 0xf0001305; CI-NEXT:    s_mov_b32 s10, -11306; CI-NEXT:    s_mov_b32 s6, s101307; CI-NEXT:    s_waitcnt lgkmcnt(0)1308; CI-NEXT:    s_mov_b32 s8, s01309; CI-NEXT:    s_mov_b32 s9, s11310; CI-NEXT:    s_mov_b32 s0, s21311; CI-NEXT:    s_mov_b32 s1, s31312; CI-NEXT:    s_mov_b32 s2, s101313; CI-NEXT:    s_mov_b32 s3, s111314; CI-NEXT:    s_mov_b32 s7, s111315; CI-NEXT:    buffer_load_ushort v0, off, s[0:3], 01316; CI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:81317; CI-NEXT:    s_waitcnt vmcnt(1)1318; CI-NEXT:    v_cvt_f32_f16_e32 v0, v01319; CI-NEXT:    s_waitcnt vmcnt(0)1320; CI-NEXT:    v_cvt_f32_f16_e32 v1, v11321; CI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v01322; CI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v01323; CI-NEXT:    v_rcp_f32_e32 v4, v31324; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 31325; CI-NEXT:    v_fma_f32 v5, -v3, v4, 1.01326; CI-NEXT:    v_fma_f32 v4, v5, v4, v41327; CI-NEXT:    v_mul_f32_e32 v5, v2, v41328; CI-NEXT:    v_fma_f32 v6, -v3, v5, v21329; CI-NEXT:    v_fma_f32 v5, v6, v4, v51330; CI-NEXT:    v_fma_f32 v2, -v3, v5, v21331; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 01332; CI-NEXT:    v_div_fmas_f32 v2, v2, v4, v51333; CI-NEXT:    v_div_fixup_f32 v2, v2, v1, v01334; CI-NEXT:    v_trunc_f32_e32 v2, v21335; CI-NEXT:    v_fma_f32 v0, -v2, v1, v01336; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 2, 2), 01337; CI-NEXT:    v_cvt_f16_f32_e32 v0, v01338; CI-NEXT:    buffer_store_short v0, off, s[8:11], 01339; CI-NEXT:    s_endpgm1340;1341; VI-LABEL: fast_frem_f16:1342; VI:       ; %bb.0:1343; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241344; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341345; VI-NEXT:    s_waitcnt lgkmcnt(0)1346; VI-NEXT:    v_mov_b32_e32 v0, s01347; VI-NEXT:    s_add_u32 s0, s4, 81348; VI-NEXT:    v_mov_b32_e32 v1, s11349; VI-NEXT:    v_mov_b32_e32 v2, s21350; VI-NEXT:    v_mov_b32_e32 v3, s31351; VI-NEXT:    s_addc_u32 s1, s5, 01352; VI-NEXT:    flat_load_ushort v4, v[2:3]1353; VI-NEXT:    v_mov_b32_e32 v3, s11354; VI-NEXT:    v_mov_b32_e32 v2, s01355; VI-NEXT:    flat_load_ushort v2, v[2:3]1356; VI-NEXT:    s_waitcnt vmcnt(1)1357; VI-NEXT:    v_cvt_f32_f16_e32 v3, v41358; VI-NEXT:    s_waitcnt vmcnt(0)1359; VI-NEXT:    v_cvt_f32_f16_e32 v5, v21360; VI-NEXT:    v_rcp_f32_e32 v6, v51361; VI-NEXT:    v_mul_f32_e32 v7, v3, v61362; VI-NEXT:    v_mad_f32 v8, -v5, v7, v31363; VI-NEXT:    v_mac_f32_e32 v7, v8, v61364; VI-NEXT:    v_mad_f32 v3, -v5, v7, v31365; VI-NEXT:    v_mul_f32_e32 v3, v3, v61366; VI-NEXT:    v_and_b32_e32 v3, 0xff800000, v31367; VI-NEXT:    v_add_f32_e32 v3, v3, v71368; VI-NEXT:    v_cvt_f16_f32_e32 v3, v31369; VI-NEXT:    v_div_fixup_f16 v3, v3, v2, v41370; VI-NEXT:    v_trunc_f16_e32 v3, v31371; VI-NEXT:    v_fma_f16 v2, -v3, v2, v41372; VI-NEXT:    flat_store_short v[0:1], v21373; VI-NEXT:    s_endpgm1374;1375; GFX9-LABEL: fast_frem_f16:1376; GFX9:       ; %bb.0:1377; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241378; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341379; GFX9-NEXT:    v_mov_b32_e32 v0, 01380; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1381; GFX9-NEXT:    global_load_ushort v1, v0, s[2:3]1382; GFX9-NEXT:    global_load_ushort v2, v0, s[6:7] offset:81383; GFX9-NEXT:    s_waitcnt vmcnt(1)1384; GFX9-NEXT:    v_cvt_f32_f16_e32 v3, v11385; GFX9-NEXT:    s_waitcnt vmcnt(0)1386; GFX9-NEXT:    v_cvt_f32_f16_e32 v4, v21387; GFX9-NEXT:    v_rcp_f32_e32 v4, v41388; GFX9-NEXT:    v_mul_f32_e32 v3, v3, v41389; GFX9-NEXT:    v_mad_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1390; GFX9-NEXT:    v_mac_f32_e32 v3, v5, v41391; GFX9-NEXT:    v_mad_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1392; GFX9-NEXT:    v_mul_f32_e32 v4, v5, v41393; GFX9-NEXT:    v_and_b32_e32 v4, 0xff800000, v41394; GFX9-NEXT:    v_add_f32_e32 v3, v4, v31395; GFX9-NEXT:    v_cvt_f16_f32_e32 v3, v31396; GFX9-NEXT:    v_div_fixup_f16 v3, v3, v2, v11397; GFX9-NEXT:    v_trunc_f16_e32 v3, v31398; GFX9-NEXT:    v_fma_f16 v1, -v3, v2, v11399; GFX9-NEXT:    global_store_short v0, v1, s[0:1]1400; GFX9-NEXT:    s_endpgm1401;1402; GFX10-LABEL: fast_frem_f16:1403; GFX10:       ; %bb.0:1404; GFX10-NEXT:    s_clause 0x11405; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241406; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341407; GFX10-NEXT:    v_mov_b32_e32 v0, 01408; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1409; GFX10-NEXT:    s_clause 0x11410; GFX10-NEXT:    global_load_ushort v1, v0, s[2:3]1411; GFX10-NEXT:    global_load_ushort v2, v0, s[6:7] offset:81412; GFX10-NEXT:    s_waitcnt vmcnt(1)1413; GFX10-NEXT:    v_cvt_f32_f16_e32 v3, v11414; GFX10-NEXT:    s_waitcnt vmcnt(0)1415; GFX10-NEXT:    v_cvt_f32_f16_e32 v4, v21416; GFX10-NEXT:    v_rcp_f32_e32 v5, v41417; GFX10-NEXT:    v_mul_f32_e32 v6, v3, v51418; GFX10-NEXT:    v_mad_f32 v7, -v4, v6, v31419; GFX10-NEXT:    v_mac_f32_e32 v6, v7, v51420; GFX10-NEXT:    v_mad_f32 v3, -v4, v6, v31421; GFX10-NEXT:    v_mul_f32_e32 v3, v3, v51422; GFX10-NEXT:    v_and_b32_e32 v3, 0xff800000, v31423; GFX10-NEXT:    v_add_f32_e32 v3, v3, v61424; GFX10-NEXT:    v_cvt_f16_f32_e32 v3, v31425; GFX10-NEXT:    v_div_fixup_f16 v3, v3, v2, v11426; GFX10-NEXT:    v_trunc_f16_e32 v3, v31427; GFX10-NEXT:    v_fma_f16 v1, -v3, v2, v11428; GFX10-NEXT:    global_store_short v0, v1, s[0:1]1429; GFX10-NEXT:    s_endpgm1430;1431; GFX11-TRUE16-LABEL: fast_frem_f16:1432; GFX11-TRUE16:       ; %bb.0:1433; GFX11-TRUE16-NEXT:    s_clause 0x11434; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241435; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341436; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, 01437; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1438; GFX11-TRUE16-NEXT:    s_clause 0x11439; GFX11-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1440; GFX11-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81441; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)1442; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1443; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1444; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1445; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1446; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41447; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1448; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41449; GFX11-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1450; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1451; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41452; GFX11-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1453; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1454; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v41455; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41456; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1457; GFX11-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v01458; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v01459; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1460; GFX11-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l1461; GFX11-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l1462; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1463; GFX11-TRUE16-NEXT:    v_fma_f16 v0.l, -v0.l, v3.l, v2.l1464; GFX11-TRUE16-NEXT:    global_store_b16 v1, v0, s[0:1]1465; GFX11-TRUE16-NEXT:    s_endpgm1466;1467; GFX11-FAKE16-LABEL: fast_frem_f16:1468; GFX11-FAKE16:       ; %bb.0:1469; GFX11-FAKE16-NEXT:    s_clause 0x11470; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241471; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341472; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 01473; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1474; GFX11-FAKE16-NEXT:    s_clause 0x11475; GFX11-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]1476; GFX11-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:81477; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)1478; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v11479; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1480; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v21481; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1482; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v4, v41483; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1484; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v41485; GFX11-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1486; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1487; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v41488; GFX11-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1490; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v41491; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1493; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31494; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v31495; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1496; GFX11-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v11497; GFX11-FAKE16-NEXT:    v_trunc_f16_e32 v3, v31498; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1499; GFX11-FAKE16-NEXT:    v_fma_f16 v1, -v3, v2, v11500; GFX11-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]1501; GFX11-FAKE16-NEXT:    s_endpgm1502;1503; GFX1150-TRUE16-LABEL: fast_frem_f16:1504; GFX1150-TRUE16:       ; %bb.0:1505; GFX1150-TRUE16-NEXT:    s_clause 0x11506; GFX1150-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241507; GFX1150-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341508; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v1, 01509; GFX1150-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1510; GFX1150-TRUE16-NEXT:    s_clause 0x11511; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1512; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81513; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(1)1514; GFX1150-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1515; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)1516; GFX1150-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1517; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1518; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41519; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41520; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1521; GFX1150-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1522; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41523; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1524; GFX1150-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1525; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v41526; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1527; GFX1150-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41528; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v01529; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1530; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v01531; GFX1150-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l1532; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1533; GFX1150-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l1534; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v0, 0x8000, v01535; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1536; GFX1150-TRUE16-NEXT:    v_fmac_f16_e32 v2.l, v0.l, v3.l1537; GFX1150-TRUE16-NEXT:    global_store_b16 v1, v2, s[0:1]1538; GFX1150-TRUE16-NEXT:    s_endpgm1539;1540; GFX1150-FAKE16-LABEL: fast_frem_f16:1541; GFX1150-FAKE16:       ; %bb.0:1542; GFX1150-FAKE16-NEXT:    s_clause 0x11543; GFX1150-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241544; GFX1150-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341545; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v0, 01546; GFX1150-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1547; GFX1150-FAKE16-NEXT:    s_clause 0x11548; GFX1150-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]1549; GFX1150-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:81550; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(1)1551; GFX1150-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v11552; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)1553; GFX1150-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v21554; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1555; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v4, v41556; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v41557; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1558; GFX1150-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1559; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v41560; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1561; GFX1150-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1562; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v41563; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1564; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41565; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31566; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1567; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v31568; GFX1150-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v11569; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1570; GFX1150-FAKE16-NEXT:    v_trunc_f16_e32 v3, v31571; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x8000, v31572; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1573; GFX1150-FAKE16-NEXT:    v_fmac_f16_e32 v1, v3, v21574; GFX1150-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]1575; GFX1150-FAKE16-NEXT:    s_endpgm1576;1577; GFX1200-TRUE16-LABEL: fast_frem_f16:1578; GFX1200-TRUE16:       ; %bb.0:1579; GFX1200-TRUE16-NEXT:    s_clause 0x11580; GFX1200-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241581; GFX1200-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341582; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v1, 01583; GFX1200-TRUE16-NEXT:    s_wait_kmcnt 0x01584; GFX1200-TRUE16-NEXT:    s_clause 0x11585; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1586; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81587; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x11588; GFX1200-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1589; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x01590; GFX1200-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1591; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1592; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41593; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41594; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1595; GFX1200-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1596; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41597; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1598; GFX1200-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1599; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v41600; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1601; GFX1200-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41602; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v01603; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1604; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v01605; GFX1200-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l1606; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1607; GFX1200-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l1608; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v0, 0x8000, v01609; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1610; GFX1200-TRUE16-NEXT:    v_fmac_f16_e32 v2.l, v0.l, v3.l1611; GFX1200-TRUE16-NEXT:    global_store_b16 v1, v2, s[0:1]1612; GFX1200-TRUE16-NEXT:    s_endpgm1613;1614; GFX1200-FAKE16-LABEL: fast_frem_f16:1615; GFX1200-FAKE16:       ; %bb.0:1616; GFX1200-FAKE16-NEXT:    s_clause 0x11617; GFX1200-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241618; GFX1200-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341619; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v0, 01620; GFX1200-FAKE16-NEXT:    s_wait_kmcnt 0x01621; GFX1200-FAKE16-NEXT:    s_clause 0x11622; GFX1200-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]1623; GFX1200-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:81624; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x11625; GFX1200-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v11626; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x01627; GFX1200-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v21628; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1629; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v4, v41630; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v41631; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1632; GFX1200-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1633; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v41634; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1635; GFX1200-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1636; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v41637; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1638; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41639; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31640; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1641; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v31642; GFX1200-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v11643; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1644; GFX1200-FAKE16-NEXT:    v_trunc_f16_e32 v3, v31645; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x8000, v31646; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1647; GFX1200-FAKE16-NEXT:    v_fmac_f16_e32 v1, v3, v21648; GFX1200-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]1649; GFX1200-FAKE16-NEXT:    s_endpgm1650                      ptr addrspace(1) %in2) #0 {1651   %gep2 = getelementptr half, ptr addrspace(1) %in2, i32 41652   %r0 = load half, ptr addrspace(1) %in1, align 41653   %r1 = load half, ptr addrspace(1) %gep2, align 41654   %r2 = frem fast half %r0, %r11655   store half %r2, ptr addrspace(1) %out, align 41656   ret void1657}1658 1659define amdgpu_kernel void @unsafe_frem_f16(ptr addrspace(1) %out, ptr addrspace(1) %in1,1660; SI-LABEL: unsafe_frem_f16:1661; SI:       ; %bb.0:1662; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91663; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1664; SI-NEXT:    s_mov_b32 s11, 0xf0001665; SI-NEXT:    s_mov_b32 s10, -11666; SI-NEXT:    s_waitcnt lgkmcnt(0)1667; SI-NEXT:    s_mov_b32 s8, s01668; SI-NEXT:    s_mov_b32 s9, s11669; SI-NEXT:    s_mov_b32 s0, s21670; SI-NEXT:    s_mov_b32 s1, s31671; SI-NEXT:    s_mov_b32 s2, s101672; SI-NEXT:    s_mov_b32 s3, s111673; SI-NEXT:    s_mov_b32 s6, s101674; SI-NEXT:    s_mov_b32 s7, s111675; SI-NEXT:    buffer_load_ushort v0, off, s[0:3], 01676; SI-NEXT:    s_waitcnt vmcnt(0)1677; SI-NEXT:    v_cvt_f32_f16_e32 v0, v01678; SI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:81679; SI-NEXT:    s_waitcnt vmcnt(0)1680; SI-NEXT:    v_cvt_f32_f16_e32 v1, v11681; SI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v01682; SI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v01683; SI-NEXT:    v_rcp_f32_e32 v4, v31684; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 31685; SI-NEXT:    v_fma_f32 v5, -v3, v4, 1.01686; SI-NEXT:    v_fma_f32 v4, v5, v4, v41687; SI-NEXT:    v_mul_f32_e32 v5, v2, v41688; SI-NEXT:    v_fma_f32 v6, -v3, v5, v21689; SI-NEXT:    v_fma_f32 v5, v6, v4, v51690; SI-NEXT:    v_fma_f32 v2, -v3, v5, v21691; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 01692; SI-NEXT:    v_div_fmas_f32 v2, v2, v4, v51693; SI-NEXT:    v_div_fixup_f32 v2, v2, v1, v01694; SI-NEXT:    v_trunc_f32_e32 v2, v21695; SI-NEXT:    v_fma_f32 v0, -v2, v1, v01696; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 2, 2), 01697; SI-NEXT:    v_cvt_f16_f32_e32 v0, v01698; SI-NEXT:    buffer_store_short v0, off, s[8:11], 01699; SI-NEXT:    s_endpgm1700;1701; CI-LABEL: unsafe_frem_f16:1702; CI:       ; %bb.0:1703; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x91704; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd1705; CI-NEXT:    s_mov_b32 s11, 0xf0001706; CI-NEXT:    s_mov_b32 s10, -11707; CI-NEXT:    s_mov_b32 s6, s101708; CI-NEXT:    s_waitcnt lgkmcnt(0)1709; CI-NEXT:    s_mov_b32 s8, s01710; CI-NEXT:    s_mov_b32 s9, s11711; CI-NEXT:    s_mov_b32 s0, s21712; CI-NEXT:    s_mov_b32 s1, s31713; CI-NEXT:    s_mov_b32 s2, s101714; CI-NEXT:    s_mov_b32 s3, s111715; CI-NEXT:    s_mov_b32 s7, s111716; CI-NEXT:    buffer_load_ushort v0, off, s[0:3], 01717; CI-NEXT:    buffer_load_ushort v1, off, s[4:7], 0 offset:81718; CI-NEXT:    s_waitcnt vmcnt(1)1719; CI-NEXT:    v_cvt_f32_f16_e32 v0, v01720; CI-NEXT:    s_waitcnt vmcnt(0)1721; CI-NEXT:    v_cvt_f32_f16_e32 v1, v11722; CI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v01723; CI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v01724; CI-NEXT:    v_rcp_f32_e32 v4, v31725; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 31726; CI-NEXT:    v_fma_f32 v5, -v3, v4, 1.01727; CI-NEXT:    v_fma_f32 v4, v5, v4, v41728; CI-NEXT:    v_mul_f32_e32 v5, v2, v41729; CI-NEXT:    v_fma_f32 v6, -v3, v5, v21730; CI-NEXT:    v_fma_f32 v5, v6, v4, v51731; CI-NEXT:    v_fma_f32 v2, -v3, v5, v21732; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 01733; CI-NEXT:    v_div_fmas_f32 v2, v2, v4, v51734; CI-NEXT:    v_div_fixup_f32 v2, v2, v1, v01735; CI-NEXT:    v_trunc_f32_e32 v2, v21736; CI-NEXT:    v_fma_f32 v0, -v2, v1, v01737; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 2, 2), 01738; CI-NEXT:    v_cvt_f16_f32_e32 v0, v01739; CI-NEXT:    buffer_store_short v0, off, s[8:11], 01740; CI-NEXT:    s_endpgm1741;1742; VI-LABEL: unsafe_frem_f16:1743; VI:       ; %bb.0:1744; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241745; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x341746; VI-NEXT:    s_waitcnt lgkmcnt(0)1747; VI-NEXT:    v_mov_b32_e32 v0, s01748; VI-NEXT:    s_add_u32 s0, s4, 81749; VI-NEXT:    v_mov_b32_e32 v1, s11750; VI-NEXT:    v_mov_b32_e32 v2, s21751; VI-NEXT:    v_mov_b32_e32 v3, s31752; VI-NEXT:    s_addc_u32 s1, s5, 01753; VI-NEXT:    flat_load_ushort v4, v[2:3]1754; VI-NEXT:    v_mov_b32_e32 v3, s11755; VI-NEXT:    v_mov_b32_e32 v2, s01756; VI-NEXT:    flat_load_ushort v2, v[2:3]1757; VI-NEXT:    s_waitcnt vmcnt(1)1758; VI-NEXT:    v_cvt_f32_f16_e32 v3, v41759; VI-NEXT:    s_waitcnt vmcnt(0)1760; VI-NEXT:    v_cvt_f32_f16_e32 v5, v21761; VI-NEXT:    v_rcp_f32_e32 v6, v51762; VI-NEXT:    v_mul_f32_e32 v7, v3, v61763; VI-NEXT:    v_mad_f32 v8, -v5, v7, v31764; VI-NEXT:    v_mac_f32_e32 v7, v8, v61765; VI-NEXT:    v_mad_f32 v3, -v5, v7, v31766; VI-NEXT:    v_mul_f32_e32 v3, v3, v61767; VI-NEXT:    v_and_b32_e32 v3, 0xff800000, v31768; VI-NEXT:    v_add_f32_e32 v3, v3, v71769; VI-NEXT:    v_cvt_f16_f32_e32 v3, v31770; VI-NEXT:    v_div_fixup_f16 v3, v3, v2, v41771; VI-NEXT:    v_trunc_f16_e32 v3, v31772; VI-NEXT:    v_fma_f16 v2, -v3, v2, v41773; VI-NEXT:    flat_store_short v[0:1], v21774; VI-NEXT:    s_endpgm1775;1776; GFX9-LABEL: unsafe_frem_f16:1777; GFX9:       ; %bb.0:1778; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241779; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341780; GFX9-NEXT:    v_mov_b32_e32 v0, 01781; GFX9-NEXT:    s_waitcnt lgkmcnt(0)1782; GFX9-NEXT:    global_load_ushort v1, v0, s[2:3]1783; GFX9-NEXT:    global_load_ushort v2, v0, s[6:7] offset:81784; GFX9-NEXT:    s_waitcnt vmcnt(1)1785; GFX9-NEXT:    v_cvt_f32_f16_e32 v3, v11786; GFX9-NEXT:    s_waitcnt vmcnt(0)1787; GFX9-NEXT:    v_cvt_f32_f16_e32 v4, v21788; GFX9-NEXT:    v_rcp_f32_e32 v4, v41789; GFX9-NEXT:    v_mul_f32_e32 v3, v3, v41790; GFX9-NEXT:    v_mad_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1791; GFX9-NEXT:    v_mac_f32_e32 v3, v5, v41792; GFX9-NEXT:    v_mad_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1793; GFX9-NEXT:    v_mul_f32_e32 v4, v5, v41794; GFX9-NEXT:    v_and_b32_e32 v4, 0xff800000, v41795; GFX9-NEXT:    v_add_f32_e32 v3, v4, v31796; GFX9-NEXT:    v_cvt_f16_f32_e32 v3, v31797; GFX9-NEXT:    v_div_fixup_f16 v3, v3, v2, v11798; GFX9-NEXT:    v_trunc_f16_e32 v3, v31799; GFX9-NEXT:    v_fma_f16 v1, -v3, v2, v11800; GFX9-NEXT:    global_store_short v0, v1, s[0:1]1801; GFX9-NEXT:    s_endpgm1802;1803; GFX10-LABEL: unsafe_frem_f16:1804; GFX10:       ; %bb.0:1805; GFX10-NEXT:    s_clause 0x11806; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x241807; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341808; GFX10-NEXT:    v_mov_b32_e32 v0, 01809; GFX10-NEXT:    s_waitcnt lgkmcnt(0)1810; GFX10-NEXT:    s_clause 0x11811; GFX10-NEXT:    global_load_ushort v1, v0, s[2:3]1812; GFX10-NEXT:    global_load_ushort v2, v0, s[6:7] offset:81813; GFX10-NEXT:    s_waitcnt vmcnt(1)1814; GFX10-NEXT:    v_cvt_f32_f16_e32 v3, v11815; GFX10-NEXT:    s_waitcnt vmcnt(0)1816; GFX10-NEXT:    v_cvt_f32_f16_e32 v4, v21817; GFX10-NEXT:    v_rcp_f32_e32 v5, v41818; GFX10-NEXT:    v_mul_f32_e32 v6, v3, v51819; GFX10-NEXT:    v_mad_f32 v7, -v4, v6, v31820; GFX10-NEXT:    v_mac_f32_e32 v6, v7, v51821; GFX10-NEXT:    v_mad_f32 v3, -v4, v6, v31822; GFX10-NEXT:    v_mul_f32_e32 v3, v3, v51823; GFX10-NEXT:    v_and_b32_e32 v3, 0xff800000, v31824; GFX10-NEXT:    v_add_f32_e32 v3, v3, v61825; GFX10-NEXT:    v_cvt_f16_f32_e32 v3, v31826; GFX10-NEXT:    v_div_fixup_f16 v3, v3, v2, v11827; GFX10-NEXT:    v_trunc_f16_e32 v3, v31828; GFX10-NEXT:    v_fma_f16 v1, -v3, v2, v11829; GFX10-NEXT:    global_store_short v0, v1, s[0:1]1830; GFX10-NEXT:    s_endpgm1831;1832; GFX11-TRUE16-LABEL: unsafe_frem_f16:1833; GFX11-TRUE16:       ; %bb.0:1834; GFX11-TRUE16-NEXT:    s_clause 0x11835; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241836; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341837; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, 01838; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1839; GFX11-TRUE16-NEXT:    s_clause 0x11840; GFX11-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1841; GFX11-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81842; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)1843; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1844; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)1845; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1846; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1847; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41848; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1849; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41850; GFX11-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1851; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1852; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41853; GFX11-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1854; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1855; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v41856; GFX11-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41857; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1858; GFX11-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v01859; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v01860; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1861; GFX11-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l1862; GFX11-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l1863; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1864; GFX11-TRUE16-NEXT:    v_fma_f16 v0.l, -v0.l, v3.l, v2.l1865; GFX11-TRUE16-NEXT:    global_store_b16 v1, v0, s[0:1]1866; GFX11-TRUE16-NEXT:    s_endpgm1867;1868; GFX11-FAKE16-LABEL: unsafe_frem_f16:1869; GFX11-FAKE16:       ; %bb.0:1870; GFX11-FAKE16-NEXT:    s_clause 0x11871; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241872; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341873; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v0, 01874; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1875; GFX11-FAKE16-NEXT:    s_clause 0x11876; GFX11-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]1877; GFX11-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:81878; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)1879; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v11880; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)1881; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v21882; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)1883; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v4, v41884; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)1885; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v41886; GFX11-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1887; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1888; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v41889; GFX11-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1890; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1891; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v41892; GFX11-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41893; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1894; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31895; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v31896; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1897; GFX11-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v11898; GFX11-FAKE16-NEXT:    v_trunc_f16_e32 v3, v31899; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1900; GFX11-FAKE16-NEXT:    v_fma_f16 v1, -v3, v2, v11901; GFX11-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]1902; GFX11-FAKE16-NEXT:    s_endpgm1903;1904; GFX1150-TRUE16-LABEL: unsafe_frem_f16:1905; GFX1150-TRUE16:       ; %bb.0:1906; GFX1150-TRUE16-NEXT:    s_clause 0x11907; GFX1150-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241908; GFX1150-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341909; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v1, 01910; GFX1150-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)1911; GFX1150-TRUE16-NEXT:    s_clause 0x11912; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1913; GFX1150-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81914; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(1)1915; GFX1150-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1916; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)1917; GFX1150-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1918; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1919; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41920; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41921; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1922; GFX1150-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1923; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41924; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1925; GFX1150-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1926; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v41927; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1928; GFX1150-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41929; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v01930; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1931; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v01932; GFX1150-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l1933; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1934; GFX1150-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l1935; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v0, 0x8000, v01936; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1937; GFX1150-TRUE16-NEXT:    v_fmac_f16_e32 v2.l, v0.l, v3.l1938; GFX1150-TRUE16-NEXT:    global_store_b16 v1, v2, s[0:1]1939; GFX1150-TRUE16-NEXT:    s_endpgm1940;1941; GFX1150-FAKE16-LABEL: unsafe_frem_f16:1942; GFX1150-FAKE16:       ; %bb.0:1943; GFX1150-FAKE16-NEXT:    s_clause 0x11944; GFX1150-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241945; GFX1150-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341946; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v0, 01947; GFX1150-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)1948; GFX1150-FAKE16-NEXT:    s_clause 0x11949; GFX1150-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]1950; GFX1150-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:81951; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(1)1952; GFX1150-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v11953; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)1954; GFX1150-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v21955; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1956; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v4, v41957; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v41958; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1959; GFX1150-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1960; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v41961; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1962; GFX1150-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]1963; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v41964; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1965; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v41966; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v31967; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1968; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v31969; GFX1150-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v11970; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1971; GFX1150-FAKE16-NEXT:    v_trunc_f16_e32 v3, v31972; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x8000, v31973; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)1974; GFX1150-FAKE16-NEXT:    v_fmac_f16_e32 v1, v3, v21975; GFX1150-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]1976; GFX1150-FAKE16-NEXT:    s_endpgm1977;1978; GFX1200-TRUE16-LABEL: unsafe_frem_f16:1979; GFX1200-TRUE16:       ; %bb.0:1980; GFX1200-TRUE16-NEXT:    s_clause 0x11981; GFX1200-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x241982; GFX1200-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x341983; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v1, 01984; GFX1200-TRUE16-NEXT:    s_wait_kmcnt 0x01985; GFX1200-TRUE16-NEXT:    s_clause 0x11986; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v2, v1, s[2:3]1987; GFX1200-TRUE16-NEXT:    global_load_d16_b16 v3, v1, s[4:5] offset:81988; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x11989; GFX1200-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, v2.l1990; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x01991; GFX1200-TRUE16-NEXT:    v_cvt_f32_f16_e32 v4, v3.l1992; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)1993; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v4, v41994; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v0, v0, v41995; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1996; GFX1200-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]1997; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v0, v5, v41998; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)1999; GFX1200-TRUE16-NEXT:    v_fma_mix_f32 v5, -v3, v0, v2 op_sel_hi:[1,0,1]2000; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v5, v42001; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2002; GFX1200-TRUE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v42003; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v0, v4, v02004; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2005; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v02006; GFX1200-TRUE16-NEXT:    v_div_fixup_f16 v0.l, v0.l, v3.l, v2.l2007; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2008; GFX1200-TRUE16-NEXT:    v_trunc_f16_e32 v0.l, v0.l2009; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v0, 0x8000, v02010; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2011; GFX1200-TRUE16-NEXT:    v_fmac_f16_e32 v2.l, v0.l, v3.l2012; GFX1200-TRUE16-NEXT:    global_store_b16 v1, v2, s[0:1]2013; GFX1200-TRUE16-NEXT:    s_endpgm2014;2015; GFX1200-FAKE16-LABEL: unsafe_frem_f16:2016; GFX1200-FAKE16:       ; %bb.0:2017; GFX1200-FAKE16-NEXT:    s_clause 0x12018; GFX1200-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242019; GFX1200-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342020; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v0, 02021; GFX1200-FAKE16-NEXT:    s_wait_kmcnt 0x02022; GFX1200-FAKE16-NEXT:    s_clause 0x12023; GFX1200-FAKE16-NEXT:    global_load_u16 v1, v0, s[2:3]2024; GFX1200-FAKE16-NEXT:    global_load_u16 v2, v0, s[4:5] offset:82025; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x12026; GFX1200-FAKE16-NEXT:    v_cvt_f32_f16_e32 v3, v12027; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x02028; GFX1200-FAKE16-NEXT:    v_cvt_f32_f16_e32 v4, v22029; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)2030; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v4, v42031; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v3, v42032; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2033; GFX1200-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]2034; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v3, v5, v42035; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2036; GFX1200-FAKE16-NEXT:    v_fma_mix_f32 v5, -v2, v3, v1 op_sel_hi:[1,0,1]2037; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v5, v42038; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2039; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v4, 0xff800000, v42040; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v32041; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2042; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v32043; GFX1200-FAKE16-NEXT:    v_div_fixup_f16 v3, v3, v2, v12044; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2045; GFX1200-FAKE16-NEXT:    v_trunc_f16_e32 v3, v32046; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x8000, v32047; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)2048; GFX1200-FAKE16-NEXT:    v_fmac_f16_e32 v1, v3, v22049; GFX1200-FAKE16-NEXT:    global_store_b16 v0, v1, s[0:1]2050; GFX1200-FAKE16-NEXT:    s_endpgm2051                             ptr addrspace(1) %in2) #0 {2052   %gep2 = getelementptr half, ptr addrspace(1) %in2, i32 42053   %r0 = load half, ptr addrspace(1) %in1, align 42054   %r1 = load half, ptr addrspace(1) %gep2, align 42055   %r2 = frem afn half %r0, %r12056   store half %r2, ptr addrspace(1) %out, align 42057   ret void2058}2059 2060define amdgpu_kernel void @frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1,2061; SI-LABEL: frem_f32:2062; SI:       ; %bb.0:2063; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92064; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2065; SI-NEXT:    s_mov_b32 s11, 0xf0002066; SI-NEXT:    s_mov_b32 s10, -12067; SI-NEXT:    s_waitcnt lgkmcnt(0)2068; SI-NEXT:    s_mov_b32 s8, s22069; SI-NEXT:    s_mov_b32 s9, s32070; SI-NEXT:    s_mov_b32 s6, s102071; SI-NEXT:    s_mov_b32 s7, s112072; SI-NEXT:    buffer_load_dword v0, off, s[8:11], 02073; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:162074; SI-NEXT:    s_waitcnt vmcnt(0)2075; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|2076; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]2077; SI-NEXT:    s_cbranch_vccz .LBB3_22078; SI-NEXT:  ; %bb.1: ; %frem.else2079; SI-NEXT:    s_brev_b32 s2, -22080; SI-NEXT:    v_bfi_b32 v2, s2, 0, v02081; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|2082; SI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc2083; SI-NEXT:    s_mov_b64 vcc, exec2084; SI-NEXT:    s_cbranch_execz .LBB3_32085; SI-NEXT:    s_branch .LBB3_82086; SI-NEXT:  .LBB3_2:2087; SI-NEXT:    ; implicit-def: $vgpr22088; SI-NEXT:    s_mov_b64 vcc, 02089; SI-NEXT:  .LBB3_3: ; %frem.compute2090; SI-NEXT:    s_mov_b32 s6, 0x7f8000002091; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s62092; SI-NEXT:    v_frexp_exp_i32_f32_e32 v2, v02093; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec2094; SI-NEXT:    v_readfirstlane_b32 s4, v22095; SI-NEXT:    s_cselect_b32 s4, s4, 02096; SI-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2097; SI-NEXT:    v_cndmask_b32_e64 v2, |v0|, v2, s[2:3]2098; SI-NEXT:    v_ldexp_f32_e64 v3, v2, 122099; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v1|, s62100; SI-NEXT:    v_frexp_mant_f32_e64 v2, |v1|2101; SI-NEXT:    v_cndmask_b32_e64 v2, |v1|, v2, s[2:3]2102; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v12103; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec2104; SI-NEXT:    v_readfirstlane_b32 s2, v42105; SI-NEXT:    s_cselect_b32 s5, s2, 02106; SI-NEXT:    s_add_i32 s2, s5, -12107; SI-NEXT:    v_ldexp_f32_e64 v2, v2, 12108; SI-NEXT:    s_not_b32 s3, s22109; SI-NEXT:    s_add_i32 s3, s3, s42110; SI-NEXT:    v_div_scale_f32 v4, vcc, 1.0, v2, 1.02111; SI-NEXT:    v_div_scale_f32 v5, s[6:7], v2, v2, 1.02112; SI-NEXT:    v_rcp_f32_e32 v6, v52113; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32114; SI-NEXT:    v_fma_f32 v7, -v5, v6, 1.02115; SI-NEXT:    v_fma_f32 v6, v7, v6, v62116; SI-NEXT:    v_mul_f32_e32 v7, v4, v62117; SI-NEXT:    v_fma_f32 v8, -v5, v7, v42118; SI-NEXT:    v_fma_f32 v7, v8, v6, v72119; SI-NEXT:    v_fma_f32 v4, -v5, v7, v42120; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02121; SI-NEXT:    v_div_fmas_f32 v4, v4, v6, v72122; SI-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.02123; SI-NEXT:    s_cmp_lt_i32 s3, 132124; SI-NEXT:    s_cbranch_scc1 .LBB3_72125; SI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2126; SI-NEXT:    s_sub_i32 s3, s4, s52127; SI-NEXT:    s_add_i32 s3, s3, 122128; SI-NEXT:  .LBB3_5: ; %frem.loop_body2129; SI-NEXT:    ; =>This Inner Loop Header: Depth=12130; SI-NEXT:    v_mov_b32_e32 v5, v32131; SI-NEXT:    v_mul_f32_e32 v3, v5, v42132; SI-NEXT:    v_rndne_f32_e32 v3, v32133; SI-NEXT:    v_fma_f32 v3, -v3, v2, v52134; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v32135; SI-NEXT:    v_add_f32_e32 v6, v3, v22136; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc2137; SI-NEXT:    v_ldexp_f32_e64 v3, v3, 122138; SI-NEXT:    s_add_i32 s3, s3, -122139; SI-NEXT:    s_cmp_gt_i32 s3, 122140; SI-NEXT:    s_cbranch_scc1 .LBB3_52141; SI-NEXT:  ; %bb.6: ; %Flow2142; SI-NEXT:    v_mov_b32_e32 v3, v52143; SI-NEXT:  .LBB3_7: ; %frem.loop_exit2144; SI-NEXT:    s_add_i32 s3, s3, -112145; SI-NEXT:    v_ldexp_f32_e64 v3, v3, s32146; SI-NEXT:    v_mul_f32_e32 v4, v3, v42147; SI-NEXT:    v_rndne_f32_e32 v4, v42148; SI-NEXT:    v_fma_f32 v3, -v4, v2, v32149; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v32150; SI-NEXT:    v_add_f32_e32 v2, v3, v22151; SI-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc2152; SI-NEXT:    v_ldexp_f32_e64 v2, v2, s22153; SI-NEXT:    s_brev_b32 s2, -22154; SI-NEXT:    v_bfi_b32 v2, s2, v2, v02155; SI-NEXT:  .LBB3_8: ; %Flow172156; SI-NEXT:    s_mov_b32 s3, 0xf0002157; SI-NEXT:    s_mov_b32 s2, -12158; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v12159; SI-NEXT:    s_mov_b32 s4, 0x7f8000002160; SI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v0|, s42161; SI-NEXT:    s_and_b64 vcc, s[4:5], vcc2162; SI-NEXT:    v_mov_b32_e32 v0, 0x7fc000002163; SI-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2164; SI-NEXT:    buffer_store_dword v0, off, s[0:3], 02165; SI-NEXT:    s_endpgm2166;2167; CI-LABEL: frem_f32:2168; CI:       ; %bb.0:2169; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92170; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2171; CI-NEXT:    s_mov_b32 s11, 0xf0002172; CI-NEXT:    s_mov_b32 s10, -12173; CI-NEXT:    s_mov_b32 s6, s102174; CI-NEXT:    s_waitcnt lgkmcnt(0)2175; CI-NEXT:    s_mov_b32 s8, s22176; CI-NEXT:    s_mov_b32 s9, s32177; CI-NEXT:    s_mov_b32 s7, s112178; CI-NEXT:    buffer_load_dword v0, off, s[8:11], 02179; CI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:162180; CI-NEXT:    s_waitcnt vmcnt(0)2181; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|2182; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]2183; CI-NEXT:    s_cbranch_vccz .LBB3_22184; CI-NEXT:  ; %bb.1: ; %frem.else2185; CI-NEXT:    s_brev_b32 s2, -22186; CI-NEXT:    v_bfi_b32 v2, s2, 0, v02187; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|2188; CI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc2189; CI-NEXT:    s_cbranch_execz .LBB3_32190; CI-NEXT:    s_branch .LBB3_82191; CI-NEXT:  .LBB3_2:2192; CI-NEXT:    ; implicit-def: $vgpr22193; CI-NEXT:  .LBB3_3: ; %frem.compute2194; CI-NEXT:    v_frexp_mant_f32_e64 v3, |v1|2195; CI-NEXT:    v_ldexp_f32_e64 v3, v3, 12196; CI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.02197; CI-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2198; CI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v12199; CI-NEXT:    v_ldexp_f32_e64 v5, v2, 122200; CI-NEXT:    v_add_i32_e32 v2, vcc, -1, v82201; CI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v02202; CI-NEXT:    v_not_b32_e32 v4, v22203; CI-NEXT:    v_add_i32_e32 v4, vcc, v4, v72204; CI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.02205; CI-NEXT:    v_rcp_f32_e32 v10, v92206; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32207; CI-NEXT:    v_fma_f32 v11, -v9, v10, 1.02208; CI-NEXT:    v_fma_f32 v10, v11, v10, v102209; CI-NEXT:    v_mul_f32_e32 v11, v6, v102210; CI-NEXT:    v_fma_f32 v12, -v9, v11, v62211; CI-NEXT:    v_fma_f32 v11, v12, v10, v112212; CI-NEXT:    v_fma_f32 v6, -v9, v11, v62213; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02214; CI-NEXT:    v_div_fmas_f32 v6, v6, v10, v112215; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v42216; CI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.02217; CI-NEXT:    s_cbranch_vccnz .LBB3_72218; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2219; CI-NEXT:    v_sub_i32_e32 v4, vcc, v7, v82220; CI-NEXT:    v_add_i32_e32 v4, vcc, 12, v42221; CI-NEXT:  .LBB3_5: ; %frem.loop_body2222; CI-NEXT:    ; =>This Inner Loop Header: Depth=12223; CI-NEXT:    v_mov_b32_e32 v7, v52224; CI-NEXT:    v_mul_f32_e32 v5, v7, v62225; CI-NEXT:    v_rndne_f32_e32 v5, v52226; CI-NEXT:    v_fma_f32 v5, -v5, v3, v72227; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v52228; CI-NEXT:    v_add_f32_e32 v8, v5, v32229; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc2230; CI-NEXT:    v_add_i32_e32 v4, vcc, -12, v42231; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v42232; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 122233; CI-NEXT:    s_cbranch_vccnz .LBB3_52234; CI-NEXT:  ; %bb.6: ; %Flow2235; CI-NEXT:    v_mov_b32_e32 v5, v72236; CI-NEXT:  .LBB3_7: ; %frem.loop_exit2237; CI-NEXT:    v_add_i32_e32 v4, vcc, -11, v42238; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v42239; CI-NEXT:    v_mul_f32_e32 v5, v4, v62240; CI-NEXT:    v_rndne_f32_e32 v5, v52241; CI-NEXT:    v_fma_f32 v4, -v5, v3, v42242; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v42243; CI-NEXT:    v_add_f32_e32 v3, v4, v32244; CI-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc2245; CI-NEXT:    v_ldexp_f32_e32 v2, v3, v22246; CI-NEXT:    s_brev_b32 s2, -22247; CI-NEXT:    v_bfi_b32 v2, s2, v2, v02248; CI-NEXT:  .LBB3_8: ; %Flow172249; CI-NEXT:    s_mov_b32 s4, 0x7f8000002250; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v12251; CI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v0|, s42252; CI-NEXT:    s_and_b64 vcc, s[4:5], vcc2253; CI-NEXT:    v_mov_b32_e32 v0, 0x7fc000002254; CI-NEXT:    s_mov_b32 s3, 0xf0002255; CI-NEXT:    s_mov_b32 s2, -12256; CI-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2257; CI-NEXT:    buffer_store_dword v0, off, s[0:3], 02258; CI-NEXT:    s_endpgm2259;2260; VI-LABEL: frem_f32:2261; VI:       ; %bb.0:2262; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242263; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x342264; VI-NEXT:    s_waitcnt lgkmcnt(0)2265; VI-NEXT:    v_mov_b32_e32 v0, s22266; VI-NEXT:    v_mov_b32_e32 v1, s32267; VI-NEXT:    s_add_u32 s2, s4, 162268; VI-NEXT:    s_addc_u32 s3, s5, 02269; VI-NEXT:    flat_load_dword v0, v[0:1]2270; VI-NEXT:    v_mov_b32_e32 v1, s22271; VI-NEXT:    v_mov_b32_e32 v2, s32272; VI-NEXT:    flat_load_dword v1, v[1:2]2273; VI-NEXT:    s_waitcnt vmcnt(0)2274; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|2275; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]2276; VI-NEXT:    s_cbranch_vccz .LBB3_22277; VI-NEXT:  ; %bb.1: ; %frem.else2278; VI-NEXT:    s_brev_b32 s2, -22279; VI-NEXT:    v_bfi_b32 v2, s2, 0, v02280; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|2281; VI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc2282; VI-NEXT:    s_cbranch_execz .LBB3_32283; VI-NEXT:    s_branch .LBB3_82284; VI-NEXT:  .LBB3_2:2285; VI-NEXT:    ; implicit-def: $vgpr22286; VI-NEXT:  .LBB3_3: ; %frem.compute2287; VI-NEXT:    v_frexp_mant_f32_e64 v3, |v1|2288; VI-NEXT:    v_ldexp_f32 v3, v3, 12289; VI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.02290; VI-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2291; VI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v12292; VI-NEXT:    v_ldexp_f32 v5, v2, 122293; VI-NEXT:    v_add_u32_e32 v2, vcc, -1, v82294; VI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v02295; VI-NEXT:    v_not_b32_e32 v4, v22296; VI-NEXT:    v_add_u32_e32 v4, vcc, v4, v72297; VI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.02298; VI-NEXT:    v_rcp_f32_e32 v10, v92299; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32300; VI-NEXT:    v_fma_f32 v11, -v9, v10, 1.02301; VI-NEXT:    v_fma_f32 v10, v11, v10, v102302; VI-NEXT:    v_mul_f32_e32 v11, v6, v102303; VI-NEXT:    v_fma_f32 v12, -v9, v11, v62304; VI-NEXT:    v_fma_f32 v11, v12, v10, v112305; VI-NEXT:    v_fma_f32 v6, -v9, v11, v62306; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02307; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v112308; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v42309; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.02310; VI-NEXT:    s_cbranch_vccnz .LBB3_72311; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2312; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v82313; VI-NEXT:    v_add_u32_e32 v4, vcc, 12, v42314; VI-NEXT:  .LBB3_5: ; %frem.loop_body2315; VI-NEXT:    ; =>This Inner Loop Header: Depth=12316; VI-NEXT:    v_mov_b32_e32 v7, v52317; VI-NEXT:    v_mul_f32_e32 v5, v7, v62318; VI-NEXT:    v_rndne_f32_e32 v5, v52319; VI-NEXT:    v_fma_f32 v5, -v5, v3, v72320; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v52321; VI-NEXT:    v_add_f32_e32 v8, v5, v32322; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc2323; VI-NEXT:    v_add_u32_e32 v4, vcc, -12, v42324; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v42325; VI-NEXT:    v_ldexp_f32 v5, v5, 122326; VI-NEXT:    s_cbranch_vccnz .LBB3_52327; VI-NEXT:  ; %bb.6: ; %Flow2328; VI-NEXT:    v_mov_b32_e32 v5, v72329; VI-NEXT:  .LBB3_7: ; %frem.loop_exit2330; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v42331; VI-NEXT:    v_ldexp_f32 v4, v5, v42332; VI-NEXT:    v_mul_f32_e32 v5, v4, v62333; VI-NEXT:    v_rndne_f32_e32 v5, v52334; VI-NEXT:    v_fma_f32 v4, -v5, v3, v42335; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v42336; VI-NEXT:    v_add_f32_e32 v3, v4, v32337; VI-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc2338; VI-NEXT:    v_ldexp_f32 v2, v3, v22339; VI-NEXT:    s_brev_b32 s2, -22340; VI-NEXT:    v_bfi_b32 v2, s2, v2, v02341; VI-NEXT:  .LBB3_8: ; %Flow172342; VI-NEXT:    v_mov_b32_e32 v3, s02343; VI-NEXT:    s_mov_b32 s0, 0x7f8000002344; VI-NEXT:    v_mov_b32_e32 v4, s12345; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v12346; VI-NEXT:    v_cmp_nge_f32_e64 s[0:1], |v0|, s02347; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc2348; VI-NEXT:    v_mov_b32_e32 v0, 0x7fc000002349; VI-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2350; VI-NEXT:    flat_store_dword v[3:4], v02351; VI-NEXT:    s_endpgm2352;2353; GFX9-LABEL: frem_f32:2354; GFX9:       ; %bb.0:2355; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242356; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x342357; GFX9-NEXT:    v_mov_b32_e32 v2, 02358; GFX9-NEXT:    s_waitcnt lgkmcnt(0)2359; GFX9-NEXT:    global_load_dword v0, v2, s[2:3]2360; GFX9-NEXT:    global_load_dword v1, v2, s[6:7] offset:162361; GFX9-NEXT:    s_waitcnt vmcnt(0)2362; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v1|2363; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]2364; GFX9-NEXT:    s_cbranch_vccz .LBB3_22365; GFX9-NEXT:  ; %bb.1: ; %frem.else2366; GFX9-NEXT:    s_brev_b32 s2, -22367; GFX9-NEXT:    v_bfi_b32 v2, s2, 0, v02368; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v1|2369; GFX9-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc2370; GFX9-NEXT:    s_cbranch_execz .LBB3_32371; GFX9-NEXT:    s_branch .LBB3_82372; GFX9-NEXT:  .LBB3_2:2373; GFX9-NEXT:    ; implicit-def: $vgpr22374; GFX9-NEXT:  .LBB3_3: ; %frem.compute2375; GFX9-NEXT:    v_frexp_mant_f32_e64 v3, |v1|2376; GFX9-NEXT:    v_ldexp_f32 v3, v3, 12377; GFX9-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.02378; GFX9-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.02379; GFX9-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2380; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v7, v02381; GFX9-NEXT:    v_ldexp_f32 v5, v2, 122382; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v8, v12383; GFX9-NEXT:    v_add_u32_e32 v2, -1, v82384; GFX9-NEXT:    v_not_b32_e32 v4, v22385; GFX9-NEXT:    v_add_u32_e32 v4, v4, v72386; GFX9-NEXT:    v_rcp_f32_e32 v10, v92387; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32388; GFX9-NEXT:    v_fma_f32 v11, -v9, v10, 1.02389; GFX9-NEXT:    v_fma_f32 v10, v11, v10, v102390; GFX9-NEXT:    v_mul_f32_e32 v11, v6, v102391; GFX9-NEXT:    v_fma_f32 v12, -v9, v11, v62392; GFX9-NEXT:    v_fma_f32 v11, v12, v10, v112393; GFX9-NEXT:    v_fma_f32 v6, -v9, v11, v62394; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02395; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v112396; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v42397; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.02398; GFX9-NEXT:    s_cbranch_vccnz .LBB3_72399; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2400; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v82401; GFX9-NEXT:    v_add_u32_e32 v4, 12, v42402; GFX9-NEXT:  .LBB3_5: ; %frem.loop_body2403; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=12404; GFX9-NEXT:    v_mov_b32_e32 v7, v52405; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v62406; GFX9-NEXT:    v_rndne_f32_e32 v5, v52407; GFX9-NEXT:    v_fma_f32 v5, -v5, v3, v72408; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v52409; GFX9-NEXT:    v_add_f32_e32 v8, v5, v32410; GFX9-NEXT:    v_add_u32_e32 v4, -12, v42411; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc2412; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v42413; GFX9-NEXT:    v_ldexp_f32 v5, v5, 122414; GFX9-NEXT:    s_cbranch_vccnz .LBB3_52415; GFX9-NEXT:  ; %bb.6: ; %Flow2416; GFX9-NEXT:    v_mov_b32_e32 v5, v72417; GFX9-NEXT:  .LBB3_7: ; %frem.loop_exit2418; GFX9-NEXT:    v_add_u32_e32 v4, -11, v42419; GFX9-NEXT:    v_ldexp_f32 v4, v5, v42420; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v62421; GFX9-NEXT:    v_rndne_f32_e32 v5, v52422; GFX9-NEXT:    v_fma_f32 v4, -v5, v3, v42423; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v42424; GFX9-NEXT:    v_add_f32_e32 v3, v4, v32425; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc2426; GFX9-NEXT:    v_ldexp_f32 v2, v3, v22427; GFX9-NEXT:    s_brev_b32 s2, -22428; GFX9-NEXT:    v_bfi_b32 v2, s2, v2, v02429; GFX9-NEXT:  .LBB3_8: ; %Flow172430; GFX9-NEXT:    s_mov_b32 s2, 0x7f8000002431; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v12432; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s22433; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc2434; GFX9-NEXT:    v_mov_b32_e32 v0, 0x7fc000002435; GFX9-NEXT:    v_mov_b32_e32 v3, 02436; GFX9-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2437; GFX9-NEXT:    global_store_dword v3, v0, s[0:1]2438; GFX9-NEXT:    s_endpgm2439;2440; GFX10-LABEL: frem_f32:2441; GFX10:       ; %bb.0:2442; GFX10-NEXT:    s_clause 0x12443; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242444; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x342445; GFX10-NEXT:    v_mov_b32_e32 v2, 02446; GFX10-NEXT:    s_waitcnt lgkmcnt(0)2447; GFX10-NEXT:    s_clause 0x12448; GFX10-NEXT:    global_load_dword v0, v2, s[2:3]2449; GFX10-NEXT:    global_load_dword v1, v2, s[6:7] offset:162450; GFX10-NEXT:    s_waitcnt vmcnt(0)2451; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v1|2452; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s22453; GFX10-NEXT:    s_cbranch_vccz .LBB3_22454; GFX10-NEXT:  ; %bb.1: ; %frem.else2455; GFX10-NEXT:    v_bfi_b32 v2, 0x7fffffff, 0, v02456; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v1|2457; GFX10-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo2458; GFX10-NEXT:    s_cbranch_execz .LBB3_32459; GFX10-NEXT:    s_branch .LBB3_82460; GFX10-NEXT:  .LBB3_2:2461; GFX10-NEXT:    ; implicit-def: $vgpr22462; GFX10-NEXT:  .LBB3_3: ; %frem.compute2463; GFX10-NEXT:    v_frexp_mant_f32_e64 v3, |v1|2464; GFX10-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2465; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v02466; GFX10-NEXT:    v_ldexp_f32 v3, v3, 12467; GFX10-NEXT:    v_ldexp_f32 v4, v2, 122468; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v2, v12469; GFX10-NEXT:    v_readfirstlane_b32 s2, v52470; GFX10-NEXT:    v_div_scale_f32 v7, s4, v3, v3, 1.02471; GFX10-NEXT:    v_readfirstlane_b32 s3, v22472; GFX10-NEXT:    v_add_nc_u32_e32 v2, -1, v22473; GFX10-NEXT:    v_rcp_f32_e32 v8, v72474; GFX10-NEXT:    v_not_b32_e32 v6, v22475; GFX10-NEXT:    v_add_nc_u32_e32 v6, v6, v52476; GFX10-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.02477; GFX10-NEXT:    s_denorm_mode 152478; GFX10-NEXT:    v_fma_f32 v9, -v7, v8, 1.02479; GFX10-NEXT:    v_fmac_f32_e32 v8, v9, v82480; GFX10-NEXT:    v_mul_f32_e32 v9, v5, v82481; GFX10-NEXT:    v_fma_f32 v10, -v7, v9, v52482; GFX10-NEXT:    v_fmac_f32_e32 v9, v10, v82483; GFX10-NEXT:    v_fma_f32 v5, -v7, v9, v52484; GFX10-NEXT:    s_denorm_mode 122485; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v92486; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v62487; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.02488; GFX10-NEXT:    s_cbranch_vccnz .LBB3_72489; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2490; GFX10-NEXT:    s_sub_i32 s2, s2, s32491; GFX10-NEXT:    s_add_i32 s2, s2, 122492; GFX10-NEXT:  .LBB3_5: ; %frem.loop_body2493; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=12494; GFX10-NEXT:    v_mov_b32_e32 v7, v42495; GFX10-NEXT:    s_add_i32 s2, s2, -122496; GFX10-NEXT:    s_cmp_gt_i32 s2, 122497; GFX10-NEXT:    v_mul_f32_e32 v4, v7, v52498; GFX10-NEXT:    v_rndne_f32_e32 v4, v42499; GFX10-NEXT:    v_fma_f32 v4, -v4, v3, v72500; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v42501; GFX10-NEXT:    v_add_f32_e32 v6, v4, v32502; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo2503; GFX10-NEXT:    v_ldexp_f32 v4, v4, 122504; GFX10-NEXT:    s_cbranch_scc1 .LBB3_52505; GFX10-NEXT:  ; %bb.6: ; %Flow2506; GFX10-NEXT:    v_mov_b32_e32 v6, s22507; GFX10-NEXT:    v_mov_b32_e32 v4, v72508; GFX10-NEXT:  .LBB3_7: ; %frem.loop_exit2509; GFX10-NEXT:    v_add_nc_u32_e32 v6, -11, v62510; GFX10-NEXT:    v_ldexp_f32 v4, v4, v62511; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v52512; GFX10-NEXT:    v_rndne_f32_e32 v5, v52513; GFX10-NEXT:    v_fma_f32 v4, -v5, v3, v42514; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v42515; GFX10-NEXT:    v_add_f32_e32 v3, v4, v32516; GFX10-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo2517; GFX10-NEXT:    v_ldexp_f32 v2, v3, v22518; GFX10-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, v02519; GFX10-NEXT:  .LBB3_8: ; %Flow172520; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v12521; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|2522; GFX10-NEXT:    v_mov_b32_e32 v3, 02523; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo2524; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v2, vcc_lo2525; GFX10-NEXT:    global_store_dword v3, v0, s[0:1]2526; GFX10-NEXT:    s_endpgm2527;2528; GFX11-LABEL: frem_f32:2529; GFX11:       ; %bb.0:2530; GFX11-NEXT:    s_clause 0x12531; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x242532; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x342533; GFX11-NEXT:    v_mov_b32_e32 v1, 02534; GFX11-NEXT:    s_waitcnt lgkmcnt(0)2535; GFX11-NEXT:    s_clause 0x12536; GFX11-NEXT:    global_load_b32 v0, v1, s[2:3]2537; GFX11-NEXT:    global_load_b32 v1, v1, s[4:5] offset:162538; GFX11-NEXT:    s_waitcnt vmcnt(0)2539; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v1|2540; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s22541; GFX11-NEXT:    s_cbranch_vccz .LBB3_22542; GFX11-NEXT:  ; %bb.1: ; %frem.else2543; GFX11-NEXT:    v_bfi_b32 v2, 0x7fffffff, 0, v02544; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v1|2545; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)2546; GFX11-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo2547; GFX11-NEXT:    s_cbranch_execz .LBB3_32548; GFX11-NEXT:    s_branch .LBB3_82549; GFX11-NEXT:  .LBB3_2:2550; GFX11-NEXT:    ; implicit-def: $vgpr22551; GFX11-NEXT:  .LBB3_3: ; %frem.compute2552; GFX11-NEXT:    v_frexp_mant_f32_e64 v3, |v1|2553; GFX11-NEXT:    v_frexp_mant_f32_e64 v2, |v0|2554; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v5, v02555; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2556; GFX11-NEXT:    v_ldexp_f32 v3, v3, 12557; GFX11-NEXT:    v_ldexp_f32 v4, v2, 122558; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v2, v12559; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2560; GFX11-NEXT:    v_readfirstlane_b32 s2, v52561; GFX11-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.02562; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)2563; GFX11-NEXT:    v_readfirstlane_b32 s3, v22564; GFX11-NEXT:    v_add_nc_u32_e32 v2, -1, v22565; GFX11-NEXT:    v_rcp_f32_e32 v8, v72566; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2567; GFX11-NEXT:    v_not_b32_e32 v6, v22568; GFX11-NEXT:    v_add_nc_u32_e32 v6, v6, v52569; GFX11-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.02570; GFX11-NEXT:    s_denorm_mode 152571; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)2572; GFX11-NEXT:    v_fma_f32 v9, -v7, v8, 1.02573; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2574; GFX11-NEXT:    v_fmac_f32_e32 v8, v9, v82575; GFX11-NEXT:    v_mul_f32_e32 v9, v5, v82576; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2577; GFX11-NEXT:    v_fma_f32 v10, -v7, v9, v52578; GFX11-NEXT:    v_fmac_f32_e32 v9, v10, v82579; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2580; GFX11-NEXT:    v_fma_f32 v5, -v7, v9, v52581; GFX11-NEXT:    s_denorm_mode 122582; GFX11-NEXT:    v_div_fmas_f32 v5, v5, v8, v92583; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v62584; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)2585; GFX11-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.02586; GFX11-NEXT:    s_cbranch_vccnz .LBB3_72587; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2588; GFX11-NEXT:    s_sub_i32 s2, s2, s32589; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2590; GFX11-NEXT:    s_add_i32 s2, s2, 122591; GFX11-NEXT:  .LBB3_5: ; %frem.loop_body2592; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=12593; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2594; GFX11-NEXT:    v_mov_b32_e32 v7, v42595; GFX11-NEXT:    s_add_i32 s2, s2, -122596; GFX11-NEXT:    s_cmp_gt_i32 s2, 122597; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2598; GFX11-NEXT:    v_mul_f32_e32 v4, v7, v52599; GFX11-NEXT:    v_rndne_f32_e32 v4, v42600; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2601; GFX11-NEXT:    v_fma_f32 v4, -v4, v3, v72602; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v42603; GFX11-NEXT:    v_add_f32_e32 v6, v4, v32604; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2605; GFX11-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo2606; GFX11-NEXT:    v_ldexp_f32 v4, v4, 122607; GFX11-NEXT:    s_cbranch_scc1 .LBB3_52608; GFX11-NEXT:  ; %bb.6: ; %Flow2609; GFX11-NEXT:    v_mov_b32_e32 v6, s22610; GFX11-NEXT:    v_mov_b32_e32 v4, v72611; GFX11-NEXT:  .LBB3_7: ; %frem.loop_exit2612; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2613; GFX11-NEXT:    v_add_nc_u32_e32 v6, -11, v62614; GFX11-NEXT:    v_ldexp_f32 v4, v4, v62615; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2616; GFX11-NEXT:    v_mul_f32_e32 v5, v4, v52617; GFX11-NEXT:    v_rndne_f32_e32 v5, v52618; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2619; GFX11-NEXT:    v_fma_f32 v4, -v5, v3, v42620; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v42621; GFX11-NEXT:    v_add_f32_e32 v3, v4, v32622; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2623; GFX11-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo2624; GFX11-NEXT:    v_ldexp_f32 v2, v3, v22625; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)2626; GFX11-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, v02627; GFX11-NEXT:  .LBB3_8: ; %Flow172628; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v12629; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|2630; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo2631; GFX11-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_cndmask_b32 v0, 0x7fc00000, v22632; GFX11-NEXT:    global_store_b32 v3, v0, s[0:1]2633; GFX11-NEXT:    s_endpgm2634;2635; GFX1150-LABEL: frem_f32:2636; GFX1150:       ; %bb.0:2637; GFX1150-NEXT:    s_clause 0x12638; GFX1150-NEXT:    s_load_b128 s[8:11], s[4:5], 0x242639; GFX1150-NEXT:    s_load_b64 s[0:1], s[4:5], 0x342640; GFX1150-NEXT:    v_mov_b32_e32 v0, 02641; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)2642; GFX1150-NEXT:    s_clause 0x12643; GFX1150-NEXT:    global_load_b32 v2, v0, s[10:11]2644; GFX1150-NEXT:    global_load_b32 v0, v0, s[0:1] offset:162645; GFX1150-NEXT:    s_waitcnt vmcnt(1)2646; GFX1150-NEXT:    v_and_b32_e32 v1, 0x7fffffff, v22647; GFX1150-NEXT:    s_waitcnt vmcnt(0)2648; GFX1150-NEXT:    v_and_b32_e32 v3, 0x7fffffff, v02649; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)2650; GFX1150-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v1, v32651; GFX1150-NEXT:    s_cbranch_vccz .LBB3_22652; GFX1150-NEXT:  ; %bb.1: ; %frem.else2653; GFX1150-NEXT:    v_bfi_b32 v4, 0x7fffffff, 0, v22654; GFX1150-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v1, v32655; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)2656; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v2, v4, vcc_lo2657; GFX1150-NEXT:    s_cbranch_execz .LBB3_32658; GFX1150-NEXT:    s_branch .LBB3_82659; GFX1150-NEXT:  .LBB3_2:2660; GFX1150-NEXT:    ; implicit-def: $vgpr32661; GFX1150-NEXT:  .LBB3_3: ; %frem.compute2662; GFX1150-NEXT:    v_frexp_mant_f32_e64 v4, |v0|2663; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |v2|2664; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v6, v22665; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2666; GFX1150-NEXT:    v_ldexp_f32 v4, v4, 12667; GFX1150-NEXT:    v_ldexp_f32 v5, v3, 122668; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, v02669; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2670; GFX1150-NEXT:    v_readfirstlane_b32 s0, v62671; GFX1150-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.02672; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)2673; GFX1150-NEXT:    v_readfirstlane_b32 s1, v32674; GFX1150-NEXT:    v_add_nc_u32_e32 v3, -1, v32675; GFX1150-NEXT:    v_rcp_f32_e32 v9, v82676; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2677; GFX1150-NEXT:    v_not_b32_e32 v7, v32678; GFX1150-NEXT:    v_add_nc_u32_e32 v7, v7, v62679; GFX1150-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.02680; GFX1150-NEXT:    s_denorm_mode 152681; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2682; GFX1150-NEXT:    v_fma_f32 v10, -v8, v9, 1.02683; GFX1150-NEXT:    v_fmac_f32_e32 v9, v10, v92684; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2685; GFX1150-NEXT:    v_mul_f32_e32 v10, v6, v92686; GFX1150-NEXT:    v_fma_f32 v11, -v8, v10, v62687; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2688; GFX1150-NEXT:    v_fmac_f32_e32 v10, v11, v92689; GFX1150-NEXT:    v_fma_f32 v6, -v8, v10, v62690; GFX1150-NEXT:    s_denorm_mode 122691; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2692; GFX1150-NEXT:    v_div_fmas_f32 v6, v6, v9, v102693; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v72694; GFX1150-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.02695; GFX1150-NEXT:    s_cbranch_vccnz .LBB3_72696; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2697; GFX1150-NEXT:    s_sub_i32 s0, s0, s12698; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2699; GFX1150-NEXT:    s_add_i32 s0, s0, 122700; GFX1150-NEXT:  .LBB3_5: ; %frem.loop_body2701; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=12702; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2703; GFX1150-NEXT:    v_mov_b32_e32 v8, v52704; GFX1150-NEXT:    s_add_i32 s0, s0, -122705; GFX1150-NEXT:    s_cmp_gt_i32 s0, 122706; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2707; GFX1150-NEXT:    v_mul_f32_e32 v5, v8, v62708; GFX1150-NEXT:    v_rndne_f32_e32 v5, v52709; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2710; GFX1150-NEXT:    v_xor_b32_e32 v5, 0x80000000, v52711; GFX1150-NEXT:    v_fma_f32 v5, v5, v4, v82712; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2713; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v52714; GFX1150-NEXT:    v_add_f32_e32 v7, v5, v42715; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo2716; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)2717; GFX1150-NEXT:    v_ldexp_f32 v5, v5, 122718; GFX1150-NEXT:    s_cbranch_scc1 .LBB3_52719; GFX1150-NEXT:  ; %bb.6: ; %Flow2720; GFX1150-NEXT:    v_mov_b32_e32 v7, s02721; GFX1150-NEXT:    v_mov_b32_e32 v5, v82722; GFX1150-NEXT:  .LBB3_7: ; %frem.loop_exit2723; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2724; GFX1150-NEXT:    v_add_nc_u32_e32 v7, -11, v72725; GFX1150-NEXT:    v_ldexp_f32 v5, v5, v72726; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2727; GFX1150-NEXT:    v_mul_f32_e32 v6, v5, v62728; GFX1150-NEXT:    v_rndne_f32_e32 v6, v62729; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2730; GFX1150-NEXT:    v_xor_b32_e32 v6, 0x80000000, v62731; GFX1150-NEXT:    v_fmac_f32_e32 v5, v6, v42732; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)2733; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v52734; GFX1150-NEXT:    v_add_f32_e32 v4, v5, v42735; GFX1150-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo2736; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2737; GFX1150-NEXT:    v_ldexp_f32 v3, v4, v32738; GFX1150-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, v22739; GFX1150-NEXT:  .LBB3_8: ; %Flow172740; GFX1150-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v02741; GFX1150-NEXT:    v_cmp_nle_f32_e64 s0, 0x7f800000, v12742; GFX1150-NEXT:    v_mov_b32_e32 v2, 02743; GFX1150-NEXT:    s_and_b32 vcc_lo, s0, vcc_lo2744; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v3, vcc_lo2745; GFX1150-NEXT:    global_store_b32 v2, v0, s[8:9]2746; GFX1150-NEXT:    s_endpgm2747;2748; GFX1200-LABEL: frem_f32:2749; GFX1200:       ; %bb.0:2750; GFX1200-NEXT:    s_clause 0x12751; GFX1200-NEXT:    s_load_b128 s[8:11], s[4:5], 0x242752; GFX1200-NEXT:    s_load_b64 s[0:1], s[4:5], 0x342753; GFX1200-NEXT:    v_mov_b32_e32 v0, 02754; GFX1200-NEXT:    s_wait_kmcnt 0x02755; GFX1200-NEXT:    s_clause 0x12756; GFX1200-NEXT:    global_load_b32 v2, v0, s[10:11]2757; GFX1200-NEXT:    global_load_b32 v0, v0, s[0:1] offset:162758; GFX1200-NEXT:    s_wait_loadcnt 0x12759; GFX1200-NEXT:    v_and_b32_e32 v1, 0x7fffffff, v22760; GFX1200-NEXT:    s_wait_loadcnt 0x02761; GFX1200-NEXT:    v_and_b32_e32 v3, 0x7fffffff, v02762; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)2763; GFX1200-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v1, v32764; GFX1200-NEXT:    s_cbranch_vccz .LBB3_22765; GFX1200-NEXT:  ; %bb.1: ; %frem.else2766; GFX1200-NEXT:    v_bfi_b32 v4, 0x7fffffff, 0, v22767; GFX1200-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v1, v32768; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)2769; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v2, v4, vcc_lo2770; GFX1200-NEXT:    s_cbranch_execz .LBB3_32771; GFX1200-NEXT:    s_branch .LBB3_82772; GFX1200-NEXT:  .LBB3_2:2773; GFX1200-NEXT:    ; implicit-def: $vgpr32774; GFX1200-NEXT:  .LBB3_3: ; %frem.compute2775; GFX1200-NEXT:    v_frexp_mant_f32_e64 v4, |v0|2776; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |v2|2777; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v6, v22778; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)2779; GFX1200-NEXT:    v_ldexp_f32 v4, v4, 12780; GFX1200-NEXT:    v_ldexp_f32 v5, v3, 122781; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, v02782; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)2783; GFX1200-NEXT:    v_readfirstlane_b32 s0, v62784; GFX1200-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.02785; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)2786; GFX1200-NEXT:    v_readfirstlane_b32 s1, v32787; GFX1200-NEXT:    v_add_nc_u32_e32 v3, -1, v32788; GFX1200-NEXT:    v_rcp_f32_e32 v9, v82789; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2790; GFX1200-NEXT:    v_not_b32_e32 v7, v32791; GFX1200-NEXT:    v_add_nc_u32_e32 v7, v7, v62792; GFX1200-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.02793; GFX1200-NEXT:    s_denorm_mode 152794; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2795; GFX1200-NEXT:    v_fma_f32 v10, -v8, v9, 1.02796; GFX1200-NEXT:    v_fmac_f32_e32 v9, v10, v92797; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2798; GFX1200-NEXT:    v_mul_f32_e32 v10, v6, v92799; GFX1200-NEXT:    v_fma_f32 v11, -v8, v10, v62800; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2801; GFX1200-NEXT:    v_fmac_f32_e32 v10, v11, v92802; GFX1200-NEXT:    v_fma_f32 v6, -v8, v10, v62803; GFX1200-NEXT:    s_denorm_mode 122804; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)2805; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)2806; GFX1200-NEXT:    v_div_fmas_f32 v6, v6, v9, v102807; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v72808; GFX1200-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.02809; GFX1200-NEXT:    s_cbranch_vccnz .LBB3_72810; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body.preheader2811; GFX1200-NEXT:    s_sub_co_i32 s0, s0, s12812; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)2813; GFX1200-NEXT:    s_add_co_i32 s0, s0, 122814; GFX1200-NEXT:  .LBB3_5: ; %frem.loop_body2815; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=12816; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)2817; GFX1200-NEXT:    v_mov_b32_e32 v8, v52818; GFX1200-NEXT:    s_add_co_i32 s0, s0, -122819; GFX1200-NEXT:    s_cmp_gt_i32 s0, 122820; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2821; GFX1200-NEXT:    v_mul_f32_e32 v5, v8, v62822; GFX1200-NEXT:    v_rndne_f32_e32 v5, v52823; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2824; GFX1200-NEXT:    v_xor_b32_e32 v5, 0x80000000, v52825; GFX1200-NEXT:    v_fma_f32 v5, v5, v4, v82826; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)2827; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v52828; GFX1200-NEXT:    v_add_f32_e32 v7, v5, v42829; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)2830; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo2831; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)2832; GFX1200-NEXT:    v_ldexp_f32 v5, v5, 122833; GFX1200-NEXT:    s_cbranch_scc1 .LBB3_52834; GFX1200-NEXT:  ; %bb.6: ; %Flow2835; GFX1200-NEXT:    v_mov_b32_e32 v7, s02836; GFX1200-NEXT:    v_mov_b32_e32 v5, v82837; GFX1200-NEXT:  .LBB3_7: ; %frem.loop_exit2838; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)2839; GFX1200-NEXT:    v_add_nc_u32_e32 v7, -11, v72840; GFX1200-NEXT:    v_ldexp_f32 v5, v5, v72841; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2842; GFX1200-NEXT:    v_mul_f32_e32 v6, v5, v62843; GFX1200-NEXT:    v_rndne_f32_e32 v6, v62844; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2845; GFX1200-NEXT:    v_xor_b32_e32 v6, 0x80000000, v62846; GFX1200-NEXT:    v_fmac_f32_e32 v5, v6, v42847; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)2848; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v52849; GFX1200-NEXT:    v_add_f32_e32 v4, v5, v42850; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)2851; GFX1200-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo2852; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)2853; GFX1200-NEXT:    v_ldexp_f32 v3, v4, v32854; GFX1200-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, v22855; GFX1200-NEXT:  .LBB3_8: ; %Flow172856; GFX1200-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v02857; GFX1200-NEXT:    v_cmp_nle_f32_e64 s0, 0x7f800000, v12858; GFX1200-NEXT:    v_mov_b32_e32 v2, 02859; GFX1200-NEXT:    s_and_b32 vcc_lo, s0, vcc_lo2860; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)2861; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v3, vcc_lo2862; GFX1200-NEXT:    global_store_b32 v2, v0, s[8:9]2863; GFX1200-NEXT:    s_endpgm2864                      ptr addrspace(1) %in2) #0 {2865   %gep2 = getelementptr float, ptr addrspace(1) %in2, i32 42866   %r0 = load float, ptr addrspace(1) %in1, align 42867   %r1 = load float, ptr addrspace(1) %gep2, align 42868   %r2 = frem float %r0, %r12869   store float %r2, ptr addrspace(1) %out, align 42870   ret void2871}2872 2873define amdgpu_kernel void @fast_frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1,2874; SI-LABEL: fast_frem_f32:2875; SI:       ; %bb.0:2876; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92877; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2878; SI-NEXT:    s_mov_b32 s11, 0xf0002879; SI-NEXT:    s_mov_b32 s10, -12880; SI-NEXT:    s_waitcnt lgkmcnt(0)2881; SI-NEXT:    s_mov_b32 s8, s02882; SI-NEXT:    s_mov_b32 s9, s12883; SI-NEXT:    s_mov_b32 s0, s22884; SI-NEXT:    s_mov_b32 s1, s32885; SI-NEXT:    s_mov_b32 s2, s102886; SI-NEXT:    s_mov_b32 s3, s112887; SI-NEXT:    s_mov_b32 s6, s102888; SI-NEXT:    s_mov_b32 s7, s112889; SI-NEXT:    buffer_load_dword v0, off, s[0:3], 02890; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:162891; SI-NEXT:    s_waitcnt vmcnt(0)2892; SI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v02893; SI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v02894; SI-NEXT:    v_rcp_f32_e32 v4, v32895; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32896; SI-NEXT:    v_fma_f32 v5, -v3, v4, 1.02897; SI-NEXT:    v_fma_f32 v4, v5, v4, v42898; SI-NEXT:    v_mul_f32_e32 v5, v2, v42899; SI-NEXT:    v_fma_f32 v6, -v3, v5, v22900; SI-NEXT:    v_fma_f32 v5, v6, v4, v52901; SI-NEXT:    v_fma_f32 v2, -v3, v5, v22902; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02903; SI-NEXT:    v_div_fmas_f32 v2, v2, v4, v52904; SI-NEXT:    v_div_fixup_f32 v2, v2, v1, v02905; SI-NEXT:    v_trunc_f32_e32 v2, v22906; SI-NEXT:    v_fma_f32 v0, -v2, v1, v02907; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 02908; SI-NEXT:    s_endpgm2909;2910; CI-LABEL: fast_frem_f32:2911; CI:       ; %bb.0:2912; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x92913; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd2914; CI-NEXT:    s_mov_b32 s11, 0xf0002915; CI-NEXT:    s_mov_b32 s10, -12916; CI-NEXT:    s_mov_b32 s6, s102917; CI-NEXT:    s_waitcnt lgkmcnt(0)2918; CI-NEXT:    s_mov_b32 s8, s02919; CI-NEXT:    s_mov_b32 s9, s12920; CI-NEXT:    s_mov_b32 s0, s22921; CI-NEXT:    s_mov_b32 s1, s32922; CI-NEXT:    s_mov_b32 s2, s102923; CI-NEXT:    s_mov_b32 s3, s112924; CI-NEXT:    s_mov_b32 s7, s112925; CI-NEXT:    buffer_load_dword v0, off, s[0:3], 02926; CI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:162927; CI-NEXT:    s_waitcnt vmcnt(0)2928; CI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v02929; CI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v02930; CI-NEXT:    v_rcp_f32_e32 v4, v32931; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32932; CI-NEXT:    v_fma_f32 v5, -v3, v4, 1.02933; CI-NEXT:    v_fma_f32 v4, v5, v4, v42934; CI-NEXT:    v_mul_f32_e32 v5, v2, v42935; CI-NEXT:    v_fma_f32 v6, -v3, v5, v22936; CI-NEXT:    v_fma_f32 v5, v6, v4, v52937; CI-NEXT:    v_fma_f32 v2, -v3, v5, v22938; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02939; CI-NEXT:    v_div_fmas_f32 v2, v2, v4, v52940; CI-NEXT:    v_div_fixup_f32 v2, v2, v1, v02941; CI-NEXT:    v_trunc_f32_e32 v2, v22942; CI-NEXT:    v_fma_f32 v0, -v2, v1, v02943; CI-NEXT:    buffer_store_dword v0, off, s[8:11], 02944; CI-NEXT:    s_endpgm2945;2946; VI-LABEL: fast_frem_f32:2947; VI:       ; %bb.0:2948; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242949; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x342950; VI-NEXT:    s_waitcnt lgkmcnt(0)2951; VI-NEXT:    v_mov_b32_e32 v0, s02952; VI-NEXT:    s_add_u32 s0, s4, 162953; VI-NEXT:    v_mov_b32_e32 v1, s12954; VI-NEXT:    v_mov_b32_e32 v2, s22955; VI-NEXT:    v_mov_b32_e32 v3, s32956; VI-NEXT:    s_addc_u32 s1, s5, 02957; VI-NEXT:    flat_load_dword v4, v[2:3]2958; VI-NEXT:    v_mov_b32_e32 v3, s12959; VI-NEXT:    v_mov_b32_e32 v2, s02960; VI-NEXT:    flat_load_dword v2, v[2:3]2961; VI-NEXT:    s_waitcnt vmcnt(0)2962; VI-NEXT:    v_div_scale_f32 v5, s[0:1], v2, v2, v42963; VI-NEXT:    v_div_scale_f32 v3, vcc, v4, v2, v42964; VI-NEXT:    v_rcp_f32_e32 v6, v52965; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32966; VI-NEXT:    v_fma_f32 v7, -v5, v6, 1.02967; VI-NEXT:    v_fma_f32 v6, v7, v6, v62968; VI-NEXT:    v_mul_f32_e32 v7, v3, v62969; VI-NEXT:    v_fma_f32 v8, -v5, v7, v32970; VI-NEXT:    v_fma_f32 v7, v8, v6, v72971; VI-NEXT:    v_fma_f32 v3, -v5, v7, v32972; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 02973; VI-NEXT:    v_div_fmas_f32 v3, v3, v6, v72974; VI-NEXT:    v_div_fixup_f32 v3, v3, v2, v42975; VI-NEXT:    v_trunc_f32_e32 v3, v32976; VI-NEXT:    v_fma_f32 v2, -v3, v2, v42977; VI-NEXT:    flat_store_dword v[0:1], v22978; VI-NEXT:    s_endpgm2979;2980; GFX9-LABEL: fast_frem_f32:2981; GFX9:       ; %bb.0:2982; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x242983; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x342984; GFX9-NEXT:    v_mov_b32_e32 v0, 02985; GFX9-NEXT:    s_waitcnt lgkmcnt(0)2986; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]2987; GFX9-NEXT:    global_load_dword v2, v0, s[6:7] offset:162988; GFX9-NEXT:    s_waitcnt vmcnt(0)2989; GFX9-NEXT:    v_div_scale_f32 v4, s[2:3], v2, v2, v12990; GFX9-NEXT:    v_div_scale_f32 v3, vcc, v1, v2, v12991; GFX9-NEXT:    v_rcp_f32_e32 v5, v42992; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 32993; GFX9-NEXT:    v_fma_f32 v6, -v4, v5, 1.02994; GFX9-NEXT:    v_fma_f32 v5, v6, v5, v52995; GFX9-NEXT:    v_mul_f32_e32 v6, v3, v52996; GFX9-NEXT:    v_fma_f32 v7, -v4, v6, v32997; GFX9-NEXT:    v_fma_f32 v6, v7, v5, v62998; GFX9-NEXT:    v_fma_f32 v3, -v4, v6, v32999; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 03000; GFX9-NEXT:    v_div_fmas_f32 v3, v3, v5, v63001; GFX9-NEXT:    v_div_fixup_f32 v3, v3, v2, v13002; GFX9-NEXT:    v_trunc_f32_e32 v3, v33003; GFX9-NEXT:    v_fma_f32 v1, -v3, v2, v13004; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]3005; GFX9-NEXT:    s_endpgm3006;3007; GFX10-LABEL: fast_frem_f32:3008; GFX10:       ; %bb.0:3009; GFX10-NEXT:    s_clause 0x13010; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243011; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x343012; GFX10-NEXT:    v_mov_b32_e32 v0, 03013; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3014; GFX10-NEXT:    s_clause 0x13015; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]3016; GFX10-NEXT:    global_load_dword v2, v0, s[6:7] offset:163017; GFX10-NEXT:    s_waitcnt vmcnt(0)3018; GFX10-NEXT:    v_div_scale_f32 v4, s2, v2, v2, v13019; GFX10-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13020; GFX10-NEXT:    v_rcp_f32_e32 v5, v43021; GFX10-NEXT:    s_denorm_mode 153022; GFX10-NEXT:    v_fma_f32 v6, -v4, v5, 1.03023; GFX10-NEXT:    v_fmac_f32_e32 v5, v6, v53024; GFX10-NEXT:    v_mul_f32_e32 v6, v3, v53025; GFX10-NEXT:    v_fma_f32 v7, -v4, v6, v33026; GFX10-NEXT:    v_fmac_f32_e32 v6, v7, v53027; GFX10-NEXT:    v_fma_f32 v3, -v4, v6, v33028; GFX10-NEXT:    s_denorm_mode 123029; GFX10-NEXT:    v_div_fmas_f32 v3, v3, v5, v63030; GFX10-NEXT:    v_div_fixup_f32 v3, v3, v2, v13031; GFX10-NEXT:    v_trunc_f32_e32 v3, v33032; GFX10-NEXT:    v_fma_f32 v1, -v3, v2, v13033; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]3034; GFX10-NEXT:    s_endpgm3035;3036; GFX11-LABEL: fast_frem_f32:3037; GFX11:       ; %bb.0:3038; GFX11-NEXT:    s_clause 0x13039; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243040; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343041; GFX11-NEXT:    v_mov_b32_e32 v0, 03042; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3043; GFX11-NEXT:    s_clause 0x13044; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]3045; GFX11-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163046; GFX11-NEXT:    s_waitcnt vmcnt(0)3047; GFX11-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13048; GFX11-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13049; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)3050; GFX11-NEXT:    v_rcp_f32_e32 v5, v43051; GFX11-NEXT:    s_denorm_mode 153052; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)3053; GFX11-NEXT:    v_fma_f32 v6, -v4, v5, 1.03054; GFX11-NEXT:    v_fmac_f32_e32 v5, v6, v53055; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3056; GFX11-NEXT:    v_mul_f32_e32 v6, v3, v53057; GFX11-NEXT:    v_fma_f32 v7, -v4, v6, v33058; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3059; GFX11-NEXT:    v_fmac_f32_e32 v6, v7, v53060; GFX11-NEXT:    v_fma_f32 v3, -v4, v6, v33061; GFX11-NEXT:    s_denorm_mode 123062; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3063; GFX11-NEXT:    v_div_fmas_f32 v3, v3, v5, v63064; GFX11-NEXT:    v_div_fixup_f32 v3, v3, v2, v13065; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3066; GFX11-NEXT:    v_trunc_f32_e32 v3, v33067; GFX11-NEXT:    v_fma_f32 v1, -v3, v2, v13068; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]3069; GFX11-NEXT:    s_endpgm3070;3071; GFX1150-LABEL: fast_frem_f32:3072; GFX1150:       ; %bb.0:3073; GFX1150-NEXT:    s_clause 0x13074; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243075; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343076; GFX1150-NEXT:    v_mov_b32_e32 v0, 03077; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)3078; GFX1150-NEXT:    s_clause 0x13079; GFX1150-NEXT:    global_load_b32 v1, v0, s[2:3]3080; GFX1150-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163081; GFX1150-NEXT:    s_waitcnt vmcnt(0)3082; GFX1150-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13083; GFX1150-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13084; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)3085; GFX1150-NEXT:    v_rcp_f32_e32 v5, v43086; GFX1150-NEXT:    s_denorm_mode 153087; GFX1150-NEXT:    v_fma_f32 v6, -v4, v5, 1.03088; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3089; GFX1150-NEXT:    v_fmac_f32_e32 v5, v6, v53090; GFX1150-NEXT:    v_mul_f32_e32 v6, v3, v53091; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3092; GFX1150-NEXT:    v_fma_f32 v7, -v4, v6, v33093; GFX1150-NEXT:    v_fmac_f32_e32 v6, v7, v53094; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3095; GFX1150-NEXT:    v_fma_f32 v3, -v4, v6, v33096; GFX1150-NEXT:    s_denorm_mode 123097; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v5, v63098; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3099; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v2, v13100; GFX1150-NEXT:    v_trunc_f32_e32 v3, v33101; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3102; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v33103; GFX1150-NEXT:    v_fmac_f32_e32 v1, v3, v23104; GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]3105; GFX1150-NEXT:    s_endpgm3106;3107; GFX1200-LABEL: fast_frem_f32:3108; GFX1200:       ; %bb.0:3109; GFX1200-NEXT:    s_clause 0x13110; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243111; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343112; GFX1200-NEXT:    v_mov_b32_e32 v0, 03113; GFX1200-NEXT:    s_wait_kmcnt 0x03114; GFX1200-NEXT:    s_clause 0x13115; GFX1200-NEXT:    global_load_b32 v1, v0, s[2:3]3116; GFX1200-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163117; GFX1200-NEXT:    s_wait_loadcnt 0x03118; GFX1200-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13119; GFX1200-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13120; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)3121; GFX1200-NEXT:    v_rcp_f32_e32 v5, v43122; GFX1200-NEXT:    s_denorm_mode 153123; GFX1200-NEXT:    v_fma_f32 v6, -v4, v5, 1.03124; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3125; GFX1200-NEXT:    v_fmac_f32_e32 v5, v6, v53126; GFX1200-NEXT:    v_mul_f32_e32 v6, v3, v53127; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3128; GFX1200-NEXT:    v_fma_f32 v7, -v4, v6, v33129; GFX1200-NEXT:    v_fmac_f32_e32 v6, v7, v53130; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3131; GFX1200-NEXT:    v_fma_f32 v3, -v4, v6, v33132; GFX1200-NEXT:    s_denorm_mode 123133; GFX1200-NEXT:    v_div_fmas_f32 v3, v3, v5, v63134; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3135; GFX1200-NEXT:    v_div_fixup_f32 v3, v3, v2, v13136; GFX1200-NEXT:    v_trunc_f32_e32 v3, v33137; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3138; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v33139; GFX1200-NEXT:    v_fmac_f32_e32 v1, v3, v23140; GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]3141; GFX1200-NEXT:    s_endpgm3142                      ptr addrspace(1) %in2) #0 {3143   %gep2 = getelementptr float, ptr addrspace(1) %in2, i32 43144   %r0 = load float, ptr addrspace(1) %in1, align 43145   %r1 = load float, ptr addrspace(1) %gep2, align 43146   %r2 = frem fast float %r0, %r13147   store float %r2, ptr addrspace(1) %out, align 43148   ret void3149}3150 3151define amdgpu_kernel void @unsafe_frem_f32(ptr addrspace(1) %out, ptr addrspace(1) %in1,3152; SI-LABEL: unsafe_frem_f32:3153; SI:       ; %bb.0:3154; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93155; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3156; SI-NEXT:    s_mov_b32 s11, 0xf0003157; SI-NEXT:    s_mov_b32 s10, -13158; SI-NEXT:    s_waitcnt lgkmcnt(0)3159; SI-NEXT:    s_mov_b32 s8, s03160; SI-NEXT:    s_mov_b32 s9, s13161; SI-NEXT:    s_mov_b32 s0, s23162; SI-NEXT:    s_mov_b32 s1, s33163; SI-NEXT:    s_mov_b32 s2, s103164; SI-NEXT:    s_mov_b32 s3, s113165; SI-NEXT:    s_mov_b32 s6, s103166; SI-NEXT:    s_mov_b32 s7, s113167; SI-NEXT:    buffer_load_dword v0, off, s[0:3], 03168; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:163169; SI-NEXT:    s_waitcnt vmcnt(0)3170; SI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v03171; SI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v03172; SI-NEXT:    v_rcp_f32_e32 v4, v33173; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 33174; SI-NEXT:    v_fma_f32 v5, -v3, v4, 1.03175; SI-NEXT:    v_fma_f32 v4, v5, v4, v43176; SI-NEXT:    v_mul_f32_e32 v5, v2, v43177; SI-NEXT:    v_fma_f32 v6, -v3, v5, v23178; SI-NEXT:    v_fma_f32 v5, v6, v4, v53179; SI-NEXT:    v_fma_f32 v2, -v3, v5, v23180; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 03181; SI-NEXT:    v_div_fmas_f32 v2, v2, v4, v53182; SI-NEXT:    v_div_fixup_f32 v2, v2, v1, v03183; SI-NEXT:    v_trunc_f32_e32 v2, v23184; SI-NEXT:    v_fma_f32 v0, -v2, v1, v03185; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 03186; SI-NEXT:    s_endpgm3187;3188; CI-LABEL: unsafe_frem_f32:3189; CI:       ; %bb.0:3190; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93191; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3192; CI-NEXT:    s_mov_b32 s11, 0xf0003193; CI-NEXT:    s_mov_b32 s10, -13194; CI-NEXT:    s_mov_b32 s6, s103195; CI-NEXT:    s_waitcnt lgkmcnt(0)3196; CI-NEXT:    s_mov_b32 s8, s03197; CI-NEXT:    s_mov_b32 s9, s13198; CI-NEXT:    s_mov_b32 s0, s23199; CI-NEXT:    s_mov_b32 s1, s33200; CI-NEXT:    s_mov_b32 s2, s103201; CI-NEXT:    s_mov_b32 s3, s113202; CI-NEXT:    s_mov_b32 s7, s113203; CI-NEXT:    buffer_load_dword v0, off, s[0:3], 03204; CI-NEXT:    buffer_load_dword v1, off, s[4:7], 0 offset:163205; CI-NEXT:    s_waitcnt vmcnt(0)3206; CI-NEXT:    v_div_scale_f32 v3, s[0:1], v1, v1, v03207; CI-NEXT:    v_div_scale_f32 v2, vcc, v0, v1, v03208; CI-NEXT:    v_rcp_f32_e32 v4, v33209; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 33210; CI-NEXT:    v_fma_f32 v5, -v3, v4, 1.03211; CI-NEXT:    v_fma_f32 v4, v5, v4, v43212; CI-NEXT:    v_mul_f32_e32 v5, v2, v43213; CI-NEXT:    v_fma_f32 v6, -v3, v5, v23214; CI-NEXT:    v_fma_f32 v5, v6, v4, v53215; CI-NEXT:    v_fma_f32 v2, -v3, v5, v23216; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 03217; CI-NEXT:    v_div_fmas_f32 v2, v2, v4, v53218; CI-NEXT:    v_div_fixup_f32 v2, v2, v1, v03219; CI-NEXT:    v_trunc_f32_e32 v2, v23220; CI-NEXT:    v_fma_f32 v0, -v2, v1, v03221; CI-NEXT:    buffer_store_dword v0, off, s[8:11], 03222; CI-NEXT:    s_endpgm3223;3224; VI-LABEL: unsafe_frem_f32:3225; VI:       ; %bb.0:3226; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243227; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x343228; VI-NEXT:    s_waitcnt lgkmcnt(0)3229; VI-NEXT:    v_mov_b32_e32 v0, s03230; VI-NEXT:    s_add_u32 s0, s4, 163231; VI-NEXT:    v_mov_b32_e32 v1, s13232; VI-NEXT:    v_mov_b32_e32 v2, s23233; VI-NEXT:    v_mov_b32_e32 v3, s33234; VI-NEXT:    s_addc_u32 s1, s5, 03235; VI-NEXT:    flat_load_dword v4, v[2:3]3236; VI-NEXT:    v_mov_b32_e32 v3, s13237; VI-NEXT:    v_mov_b32_e32 v2, s03238; VI-NEXT:    flat_load_dword v2, v[2:3]3239; VI-NEXT:    s_waitcnt vmcnt(0)3240; VI-NEXT:    v_div_scale_f32 v5, s[0:1], v2, v2, v43241; VI-NEXT:    v_div_scale_f32 v3, vcc, v4, v2, v43242; VI-NEXT:    v_rcp_f32_e32 v6, v53243; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 33244; VI-NEXT:    v_fma_f32 v7, -v5, v6, 1.03245; VI-NEXT:    v_fma_f32 v6, v7, v6, v63246; VI-NEXT:    v_mul_f32_e32 v7, v3, v63247; VI-NEXT:    v_fma_f32 v8, -v5, v7, v33248; VI-NEXT:    v_fma_f32 v7, v8, v6, v73249; VI-NEXT:    v_fma_f32 v3, -v5, v7, v33250; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 03251; VI-NEXT:    v_div_fmas_f32 v3, v3, v6, v73252; VI-NEXT:    v_div_fixup_f32 v3, v3, v2, v43253; VI-NEXT:    v_trunc_f32_e32 v3, v33254; VI-NEXT:    v_fma_f32 v2, -v3, v2, v43255; VI-NEXT:    flat_store_dword v[0:1], v23256; VI-NEXT:    s_endpgm3257;3258; GFX9-LABEL: unsafe_frem_f32:3259; GFX9:       ; %bb.0:3260; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243261; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x343262; GFX9-NEXT:    v_mov_b32_e32 v0, 03263; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3264; GFX9-NEXT:    global_load_dword v1, v0, s[2:3]3265; GFX9-NEXT:    global_load_dword v2, v0, s[6:7] offset:163266; GFX9-NEXT:    s_waitcnt vmcnt(0)3267; GFX9-NEXT:    v_div_scale_f32 v4, s[2:3], v2, v2, v13268; GFX9-NEXT:    v_div_scale_f32 v3, vcc, v1, v2, v13269; GFX9-NEXT:    v_rcp_f32_e32 v5, v43270; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 33271; GFX9-NEXT:    v_fma_f32 v6, -v4, v5, 1.03272; GFX9-NEXT:    v_fma_f32 v5, v6, v5, v53273; GFX9-NEXT:    v_mul_f32_e32 v6, v3, v53274; GFX9-NEXT:    v_fma_f32 v7, -v4, v6, v33275; GFX9-NEXT:    v_fma_f32 v6, v7, v5, v63276; GFX9-NEXT:    v_fma_f32 v3, -v4, v6, v33277; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 03278; GFX9-NEXT:    v_div_fmas_f32 v3, v3, v5, v63279; GFX9-NEXT:    v_div_fixup_f32 v3, v3, v2, v13280; GFX9-NEXT:    v_trunc_f32_e32 v3, v33281; GFX9-NEXT:    v_fma_f32 v1, -v3, v2, v13282; GFX9-NEXT:    global_store_dword v0, v1, s[0:1]3283; GFX9-NEXT:    s_endpgm3284;3285; GFX10-LABEL: unsafe_frem_f32:3286; GFX10:       ; %bb.0:3287; GFX10-NEXT:    s_clause 0x13288; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243289; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x343290; GFX10-NEXT:    v_mov_b32_e32 v0, 03291; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3292; GFX10-NEXT:    s_clause 0x13293; GFX10-NEXT:    global_load_dword v1, v0, s[2:3]3294; GFX10-NEXT:    global_load_dword v2, v0, s[6:7] offset:163295; GFX10-NEXT:    s_waitcnt vmcnt(0)3296; GFX10-NEXT:    v_div_scale_f32 v4, s2, v2, v2, v13297; GFX10-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13298; GFX10-NEXT:    v_rcp_f32_e32 v5, v43299; GFX10-NEXT:    s_denorm_mode 153300; GFX10-NEXT:    v_fma_f32 v6, -v4, v5, 1.03301; GFX10-NEXT:    v_fmac_f32_e32 v5, v6, v53302; GFX10-NEXT:    v_mul_f32_e32 v6, v3, v53303; GFX10-NEXT:    v_fma_f32 v7, -v4, v6, v33304; GFX10-NEXT:    v_fmac_f32_e32 v6, v7, v53305; GFX10-NEXT:    v_fma_f32 v3, -v4, v6, v33306; GFX10-NEXT:    s_denorm_mode 123307; GFX10-NEXT:    v_div_fmas_f32 v3, v3, v5, v63308; GFX10-NEXT:    v_div_fixup_f32 v3, v3, v2, v13309; GFX10-NEXT:    v_trunc_f32_e32 v3, v33310; GFX10-NEXT:    v_fma_f32 v1, -v3, v2, v13311; GFX10-NEXT:    global_store_dword v0, v1, s[0:1]3312; GFX10-NEXT:    s_endpgm3313;3314; GFX11-LABEL: unsafe_frem_f32:3315; GFX11:       ; %bb.0:3316; GFX11-NEXT:    s_clause 0x13317; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243318; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343319; GFX11-NEXT:    v_mov_b32_e32 v0, 03320; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3321; GFX11-NEXT:    s_clause 0x13322; GFX11-NEXT:    global_load_b32 v1, v0, s[2:3]3323; GFX11-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163324; GFX11-NEXT:    s_waitcnt vmcnt(0)3325; GFX11-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13326; GFX11-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13327; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_3) | instid1(VALU_DEP_1)3328; GFX11-NEXT:    v_rcp_f32_e32 v5, v43329; GFX11-NEXT:    s_denorm_mode 153330; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)3331; GFX11-NEXT:    v_fma_f32 v6, -v4, v5, 1.03332; GFX11-NEXT:    v_fmac_f32_e32 v5, v6, v53333; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3334; GFX11-NEXT:    v_mul_f32_e32 v6, v3, v53335; GFX11-NEXT:    v_fma_f32 v7, -v4, v6, v33336; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3337; GFX11-NEXT:    v_fmac_f32_e32 v6, v7, v53338; GFX11-NEXT:    v_fma_f32 v3, -v4, v6, v33339; GFX11-NEXT:    s_denorm_mode 123340; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3341; GFX11-NEXT:    v_div_fmas_f32 v3, v3, v5, v63342; GFX11-NEXT:    v_div_fixup_f32 v3, v3, v2, v13343; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3344; GFX11-NEXT:    v_trunc_f32_e32 v3, v33345; GFX11-NEXT:    v_fma_f32 v1, -v3, v2, v13346; GFX11-NEXT:    global_store_b32 v0, v1, s[0:1]3347; GFX11-NEXT:    s_endpgm3348;3349; GFX1150-LABEL: unsafe_frem_f32:3350; GFX1150:       ; %bb.0:3351; GFX1150-NEXT:    s_clause 0x13352; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243353; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343354; GFX1150-NEXT:    v_mov_b32_e32 v0, 03355; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)3356; GFX1150-NEXT:    s_clause 0x13357; GFX1150-NEXT:    global_load_b32 v1, v0, s[2:3]3358; GFX1150-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163359; GFX1150-NEXT:    s_waitcnt vmcnt(0)3360; GFX1150-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13361; GFX1150-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13362; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)3363; GFX1150-NEXT:    v_rcp_f32_e32 v5, v43364; GFX1150-NEXT:    s_denorm_mode 153365; GFX1150-NEXT:    v_fma_f32 v6, -v4, v5, 1.03366; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3367; GFX1150-NEXT:    v_fmac_f32_e32 v5, v6, v53368; GFX1150-NEXT:    v_mul_f32_e32 v6, v3, v53369; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3370; GFX1150-NEXT:    v_fma_f32 v7, -v4, v6, v33371; GFX1150-NEXT:    v_fmac_f32_e32 v6, v7, v53372; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3373; GFX1150-NEXT:    v_fma_f32 v3, -v4, v6, v33374; GFX1150-NEXT:    s_denorm_mode 123375; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v5, v63376; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3377; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v2, v13378; GFX1150-NEXT:    v_trunc_f32_e32 v3, v33379; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3380; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v33381; GFX1150-NEXT:    v_fmac_f32_e32 v1, v3, v23382; GFX1150-NEXT:    global_store_b32 v0, v1, s[0:1]3383; GFX1150-NEXT:    s_endpgm3384;3385; GFX1200-LABEL: unsafe_frem_f32:3386; GFX1200:       ; %bb.0:3387; GFX1200-NEXT:    s_clause 0x13388; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243389; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343390; GFX1200-NEXT:    v_mov_b32_e32 v0, 03391; GFX1200-NEXT:    s_wait_kmcnt 0x03392; GFX1200-NEXT:    s_clause 0x13393; GFX1200-NEXT:    global_load_b32 v1, v0, s[2:3]3394; GFX1200-NEXT:    global_load_b32 v2, v0, s[4:5] offset:163395; GFX1200-NEXT:    s_wait_loadcnt 0x03396; GFX1200-NEXT:    v_div_scale_f32 v4, null, v2, v2, v13397; GFX1200-NEXT:    v_div_scale_f32 v3, vcc_lo, v1, v2, v13398; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(TRANS32_DEP_1)3399; GFX1200-NEXT:    v_rcp_f32_e32 v5, v43400; GFX1200-NEXT:    s_denorm_mode 153401; GFX1200-NEXT:    v_fma_f32 v6, -v4, v5, 1.03402; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3403; GFX1200-NEXT:    v_fmac_f32_e32 v5, v6, v53404; GFX1200-NEXT:    v_mul_f32_e32 v6, v3, v53405; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3406; GFX1200-NEXT:    v_fma_f32 v7, -v4, v6, v33407; GFX1200-NEXT:    v_fmac_f32_e32 v6, v7, v53408; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3409; GFX1200-NEXT:    v_fma_f32 v3, -v4, v6, v33410; GFX1200-NEXT:    s_denorm_mode 123411; GFX1200-NEXT:    v_div_fmas_f32 v3, v3, v5, v63412; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3413; GFX1200-NEXT:    v_div_fixup_f32 v3, v3, v2, v13414; GFX1200-NEXT:    v_trunc_f32_e32 v3, v33415; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3416; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v33417; GFX1200-NEXT:    v_fmac_f32_e32 v1, v3, v23418; GFX1200-NEXT:    global_store_b32 v0, v1, s[0:1]3419; GFX1200-NEXT:    s_endpgm3420                             ptr addrspace(1) %in2) #0 {3421   %gep2 = getelementptr float, ptr addrspace(1) %in2, i32 43422   %r0 = load float, ptr addrspace(1) %in1, align 43423   %r1 = load float, ptr addrspace(1) %gep2, align 43424   %r2 = frem afn float %r0, %r13425   store float %r2, ptr addrspace(1) %out, align 43426   ret void3427}3428 3429define amdgpu_kernel void @frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,3430; SI-LABEL: frem_f64:3431; SI:       ; %bb.0:3432; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x93433; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd3434; SI-NEXT:    s_mov_b32 s7, 0xf0003435; SI-NEXT:    s_mov_b32 s6, -13436; SI-NEXT:    s_waitcnt lgkmcnt(0)3437; SI-NEXT:    s_mov_b32 s4, s103438; SI-NEXT:    s_mov_b32 s5, s113439; SI-NEXT:    s_mov_b32 s2, s63440; SI-NEXT:    s_mov_b32 s3, s73441; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[4:7], 03442; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[0:3], 03443; SI-NEXT:    s_waitcnt vmcnt(0)3444; SI-NEXT:    v_cmp_ngt_f64_e64 s[0:1], |v[0:1]|, |v[2:3]|3445; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]3446; SI-NEXT:    s_cbranch_vccz .LBB6_23447; SI-NEXT:  ; %bb.1: ; %frem.else3448; SI-NEXT:    v_and_b32_e32 v4, 0x80000000, v13449; SI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|3450; SI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc3451; SI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc3452; SI-NEXT:    s_mov_b64 vcc, exec3453; SI-NEXT:    s_cbranch_execz .LBB6_33454; SI-NEXT:    s_branch .LBB6_83455; SI-NEXT:  .LBB6_2:3456; SI-NEXT:    ; implicit-def: $vgpr4_vgpr53457; SI-NEXT:    s_mov_b64 vcc, 03458; SI-NEXT:  .LBB6_3: ; %frem.compute3459; SI-NEXT:    s_brev_b32 s5, -23460; SI-NEXT:    v_and_b32_e32 v6, 0x7fffffff, v13461; SI-NEXT:    s_mov_b32 s0, 03462; SI-NEXT:    s_mov_b32 s1, 0x7ff000003463; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[0:1]|, s[0:1]3464; SI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3465; SI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc3466; SI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc3467; SI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]3468; SI-NEXT:    s_and_b64 s[2:3], vcc, exec3469; SI-NEXT:    v_readfirstlane_b32 s2, v63470; SI-NEXT:    s_cselect_b32 s3, s2, 03471; SI-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263472; SI-NEXT:    v_and_b32_e32 v8, 0x7fffffff, v33473; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[2:3]|, s[0:1]3474; SI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3475; SI-NEXT:    v_cndmask_b32_e32 v5, v8, v5, vcc3476; SI-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc3477; SI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]3478; SI-NEXT:    s_and_b64 s[0:1], vcc, exec3479; SI-NEXT:    v_readfirstlane_b32 s0, v83480; SI-NEXT:    s_cselect_b32 s7, s0, 03481; SI-NEXT:    s_mov_b32 s2, -13482; SI-NEXT:    s_add_i32 s4, s7, -13483; SI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13484; SI-NEXT:    s_not_b32 s0, s43485; SI-NEXT:    s_add_i32 s6, s0, s33486; SI-NEXT:    v_div_scale_f64 v[8:9], s[0:1], v[4:5], v[4:5], 1.03487; SI-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]3488; SI-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.03489; SI-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]3490; SI-NEXT:    v_fma_f64 v[12:13], -v[8:9], v[10:11], 1.03491; SI-NEXT:    v_fma_f64 v[10:11], v[10:11], v[12:13], v[10:11]3492; SI-NEXT:    v_div_scale_f64 v[12:13], s[0:1], 1.0, v[4:5], 1.03493; SI-NEXT:    v_mul_f64 v[14:15], v[12:13], v[10:11]3494; SI-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], v[12:13]3495; SI-NEXT:    v_cmp_eq_u32_e32 vcc, v5, v93496; SI-NEXT:    s_mov_b32 s0, 0x3ff000003497; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, v133498; SI-NEXT:    s_xor_b64 vcc, s[0:1], vcc3499; SI-NEXT:    s_nop 03500; SI-NEXT:    v_div_fmas_f64 v[8:9], v[16:17], v[10:11], v[14:15]3501; SI-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.03502; SI-NEXT:    s_cmp_lt_i32 s6, 273503; SI-NEXT:    s_cbranch_scc1 .LBB6_73504; SI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader3505; SI-NEXT:    s_sub_i32 s0, s3, s73506; SI-NEXT:    s_add_i32 s6, s0, 263507; SI-NEXT:    s_mov_b32 s3, 0x432fffff3508; SI-NEXT:    v_mov_b32_e32 v14, 0x433000003509; SI-NEXT:    v_mov_b32_e32 v10, 03510; SI-NEXT:  .LBB6_5: ; %frem.loop_body3511; SI-NEXT:    ; =>This Inner Loop Header: Depth=13512; SI-NEXT:    v_mov_b32_e32 v13, v73513; SI-NEXT:    v_mov_b32_e32 v12, v63514; SI-NEXT:    v_mul_f64 v[6:7], v[12:13], v[8:9]3515; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[6:7]|, s[2:3]3516; SI-NEXT:    v_bfi_b32 v11, s5, v14, v73517; SI-NEXT:    v_add_f64 v[15:16], v[6:7], v[10:11]3518; SI-NEXT:    v_add_f64 v[15:16], v[15:16], -v[10:11]3519; SI-NEXT:    v_cndmask_b32_e32 v7, v16, v7, vcc3520; SI-NEXT:    v_cndmask_b32_e32 v6, v15, v6, vcc3521; SI-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[12:13]3522; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3523; SI-NEXT:    v_add_f64 v[15:16], v[6:7], v[4:5]3524; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v16, vcc3525; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v15, vcc3526; SI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 263527; SI-NEXT:    s_sub_i32 s6, s6, 263528; SI-NEXT:    s_cmp_gt_i32 s6, 263529; SI-NEXT:    s_cbranch_scc1 .LBB6_53530; SI-NEXT:  ; %bb.6: ; %Flow3531; SI-NEXT:    v_mov_b32_e32 v6, v123532; SI-NEXT:    v_mov_b32_e32 v7, v133533; SI-NEXT:  .LBB6_7: ; %frem.loop_exit3534; SI-NEXT:    s_sub_i32 s0, s6, 253535; SI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], s03536; SI-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]3537; SI-NEXT:    s_mov_b32 s0, -13538; SI-NEXT:    s_mov_b32 s1, 0x432fffff3539; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[8:9]|, s[0:1]3540; SI-NEXT:    s_brev_b32 s0, -23541; SI-NEXT:    v_mov_b32_e32 v10, 0x433000003542; SI-NEXT:    v_bfi_b32 v11, s0, v10, v93543; SI-NEXT:    v_mov_b32_e32 v10, 03544; SI-NEXT:    v_add_f64 v[12:13], v[8:9], v[10:11]3545; SI-NEXT:    v_add_f64 v[10:11], v[12:13], -v[10:11]3546; SI-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc3547; SI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc3548; SI-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]3549; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3550; SI-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]3551; SI-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc3552; SI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc3553; SI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], s43554; SI-NEXT:    v_bfi_b32 v5, s0, v5, v13555; SI-NEXT:  .LBB6_8: ; %Flow173556; SI-NEXT:    s_mov_b32 s11, 0xf0003557; SI-NEXT:    s_mov_b32 s10, -13558; SI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]3559; SI-NEXT:    s_mov_b32 s0, 03560; SI-NEXT:    s_mov_b32 s1, 0x7ff000003561; SI-NEXT:    v_cmp_nge_f64_e64 s[0:1], |v[0:1]|, s[0:1]3562; SI-NEXT:    s_and_b64 vcc, s[0:1], vcc3563; SI-NEXT:    v_mov_b32_e32 v0, 0x7ff800003564; SI-NEXT:    v_cndmask_b32_e32 v1, v0, v5, vcc3565; SI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc3566; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 03567; SI-NEXT:    s_endpgm3568;3569; CI-LABEL: frem_f64:3570; CI:       ; %bb.0:3571; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x93572; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd3573; CI-NEXT:    s_mov_b32 s11, 0xf0003574; CI-NEXT:    s_mov_b32 s10, -13575; CI-NEXT:    s_mov_b32 s6, s103576; CI-NEXT:    s_waitcnt lgkmcnt(0)3577; CI-NEXT:    s_mov_b32 s8, s23578; CI-NEXT:    s_mov_b32 s9, s33579; CI-NEXT:    s_mov_b32 s7, s113580; CI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 03581; CI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 03582; CI-NEXT:    s_waitcnt vmcnt(0)3583; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[2:3]|3584; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]3585; CI-NEXT:    s_cbranch_vccz .LBB6_23586; CI-NEXT:  ; %bb.1: ; %frem.else3587; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|3588; CI-NEXT:    v_and_b32_e32 v4, 0x80000000, v13589; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc3590; CI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc3591; CI-NEXT:    s_cbranch_execz .LBB6_33592; CI-NEXT:    s_branch .LBB6_83593; CI-NEXT:  .LBB6_2:3594; CI-NEXT:    ; implicit-def: $vgpr4_vgpr53595; CI-NEXT:  .LBB6_3: ; %frem.compute3596; CI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3597; CI-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]3598; CI-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]3599; CI-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263600; CI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3601; CI-NEXT:    v_add_i32_e32 v12, vcc, -1, v113602; CI-NEXT:    v_not_b32_e32 v8, v123603; CI-NEXT:    v_add_i32_e32 v13, vcc, v8, v103604; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13605; CI-NEXT:    v_div_scale_f64 v[8:9], s[2:3], v[4:5], v[4:5], 1.03606; CI-NEXT:    v_rcp_f64_e32 v[14:15], v[8:9]3607; CI-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03608; CI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3609; CI-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03610; CI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3611; CI-NEXT:    v_div_scale_f64 v[16:17], vcc, 1.0, v[4:5], 1.03612; CI-NEXT:    v_mul_f64 v[18:19], v[16:17], v[14:15]3613; CI-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[16:17]3614; CI-NEXT:    s_nop 13615; CI-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]3616; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v133617; CI-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.03618; CI-NEXT:    s_cbranch_vccnz .LBB6_73619; CI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader3620; CI-NEXT:    v_sub_i32_e32 v10, vcc, v10, v113621; CI-NEXT:    v_add_i32_e32 v13, vcc, 26, v103622; CI-NEXT:  .LBB6_5: ; %frem.loop_body3623; CI-NEXT:    ; =>This Inner Loop Header: Depth=13624; CI-NEXT:    v_mov_b32_e32 v11, v73625; CI-NEXT:    v_mov_b32_e32 v10, v63626; CI-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]3627; CI-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]3628; CI-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]3629; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3630; CI-NEXT:    v_add_f64 v[14:15], v[6:7], v[4:5]3631; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v15, vcc3632; CI-NEXT:    v_cndmask_b32_e32 v6, v6, v14, vcc3633; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 263634; CI-NEXT:    v_subrev_i32_e32 v13, vcc, 26, v133635; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v133636; CI-NEXT:    s_cbranch_vccnz .LBB6_53637; CI-NEXT:  ; %bb.6: ; %Flow3638; CI-NEXT:    v_mov_b32_e32 v6, v103639; CI-NEXT:    v_mov_b32_e32 v7, v113640; CI-NEXT:  .LBB6_7: ; %frem.loop_exit3641; CI-NEXT:    v_subrev_i32_e32 v10, vcc, 25, v133642; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v103643; CI-NEXT:    s_brev_b32 s2, -23644; CI-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]3645; CI-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]3646; CI-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]3647; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3648; CI-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]3649; CI-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc3650; CI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc3651; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v123652; CI-NEXT:    v_bfi_b32 v5, s2, v5, v13653; CI-NEXT:  .LBB6_8: ; %Flow173654; CI-NEXT:    s_mov_b32 s4, 03655; CI-NEXT:    s_mov_b32 s5, 0x7ff000003656; CI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]3657; CI-NEXT:    v_cmp_nge_f64_e64 s[4:5], |v[0:1]|, s[4:5]3658; CI-NEXT:    v_mov_b32_e32 v0, 0x7ff800003659; CI-NEXT:    s_mov_b32 s3, 0xf0003660; CI-NEXT:    s_mov_b32 s2, -13661; CI-NEXT:    s_and_b64 vcc, s[4:5], vcc3662; CI-NEXT:    v_cndmask_b32_e32 v1, v0, v5, vcc3663; CI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc3664; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 03665; CI-NEXT:    s_endpgm3666;3667; VI-LABEL: frem_f64:3668; VI:       ; %bb.0:3669; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243670; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x343671; VI-NEXT:    s_waitcnt lgkmcnt(0)3672; VI-NEXT:    v_mov_b32_e32 v0, s23673; VI-NEXT:    v_mov_b32_e32 v1, s33674; VI-NEXT:    v_mov_b32_e32 v2, s43675; VI-NEXT:    v_mov_b32_e32 v3, s53676; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]3677; VI-NEXT:    flat_load_dwordx2 v[2:3], v[2:3]3678; VI-NEXT:    s_waitcnt vmcnt(0)3679; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[2:3]|3680; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]3681; VI-NEXT:    s_cbranch_vccz .LBB6_23682; VI-NEXT:  ; %bb.1: ; %frem.else3683; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|3684; VI-NEXT:    v_and_b32_e32 v4, 0x80000000, v13685; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc3686; VI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc3687; VI-NEXT:    s_cbranch_execz .LBB6_33688; VI-NEXT:    s_branch .LBB6_83689; VI-NEXT:  .LBB6_2:3690; VI-NEXT:    ; implicit-def: $vgpr4_vgpr53691; VI-NEXT:  .LBB6_3: ; %frem.compute3692; VI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3693; VI-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]3694; VI-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]3695; VI-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263696; VI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3697; VI-NEXT:    v_add_u32_e32 v12, vcc, -1, v113698; VI-NEXT:    v_not_b32_e32 v8, v123699; VI-NEXT:    v_add_u32_e32 v13, vcc, v8, v103700; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13701; VI-NEXT:    v_div_scale_f64 v[8:9], s[2:3], v[4:5], v[4:5], 1.03702; VI-NEXT:    v_rcp_f64_e32 v[14:15], v[8:9]3703; VI-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03704; VI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3705; VI-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03706; VI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3707; VI-NEXT:    v_div_scale_f64 v[16:17], vcc, 1.0, v[4:5], 1.03708; VI-NEXT:    v_mul_f64 v[18:19], v[16:17], v[14:15]3709; VI-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[16:17]3710; VI-NEXT:    s_nop 13711; VI-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]3712; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v133713; VI-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.03714; VI-NEXT:    s_cbranch_vccnz .LBB6_73715; VI-NEXT:  ; %bb.4: ; %frem.loop_body.preheader3716; VI-NEXT:    v_sub_u32_e32 v10, vcc, v10, v113717; VI-NEXT:    v_add_u32_e32 v13, vcc, 26, v103718; VI-NEXT:  .LBB6_5: ; %frem.loop_body3719; VI-NEXT:    ; =>This Inner Loop Header: Depth=13720; VI-NEXT:    v_mov_b32_e32 v11, v73721; VI-NEXT:    v_mov_b32_e32 v10, v63722; VI-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]3723; VI-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]3724; VI-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]3725; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3726; VI-NEXT:    v_add_f64 v[14:15], v[6:7], v[4:5]3727; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v15, vcc3728; VI-NEXT:    v_cndmask_b32_e32 v6, v6, v14, vcc3729; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 263730; VI-NEXT:    v_subrev_u32_e32 v13, vcc, 26, v133731; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v133732; VI-NEXT:    s_cbranch_vccnz .LBB6_53733; VI-NEXT:  ; %bb.6: ; %Flow3734; VI-NEXT:    v_mov_b32_e32 v6, v103735; VI-NEXT:    v_mov_b32_e32 v7, v113736; VI-NEXT:  .LBB6_7: ; %frem.loop_exit3737; VI-NEXT:    v_subrev_u32_e32 v10, vcc, 25, v133738; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v103739; VI-NEXT:    s_brev_b32 s2, -23740; VI-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]3741; VI-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]3742; VI-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]3743; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3744; VI-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]3745; VI-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc3746; VI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc3747; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v123748; VI-NEXT:    v_bfi_b32 v5, s2, v5, v13749; VI-NEXT:  .LBB6_8: ; %Flow173750; VI-NEXT:    v_mov_b32_e32 v6, s03751; VI-NEXT:    v_mov_b32_e32 v7, s13752; VI-NEXT:    s_mov_b32 s0, 03753; VI-NEXT:    s_mov_b32 s1, 0x7ff000003754; VI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]3755; VI-NEXT:    v_cmp_nge_f64_e64 s[0:1], |v[0:1]|, s[0:1]3756; VI-NEXT:    v_mov_b32_e32 v0, 0x7ff800003757; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc3758; VI-NEXT:    v_cndmask_b32_e32 v1, v0, v5, vcc3759; VI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc3760; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]3761; VI-NEXT:    s_endpgm3762;3763; GFX9-LABEL: frem_f64:3764; GFX9:       ; %bb.0:3765; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243766; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x343767; GFX9-NEXT:    v_mov_b32_e32 v4, 03768; GFX9-NEXT:    s_waitcnt lgkmcnt(0)3769; GFX9-NEXT:    global_load_dwordx2 v[0:1], v4, s[2:3]3770; GFX9-NEXT:    global_load_dwordx2 v[2:3], v4, s[6:7]3771; GFX9-NEXT:    s_waitcnt vmcnt(0)3772; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[2:3]|3773; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]3774; GFX9-NEXT:    s_cbranch_vccz .LBB6_23775; GFX9-NEXT:  ; %bb.1: ; %frem.else3776; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[2:3]|3777; GFX9-NEXT:    v_and_b32_e32 v4, 0x80000000, v13778; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc3779; GFX9-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc3780; GFX9-NEXT:    s_cbranch_execz .LBB6_33781; GFX9-NEXT:    s_branch .LBB6_83782; GFX9-NEXT:  .LBB6_2:3783; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr53784; GFX9-NEXT:  .LBB6_3: ; %frem.compute3785; GFX9-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3786; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v11, v[2:3]3787; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]3788; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263789; GFX9-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3790; GFX9-NEXT:    v_add_u32_e32 v12, -1, v113791; GFX9-NEXT:    v_not_b32_e32 v8, v123792; GFX9-NEXT:    v_add_u32_e32 v13, v8, v103793; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13794; GFX9-NEXT:    v_div_scale_f64 v[8:9], s[2:3], v[4:5], v[4:5], 1.03795; GFX9-NEXT:    v_rcp_f64_e32 v[14:15], v[8:9]3796; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03797; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3798; GFX9-NEXT:    v_fma_f64 v[16:17], -v[8:9], v[14:15], 1.03799; GFX9-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]3800; GFX9-NEXT:    v_div_scale_f64 v[16:17], vcc, 1.0, v[4:5], 1.03801; GFX9-NEXT:    v_mul_f64 v[18:19], v[16:17], v[14:15]3802; GFX9-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[18:19], v[16:17]3803; GFX9-NEXT:    s_nop 13804; GFX9-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[14:15], v[18:19]3805; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v133806; GFX9-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.03807; GFX9-NEXT:    s_cbranch_vccnz .LBB6_73808; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body.preheader3809; GFX9-NEXT:    v_sub_u32_e32 v10, v10, v113810; GFX9-NEXT:    v_add_u32_e32 v13, 26, v103811; GFX9-NEXT:  .LBB6_5: ; %frem.loop_body3812; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=13813; GFX9-NEXT:    v_mov_b32_e32 v11, v73814; GFX9-NEXT:    v_mov_b32_e32 v10, v63815; GFX9-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]3816; GFX9-NEXT:    v_subrev_u32_e32 v13, 26, v133817; GFX9-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]3818; GFX9-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]3819; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3820; GFX9-NEXT:    v_add_f64 v[14:15], v[6:7], v[4:5]3821; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v15, vcc3822; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v14, vcc3823; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 263824; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v133825; GFX9-NEXT:    s_cbranch_vccnz .LBB6_53826; GFX9-NEXT:  ; %bb.6: ; %Flow3827; GFX9-NEXT:    v_mov_b32_e32 v6, v103828; GFX9-NEXT:    v_mov_b32_e32 v7, v113829; GFX9-NEXT:  .LBB6_7: ; %frem.loop_exit3830; GFX9-NEXT:    v_subrev_u32_e32 v10, 25, v133831; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v103832; GFX9-NEXT:    s_brev_b32 s2, -23833; GFX9-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]3834; GFX9-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]3835; GFX9-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]3836; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]3837; GFX9-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]3838; GFX9-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc3839; GFX9-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc3840; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v123841; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v13842; GFX9-NEXT:  .LBB6_8: ; %Flow173843; GFX9-NEXT:    s_mov_b32 s2, 03844; GFX9-NEXT:    s_mov_b32 s3, 0x7ff000003845; GFX9-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[2:3]3846; GFX9-NEXT:    v_cmp_nge_f64_e64 s[2:3], |v[0:1]|, s[2:3]3847; GFX9-NEXT:    v_mov_b32_e32 v0, 0x7ff800003848; GFX9-NEXT:    v_mov_b32_e32 v6, 03849; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc3850; GFX9-NEXT:    v_cndmask_b32_e32 v1, v0, v5, vcc3851; GFX9-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc3852; GFX9-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1]3853; GFX9-NEXT:    s_endpgm3854;3855; GFX10-LABEL: frem_f64:3856; GFX10:       ; %bb.0:3857; GFX10-NEXT:    s_clause 0x13858; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x243859; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x343860; GFX10-NEXT:    v_mov_b32_e32 v4, 03861; GFX10-NEXT:    s_waitcnt lgkmcnt(0)3862; GFX10-NEXT:    s_clause 0x13863; GFX10-NEXT:    global_load_dwordx2 v[0:1], v4, s[2:3]3864; GFX10-NEXT:    global_load_dwordx2 v[2:3], v4, s[6:7]3865; GFX10-NEXT:    s_waitcnt vmcnt(0)3866; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[2:3]|3867; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s23868; GFX10-NEXT:    s_cbranch_vccz .LBB6_23869; GFX10-NEXT:  ; %bb.1: ; %frem.else3870; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|3871; GFX10-NEXT:    v_and_b32_e32 v4, 0x80000000, v13872; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo3873; GFX10-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo3874; GFX10-NEXT:    s_cbranch_execz .LBB6_33875; GFX10-NEXT:    s_branch .LBB6_83876; GFX10-NEXT:  .LBB6_2:3877; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr53878; GFX10-NEXT:  .LBB6_3: ; %frem.compute3879; GFX10-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3880; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]3881; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]3882; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263883; GFX10-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3884; GFX10-NEXT:    v_add_nc_u32_e32 v12, -1, v93885; GFX10-NEXT:    v_readfirstlane_b32 s3, v93886; GFX10-NEXT:    v_readfirstlane_b32 s2, v83887; GFX10-NEXT:    v_not_b32_e32 v9, v123888; GFX10-NEXT:    v_add_nc_u32_e32 v13, v9, v83889; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13890; GFX10-NEXT:    v_div_scale_f64 v[8:9], s4, v[4:5], v[4:5], 1.03891; GFX10-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]3892; GFX10-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.03893; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]3894; GFX10-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.03895; GFX10-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]3896; GFX10-NEXT:    v_div_scale_f64 v[14:15], vcc_lo, 1.0, v[4:5], 1.03897; GFX10-NEXT:    v_mul_f64 v[16:17], v[14:15], v[10:11]3898; GFX10-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[14:15]3899; GFX10-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]3900; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v133901; GFX10-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.03902; GFX10-NEXT:    s_cbranch_vccnz .LBB6_73903; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body.preheader3904; GFX10-NEXT:    s_sub_i32 s2, s2, s33905; GFX10-NEXT:    s_add_i32 s2, s2, 263906; GFX10-NEXT:  .LBB6_5: ; %frem.loop_body3907; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=13908; GFX10-NEXT:    v_mov_b32_e32 v11, v73909; GFX10-NEXT:    v_mov_b32_e32 v10, v63910; GFX10-NEXT:    s_sub_i32 s2, s2, 263911; GFX10-NEXT:    s_cmp_gt_i32 s2, 263912; GFX10-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]3913; GFX10-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]3914; GFX10-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]3915; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]3916; GFX10-NEXT:    v_add_f64 v[13:14], v[6:7], v[4:5]3917; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v14, vcc_lo3918; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v13, vcc_lo3919; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 263920; GFX10-NEXT:    s_cbranch_scc1 .LBB6_53921; GFX10-NEXT:  ; %bb.6: ; %Flow3922; GFX10-NEXT:    v_mov_b32_e32 v6, v103923; GFX10-NEXT:    v_mov_b32_e32 v13, s23924; GFX10-NEXT:    v_mov_b32_e32 v7, v113925; GFX10-NEXT:  .LBB6_7: ; %frem.loop_exit3926; GFX10-NEXT:    v_subrev_nc_u32_e32 v10, 25, v133927; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v103928; GFX10-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]3929; GFX10-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]3930; GFX10-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]3931; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]3932; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]3933; GFX10-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc_lo3934; GFX10-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc_lo3935; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v123936; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v13937; GFX10-NEXT:  .LBB6_8: ; %Flow173938; GFX10-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]3939; GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|3940; GFX10-NEXT:    v_mov_b32_e32 v6, 03941; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo3942; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo3943; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo3944; GFX10-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1]3945; GFX10-NEXT:    s_endpgm3946;3947; GFX11-LABEL: frem_f64:3948; GFX11:       ; %bb.0:3949; GFX11-NEXT:    s_clause 0x13950; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x243951; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x343952; GFX11-NEXT:    v_mov_b32_e32 v2, 03953; GFX11-NEXT:    s_waitcnt lgkmcnt(0)3954; GFX11-NEXT:    s_clause 0x13955; GFX11-NEXT:    global_load_b64 v[0:1], v2, s[2:3]3956; GFX11-NEXT:    global_load_b64 v[2:3], v2, s[4:5]3957; GFX11-NEXT:    s_waitcnt vmcnt(0)3958; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[2:3]|3959; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s23960; GFX11-NEXT:    s_cbranch_vccz .LBB6_23961; GFX11-NEXT:  ; %bb.1: ; %frem.else3962; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|3963; GFX11-NEXT:    v_and_b32_e32 v4, 0x80000000, v13964; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)3965; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo3966; GFX11-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo3967; GFX11-NEXT:    s_cbranch_execz .LBB6_33968; GFX11-NEXT:    s_branch .LBB6_83969; GFX11-NEXT:  .LBB6_2:3970; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr53971; GFX11-NEXT:  .LBB6_3: ; %frem.compute3972; GFX11-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|3973; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]3974; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]3975; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)3976; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 263977; GFX11-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|3978; GFX11-NEXT:    v_add_nc_u32_e32 v12, -1, v93979; GFX11-NEXT:    v_readfirstlane_b32 s3, v93980; GFX11-NEXT:    v_readfirstlane_b32 s2, v83981; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)3982; GFX11-NEXT:    v_not_b32_e32 v9, v123983; GFX11-NEXT:    v_add_nc_u32_e32 v13, v9, v83984; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 13985; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3986; GFX11-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], 1.03987; GFX11-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]3988; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)3989; GFX11-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.03990; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3991; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]3992; GFX11-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.03993; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)3994; GFX11-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]3995; GFX11-NEXT:    v_div_scale_f64 v[14:15], vcc_lo, 1.0, v[4:5], 1.03996; GFX11-NEXT:    v_mul_f64 v[16:17], v[14:15], v[10:11]3997; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)3998; GFX11-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[14:15]3999; GFX11-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]4000; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v134001; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)4002; GFX11-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.04003; GFX11-NEXT:    s_cbranch_vccnz .LBB6_74004; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body.preheader4005; GFX11-NEXT:    s_sub_i32 s2, s2, s34006; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4007; GFX11-NEXT:    s_add_i32 s2, s2, 264008; GFX11-NEXT:    .p2align 64009; GFX11-NEXT:  .LBB6_5: ; %frem.loop_body4010; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=14011; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4012; GFX11-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v64013; GFX11-NEXT:    s_sub_i32 s2, s2, 264014; GFX11-NEXT:    s_cmp_gt_i32 s2, 264015; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4016; GFX11-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]4017; GFX11-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]4018; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4019; GFX11-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]4020; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4021; GFX11-NEXT:    v_add_f64 v[13:14], v[6:7], v[4:5]4022; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4023; GFX11-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v134024; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 264025; GFX11-NEXT:    s_cbranch_scc1 .LBB6_54026; GFX11-NEXT:  ; %bb.6: ; %Flow4027; GFX11-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v104028; GFX11-NEXT:    v_mov_b32_e32 v7, v114029; GFX11-NEXT:  .LBB6_7: ; %frem.loop_exit4030; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4031; GFX11-NEXT:    v_subrev_nc_u32_e32 v10, 25, v134032; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v104033; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4034; GFX11-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]4035; GFX11-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]4036; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4037; GFX11-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]4038; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4039; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]4040; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4041; GFX11-NEXT:    v_dual_cndmask_b32 v5, v7, v5 :: v_dual_cndmask_b32 v4, v6, v44042; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v124043; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)4044; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v14045; GFX11-NEXT:  .LBB6_8: ; %Flow174046; GFX11-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]4047; GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|4048; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo4049; GFX11-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_cndmask_b32 v1, 0x7ff80000, v54050; GFX11-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo4051; GFX11-NEXT:    global_store_b64 v6, v[0:1], s[0:1]4052; GFX11-NEXT:    s_endpgm4053;4054; GFX1150-LABEL: frem_f64:4055; GFX1150:       ; %bb.0:4056; GFX1150-NEXT:    s_clause 0x14057; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244058; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344059; GFX1150-NEXT:    v_mov_b32_e32 v2, 04060; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)4061; GFX1150-NEXT:    s_clause 0x14062; GFX1150-NEXT:    global_load_b64 v[0:1], v2, s[2:3]4063; GFX1150-NEXT:    global_load_b64 v[2:3], v2, s[4:5]4064; GFX1150-NEXT:    s_waitcnt vmcnt(0)4065; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[2:3]|4066; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s24067; GFX1150-NEXT:    s_cbranch_vccz .LBB6_24068; GFX1150-NEXT:  ; %bb.1: ; %frem.else4069; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|4070; GFX1150-NEXT:    v_and_b32_e32 v4, 0x80000000, v14071; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)4072; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo4073; GFX1150-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo4074; GFX1150-NEXT:    s_cbranch_execz .LBB6_34075; GFX1150-NEXT:    s_branch .LBB6_84076; GFX1150-NEXT:  .LBB6_2:4077; GFX1150-NEXT:    ; implicit-def: $vgpr4_vgpr54078; GFX1150-NEXT:  .LBB6_3: ; %frem.compute4079; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|4080; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]4081; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]4082; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)4083; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 264084; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|4085; GFX1150-NEXT:    v_add_nc_u32_e32 v12, -1, v94086; GFX1150-NEXT:    v_readfirstlane_b32 s3, v94087; GFX1150-NEXT:    v_readfirstlane_b32 s2, v84088; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4089; GFX1150-NEXT:    v_not_b32_e32 v9, v124090; GFX1150-NEXT:    v_add_nc_u32_e32 v13, v9, v84091; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 14092; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4093; GFX1150-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], 1.04094; GFX1150-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]4095; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4096; GFX1150-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.04097; GFX1150-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]4098; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4099; GFX1150-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.04100; GFX1150-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]4101; GFX1150-NEXT:    v_div_scale_f64 v[14:15], vcc_lo, 1.0, v[4:5], 1.04102; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4103; GFX1150-NEXT:    v_mul_f64 v[16:17], v[14:15], v[10:11]4104; GFX1150-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[14:15]4105; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4106; GFX1150-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]4107; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v134108; GFX1150-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.04109; GFX1150-NEXT:    s_cbranch_vccnz .LBB6_74110; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body.preheader4111; GFX1150-NEXT:    s_sub_i32 s2, s2, s34112; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4113; GFX1150-NEXT:    s_add_i32 s2, s2, 264114; GFX1150-NEXT:    .p2align 64115; GFX1150-NEXT:  .LBB6_5: ; %frem.loop_body4116; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=14117; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4118; GFX1150-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v64119; GFX1150-NEXT:    s_sub_i32 s2, s2, 264120; GFX1150-NEXT:    s_cmp_gt_i32 s2, 264121; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4122; GFX1150-NEXT:    v_mul_f64 v[6:7], v[10:11], v[8:9]4123; GFX1150-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]4124; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4125; GFX1150-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]4126; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4127; GFX1150-NEXT:    v_add_f64 v[13:14], v[6:7], v[4:5]4128; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4129; GFX1150-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v134130; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 264131; GFX1150-NEXT:    s_cbranch_scc1 .LBB6_54132; GFX1150-NEXT:  ; %bb.6: ; %Flow4133; GFX1150-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v104134; GFX1150-NEXT:    v_mov_b32_e32 v7, v114135; GFX1150-NEXT:  .LBB6_7: ; %frem.loop_exit4136; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4137; GFX1150-NEXT:    v_subrev_nc_u32_e32 v10, 25, v134138; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v104139; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4140; GFX1150-NEXT:    v_mul_f64 v[8:9], v[6:7], v[8:9]4141; GFX1150-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]4142; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4143; GFX1150-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]4144; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4145; GFX1150-NEXT:    v_add_f64 v[4:5], v[6:7], v[4:5]4146; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4147; GFX1150-NEXT:    v_dual_cndmask_b32 v5, v7, v5 :: v_dual_cndmask_b32 v4, v6, v44148; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v124149; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)4150; GFX1150-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v14151; GFX1150-NEXT:  .LBB6_8: ; %Flow174152; GFX1150-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]4153; GFX1150-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|4154; GFX1150-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo4155; GFX1150-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_cndmask_b32 v1, 0x7ff80000, v54156; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo4157; GFX1150-NEXT:    global_store_b64 v6, v[0:1], s[0:1]4158; GFX1150-NEXT:    s_endpgm4159;4160; GFX1200-LABEL: frem_f64:4161; GFX1200:       ; %bb.0:4162; GFX1200-NEXT:    s_clause 0x14163; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244164; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344165; GFX1200-NEXT:    v_mov_b32_e32 v2, 04166; GFX1200-NEXT:    s_wait_kmcnt 0x04167; GFX1200-NEXT:    s_clause 0x14168; GFX1200-NEXT:    global_load_b64 v[0:1], v2, s[2:3]4169; GFX1200-NEXT:    global_load_b64 v[2:3], v2, s[4:5]4170; GFX1200-NEXT:    s_wait_loadcnt 0x04171; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[2:3]|4172; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s24173; GFX1200-NEXT:    s_cbranch_vccz .LBB6_24174; GFX1200-NEXT:  ; %bb.1: ; %frem.else4175; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[2:3]|4176; GFX1200-NEXT:    v_and_b32_e32 v4, 0x80000000, v14177; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)4178; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo4179; GFX1200-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo4180; GFX1200-NEXT:    s_cbranch_execz .LBB6_34181; GFX1200-NEXT:    s_branch .LBB6_84182; GFX1200-NEXT:  .LBB6_2:4183; GFX1200-NEXT:    ; implicit-def: $vgpr4_vgpr54184; GFX1200-NEXT:  .LBB6_3: ; %frem.compute4185; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|4186; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v9, v[2:3]4187; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[0:1]4188; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)4189; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[4:5], 264190; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[2:3]|4191; GFX1200-NEXT:    v_add_nc_u32_e32 v12, -1, v94192; GFX1200-NEXT:    v_readfirstlane_b32 s3, v94193; GFX1200-NEXT:    v_readfirstlane_b32 s2, v84194; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)4195; GFX1200-NEXT:    v_not_b32_e32 v9, v124196; GFX1200-NEXT:    v_add_nc_u32_e32 v13, v9, v84197; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 14198; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4199; GFX1200-NEXT:    v_div_scale_f64 v[8:9], null, v[4:5], v[4:5], 1.04200; GFX1200-NEXT:    v_rcp_f64_e32 v[10:11], v[8:9]4201; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4202; GFX1200-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.04203; GFX1200-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]4204; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4205; GFX1200-NEXT:    v_fma_f64 v[14:15], -v[8:9], v[10:11], 1.04206; GFX1200-NEXT:    v_fma_f64 v[10:11], v[10:11], v[14:15], v[10:11]4207; GFX1200-NEXT:    v_div_scale_f64 v[14:15], vcc_lo, 1.0, v[4:5], 1.04208; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4209; GFX1200-NEXT:    v_mul_f64_e32 v[16:17], v[14:15], v[10:11]4210; GFX1200-NEXT:    v_fma_f64 v[8:9], -v[8:9], v[16:17], v[14:15]4211; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)4212; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)4213; GFX1200-NEXT:    v_div_fmas_f64 v[8:9], v[8:9], v[10:11], v[16:17]4214; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v134215; GFX1200-NEXT:    v_div_fixup_f64 v[8:9], v[8:9], v[4:5], 1.04216; GFX1200-NEXT:    s_cbranch_vccnz .LBB6_74217; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body.preheader4218; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s34219; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)4220; GFX1200-NEXT:    s_add_co_i32 s2, s2, 264221; GFX1200-NEXT:  .LBB6_5: ; %frem.loop_body4222; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=14223; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)4224; GFX1200-NEXT:    v_dual_mov_b32 v11, v7 :: v_dual_mov_b32 v10, v64225; GFX1200-NEXT:    s_sub_co_i32 s2, s2, 264226; GFX1200-NEXT:    s_cmp_gt_i32 s2, 264227; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4228; GFX1200-NEXT:    v_mul_f64_e32 v[6:7], v[10:11], v[8:9]4229; GFX1200-NEXT:    v_rndne_f64_e32 v[6:7], v[6:7]4230; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4231; GFX1200-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[4:5], v[10:11]4232; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4233; GFX1200-NEXT:    v_add_f64_e32 v[13:14], v[6:7], v[4:5]4234; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)4235; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4236; GFX1200-NEXT:    v_dual_cndmask_b32 v7, v7, v14 :: v_dual_cndmask_b32 v6, v6, v134237; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 264238; GFX1200-NEXT:    s_cbranch_scc1 .LBB6_54239; GFX1200-NEXT:  ; %bb.6: ; %Flow4240; GFX1200-NEXT:    v_dual_mov_b32 v13, s2 :: v_dual_mov_b32 v6, v104241; GFX1200-NEXT:    v_mov_b32_e32 v7, v114242; GFX1200-NEXT:  .LBB6_7: ; %frem.loop_exit4243; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)4244; GFX1200-NEXT:    v_subrev_nc_u32_e32 v10, 25, v134245; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v104246; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4247; GFX1200-NEXT:    v_mul_f64_e32 v[8:9], v[6:7], v[8:9]4248; GFX1200-NEXT:    v_rndne_f64_e32 v[8:9], v[8:9]4249; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4250; GFX1200-NEXT:    v_fma_f64 v[6:7], -v[8:9], v[4:5], v[6:7]4251; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]4252; GFX1200-NEXT:    v_add_f64_e32 v[4:5], v[6:7], v[4:5]4253; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)4254; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4255; GFX1200-NEXT:    v_dual_cndmask_b32 v5, v7, v5 :: v_dual_cndmask_b32 v4, v6, v44256; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v124257; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)4258; GFX1200-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v14259; GFX1200-NEXT:  .LBB6_8: ; %Flow174260; GFX1200-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[2:3]4261; GFX1200-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|4262; GFX1200-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo4263; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)4264; GFX1200-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_cndmask_b32 v1, 0x7ff80000, v54265; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo4266; GFX1200-NEXT:    global_store_b64 v6, v[0:1], s[0:1]4267; GFX1200-NEXT:    s_endpgm4268                      ptr addrspace(1) %in2) #0 {4269   %r0 = load double, ptr addrspace(1) %in1, align 84270   %r1 = load double, ptr addrspace(1) %in2, align 84271   %r2 = frem double %r0, %r14272   store double %r2, ptr addrspace(1) %out, align 84273   ret void4274}4275 4276define amdgpu_kernel void @fast_frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,4277; SI-LABEL: fast_frem_f64:4278; SI:       ; %bb.0:4279; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94280; SI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0xd4281; SI-NEXT:    s_mov_b32 s7, 0xf0004282; SI-NEXT:    s_mov_b32 s6, -14283; SI-NEXT:    s_waitcnt lgkmcnt(0)4284; SI-NEXT:    s_mov_b32 s4, s04285; SI-NEXT:    s_mov_b32 s5, s14286; SI-NEXT:    s_mov_b32 s0, s24287; SI-NEXT:    s_mov_b32 s1, s34288; SI-NEXT:    s_mov_b32 s2, s64289; SI-NEXT:    s_mov_b32 s3, s74290; SI-NEXT:    s_mov_b32 s10, s64291; SI-NEXT:    s_mov_b32 s11, s74292; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 04293; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[8:11], 04294; SI-NEXT:    s_waitcnt vmcnt(0)4295; SI-NEXT:    v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], v[0:1]4296; SI-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4297; SI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04298; SI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4299; SI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04300; SI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4301; SI-NEXT:    v_div_scale_f64 v[8:9], s[0:1], v[0:1], v[2:3], v[0:1]4302; SI-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4303; SI-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[10:11], v[8:9]4304; SI-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v54305; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], v1, v94306; SI-NEXT:    s_xor_b64 vcc, s[0:1], vcc4307; SI-NEXT:    s_nop 14308; SI-NEXT:    v_div_fmas_f64 v[4:5], v[12:13], v[6:7], v[10:11]4309; SI-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4310; SI-NEXT:    v_readfirstlane_b32 s0, v44311; SI-NEXT:    v_readfirstlane_b32 s1, v54312; SI-NEXT:    s_bfe_u32 s2, s1, 0xb00144313; SI-NEXT:    s_add_i32 s8, s2, 0xfffffc014314; SI-NEXT:    s_mov_b32 s3, 0xfffff4315; SI-NEXT:    s_mov_b32 s2, s64316; SI-NEXT:    s_lshr_b64 s[2:3], s[2:3], s84317; SI-NEXT:    s_andn2_b64 s[2:3], s[0:1], s[2:3]4318; SI-NEXT:    s_and_b32 s9, s1, 0x800000004319; SI-NEXT:    s_cmp_lt_i32 s8, 04320; SI-NEXT:    s_cselect_b32 s2, 0, s24321; SI-NEXT:    s_cselect_b32 s3, s9, s34322; SI-NEXT:    s_cmp_gt_i32 s8, 514323; SI-NEXT:    s_cselect_b32 s1, s1, s34324; SI-NEXT:    s_cselect_b32 s0, s0, s24325; SI-NEXT:    v_fma_f64 v[0:1], -s[0:1], v[2:3], v[0:1]4326; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04327; SI-NEXT:    s_endpgm4328;4329; CI-LABEL: fast_frem_f64:4330; CI:       ; %bb.0:4331; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94332; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4333; CI-NEXT:    s_mov_b32 s11, 0xf0004334; CI-NEXT:    s_mov_b32 s10, -14335; CI-NEXT:    s_mov_b32 s6, s104336; CI-NEXT:    s_waitcnt lgkmcnt(0)4337; CI-NEXT:    s_mov_b32 s8, s04338; CI-NEXT:    s_mov_b32 s9, s14339; CI-NEXT:    s_mov_b32 s0, s24340; CI-NEXT:    s_mov_b32 s1, s34341; CI-NEXT:    s_mov_b32 s2, s104342; CI-NEXT:    s_mov_b32 s3, s114343; CI-NEXT:    s_mov_b32 s7, s114344; CI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 04345; CI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 04346; CI-NEXT:    s_waitcnt vmcnt(0)4347; CI-NEXT:    v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], v[0:1]4348; CI-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4349; CI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04350; CI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4351; CI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04352; CI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4353; CI-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]4354; CI-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4355; CI-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4356; CI-NEXT:    s_nop 14357; CI-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4358; CI-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4359; CI-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4360; CI-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4361; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04362; CI-NEXT:    s_endpgm4363;4364; VI-LABEL: fast_frem_f64:4365; VI:       ; %bb.0:4366; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244367; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x344368; VI-NEXT:    s_waitcnt lgkmcnt(0)4369; VI-NEXT:    v_mov_b32_e32 v2, s24370; VI-NEXT:    v_mov_b32_e32 v3, s34371; VI-NEXT:    v_mov_b32_e32 v4, s44372; VI-NEXT:    v_mov_b32_e32 v5, s54373; VI-NEXT:    flat_load_dwordx2 v[2:3], v[2:3]4374; VI-NEXT:    flat_load_dwordx2 v[4:5], v[4:5]4375; VI-NEXT:    v_mov_b32_e32 v0, s04376; VI-NEXT:    v_mov_b32_e32 v1, s14377; VI-NEXT:    s_waitcnt vmcnt(0)4378; VI-NEXT:    v_div_scale_f64 v[6:7], s[0:1], v[4:5], v[4:5], v[2:3]4379; VI-NEXT:    v_rcp_f64_e32 v[8:9], v[6:7]4380; VI-NEXT:    v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.04381; VI-NEXT:    v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]4382; VI-NEXT:    v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.04383; VI-NEXT:    v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]4384; VI-NEXT:    v_div_scale_f64 v[10:11], vcc, v[2:3], v[4:5], v[2:3]4385; VI-NEXT:    v_mul_f64 v[12:13], v[10:11], v[8:9]4386; VI-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[12:13], v[10:11]4387; VI-NEXT:    s_nop 14388; VI-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[12:13]4389; VI-NEXT:    v_div_fixup_f64 v[6:7], v[6:7], v[4:5], v[2:3]4390; VI-NEXT:    v_trunc_f64_e32 v[6:7], v[6:7]4391; VI-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[4:5], v[2:3]4392; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]4393; VI-NEXT:    s_endpgm4394;4395; GFX9-LABEL: fast_frem_f64:4396; GFX9:       ; %bb.0:4397; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244398; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x344399; GFX9-NEXT:    v_mov_b32_e32 v12, 04400; GFX9-NEXT:    s_waitcnt lgkmcnt(0)4401; GFX9-NEXT:    global_load_dwordx2 v[0:1], v12, s[2:3]4402; GFX9-NEXT:    global_load_dwordx2 v[2:3], v12, s[6:7]4403; GFX9-NEXT:    s_waitcnt vmcnt(0)4404; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[2:3], v[2:3], v[2:3], v[0:1]4405; GFX9-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4406; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04407; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4408; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04409; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4410; GFX9-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]4411; GFX9-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4412; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4413; GFX9-NEXT:    s_nop 14414; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4415; GFX9-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4416; GFX9-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4417; GFX9-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4418; GFX9-NEXT:    global_store_dwordx2 v12, v[0:1], s[0:1]4419; GFX9-NEXT:    s_endpgm4420;4421; GFX10-LABEL: fast_frem_f64:4422; GFX10:       ; %bb.0:4423; GFX10-NEXT:    s_clause 0x14424; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244425; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x344426; GFX10-NEXT:    v_mov_b32_e32 v12, 04427; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4428; GFX10-NEXT:    s_clause 0x14429; GFX10-NEXT:    global_load_dwordx2 v[0:1], v12, s[2:3]4430; GFX10-NEXT:    global_load_dwordx2 v[2:3], v12, s[6:7]4431; GFX10-NEXT:    s_waitcnt vmcnt(0)4432; GFX10-NEXT:    v_div_scale_f64 v[4:5], s2, v[2:3], v[2:3], v[0:1]4433; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4434; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04435; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4436; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04437; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4438; GFX10-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4439; GFX10-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4440; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4441; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4442; GFX10-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4443; GFX10-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4444; GFX10-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4445; GFX10-NEXT:    global_store_dwordx2 v12, v[0:1], s[0:1]4446; GFX10-NEXT:    s_endpgm4447;4448; GFX11-LABEL: fast_frem_f64:4449; GFX11:       ; %bb.0:4450; GFX11-NEXT:    s_clause 0x14451; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244452; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344453; GFX11-NEXT:    v_mov_b32_e32 v12, 04454; GFX11-NEXT:    s_waitcnt lgkmcnt(0)4455; GFX11-NEXT:    s_clause 0x14456; GFX11-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4457; GFX11-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4458; GFX11-NEXT:    s_waitcnt vmcnt(0)4459; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4460; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)4461; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4462; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)4463; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04464; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4465; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4466; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04467; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4468; GFX11-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4469; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4470; GFX11-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4471; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4472; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4473; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4474; GFX11-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4475; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4476; GFX11-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4477; GFX11-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4478; GFX11-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4479; GFX11-NEXT:    s_endpgm4480;4481; GFX1150-LABEL: fast_frem_f64:4482; GFX1150:       ; %bb.0:4483; GFX1150-NEXT:    s_clause 0x14484; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244485; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344486; GFX1150-NEXT:    v_mov_b32_e32 v12, 04487; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)4488; GFX1150-NEXT:    s_clause 0x14489; GFX1150-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4490; GFX1150-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4491; GFX1150-NEXT:    s_waitcnt vmcnt(0)4492; GFX1150-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4493; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)4494; GFX1150-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4495; GFX1150-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04496; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4497; GFX1150-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4498; GFX1150-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04499; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)4500; GFX1150-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4501; GFX1150-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4502; GFX1150-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4503; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4504; GFX1150-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4505; GFX1150-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4506; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4507; GFX1150-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4508; GFX1150-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4509; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)4510; GFX1150-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4511; GFX1150-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4512; GFX1150-NEXT:    s_endpgm4513;4514; GFX1200-LABEL: fast_frem_f64:4515; GFX1200:       ; %bb.0:4516; GFX1200-NEXT:    s_clause 0x14517; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244518; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344519; GFX1200-NEXT:    v_mov_b32_e32 v12, 04520; GFX1200-NEXT:    s_wait_kmcnt 0x04521; GFX1200-NEXT:    s_clause 0x14522; GFX1200-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4523; GFX1200-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4524; GFX1200-NEXT:    s_wait_loadcnt 0x04525; GFX1200-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4526; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)4527; GFX1200-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4528; GFX1200-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04529; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4530; GFX1200-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4531; GFX1200-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04532; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)4533; GFX1200-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4534; GFX1200-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4535; GFX1200-NEXT:    v_mul_f64_e32 v[10:11], v[8:9], v[6:7]4536; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4537; GFX1200-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4538; GFX1200-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4539; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4540; GFX1200-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4541; GFX1200-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4542; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)4543; GFX1200-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4544; GFX1200-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4545; GFX1200-NEXT:    s_endpgm4546                      ptr addrspace(1) %in2) #0 {4547   %r0 = load double, ptr addrspace(1) %in1, align 84548   %r1 = load double, ptr addrspace(1) %in2, align 84549   %r2 = frem fast double %r0, %r14550   store double %r2, ptr addrspace(1) %out, align 84551   ret void4552}4553 4554define amdgpu_kernel void @unsafe_frem_f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,4555; SI-LABEL: unsafe_frem_f64:4556; SI:       ; %bb.0:4557; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94558; SI-NEXT:    s_load_dwordx2 s[8:9], s[4:5], 0xd4559; SI-NEXT:    s_mov_b32 s7, 0xf0004560; SI-NEXT:    s_mov_b32 s6, -14561; SI-NEXT:    s_waitcnt lgkmcnt(0)4562; SI-NEXT:    s_mov_b32 s4, s04563; SI-NEXT:    s_mov_b32 s5, s14564; SI-NEXT:    s_mov_b32 s0, s24565; SI-NEXT:    s_mov_b32 s1, s34566; SI-NEXT:    s_mov_b32 s2, s64567; SI-NEXT:    s_mov_b32 s3, s74568; SI-NEXT:    s_mov_b32 s10, s64569; SI-NEXT:    s_mov_b32 s11, s74570; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 04571; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[8:11], 04572; SI-NEXT:    s_waitcnt vmcnt(0)4573; SI-NEXT:    v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], v[0:1]4574; SI-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4575; SI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04576; SI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4577; SI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04578; SI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4579; SI-NEXT:    v_div_scale_f64 v[8:9], s[0:1], v[0:1], v[2:3], v[0:1]4580; SI-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4581; SI-NEXT:    v_fma_f64 v[12:13], -v[4:5], v[10:11], v[8:9]4582; SI-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v54583; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], v1, v94584; SI-NEXT:    s_xor_b64 vcc, s[0:1], vcc4585; SI-NEXT:    s_nop 14586; SI-NEXT:    v_div_fmas_f64 v[4:5], v[12:13], v[6:7], v[10:11]4587; SI-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4588; SI-NEXT:    v_readfirstlane_b32 s0, v44589; SI-NEXT:    v_readfirstlane_b32 s1, v54590; SI-NEXT:    s_bfe_u32 s2, s1, 0xb00144591; SI-NEXT:    s_add_i32 s8, s2, 0xfffffc014592; SI-NEXT:    s_mov_b32 s3, 0xfffff4593; SI-NEXT:    s_mov_b32 s2, s64594; SI-NEXT:    s_lshr_b64 s[2:3], s[2:3], s84595; SI-NEXT:    s_andn2_b64 s[2:3], s[0:1], s[2:3]4596; SI-NEXT:    s_and_b32 s9, s1, 0x800000004597; SI-NEXT:    s_cmp_lt_i32 s8, 04598; SI-NEXT:    s_cselect_b32 s2, 0, s24599; SI-NEXT:    s_cselect_b32 s3, s9, s34600; SI-NEXT:    s_cmp_gt_i32 s8, 514601; SI-NEXT:    s_cselect_b32 s1, s1, s34602; SI-NEXT:    s_cselect_b32 s0, s0, s24603; SI-NEXT:    v_fma_f64 v[0:1], -s[0:1], v[2:3], v[0:1]4604; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[4:7], 04605; SI-NEXT:    s_endpgm4606;4607; CI-LABEL: unsafe_frem_f64:4608; CI:       ; %bb.0:4609; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x94610; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd4611; CI-NEXT:    s_mov_b32 s11, 0xf0004612; CI-NEXT:    s_mov_b32 s10, -14613; CI-NEXT:    s_mov_b32 s6, s104614; CI-NEXT:    s_waitcnt lgkmcnt(0)4615; CI-NEXT:    s_mov_b32 s8, s04616; CI-NEXT:    s_mov_b32 s9, s14617; CI-NEXT:    s_mov_b32 s0, s24618; CI-NEXT:    s_mov_b32 s1, s34619; CI-NEXT:    s_mov_b32 s2, s104620; CI-NEXT:    s_mov_b32 s3, s114621; CI-NEXT:    s_mov_b32 s7, s114622; CI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[0:3], 04623; CI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 04624; CI-NEXT:    s_waitcnt vmcnt(0)4625; CI-NEXT:    v_div_scale_f64 v[4:5], s[0:1], v[2:3], v[2:3], v[0:1]4626; CI-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4627; CI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04628; CI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4629; CI-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04630; CI-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4631; CI-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]4632; CI-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4633; CI-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4634; CI-NEXT:    s_nop 14635; CI-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4636; CI-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4637; CI-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4638; CI-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4639; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 04640; CI-NEXT:    s_endpgm4641;4642; VI-LABEL: unsafe_frem_f64:4643; VI:       ; %bb.0:4644; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244645; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x344646; VI-NEXT:    s_waitcnt lgkmcnt(0)4647; VI-NEXT:    v_mov_b32_e32 v2, s24648; VI-NEXT:    v_mov_b32_e32 v3, s34649; VI-NEXT:    v_mov_b32_e32 v4, s44650; VI-NEXT:    v_mov_b32_e32 v5, s54651; VI-NEXT:    flat_load_dwordx2 v[2:3], v[2:3]4652; VI-NEXT:    flat_load_dwordx2 v[4:5], v[4:5]4653; VI-NEXT:    v_mov_b32_e32 v0, s04654; VI-NEXT:    v_mov_b32_e32 v1, s14655; VI-NEXT:    s_waitcnt vmcnt(0)4656; VI-NEXT:    v_div_scale_f64 v[6:7], s[0:1], v[4:5], v[4:5], v[2:3]4657; VI-NEXT:    v_rcp_f64_e32 v[8:9], v[6:7]4658; VI-NEXT:    v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.04659; VI-NEXT:    v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]4660; VI-NEXT:    v_fma_f64 v[10:11], -v[6:7], v[8:9], 1.04661; VI-NEXT:    v_fma_f64 v[8:9], v[8:9], v[10:11], v[8:9]4662; VI-NEXT:    v_div_scale_f64 v[10:11], vcc, v[2:3], v[4:5], v[2:3]4663; VI-NEXT:    v_mul_f64 v[12:13], v[10:11], v[8:9]4664; VI-NEXT:    v_fma_f64 v[6:7], -v[6:7], v[12:13], v[10:11]4665; VI-NEXT:    s_nop 14666; VI-NEXT:    v_div_fmas_f64 v[6:7], v[6:7], v[8:9], v[12:13]4667; VI-NEXT:    v_div_fixup_f64 v[6:7], v[6:7], v[4:5], v[2:3]4668; VI-NEXT:    v_trunc_f64_e32 v[6:7], v[6:7]4669; VI-NEXT:    v_fma_f64 v[2:3], -v[6:7], v[4:5], v[2:3]4670; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]4671; VI-NEXT:    s_endpgm4672;4673; GFX9-LABEL: unsafe_frem_f64:4674; GFX9:       ; %bb.0:4675; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244676; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x344677; GFX9-NEXT:    v_mov_b32_e32 v12, 04678; GFX9-NEXT:    s_waitcnt lgkmcnt(0)4679; GFX9-NEXT:    global_load_dwordx2 v[0:1], v12, s[2:3]4680; GFX9-NEXT:    global_load_dwordx2 v[2:3], v12, s[6:7]4681; GFX9-NEXT:    s_waitcnt vmcnt(0)4682; GFX9-NEXT:    v_div_scale_f64 v[4:5], s[2:3], v[2:3], v[2:3], v[0:1]4683; GFX9-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4684; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04685; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4686; GFX9-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04687; GFX9-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4688; GFX9-NEXT:    v_div_scale_f64 v[8:9], vcc, v[0:1], v[2:3], v[0:1]4689; GFX9-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4690; GFX9-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4691; GFX9-NEXT:    s_nop 14692; GFX9-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4693; GFX9-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4694; GFX9-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4695; GFX9-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4696; GFX9-NEXT:    global_store_dwordx2 v12, v[0:1], s[0:1]4697; GFX9-NEXT:    s_endpgm4698;4699; GFX10-LABEL: unsafe_frem_f64:4700; GFX10:       ; %bb.0:4701; GFX10-NEXT:    s_clause 0x14702; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x244703; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x344704; GFX10-NEXT:    v_mov_b32_e32 v12, 04705; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4706; GFX10-NEXT:    s_clause 0x14707; GFX10-NEXT:    global_load_dwordx2 v[0:1], v12, s[2:3]4708; GFX10-NEXT:    global_load_dwordx2 v[2:3], v12, s[6:7]4709; GFX10-NEXT:    s_waitcnt vmcnt(0)4710; GFX10-NEXT:    v_div_scale_f64 v[4:5], s2, v[2:3], v[2:3], v[0:1]4711; GFX10-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4712; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04713; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4714; GFX10-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04715; GFX10-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4716; GFX10-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4717; GFX10-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4718; GFX10-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4719; GFX10-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4720; GFX10-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4721; GFX10-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4722; GFX10-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4723; GFX10-NEXT:    global_store_dwordx2 v12, v[0:1], s[0:1]4724; GFX10-NEXT:    s_endpgm4725;4726; GFX11-LABEL: unsafe_frem_f64:4727; GFX11:       ; %bb.0:4728; GFX11-NEXT:    s_clause 0x14729; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244730; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344731; GFX11-NEXT:    v_mov_b32_e32 v12, 04732; GFX11-NEXT:    s_waitcnt lgkmcnt(0)4733; GFX11-NEXT:    s_clause 0x14734; GFX11-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4735; GFX11-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4736; GFX11-NEXT:    s_waitcnt vmcnt(0)4737; GFX11-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4738; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)4739; GFX11-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4740; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)4741; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04742; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4743; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4744; GFX11-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04745; GFX11-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4746; GFX11-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4747; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4748; GFX11-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4749; GFX11-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4750; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4751; GFX11-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4752; GFX11-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4753; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4754; GFX11-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4755; GFX11-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4756; GFX11-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4757; GFX11-NEXT:    s_endpgm4758;4759; GFX1150-LABEL: unsafe_frem_f64:4760; GFX1150:       ; %bb.0:4761; GFX1150-NEXT:    s_clause 0x14762; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244763; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344764; GFX1150-NEXT:    v_mov_b32_e32 v12, 04765; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)4766; GFX1150-NEXT:    s_clause 0x14767; GFX1150-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4768; GFX1150-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4769; GFX1150-NEXT:    s_waitcnt vmcnt(0)4770; GFX1150-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4771; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)4772; GFX1150-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4773; GFX1150-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04774; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4775; GFX1150-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4776; GFX1150-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04777; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)4778; GFX1150-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4779; GFX1150-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4780; GFX1150-NEXT:    v_mul_f64 v[10:11], v[8:9], v[6:7]4781; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4782; GFX1150-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4783; GFX1150-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4784; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4785; GFX1150-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4786; GFX1150-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4787; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)4788; GFX1150-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4789; GFX1150-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4790; GFX1150-NEXT:    s_endpgm4791;4792; GFX1200-LABEL: unsafe_frem_f64:4793; GFX1200:       ; %bb.0:4794; GFX1200-NEXT:    s_clause 0x14795; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x244796; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x344797; GFX1200-NEXT:    v_mov_b32_e32 v12, 04798; GFX1200-NEXT:    s_wait_kmcnt 0x04799; GFX1200-NEXT:    s_clause 0x14800; GFX1200-NEXT:    global_load_b64 v[0:1], v12, s[2:3]4801; GFX1200-NEXT:    global_load_b64 v[2:3], v12, s[4:5]4802; GFX1200-NEXT:    s_wait_loadcnt 0x04803; GFX1200-NEXT:    v_div_scale_f64 v[4:5], null, v[2:3], v[2:3], v[0:1]4804; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)4805; GFX1200-NEXT:    v_rcp_f64_e32 v[6:7], v[4:5]4806; GFX1200-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04807; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4808; GFX1200-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4809; GFX1200-NEXT:    v_fma_f64 v[8:9], -v[4:5], v[6:7], 1.04810; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)4811; GFX1200-NEXT:    v_fma_f64 v[6:7], v[6:7], v[8:9], v[6:7]4812; GFX1200-NEXT:    v_div_scale_f64 v[8:9], vcc_lo, v[0:1], v[2:3], v[0:1]4813; GFX1200-NEXT:    v_mul_f64_e32 v[10:11], v[8:9], v[6:7]4814; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4815; GFX1200-NEXT:    v_fma_f64 v[4:5], -v[4:5], v[10:11], v[8:9]4816; GFX1200-NEXT:    v_div_fmas_f64 v[4:5], v[4:5], v[6:7], v[10:11]4817; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)4818; GFX1200-NEXT:    v_div_fixup_f64 v[4:5], v[4:5], v[2:3], v[0:1]4819; GFX1200-NEXT:    v_trunc_f64_e32 v[4:5], v[4:5]4820; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)4821; GFX1200-NEXT:    v_fma_f64 v[0:1], -v[4:5], v[2:3], v[0:1]4822; GFX1200-NEXT:    global_store_b64 v12, v[0:1], s[0:1]4823; GFX1200-NEXT:    s_endpgm4824                             ptr addrspace(1) %in2) #0 {4825   %r0 = load double, ptr addrspace(1) %in1, align 84826   %r1 = load double, ptr addrspace(1) %in2, align 84827   %r2 = frem afn double %r0, %r14828   store double %r2, ptr addrspace(1) %out, align 84829   ret void4830}4831 4832define amdgpu_kernel void @frem_v2f16(ptr addrspace(1) %out, ptr addrspace(1) %in1,4833; SI-LABEL: frem_v2f16:4834; SI:       ; %bb.0:4835; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x94836; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd4837; SI-NEXT:    s_mov_b32 s7, 0xf0004838; SI-NEXT:    s_mov_b32 s6, -14839; SI-NEXT:    s_waitcnt lgkmcnt(0)4840; SI-NEXT:    s_mov_b32 s4, s104841; SI-NEXT:    s_mov_b32 s5, s114842; SI-NEXT:    s_mov_b32 s2, s64843; SI-NEXT:    s_mov_b32 s3, s74844; SI-NEXT:    buffer_load_dword v1, off, s[4:7], 04845; SI-NEXT:    s_waitcnt vmcnt(0)4846; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v14847; SI-NEXT:    v_cvt_f32_f16_e32 v0, v04848; SI-NEXT:    v_cvt_f32_f16_e32 v2, v14849; SI-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:164850; SI-NEXT:    s_waitcnt vmcnt(0)4851; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v34852; SI-NEXT:    v_cvt_f32_f16_e32 v1, v14853; SI-NEXT:    v_cvt_f32_f16_e32 v3, v34854; SI-NEXT:    s_brev_b32 s0, -24855; SI-NEXT:    v_and_b32_e32 v5, 0x7fffffff, v24856; SI-NEXT:    v_and_b32_e32 v6, 0x7fffffff, v34857; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v3|4858; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]4859; SI-NEXT:    v_cvt_f16_f32_e32 v4, v24860; SI-NEXT:    s_cbranch_vccz .LBB9_24861; SI-NEXT:  ; %bb.1: ; %frem.else204862; SI-NEXT:    v_bfi_b32 v7, s0, 0, v24863; SI-NEXT:    v_cvt_f32_f16_e32 v4, v44864; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v5, v64865; SI-NEXT:    v_cndmask_b32_e32 v4, v4, v7, vcc4866; SI-NEXT:    s_mov_b64 vcc, exec4867; SI-NEXT:    s_cbranch_execz .LBB9_34868; SI-NEXT:    s_branch .LBB9_84869; SI-NEXT:  .LBB9_2:4870; SI-NEXT:    ; implicit-def: $vgpr44871; SI-NEXT:    s_mov_b64 vcc, 04872; SI-NEXT:  .LBB9_3: ; %frem.compute194873; SI-NEXT:    s_mov_b32 s3, 0x7f8000004874; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v5|, s34875; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v54876; SI-NEXT:    s_and_b64 s[0:1], vcc, exec4877; SI-NEXT:    v_readfirstlane_b32 s0, v44878; SI-NEXT:    s_cselect_b32 s2, s0, 04879; SI-NEXT:    v_frexp_mant_f32_e32 v4, v54880; SI-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc4881; SI-NEXT:    v_ldexp_f32_e64 v5, v4, 114882; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v6|, s34883; SI-NEXT:    v_frexp_mant_f32_e32 v4, v64884; SI-NEXT:    v_cndmask_b32_e32 v4, v6, v4, vcc4885; SI-NEXT:    v_frexp_exp_i32_f32_e32 v6, v64886; SI-NEXT:    s_and_b64 s[0:1], vcc, exec4887; SI-NEXT:    v_readfirstlane_b32 s0, v64888; SI-NEXT:    s_cselect_b32 s3, s0, 04889; SI-NEXT:    s_add_i32 s0, s3, -14890; SI-NEXT:    v_ldexp_f32_e64 v4, v4, 14891; SI-NEXT:    s_not_b32 s1, s04892; SI-NEXT:    s_add_i32 s1, s1, s24893; SI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v4, 1.04894; SI-NEXT:    v_div_scale_f32 v7, s[4:5], v4, v4, 1.04895; SI-NEXT:    v_rcp_f32_e32 v8, v74896; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 34897; SI-NEXT:    v_fma_f32 v9, -v7, v8, 1.04898; SI-NEXT:    v_fma_f32 v8, v9, v8, v84899; SI-NEXT:    v_mul_f32_e32 v9, v6, v84900; SI-NEXT:    v_fma_f32 v10, -v7, v9, v64901; SI-NEXT:    v_fma_f32 v9, v10, v8, v94902; SI-NEXT:    v_fma_f32 v6, -v7, v9, v64903; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 04904; SI-NEXT:    v_div_fmas_f32 v6, v6, v8, v94905; SI-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.04906; SI-NEXT:    s_cmp_lt_i32 s1, 124907; SI-NEXT:    s_cbranch_scc1 .LBB9_74908; SI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader4909; SI-NEXT:    s_sub_i32 s1, s2, s34910; SI-NEXT:    s_add_i32 s1, s1, 114911; SI-NEXT:  .LBB9_5: ; %frem.loop_body274912; SI-NEXT:    ; =>This Inner Loop Header: Depth=14913; SI-NEXT:    v_mov_b32_e32 v7, v54914; SI-NEXT:    v_mul_f32_e32 v5, v7, v64915; SI-NEXT:    v_rndne_f32_e32 v5, v54916; SI-NEXT:    v_fma_f32 v5, -v5, v4, v74917; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v54918; SI-NEXT:    v_add_f32_e32 v8, v5, v44919; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc4920; SI-NEXT:    v_ldexp_f32_e64 v5, v5, 114921; SI-NEXT:    s_add_i32 s1, s1, -114922; SI-NEXT:    s_cmp_gt_i32 s1, 114923; SI-NEXT:    s_cbranch_scc1 .LBB9_54924; SI-NEXT:  ; %bb.6: ; %Flow554925; SI-NEXT:    v_mov_b32_e32 v5, v74926; SI-NEXT:  .LBB9_7: ; %frem.loop_exit284927; SI-NEXT:    s_add_i32 s1, s1, -104928; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s14929; SI-NEXT:    v_mul_f32_e32 v6, v5, v64930; SI-NEXT:    v_rndne_f32_e32 v6, v64931; SI-NEXT:    v_fma_f32 v5, -v6, v4, v54932; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v54933; SI-NEXT:    v_add_f32_e32 v4, v5, v44934; SI-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc4935; SI-NEXT:    v_ldexp_f32_e64 v4, v4, s04936; SI-NEXT:    v_cvt_f16_f32_e32 v4, v44937; SI-NEXT:    v_cvt_f32_f16_e32 v4, v44938; SI-NEXT:    s_brev_b32 s0, -24939; SI-NEXT:    v_bfi_b32 v4, s0, v4, v24940; SI-NEXT:  .LBB9_8:4941; SI-NEXT:    v_cvt_f16_f32_e32 v5, v04942; SI-NEXT:    v_cvt_f16_f32_e32 v7, v14943; SI-NEXT:    v_cvt_f32_f16_e64 v6, |v5|4944; SI-NEXT:    v_cvt_f32_f16_e64 v7, |v7|4945; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v74946; SI-NEXT:    s_cbranch_vccz .LBB9_104947; SI-NEXT:  ; %bb.9: ; %frem.else4948; SI-NEXT:    s_brev_b32 s0, -24949; SI-NEXT:    v_bfi_b32 v8, s0, 0, v04950; SI-NEXT:    v_cvt_f32_f16_e32 v5, v54951; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v74952; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc4953; SI-NEXT:    s_mov_b64 vcc, exec4954; SI-NEXT:    s_cbranch_execz .LBB9_114955; SI-NEXT:    s_branch .LBB9_164956; SI-NEXT:  .LBB9_10:4957; SI-NEXT:    ; implicit-def: $vgpr54958; SI-NEXT:    s_mov_b64 vcc, 04959; SI-NEXT:  .LBB9_11: ; %frem.compute4960; SI-NEXT:    s_mov_b32 s3, 0x7f8000004961; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v6|, s34962; SI-NEXT:    v_frexp_exp_i32_f32_e32 v5, v64963; SI-NEXT:    s_and_b64 s[0:1], vcc, exec4964; SI-NEXT:    v_readfirstlane_b32 s0, v54965; SI-NEXT:    s_cselect_b32 s2, s0, 04966; SI-NEXT:    v_frexp_mant_f32_e32 v5, v64967; SI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc4968; SI-NEXT:    v_ldexp_f32_e64 v6, v5, 114969; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v7|, s34970; SI-NEXT:    v_frexp_mant_f32_e32 v5, v74971; SI-NEXT:    v_cndmask_b32_e32 v5, v7, v5, vcc4972; SI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v74973; SI-NEXT:    s_and_b64 s[0:1], vcc, exec4974; SI-NEXT:    v_readfirstlane_b32 s0, v74975; SI-NEXT:    s_cselect_b32 s3, s0, 04976; SI-NEXT:    s_add_i32 s0, s3, -14977; SI-NEXT:    v_ldexp_f32_e64 v5, v5, 14978; SI-NEXT:    s_not_b32 s1, s04979; SI-NEXT:    s_add_i32 s1, s1, s24980; SI-NEXT:    v_div_scale_f32 v7, vcc, 1.0, v5, 1.04981; SI-NEXT:    v_div_scale_f32 v8, s[4:5], v5, v5, 1.04982; SI-NEXT:    v_rcp_f32_e32 v9, v84983; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 34984; SI-NEXT:    v_fma_f32 v10, -v8, v9, 1.04985; SI-NEXT:    v_fma_f32 v9, v10, v9, v94986; SI-NEXT:    v_mul_f32_e32 v10, v7, v94987; SI-NEXT:    v_fma_f32 v11, -v8, v10, v74988; SI-NEXT:    v_fma_f32 v10, v11, v9, v104989; SI-NEXT:    v_fma_f32 v7, -v8, v10, v74990; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 04991; SI-NEXT:    v_div_fmas_f32 v7, v7, v9, v104992; SI-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.04993; SI-NEXT:    s_cmp_lt_i32 s1, 124994; SI-NEXT:    s_cbranch_scc1 .LBB9_154995; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader4996; SI-NEXT:    s_sub_i32 s1, s2, s34997; SI-NEXT:    s_add_i32 s1, s1, 114998; SI-NEXT:  .LBB9_13: ; %frem.loop_body4999; SI-NEXT:    ; =>This Inner Loop Header: Depth=15000; SI-NEXT:    v_mov_b32_e32 v8, v65001; SI-NEXT:    v_mul_f32_e32 v6, v8, v75002; SI-NEXT:    v_rndne_f32_e32 v6, v65003; SI-NEXT:    v_fma_f32 v6, -v6, v5, v85004; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v65005; SI-NEXT:    v_add_f32_e32 v9, v6, v55006; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v9, vcc5007; SI-NEXT:    v_ldexp_f32_e64 v6, v6, 115008; SI-NEXT:    s_add_i32 s1, s1, -115009; SI-NEXT:    s_cmp_gt_i32 s1, 115010; SI-NEXT:    s_cbranch_scc1 .LBB9_135011; SI-NEXT:  ; %bb.14: ; %Flow5012; SI-NEXT:    v_mov_b32_e32 v6, v85013; SI-NEXT:  .LBB9_15: ; %frem.loop_exit5014; SI-NEXT:    s_add_i32 s1, s1, -105015; SI-NEXT:    v_ldexp_f32_e64 v6, v6, s15016; SI-NEXT:    v_mul_f32_e32 v7, v6, v75017; SI-NEXT:    v_rndne_f32_e32 v7, v75018; SI-NEXT:    v_fma_f32 v6, -v7, v5, v65019; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v65020; SI-NEXT:    v_add_f32_e32 v5, v6, v55021; SI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc5022; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s05023; SI-NEXT:    v_cvt_f16_f32_e32 v5, v55024; SI-NEXT:    v_cvt_f32_f16_e32 v5, v55025; SI-NEXT:    s_brev_b32 s0, -25026; SI-NEXT:    v_bfi_b32 v5, s0, v5, v05027; SI-NEXT:  .LBB9_16: ; %Flow545028; SI-NEXT:    v_cvt_f16_f32_e32 v3, v35029; SI-NEXT:    v_cvt_f32_f16_e32 v3, v35030; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v35031; SI-NEXT:    v_cvt_f16_f32_e32 v3, v45032; SI-NEXT:    v_cvt_f32_f16_e32 v3, v35033; SI-NEXT:    v_cvt_f16_f32_e32 v2, v25034; SI-NEXT:    v_and_b32_e32 v2, 0x7fff, v25035; SI-NEXT:    s_movk_i32 s2, 0x7c005036; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v25037; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc5038; SI-NEXT:    v_mov_b32_e32 v2, 0x7fc000005039; SI-NEXT:    v_cndmask_b32_e32 v3, v3, v2, vcc5040; SI-NEXT:    v_cvt_f16_f32_e32 v3, v35041; SI-NEXT:    s_mov_b32 s11, 0xf0005042; SI-NEXT:    s_mov_b32 s10, -15043; SI-NEXT:    v_cvt_f16_f32_e32 v1, v15044; SI-NEXT:    v_cvt_f32_f16_e32 v1, v15045; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v15046; SI-NEXT:    v_cvt_f16_f32_e32 v1, v55047; SI-NEXT:    v_cvt_f32_f16_e32 v1, v15048; SI-NEXT:    v_cvt_f16_f32_e32 v0, v05049; SI-NEXT:    v_and_b32_e32 v0, 0x7fff, v05050; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v05051; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc5052; SI-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc5053; SI-NEXT:    v_cvt_f16_f32_e32 v0, v05054; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v05055; SI-NEXT:    v_or_b32_e32 v0, v3, v05056; SI-NEXT:    buffer_store_dword v0, off, s[8:11], 05057; SI-NEXT:    s_endpgm5058;5059; CI-LABEL: frem_v2f16:5060; CI:       ; %bb.0:5061; CI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x95062; CI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd5063; CI-NEXT:    s_mov_b32 s7, 0xf0005064; CI-NEXT:    s_mov_b32 s6, -15065; CI-NEXT:    s_mov_b32 s2, s65066; CI-NEXT:    s_waitcnt lgkmcnt(0)5067; CI-NEXT:    s_mov_b32 s4, s105068; CI-NEXT:    s_mov_b32 s5, s115069; CI-NEXT:    buffer_load_dword v1, off, s[4:7], 05070; CI-NEXT:    s_mov_b32 s3, s75071; CI-NEXT:    buffer_load_dword v3, off, s[0:3], 0 offset:165072; CI-NEXT:    s_brev_b32 s0, -25073; CI-NEXT:    s_waitcnt vmcnt(1)5074; CI-NEXT:    v_cvt_f32_f16_e32 v2, v15075; CI-NEXT:    v_lshrrev_b32_e32 v0, 16, v15076; CI-NEXT:    s_waitcnt vmcnt(0)5077; CI-NEXT:    v_lshrrev_b32_e32 v1, 16, v35078; CI-NEXT:    v_cvt_f32_f16_e32 v3, v35079; CI-NEXT:    v_cvt_f32_f16_e32 v0, v05080; CI-NEXT:    v_cvt_f32_f16_e32 v1, v15081; CI-NEXT:    v_cvt_f16_f32_e32 v4, v25082; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v3|5083; CI-NEXT:    v_and_b32_e32 v6, 0x7fffffff, v25084; CI-NEXT:    v_and_b32_e32 v5, 0x7fffffff, v35085; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]5086; CI-NEXT:    s_cbranch_vccz .LBB9_25087; CI-NEXT:  ; %bb.1: ; %frem.else205088; CI-NEXT:    v_cvt_f32_f16_e32 v4, v45089; CI-NEXT:    v_bfi_b32 v7, s0, 0, v25090; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v55091; CI-NEXT:    v_cndmask_b32_e32 v4, v4, v7, vcc5092; CI-NEXT:    s_cbranch_execz .LBB9_35093; CI-NEXT:    s_branch .LBB9_85094; CI-NEXT:  .LBB9_2:5095; CI-NEXT:    ; implicit-def: $vgpr45096; CI-NEXT:  .LBB9_3: ; %frem.compute195097; CI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v65098; CI-NEXT:    v_frexp_mant_f32_e32 v4, v65099; CI-NEXT:    v_frexp_mant_f32_e32 v6, v55100; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v55101; CI-NEXT:    v_ldexp_f32_e64 v5, v6, 15102; CI-NEXT:    v_div_scale_f32 v11, s[0:1], v5, v5, 1.05103; CI-NEXT:    v_ldexp_f32_e64 v7, v4, 115104; CI-NEXT:    v_add_i32_e32 v4, vcc, -1, v105105; CI-NEXT:    v_not_b32_e32 v6, v45106; CI-NEXT:    v_add_i32_e32 v6, vcc, v6, v95107; CI-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.05108; CI-NEXT:    v_rcp_f32_e32 v12, v115109; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35110; CI-NEXT:    v_fma_f32 v13, -v11, v12, 1.05111; CI-NEXT:    v_fma_f32 v12, v13, v12, v125112; CI-NEXT:    v_mul_f32_e32 v13, v8, v125113; CI-NEXT:    v_fma_f32 v14, -v11, v13, v85114; CI-NEXT:    v_fma_f32 v13, v14, v12, v135115; CI-NEXT:    v_fma_f32 v8, -v11, v13, v85116; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05117; CI-NEXT:    v_div_fmas_f32 v8, v8, v12, v135118; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v65119; CI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.05120; CI-NEXT:    s_cbranch_vccnz .LBB9_75121; CI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader5122; CI-NEXT:    v_sub_i32_e32 v6, vcc, v9, v105123; CI-NEXT:    v_add_i32_e32 v6, vcc, 11, v65124; CI-NEXT:  .LBB9_5: ; %frem.loop_body275125; CI-NEXT:    ; =>This Inner Loop Header: Depth=15126; CI-NEXT:    v_mov_b32_e32 v9, v75127; CI-NEXT:    v_mul_f32_e32 v7, v9, v85128; CI-NEXT:    v_rndne_f32_e32 v7, v75129; CI-NEXT:    v_fma_f32 v7, -v7, v5, v95130; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v75131; CI-NEXT:    v_add_f32_e32 v10, v7, v55132; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc5133; CI-NEXT:    v_add_i32_e32 v6, vcc, -11, v65134; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v65135; CI-NEXT:    v_ldexp_f32_e64 v7, v7, 115136; CI-NEXT:    s_cbranch_vccnz .LBB9_55137; CI-NEXT:  ; %bb.6: ; %Flow555138; CI-NEXT:    v_mov_b32_e32 v7, v95139; CI-NEXT:  .LBB9_7: ; %frem.loop_exit285140; CI-NEXT:    v_add_i32_e32 v6, vcc, -10, v65141; CI-NEXT:    v_ldexp_f32_e32 v6, v7, v65142; CI-NEXT:    v_mul_f32_e32 v7, v6, v85143; CI-NEXT:    v_rndne_f32_e32 v7, v75144; CI-NEXT:    v_fma_f32 v6, -v7, v5, v65145; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v65146; CI-NEXT:    v_add_f32_e32 v5, v6, v55147; CI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc5148; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v45149; CI-NEXT:    v_cvt_f16_f32_e32 v4, v45150; CI-NEXT:    s_brev_b32 s0, -25151; CI-NEXT:    v_cvt_f32_f16_e32 v4, v45152; CI-NEXT:    v_bfi_b32 v4, s0, v4, v25153; CI-NEXT:  .LBB9_8:5154; CI-NEXT:    v_cvt_f16_f32_e32 v5, v05155; CI-NEXT:    v_cvt_f16_f32_e32 v6, v15156; CI-NEXT:    v_cvt_f32_f16_e64 v7, |v5|5157; CI-NEXT:    v_cvt_f32_f16_e64 v6, |v6|5158; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v65159; CI-NEXT:    s_cbranch_vccz .LBB9_105160; CI-NEXT:  ; %bb.9: ; %frem.else5161; CI-NEXT:    v_cvt_f32_f16_e32 v5, v55162; CI-NEXT:    s_brev_b32 s0, -25163; CI-NEXT:    v_bfi_b32 v8, s0, 0, v05164; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v65165; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc5166; CI-NEXT:    s_cbranch_execz .LBB9_115167; CI-NEXT:    s_branch .LBB9_165168; CI-NEXT:  .LBB9_10:5169; CI-NEXT:    ; implicit-def: $vgpr55170; CI-NEXT:  .LBB9_11: ; %frem.compute5171; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v75172; CI-NEXT:    v_frexp_mant_f32_e32 v5, v75173; CI-NEXT:    v_frexp_mant_f32_e32 v7, v65174; CI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v65175; CI-NEXT:    v_ldexp_f32_e64 v6, v7, 15176; CI-NEXT:    v_div_scale_f32 v12, s[0:1], v6, v6, 1.05177; CI-NEXT:    v_ldexp_f32_e64 v8, v5, 115178; CI-NEXT:    v_add_i32_e32 v5, vcc, -1, v115179; CI-NEXT:    v_not_b32_e32 v7, v55180; CI-NEXT:    v_add_i32_e32 v7, vcc, v7, v105181; CI-NEXT:    v_div_scale_f32 v9, vcc, 1.0, v6, 1.05182; CI-NEXT:    v_rcp_f32_e32 v13, v125183; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35184; CI-NEXT:    v_fma_f32 v14, -v12, v13, 1.05185; CI-NEXT:    v_fma_f32 v13, v14, v13, v135186; CI-NEXT:    v_mul_f32_e32 v14, v9, v135187; CI-NEXT:    v_fma_f32 v15, -v12, v14, v95188; CI-NEXT:    v_fma_f32 v14, v15, v13, v145189; CI-NEXT:    v_fma_f32 v9, -v12, v14, v95190; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05191; CI-NEXT:    v_div_fmas_f32 v9, v9, v13, v145192; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v75193; CI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.05194; CI-NEXT:    s_cbranch_vccnz .LBB9_155195; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader5196; CI-NEXT:    v_sub_i32_e32 v7, vcc, v10, v115197; CI-NEXT:    v_add_i32_e32 v7, vcc, 11, v75198; CI-NEXT:  .LBB9_13: ; %frem.loop_body5199; CI-NEXT:    ; =>This Inner Loop Header: Depth=15200; CI-NEXT:    v_mov_b32_e32 v10, v85201; CI-NEXT:    v_mul_f32_e32 v8, v10, v95202; CI-NEXT:    v_rndne_f32_e32 v8, v85203; CI-NEXT:    v_fma_f32 v8, -v8, v6, v105204; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v85205; CI-NEXT:    v_add_f32_e32 v11, v8, v65206; CI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc5207; CI-NEXT:    v_add_i32_e32 v7, vcc, -11, v75208; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v75209; CI-NEXT:    v_ldexp_f32_e64 v8, v8, 115210; CI-NEXT:    s_cbranch_vccnz .LBB9_135211; CI-NEXT:  ; %bb.14: ; %Flow5212; CI-NEXT:    v_mov_b32_e32 v8, v105213; CI-NEXT:  .LBB9_15: ; %frem.loop_exit5214; CI-NEXT:    v_add_i32_e32 v7, vcc, -10, v75215; CI-NEXT:    v_ldexp_f32_e32 v7, v8, v75216; CI-NEXT:    v_mul_f32_e32 v8, v7, v95217; CI-NEXT:    v_rndne_f32_e32 v8, v85218; CI-NEXT:    v_fma_f32 v7, -v8, v6, v75219; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v75220; CI-NEXT:    v_add_f32_e32 v6, v7, v65221; CI-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc5222; CI-NEXT:    v_ldexp_f32_e32 v5, v6, v55223; CI-NEXT:    v_cvt_f16_f32_e32 v5, v55224; CI-NEXT:    s_brev_b32 s0, -25225; CI-NEXT:    v_cvt_f32_f16_e32 v5, v55226; CI-NEXT:    v_bfi_b32 v5, s0, v5, v05227; CI-NEXT:  .LBB9_16: ; %Flow545228; CI-NEXT:    v_cvt_f16_f32_e32 v3, v35229; CI-NEXT:    v_cvt_f16_f32_e32 v1, v15230; CI-NEXT:    v_cvt_f16_f32_e32 v2, v25231; CI-NEXT:    s_movk_i32 s2, 0x7c005232; CI-NEXT:    v_cvt_f32_f16_e32 v3, v35233; CI-NEXT:    v_cvt_f32_f16_e32 v1, v15234; CI-NEXT:    v_and_b32_e32 v2, 0x7fff, v25235; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v25236; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v35237; CI-NEXT:    v_cvt_f16_f32_e32 v3, v45238; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc5239; CI-NEXT:    v_mov_b32_e32 v2, 0x7fc000005240; CI-NEXT:    v_cvt_f16_f32_e32 v0, v05241; CI-NEXT:    v_cvt_f32_f16_e32 v3, v35242; CI-NEXT:    s_mov_b32 s11, 0xf0005243; CI-NEXT:    s_mov_b32 s10, -15244; CI-NEXT:    v_and_b32_e32 v0, 0x7fff, v05245; CI-NEXT:    v_cndmask_b32_e32 v3, v3, v2, vcc5246; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v15247; CI-NEXT:    v_cvt_f16_f32_e32 v1, v55248; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v05249; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc5250; CI-NEXT:    v_cvt_f16_f32_e32 v3, v35251; CI-NEXT:    v_cvt_f32_f16_e32 v1, v15252; CI-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc5253; CI-NEXT:    v_cvt_f16_f32_e32 v0, v05254; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v05255; CI-NEXT:    v_or_b32_e32 v0, v3, v05256; CI-NEXT:    buffer_store_dword v0, off, s[8:11], 05257; CI-NEXT:    s_endpgm5258;5259; VI-LABEL: frem_v2f16:5260; VI:       ; %bb.0:5261; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x245262; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x345263; VI-NEXT:    s_waitcnt lgkmcnt(0)5264; VI-NEXT:    v_mov_b32_e32 v0, s25265; VI-NEXT:    v_mov_b32_e32 v1, s35266; VI-NEXT:    s_add_u32 s2, s4, 165267; VI-NEXT:    s_addc_u32 s3, s5, 05268; VI-NEXT:    flat_load_dword v0, v[0:1]5269; VI-NEXT:    v_mov_b32_e32 v1, s25270; VI-NEXT:    v_mov_b32_e32 v2, s35271; VI-NEXT:    flat_load_dword v1, v[1:2]5272; VI-NEXT:    s_waitcnt vmcnt(1)5273; VI-NEXT:    v_cvt_f32_f16_e64 v4, |v0|5274; VI-NEXT:    s_waitcnt vmcnt(0)5275; VI-NEXT:    v_cvt_f32_f16_e64 v3, |v1|5276; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v4, v35277; VI-NEXT:    s_cbranch_vccz .LBB9_25278; VI-NEXT:  ; %bb.1: ; %frem.else205279; VI-NEXT:    s_movk_i32 s2, 0x7fff5280; VI-NEXT:    v_bfi_b32 v2, s2, 0, v05281; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v35282; VI-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc5283; VI-NEXT:    s_cbranch_execz .LBB9_35284; VI-NEXT:    s_branch .LBB9_85285; VI-NEXT:  .LBB9_2:5286; VI-NEXT:    ; implicit-def: $vgpr25287; VI-NEXT:  .LBB9_3: ; %frem.compute195288; VI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v45289; VI-NEXT:    v_frexp_mant_f32_e32 v2, v45290; VI-NEXT:    v_frexp_mant_f32_e32 v4, v35291; VI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v35292; VI-NEXT:    v_ldexp_f32 v3, v4, 15293; VI-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.05294; VI-NEXT:    v_ldexp_f32 v5, v2, 115295; VI-NEXT:    v_add_u32_e32 v2, vcc, -1, v85296; VI-NEXT:    v_not_b32_e32 v4, v25297; VI-NEXT:    v_add_u32_e32 v4, vcc, v4, v75298; VI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.05299; VI-NEXT:    v_rcp_f32_e32 v10, v95300; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35301; VI-NEXT:    v_fma_f32 v11, -v9, v10, 1.05302; VI-NEXT:    v_fma_f32 v10, v11, v10, v105303; VI-NEXT:    v_mul_f32_e32 v11, v6, v105304; VI-NEXT:    v_fma_f32 v12, -v9, v11, v65305; VI-NEXT:    v_fma_f32 v11, v12, v10, v115306; VI-NEXT:    v_fma_f32 v6, -v9, v11, v65307; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05308; VI-NEXT:    v_div_fmas_f32 v6, v6, v10, v115309; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v45310; VI-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.05311; VI-NEXT:    s_cbranch_vccnz .LBB9_75312; VI-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader5313; VI-NEXT:    v_sub_u32_e32 v4, vcc, v7, v85314; VI-NEXT:    v_add_u32_e32 v4, vcc, 11, v45315; VI-NEXT:  .LBB9_5: ; %frem.loop_body275316; VI-NEXT:    ; =>This Inner Loop Header: Depth=15317; VI-NEXT:    v_mov_b32_e32 v7, v55318; VI-NEXT:    v_mul_f32_e32 v5, v7, v65319; VI-NEXT:    v_rndne_f32_e32 v5, v55320; VI-NEXT:    v_fma_f32 v5, -v5, v3, v75321; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v55322; VI-NEXT:    v_add_f32_e32 v8, v5, v35323; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc5324; VI-NEXT:    v_add_u32_e32 v4, vcc, -11, v45325; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v45326; VI-NEXT:    v_ldexp_f32 v5, v5, 115327; VI-NEXT:    s_cbranch_vccnz .LBB9_55328; VI-NEXT:  ; %bb.6: ; %Flow555329; VI-NEXT:    v_mov_b32_e32 v5, v75330; VI-NEXT:  .LBB9_7: ; %frem.loop_exit285331; VI-NEXT:    v_add_u32_e32 v4, vcc, -10, v45332; VI-NEXT:    v_ldexp_f32 v4, v5, v45333; VI-NEXT:    v_mul_f32_e32 v5, v4, v65334; VI-NEXT:    v_rndne_f32_e32 v5, v55335; VI-NEXT:    v_fma_f32 v4, -v5, v3, v45336; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v45337; VI-NEXT:    v_add_f32_e32 v3, v4, v35338; VI-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc5339; VI-NEXT:    v_ldexp_f32 v2, v3, v25340; VI-NEXT:    v_cvt_f16_f32_e32 v2, v25341; VI-NEXT:    s_movk_i32 s2, 0x7fff5342; VI-NEXT:    v_bfi_b32 v2, s2, v2, v05343; VI-NEXT:  .LBB9_8:5344; VI-NEXT:    v_lshrrev_b32_e32 v3, 16, v05345; VI-NEXT:    v_lshrrev_b32_e32 v4, 16, v15346; VI-NEXT:    v_cvt_f32_f16_e64 v7, |v3|5347; VI-NEXT:    v_cvt_f32_f16_e64 v6, |v4|5348; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v7, v65349; VI-NEXT:    s_cbranch_vccz .LBB9_105350; VI-NEXT:  ; %bb.9: ; %frem.else5351; VI-NEXT:    s_movk_i32 s2, 0x7fff5352; VI-NEXT:    v_bfi_b32 v5, s2, 0, v35353; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v7, v65354; VI-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc5355; VI-NEXT:    s_cbranch_execz .LBB9_115356; VI-NEXT:    s_branch .LBB9_165357; VI-NEXT:  .LBB9_10:5358; VI-NEXT:    ; implicit-def: $vgpr55359; VI-NEXT:  .LBB9_11: ; %frem.compute5360; VI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v75361; VI-NEXT:    v_frexp_mant_f32_e32 v5, v75362; VI-NEXT:    v_frexp_mant_f32_e32 v7, v65363; VI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v65364; VI-NEXT:    v_ldexp_f32 v6, v7, 15365; VI-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.05366; VI-NEXT:    v_ldexp_f32 v8, v5, 115367; VI-NEXT:    v_add_u32_e32 v5, vcc, -1, v115368; VI-NEXT:    v_not_b32_e32 v7, v55369; VI-NEXT:    v_add_u32_e32 v7, vcc, v7, v105370; VI-NEXT:    v_div_scale_f32 v9, vcc, 1.0, v6, 1.05371; VI-NEXT:    v_rcp_f32_e32 v13, v125372; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35373; VI-NEXT:    v_fma_f32 v14, -v12, v13, 1.05374; VI-NEXT:    v_fma_f32 v13, v14, v13, v135375; VI-NEXT:    v_mul_f32_e32 v14, v9, v135376; VI-NEXT:    v_fma_f32 v15, -v12, v14, v95377; VI-NEXT:    v_fma_f32 v14, v15, v13, v145378; VI-NEXT:    v_fma_f32 v9, -v12, v14, v95379; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05380; VI-NEXT:    v_div_fmas_f32 v9, v9, v13, v145381; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v75382; VI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.05383; VI-NEXT:    s_cbranch_vccnz .LBB9_155384; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader5385; VI-NEXT:    v_sub_u32_e32 v7, vcc, v10, v115386; VI-NEXT:    v_add_u32_e32 v7, vcc, 11, v75387; VI-NEXT:  .LBB9_13: ; %frem.loop_body5388; VI-NEXT:    ; =>This Inner Loop Header: Depth=15389; VI-NEXT:    v_mov_b32_e32 v10, v85390; VI-NEXT:    v_mul_f32_e32 v8, v10, v95391; VI-NEXT:    v_rndne_f32_e32 v8, v85392; VI-NEXT:    v_fma_f32 v8, -v8, v6, v105393; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v85394; VI-NEXT:    v_add_f32_e32 v11, v8, v65395; VI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc5396; VI-NEXT:    v_add_u32_e32 v7, vcc, -11, v75397; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v75398; VI-NEXT:    v_ldexp_f32 v8, v8, 115399; VI-NEXT:    s_cbranch_vccnz .LBB9_135400; VI-NEXT:  ; %bb.14: ; %Flow5401; VI-NEXT:    v_mov_b32_e32 v8, v105402; VI-NEXT:  .LBB9_15: ; %frem.loop_exit5403; VI-NEXT:    v_add_u32_e32 v7, vcc, -10, v75404; VI-NEXT:    v_ldexp_f32 v7, v8, v75405; VI-NEXT:    v_mul_f32_e32 v8, v7, v95406; VI-NEXT:    v_rndne_f32_e32 v8, v85407; VI-NEXT:    v_fma_f32 v7, -v8, v6, v75408; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v75409; VI-NEXT:    v_add_f32_e32 v6, v7, v65410; VI-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc5411; VI-NEXT:    v_ldexp_f32 v5, v6, v55412; VI-NEXT:    v_cvt_f16_f32_e32 v5, v55413; VI-NEXT:    s_movk_i32 s2, 0x7fff5414; VI-NEXT:    v_bfi_b32 v5, s2, v5, v35415; VI-NEXT:  .LBB9_16: ; %Flow545416; VI-NEXT:    s_movk_i32 s4, 0x7c005417; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v15418; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s45419; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc5420; VI-NEXT:    v_mov_b32_e32 v6, 0x7e005421; VI-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc5422; VI-NEXT:    v_mov_b32_e32 v0, s05423; VI-NEXT:    v_mov_b32_e32 v1, s15424; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v45425; VI-NEXT:    v_cmp_nge_f16_e64 s[0:1], |v3|, s45426; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc5427; VI-NEXT:    v_cndmask_b32_sdwa v3, v6, v5, vcc dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD5428; VI-NEXT:    v_or_b32_sdwa v2, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD5429; VI-NEXT:    flat_store_dword v[0:1], v25430; VI-NEXT:    s_endpgm5431;5432; GFX9-LABEL: frem_v2f16:5433; GFX9:       ; %bb.0:5434; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x245435; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x345436; GFX9-NEXT:    v_mov_b32_e32 v2, 05437; GFX9-NEXT:    s_waitcnt lgkmcnt(0)5438; GFX9-NEXT:    global_load_dword v1, v2, s[2:3]5439; GFX9-NEXT:    global_load_dword v0, v2, s[6:7] offset:165440; GFX9-NEXT:    s_waitcnt vmcnt(1)5441; GFX9-NEXT:    v_cvt_f32_f16_e64 v4, |v1|5442; GFX9-NEXT:    s_waitcnt vmcnt(0)5443; GFX9-NEXT:    v_cvt_f32_f16_e64 v3, |v0|5444; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v4, v35445; GFX9-NEXT:    s_cbranch_vccz .LBB9_25446; GFX9-NEXT:  ; %bb.1: ; %frem.else205447; GFX9-NEXT:    s_movk_i32 s2, 0x7fff5448; GFX9-NEXT:    v_bfi_b32 v2, s2, 0, v15449; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v4, v35450; GFX9-NEXT:    v_cndmask_b32_e32 v2, v1, v2, vcc5451; GFX9-NEXT:    s_cbranch_execz .LBB9_35452; GFX9-NEXT:    s_branch .LBB9_85453; GFX9-NEXT:  .LBB9_2:5454; GFX9-NEXT:    ; implicit-def: $vgpr25455; GFX9-NEXT:  .LBB9_3: ; %frem.compute195456; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v7, v45457; GFX9-NEXT:    v_frexp_mant_f32_e32 v2, v45458; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v35459; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v8, v35460; GFX9-NEXT:    v_ldexp_f32 v3, v4, 15461; GFX9-NEXT:    v_div_scale_f32 v9, s[2:3], v3, v3, 1.05462; GFX9-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v3, 1.05463; GFX9-NEXT:    v_ldexp_f32 v5, v2, 115464; GFX9-NEXT:    v_add_u32_e32 v2, -1, v85465; GFX9-NEXT:    v_not_b32_e32 v4, v25466; GFX9-NEXT:    v_add_u32_e32 v4, v4, v75467; GFX9-NEXT:    v_rcp_f32_e32 v10, v95468; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35469; GFX9-NEXT:    v_fma_f32 v11, -v9, v10, 1.05470; GFX9-NEXT:    v_fma_f32 v10, v11, v10, v105471; GFX9-NEXT:    v_mul_f32_e32 v11, v6, v105472; GFX9-NEXT:    v_fma_f32 v12, -v9, v11, v65473; GFX9-NEXT:    v_fma_f32 v11, v12, v10, v115474; GFX9-NEXT:    v_fma_f32 v6, -v9, v11, v65475; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05476; GFX9-NEXT:    v_div_fmas_f32 v6, v6, v10, v115477; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v45478; GFX9-NEXT:    v_div_fixup_f32 v6, v6, v3, 1.05479; GFX9-NEXT:    s_cbranch_vccnz .LBB9_75480; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader5481; GFX9-NEXT:    v_sub_u32_e32 v4, v7, v85482; GFX9-NEXT:    v_add_u32_e32 v4, 11, v45483; GFX9-NEXT:  .LBB9_5: ; %frem.loop_body275484; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=15485; GFX9-NEXT:    v_mov_b32_e32 v7, v55486; GFX9-NEXT:    v_mul_f32_e32 v5, v7, v65487; GFX9-NEXT:    v_rndne_f32_e32 v5, v55488; GFX9-NEXT:    v_fma_f32 v5, -v5, v3, v75489; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v55490; GFX9-NEXT:    v_add_f32_e32 v8, v5, v35491; GFX9-NEXT:    v_add_u32_e32 v4, -11, v45492; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc5493; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v45494; GFX9-NEXT:    v_ldexp_f32 v5, v5, 115495; GFX9-NEXT:    s_cbranch_vccnz .LBB9_55496; GFX9-NEXT:  ; %bb.6: ; %Flow555497; GFX9-NEXT:    v_mov_b32_e32 v5, v75498; GFX9-NEXT:  .LBB9_7: ; %frem.loop_exit285499; GFX9-NEXT:    v_add_u32_e32 v4, -10, v45500; GFX9-NEXT:    v_ldexp_f32 v4, v5, v45501; GFX9-NEXT:    v_mul_f32_e32 v5, v4, v65502; GFX9-NEXT:    v_rndne_f32_e32 v5, v55503; GFX9-NEXT:    v_fma_f32 v4, -v5, v3, v45504; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v45505; GFX9-NEXT:    v_add_f32_e32 v3, v4, v35506; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc5507; GFX9-NEXT:    v_ldexp_f32 v2, v3, v25508; GFX9-NEXT:    v_cvt_f16_f32_e32 v2, v25509; GFX9-NEXT:    s_movk_i32 s2, 0x7fff5510; GFX9-NEXT:    v_bfi_b32 v2, s2, v2, v15511; GFX9-NEXT:  .LBB9_8:5512; GFX9-NEXT:    v_lshrrev_b32_e32 v3, 16, v15513; GFX9-NEXT:    v_cvt_f32_f16_e64 v6, |v3|5514; GFX9-NEXT:    v_cvt_f32_f16_sdwa v5, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_15515; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v55516; GFX9-NEXT:    s_cbranch_vccz .LBB9_105517; GFX9-NEXT:  ; %bb.9: ; %frem.else5518; GFX9-NEXT:    s_movk_i32 s2, 0x7fff5519; GFX9-NEXT:    v_bfi_b32 v4, s2, 0, v35520; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v55521; GFX9-NEXT:    v_cndmask_b32_e32 v4, v3, v4, vcc5522; GFX9-NEXT:    s_cbranch_execz .LBB9_115523; GFX9-NEXT:    s_branch .LBB9_165524; GFX9-NEXT:  .LBB9_10:5525; GFX9-NEXT:    ; implicit-def: $vgpr45526; GFX9-NEXT:  .LBB9_11: ; %frem.compute5527; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v9, v65528; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v65529; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v55530; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v10, v55531; GFX9-NEXT:    v_ldexp_f32 v5, v6, 15532; GFX9-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.05533; GFX9-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.05534; GFX9-NEXT:    v_ldexp_f32 v7, v4, 115535; GFX9-NEXT:    v_add_u32_e32 v4, -1, v105536; GFX9-NEXT:    v_not_b32_e32 v6, v45537; GFX9-NEXT:    v_add_u32_e32 v6, v6, v95538; GFX9-NEXT:    v_rcp_f32_e32 v12, v115539; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 35540; GFX9-NEXT:    v_fma_f32 v13, -v11, v12, 1.05541; GFX9-NEXT:    v_fma_f32 v12, v13, v12, v125542; GFX9-NEXT:    v_mul_f32_e32 v13, v8, v125543; GFX9-NEXT:    v_fma_f32 v14, -v11, v13, v85544; GFX9-NEXT:    v_fma_f32 v13, v14, v12, v135545; GFX9-NEXT:    v_fma_f32 v8, -v11, v13, v85546; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 05547; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v135548; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v65549; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.05550; GFX9-NEXT:    s_cbranch_vccnz .LBB9_155551; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader5552; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v105553; GFX9-NEXT:    v_add_u32_e32 v6, 11, v65554; GFX9-NEXT:  .LBB9_13: ; %frem.loop_body5555; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=15556; GFX9-NEXT:    v_mov_b32_e32 v9, v75557; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v85558; GFX9-NEXT:    v_rndne_f32_e32 v7, v75559; GFX9-NEXT:    v_fma_f32 v7, -v7, v5, v95560; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v75561; GFX9-NEXT:    v_add_f32_e32 v10, v7, v55562; GFX9-NEXT:    v_add_u32_e32 v6, -11, v65563; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc5564; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v65565; GFX9-NEXT:    v_ldexp_f32 v7, v7, 115566; GFX9-NEXT:    s_cbranch_vccnz .LBB9_135567; GFX9-NEXT:  ; %bb.14: ; %Flow5568; GFX9-NEXT:    v_mov_b32_e32 v7, v95569; GFX9-NEXT:  .LBB9_15: ; %frem.loop_exit5570; GFX9-NEXT:    v_add_u32_e32 v6, -10, v65571; GFX9-NEXT:    v_ldexp_f32 v6, v7, v65572; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v85573; GFX9-NEXT:    v_rndne_f32_e32 v7, v75574; GFX9-NEXT:    v_fma_f32 v6, -v7, v5, v65575; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v65576; GFX9-NEXT:    v_add_f32_e32 v5, v6, v55577; GFX9-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc5578; GFX9-NEXT:    v_ldexp_f32 v4, v5, v45579; GFX9-NEXT:    v_cvt_f16_f32_e32 v4, v45580; GFX9-NEXT:    s_movk_i32 s2, 0x7fff5581; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v35582; GFX9-NEXT:  .LBB9_16: ; %Flow545583; GFX9-NEXT:    s_movk_i32 s4, 0x7c005584; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v05585; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v1|, s45586; GFX9-NEXT:    v_mov_b32_e32 v5, 05587; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc5588; GFX9-NEXT:    v_mov_b32_e32 v1, 0x7e005589; GFX9-NEXT:    v_cmp_lg_f16_sdwa s[2:3], v0, v5 src0_sel:WORD_1 src1_sel:DWORD5590; GFX9-NEXT:    v_cmp_nge_f16_e64 s[4:5], |v3|, s45591; GFX9-NEXT:    v_cndmask_b32_e32 v2, v1, v2, vcc5592; GFX9-NEXT:    s_and_b64 vcc, s[4:5], s[2:3]5593; GFX9-NEXT:    v_cndmask_b32_e32 v0, v1, v4, vcc5594; GFX9-NEXT:    v_and_b32_e32 v1, 0xffff, v25595; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v15596; GFX9-NEXT:    global_store_dword v5, v0, s[0:1]5597; GFX9-NEXT:    s_endpgm5598;5599; GFX10-LABEL: frem_v2f16:5600; GFX10:       ; %bb.0:5601; GFX10-NEXT:    s_clause 0x15602; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x245603; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x345604; GFX10-NEXT:    v_mov_b32_e32 v2, 05605; GFX10-NEXT:    s_waitcnt lgkmcnt(0)5606; GFX10-NEXT:    s_clause 0x15607; GFX10-NEXT:    global_load_dword v1, v2, s[2:3]5608; GFX10-NEXT:    global_load_dword v0, v2, s[6:7] offset:165609; GFX10-NEXT:    s_waitcnt vmcnt(1)5610; GFX10-NEXT:    v_cvt_f32_f16_e64 v4, |v1|5611; GFX10-NEXT:    s_waitcnt vmcnt(0)5612; GFX10-NEXT:    v_cvt_f32_f16_e64 v3, |v0|5613; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v4, v35614; GFX10-NEXT:    s_cbranch_vccz .LBB9_25615; GFX10-NEXT:  ; %bb.1: ; %frem.else205616; GFX10-NEXT:    v_bfi_b32 v2, 0x7fff, 0, v15617; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v35618; GFX10-NEXT:    v_cndmask_b32_e32 v2, v1, v2, vcc_lo5619; GFX10-NEXT:    s_cbranch_execz .LBB9_35620; GFX10-NEXT:    s_branch .LBB9_85621; GFX10-NEXT:  .LBB9_2:5622; GFX10-NEXT:    ; implicit-def: $vgpr25623; GFX10-NEXT:  .LBB9_3: ; %frem.compute195624; GFX10-NEXT:    v_frexp_mant_f32_e32 v2, v45625; GFX10-NEXT:    v_frexp_mant_f32_e32 v6, v35626; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v45627; GFX10-NEXT:    v_ldexp_f32 v4, v2, 115628; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v2, v35629; GFX10-NEXT:    v_ldexp_f32 v3, v6, 15630; GFX10-NEXT:    v_readfirstlane_b32 s2, v55631; GFX10-NEXT:    v_readfirstlane_b32 s3, v25632; GFX10-NEXT:    v_div_scale_f32 v7, s4, v3, v3, 1.05633; GFX10-NEXT:    v_add_nc_u32_e32 v2, -1, v25634; GFX10-NEXT:    v_rcp_f32_e32 v8, v75635; GFX10-NEXT:    v_not_b32_e32 v6, v25636; GFX10-NEXT:    v_add_nc_u32_e32 v6, v6, v55637; GFX10-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.05638; GFX10-NEXT:    s_denorm_mode 155639; GFX10-NEXT:    v_fma_f32 v9, -v7, v8, 1.05640; GFX10-NEXT:    v_fmac_f32_e32 v8, v9, v85641; GFX10-NEXT:    v_mul_f32_e32 v9, v5, v85642; GFX10-NEXT:    v_fma_f32 v10, -v7, v9, v55643; GFX10-NEXT:    v_fmac_f32_e32 v9, v10, v85644; GFX10-NEXT:    v_fma_f32 v5, -v7, v9, v55645; GFX10-NEXT:    s_denorm_mode 125646; GFX10-NEXT:    v_div_fmas_f32 v5, v5, v8, v95647; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v65648; GFX10-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.05649; GFX10-NEXT:    s_cbranch_vccnz .LBB9_75650; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader5651; GFX10-NEXT:    s_sub_i32 s2, s2, s35652; GFX10-NEXT:    s_add_i32 s2, s2, 115653; GFX10-NEXT:  .LBB9_5: ; %frem.loop_body275654; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15655; GFX10-NEXT:    v_mov_b32_e32 v7, v45656; GFX10-NEXT:    s_add_i32 s2, s2, -115657; GFX10-NEXT:    s_cmp_gt_i32 s2, 115658; GFX10-NEXT:    v_mul_f32_e32 v4, v7, v55659; GFX10-NEXT:    v_rndne_f32_e32 v4, v45660; GFX10-NEXT:    v_fma_f32 v4, -v4, v3, v75661; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v45662; GFX10-NEXT:    v_add_f32_e32 v6, v4, v35663; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo5664; GFX10-NEXT:    v_ldexp_f32 v4, v4, 115665; GFX10-NEXT:    s_cbranch_scc1 .LBB9_55666; GFX10-NEXT:  ; %bb.6: ; %Flow555667; GFX10-NEXT:    v_mov_b32_e32 v6, s25668; GFX10-NEXT:    v_mov_b32_e32 v4, v75669; GFX10-NEXT:  .LBB9_7: ; %frem.loop_exit285670; GFX10-NEXT:    v_add_nc_u32_e32 v6, -10, v65671; GFX10-NEXT:    v_ldexp_f32 v4, v4, v65672; GFX10-NEXT:    v_mul_f32_e32 v5, v4, v55673; GFX10-NEXT:    v_rndne_f32_e32 v5, v55674; GFX10-NEXT:    v_fma_f32 v4, -v5, v3, v45675; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v45676; GFX10-NEXT:    v_add_f32_e32 v3, v4, v35677; GFX10-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo5678; GFX10-NEXT:    v_ldexp_f32 v2, v3, v25679; GFX10-NEXT:    v_cvt_f16_f32_e32 v2, v25680; GFX10-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v15681; GFX10-NEXT:  .LBB9_8:5682; GFX10-NEXT:    v_lshrrev_b32_e32 v3, 16, v15683; GFX10-NEXT:    v_cvt_f32_f16_sdwa v4, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_15684; GFX10-NEXT:    v_cvt_f32_f16_e64 v6, |v3|5685; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v45686; GFX10-NEXT:    s_cbranch_vccz .LBB9_105687; GFX10-NEXT:  ; %bb.9: ; %frem.else5688; GFX10-NEXT:    v_bfi_b32 v5, 0x7fff, 0, v35689; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v45690; GFX10-NEXT:    v_cndmask_b32_e32 v5, v3, v5, vcc_lo5691; GFX10-NEXT:    s_cbranch_execz .LBB9_115692; GFX10-NEXT:    s_branch .LBB9_165693; GFX10-NEXT:  .LBB9_10:5694; GFX10-NEXT:    ; implicit-def: $vgpr55695; GFX10-NEXT:  .LBB9_11: ; %frem.compute5696; GFX10-NEXT:    v_frexp_mant_f32_e32 v5, v65697; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v65698; GFX10-NEXT:    v_ldexp_f32 v6, v5, 115699; GFX10-NEXT:    v_frexp_mant_f32_e32 v5, v45700; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v4, v45701; GFX10-NEXT:    v_readfirstlane_b32 s2, v75702; GFX10-NEXT:    v_ldexp_f32 v5, v5, 15703; GFX10-NEXT:    v_readfirstlane_b32 s3, v45704; GFX10-NEXT:    v_add_nc_u32_e32 v4, -1, v45705; GFX10-NEXT:    v_div_scale_f32 v9, s4, v5, v5, 1.05706; GFX10-NEXT:    v_not_b32_e32 v8, v45707; GFX10-NEXT:    v_rcp_f32_e32 v10, v95708; GFX10-NEXT:    v_add_nc_u32_e32 v8, v8, v75709; GFX10-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.05710; GFX10-NEXT:    s_denorm_mode 155711; GFX10-NEXT:    v_fma_f32 v11, -v9, v10, 1.05712; GFX10-NEXT:    v_fmac_f32_e32 v10, v11, v105713; GFX10-NEXT:    v_mul_f32_e32 v11, v7, v105714; GFX10-NEXT:    v_fma_f32 v12, -v9, v11, v75715; GFX10-NEXT:    v_fmac_f32_e32 v11, v12, v105716; GFX10-NEXT:    v_fma_f32 v7, -v9, v11, v75717; GFX10-NEXT:    s_denorm_mode 125718; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v115719; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v85720; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.05721; GFX10-NEXT:    s_cbranch_vccnz .LBB9_155722; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader5723; GFX10-NEXT:    s_sub_i32 s2, s2, s35724; GFX10-NEXT:    s_add_i32 s2, s2, 115725; GFX10-NEXT:  .LBB9_13: ; %frem.loop_body5726; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=15727; GFX10-NEXT:    v_mov_b32_e32 v9, v65728; GFX10-NEXT:    s_add_i32 s2, s2, -115729; GFX10-NEXT:    s_cmp_gt_i32 s2, 115730; GFX10-NEXT:    v_mul_f32_e32 v6, v9, v75731; GFX10-NEXT:    v_rndne_f32_e32 v6, v65732; GFX10-NEXT:    v_fma_f32 v6, -v6, v5, v95733; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v65734; GFX10-NEXT:    v_add_f32_e32 v8, v6, v55735; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo5736; GFX10-NEXT:    v_ldexp_f32 v6, v6, 115737; GFX10-NEXT:    s_cbranch_scc1 .LBB9_135738; GFX10-NEXT:  ; %bb.14: ; %Flow5739; GFX10-NEXT:    v_mov_b32_e32 v8, s25740; GFX10-NEXT:    v_mov_b32_e32 v6, v95741; GFX10-NEXT:  .LBB9_15: ; %frem.loop_exit5742; GFX10-NEXT:    v_add_nc_u32_e32 v8, -10, v85743; GFX10-NEXT:    v_ldexp_f32 v6, v6, v85744; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v75745; GFX10-NEXT:    v_rndne_f32_e32 v7, v75746; GFX10-NEXT:    v_fma_f32 v6, -v7, v5, v65747; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v65748; GFX10-NEXT:    v_add_f32_e32 v5, v6, v55749; GFX10-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo5750; GFX10-NEXT:    v_ldexp_f32 v4, v5, v45751; GFX10-NEXT:    v_cvt_f16_f32_e32 v4, v45752; GFX10-NEXT:    v_bfi_b32 v5, 0x7fff, v4, v35753; GFX10-NEXT:  .LBB9_16: ; %Flow545754; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v05755; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1|5756; GFX10-NEXT:    v_cmp_nle_f16_e64 s3, 0x7c00, |v3|5757; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo5758; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7e00, v2, vcc_lo5759; GFX10-NEXT:    v_mov_b32_e32 v2, 05760; GFX10-NEXT:    v_and_b32_e32 v1, 0xffff, v15761; GFX10-NEXT:    v_cmp_lg_f16_sdwa s2, v0, v2 src0_sel:WORD_1 src1_sel:DWORD5762; GFX10-NEXT:    s_and_b32 vcc_lo, s3, s25763; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v5, vcc_lo5764; GFX10-NEXT:    v_lshl_or_b32 v0, v0, 16, v15765; GFX10-NEXT:    global_store_dword v2, v0, s[0:1]5766; GFX10-NEXT:    s_endpgm5767;5768; GFX11-TRUE16-LABEL: frem_v2f16:5769; GFX11-TRUE16:       ; %bb.0:5770; GFX11-TRUE16-NEXT:    s_clause 0x15771; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245772; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345773; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, 05774; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)5775; GFX11-TRUE16-NEXT:    s_clause 0x15776; GFX11-TRUE16-NEXT:    global_load_b32 v0, v1, s[2:3]5777; GFX11-TRUE16-NEXT:    global_load_b32 v1, v1, s[4:5] offset:165778; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)5779; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v4, |v0.l|5780; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)5781; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v3, |v1.l|5782; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5783; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v4, v35784; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB9_25785; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else205786; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v2.l, v0.l5787; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, 05788; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v35789; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5790; GFX11-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v5, v25791; GFX11-TRUE16-NEXT:    v_cndmask_b16 v2.l, v0.l, v2.l, vcc_lo5792; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB9_35793; GFX11-TRUE16-NEXT:    s_branch .LBB9_85794; GFX11-TRUE16-NEXT:  .LBB9_2:5795; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr25796; GFX11-TRUE16-NEXT:  .LBB9_3: ; %frem.compute195797; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, v45798; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v6, v35799; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v45800; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)5801; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v2, 115802; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, v35803; GFX11-TRUE16-NEXT:    v_ldexp_f32 v3, v6, 15804; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)5805; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v55806; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v25807; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)5808; GFX11-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.05809; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v25810; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v8, v75811; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5812; GFX11-TRUE16-NEXT:    v_not_b32_e32 v6, v25813; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v55814; GFX11-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.05815; GFX11-TRUE16-NEXT:    s_denorm_mode 155816; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)5817; GFX11-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.05818; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5819; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v85820; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v85821; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5822; GFX11-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v55823; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v85824; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)5825; GFX11-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v55826; GFX11-TRUE16-NEXT:    s_denorm_mode 125827; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v95828; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v65829; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)5830; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.05831; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_75832; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader5833; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s35834; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5835; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 115836; GFX11-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body275837; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15838; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5839; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v45840; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -115841; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 115842; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5843; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v55844; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v4, v45845; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5846; GFX11-TRUE16-NEXT:    v_fma_f32 v4, -v4, v3, v75847; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v45848; GFX11-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v35849; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5850; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo5851; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 115852; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_55853; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow555854; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, s25855; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v4, v75856; GFX11-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit285857; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5858; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v65859; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v65860; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5861; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v55862; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v5, v55863; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5864; GFX11-TRUE16-NEXT:    v_fma_f32 v4, -v5, v3, v45865; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v45866; GFX11-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v35867; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5868; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo5869; GFX11-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v25870; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v3.l, v0.l5871; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5872; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v25873; GFX11-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v35874; GFX11-TRUE16-NEXT:  .LBB9_8:5875; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v05876; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v15877; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5878; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v6, |v3.l|5879; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v5, |v4.l|5880; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)5881; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v55882; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB9_105883; GFX11-TRUE16-NEXT:  ; %bb.9: ; %frem.else5884; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v3.l5885; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, 05886; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v55887; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5888; GFX11-TRUE16-NEXT:    v_bfi_b32 v7, 0x7fff, v8, v75889; GFX11-TRUE16-NEXT:    v_cndmask_b16 v7.l, v3.l, v7.l, vcc_lo5890; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB9_115891; GFX11-TRUE16-NEXT:    s_branch .LBB9_165892; GFX11-TRUE16-NEXT:  .LBB9_10:5893; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr75894; GFX11-TRUE16-NEXT:  .LBB9_11: ; %frem.compute5895; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v65896; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v6, v65897; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5898; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v85899; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v6, 115900; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v6, v55901; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v55902; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)5903; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v6, 15904; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v55905; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -1, v55906; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)5907; GFX11-TRUE16-NEXT:    v_div_scale_f32 v10, null, v6, v6, 1.05908; GFX11-TRUE16-NEXT:    v_not_b32_e32 v9, v55909; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5910; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v11, v105911; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v9, v9, v85912; GFX11-TRUE16-NEXT:    v_div_scale_f32 v8, vcc_lo, 1.0, v6, 1.05913; GFX11-TRUE16-NEXT:    s_denorm_mode 155914; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)5915; GFX11-TRUE16-NEXT:    v_fma_f32 v12, -v10, v11, 1.05916; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5917; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v11, v12, v115918; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v12, v8, v115919; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5920; GFX11-TRUE16-NEXT:    v_fma_f32 v13, -v10, v12, v85921; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v12, v13, v115922; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)5923; GFX11-TRUE16-NEXT:    v_fma_f32 v8, -v10, v12, v85924; GFX11-TRUE16-NEXT:    s_denorm_mode 125925; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v8, v8, v11, v125926; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v95927; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)5928; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.05929; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_155930; GFX11-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader5931; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s35932; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5933; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 115934; GFX11-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body5935; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=15936; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)5937; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v75938; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -115939; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 115940; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5941; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v7, v10, v85942; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v7, v75943; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5944; GFX11-TRUE16-NEXT:    v_fma_f32 v7, -v7, v6, v105945; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v75946; GFX11-TRUE16-NEXT:    v_add_f32_e32 v9, v7, v65947; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5948; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo5949; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v7, 115950; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_135951; GFX11-TRUE16-NEXT:  ; %bb.14: ; %Flow5952; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, s25953; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v7, v105954; GFX11-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit5955; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5956; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v9, -10, v95957; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v7, v95958; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5959; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v8, v7, v85960; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v8, v85961; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5962; GFX11-TRUE16-NEXT:    v_fma_f32 v7, -v8, v6, v75963; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v75964; GFX11-TRUE16-NEXT:    v_add_f32_e32 v6, v7, v65965; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)5966; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc_lo5967; GFX11-TRUE16-NEXT:    v_ldexp_f32 v5, v6, v55968; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v6.l, v3.l5969; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)5970; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v5.l, v55971; GFX11-TRUE16-NEXT:    v_bfi_b32 v7, 0x7fff, v5, v65972; GFX11-TRUE16-NEXT:  .LBB9_16: ; %Flow545973; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v1.l5974; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0.l|5975; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v1, 05976; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo5977; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v4.l5978; GFX11-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v2.l, s25979; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v3.l|5980; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo5981; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)5982; GFX11-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v7.l, s25983; GFX11-TRUE16-NEXT:    global_store_b32 v1, v0, s[0:1]5984; GFX11-TRUE16-NEXT:    s_endpgm5985;5986; GFX11-FAKE16-LABEL: frem_v2f16:5987; GFX11-FAKE16:       ; %bb.0:5988; GFX11-FAKE16-NEXT:    s_clause 0x15989; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x245990; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x345991; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 05992; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)5993; GFX11-FAKE16-NEXT:    s_clause 0x15994; GFX11-FAKE16-NEXT:    global_load_b32 v0, v1, s[2:3]5995; GFX11-FAKE16-NEXT:    global_load_b32 v1, v1, s[4:5] offset:165996; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)5997; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v4, |v0|5998; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)5999; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v3, |v1|6000; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6001; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v4, v36002; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB9_26003; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else206004; GFX11-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, 0, v06005; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v4, v36006; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6007; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v0, v2, vcc_lo6008; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB9_36009; GFX11-FAKE16-NEXT:    s_branch .LBB9_86010; GFX11-FAKE16-NEXT:  .LBB9_2:6011; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr26012; GFX11-FAKE16-NEXT:  .LBB9_3: ; %frem.compute196013; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, v46014; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v6, v36015; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v46016; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)6017; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v2, 116018; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, v36019; GFX11-FAKE16-NEXT:    v_ldexp_f32 v3, v6, 16020; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)6021; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v56022; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v26023; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)6024; GFX11-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.06025; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v26026; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v8, v76027; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6028; GFX11-FAKE16-NEXT:    v_not_b32_e32 v6, v26029; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v56030; GFX11-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.06031; GFX11-FAKE16-NEXT:    s_denorm_mode 156032; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)6033; GFX11-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.06034; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6035; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v86036; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v86037; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6038; GFX11-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v56039; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v86040; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6041; GFX11-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v56042; GFX11-FAKE16-NEXT:    s_denorm_mode 126043; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v96044; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v66045; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6046; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.06047; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_76048; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader6049; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s36050; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6051; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 116052; GFX11-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body276053; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16054; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6055; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v46056; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -116057; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 116058; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6059; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v56060; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v4, v46061; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6062; GFX11-FAKE16-NEXT:    v_fma_f32 v4, -v4, v3, v76063; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v46064; GFX11-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v36065; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6066; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo6067; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 116068; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_56069; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow556070; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, s26071; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v4, v76072; GFX11-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit286073; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6074; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v66075; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v66076; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6077; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v56078; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v5, v56079; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6080; GFX11-FAKE16-NEXT:    v_fma_f32 v4, -v5, v3, v46081; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v46082; GFX11-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v36083; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6084; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo6085; GFX11-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v26086; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6087; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v26088; GFX11-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v06089; GFX11-FAKE16-NEXT:  .LBB9_8:6090; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v3, 16, v06091; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v4, 16, v16092; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)6093; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v7, |v3|6094; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v5, |v4|6095; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6096; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v7, v56097; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB9_106098; GFX11-FAKE16-NEXT:  ; %bb.9: ; %frem.else6099; GFX11-FAKE16-NEXT:    v_bfi_b32 v6, 0x7fff, 0, v36100; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v7, v56101; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6102; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v3, v6, vcc_lo6103; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB9_116104; GFX11-FAKE16-NEXT:    s_branch .LBB9_166105; GFX11-FAKE16-NEXT:  .LBB9_10:6106; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr66107; GFX11-FAKE16-NEXT:  .LBB9_11: ; %frem.compute6108; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v6, v76109; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v76110; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_4)6111; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v6, 116112; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v6, v56113; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, v56114; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v86115; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6116; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v6, 16117; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v56118; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -1, v56119; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)6120; GFX11-FAKE16-NEXT:    v_div_scale_f32 v10, null, v6, v6, 1.06121; GFX11-FAKE16-NEXT:    v_not_b32_e32 v9, v56122; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6123; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v11, v106124; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v9, v9, v86125; GFX11-FAKE16-NEXT:    v_div_scale_f32 v8, vcc_lo, 1.0, v6, 1.06126; GFX11-FAKE16-NEXT:    s_denorm_mode 156127; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)6128; GFX11-FAKE16-NEXT:    v_fma_f32 v12, -v10, v11, 1.06129; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6130; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v11, v12, v116131; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v12, v8, v116132; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6133; GFX11-FAKE16-NEXT:    v_fma_f32 v13, -v10, v12, v86134; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v12, v13, v116135; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6136; GFX11-FAKE16-NEXT:    v_fma_f32 v8, -v10, v12, v86137; GFX11-FAKE16-NEXT:    s_denorm_mode 126138; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v8, v8, v11, v126139; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v96140; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)6141; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.06142; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_156143; GFX11-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader6144; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s36145; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6146; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 116147; GFX11-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body6148; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16149; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6150; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v76151; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -116152; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 116153; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6154; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v7, v10, v86155; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v7, v76156; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6157; GFX11-FAKE16-NEXT:    v_fma_f32 v7, -v7, v6, v106158; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v76159; GFX11-FAKE16-NEXT:    v_add_f32_e32 v9, v7, v66160; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6161; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo6162; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v7, 116163; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_136164; GFX11-FAKE16-NEXT:  ; %bb.14: ; %Flow6165; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, s26166; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v7, v106167; GFX11-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit6168; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6169; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v9, -10, v96170; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v7, v96171; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6172; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v8, v7, v86173; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v8, v86174; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6175; GFX11-FAKE16-NEXT:    v_fma_f32 v7, -v8, v6, v76176; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v76177; GFX11-FAKE16-NEXT:    v_add_f32_e32 v6, v7, v66178; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6179; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc_lo6180; GFX11-FAKE16-NEXT:    v_ldexp_f32 v5, v6, v56181; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6182; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v5, v56183; GFX11-FAKE16-NEXT:    v_bfi_b32 v6, 0x7fff, v5, v36184; GFX11-FAKE16-NEXT:  .LBB9_16: ; %Flow546185; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v16186; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|6187; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v1, 06188; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo6189; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v3|6190; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v2, vcc_lo6191; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v46192; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_2) | instid1(VALU_DEP_1)6193; GFX11-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v06194; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo6195; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, 0x7e00, v6, vcc_lo6196; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v2, 16, v06197; GFX11-FAKE16-NEXT:    global_store_b32 v1, v0, s[0:1]6198; GFX11-FAKE16-NEXT:    s_endpgm6199;6200; GFX1150-TRUE16-LABEL: frem_v2f16:6201; GFX1150-TRUE16:       ; %bb.0:6202; GFX1150-TRUE16-NEXT:    s_clause 0x16203; GFX1150-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x246204; GFX1150-TRUE16-NEXT:    s_load_b64 s[6:7], s[4:5], 0x346205; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v0, 06206; GFX1150-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)6207; GFX1150-TRUE16-NEXT:    s_clause 0x16208; GFX1150-TRUE16-NEXT:    global_load_b32 v1, v0, s[2:3]6209; GFX1150-TRUE16-NEXT:    global_load_b32 v0, v0, s[6:7] offset:166210; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(1)6211; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s4, v16212; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)6213; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s3, v06214; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s4, 0x7fff6215; GFX1150-TRUE16-NEXT:    s_and_b32 s5, s3, 0x7fff6216; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s6, s26217; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s5, s56218; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6219; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s6, s56220; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_26221; GFX1150-TRUE16-NEXT:  ; %bb.1: ; %frem.else206222; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v0.l, s46223; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 06224; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s6, s56225; GFX1150-TRUE16-NEXT:    s_cselect_b32 s7, -1, 06226; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6227; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v1, v06228; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, s4, v0.l, s76229; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB9_36230; GFX1150-TRUE16-NEXT:    s_branch .LBB9_86231; GFX1150-TRUE16-NEXT:  .LBB9_2:6232; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr06233; GFX1150-TRUE16-NEXT:  .LBB9_3: ; %frem.compute196234; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s56235; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s66236; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s66237; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6238; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v1, v1, 16239; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v0, 116240; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s56241; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6242; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s6, v36243; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.06244; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6245; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s5, v06246; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v0, -1, v06247; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v6, v56248; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6249; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v4, v06250; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v36251; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.06252; GFX1150-TRUE16-NEXT:    s_denorm_mode 156253; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6254; GFX1150-TRUE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.06255; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v6, v7, v66256; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6257; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v7, v3, v66258; GFX1150-TRUE16-NEXT:    v_fma_f32 v8, -v5, v7, v36259; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6260; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v66261; GFX1150-TRUE16-NEXT:    v_fma_f32 v3, -v5, v7, v36262; GFX1150-TRUE16-NEXT:    s_denorm_mode 126263; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6264; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v76265; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v46266; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.06267; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_76268; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader6269; GFX1150-TRUE16-NEXT:    s_sub_i32 s5, s6, s56270; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6271; GFX1150-TRUE16-NEXT:    s_add_i32 s5, s5, 116272; GFX1150-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body276273; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16274; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6275; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v26276; GFX1150-TRUE16-NEXT:    s_add_i32 s5, s5, -116277; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s5, 116278; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6279; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v2, v5, v36280; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v2, v26281; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6282; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v26283; GFX1150-TRUE16-NEXT:    v_fma_f32 v2, v2, v1, v56284; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6285; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26286; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v4, v2, v16287; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo6288; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6289; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 116290; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_56291; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow556292; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, s56293; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, v56294; GFX1150-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit286295; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6296; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v46297; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v46298; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6299; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v3, v2, v36300; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v3, v36301; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6302; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36303; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v2, v3, v16304; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6305; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26306; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v1, v2, v16307; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo6308; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6309; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v0, v1, v06310; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s46311; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v06312; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6313; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v16314; GFX1150-TRUE16-NEXT:  .LBB9_8:6315; GFX1150-TRUE16-NEXT:    s_lshr_b32 s6, s4, 166316; GFX1150-TRUE16-NEXT:    s_lshr_b32 s5, s3, 166317; GFX1150-TRUE16-NEXT:    s_and_b32 s4, s6, 0x7fff6318; GFX1150-TRUE16-NEXT:    s_and_b32 s7, s5, 0x7fff6319; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s8, s46320; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s7, s76321; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6322; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s76323; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_106324; GFX1150-TRUE16-NEXT:  ; %bb.9: ; %frem.else6325; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s66326; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, 06327; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s8, s76328; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, -1, 06329; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6330; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v2, v16331; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.l, s6, v1.l, s96332; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB9_116333; GFX1150-TRUE16-NEXT:    s_branch .LBB9_166334; GFX1150-TRUE16-NEXT:  .LBB9_10:6335; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr16336; GFX1150-TRUE16-NEXT:  .LBB9_11: ; %frem.compute6337; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s76338; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s86339; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s86340; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6341; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 16342; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v1, 116343; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s76344; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6345; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s8, v46346; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.06347; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6348; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s7, v16349; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v1, -1, v16350; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v7, v66351; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6352; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v5, v16353; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v46354; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.06355; GFX1150-TRUE16-NEXT:    s_denorm_mode 156356; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6357; GFX1150-TRUE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.06358; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v76359; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6360; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v8, v4, v76361; GFX1150-TRUE16-NEXT:    v_fma_f32 v9, -v6, v8, v46362; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6363; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v76364; GFX1150-TRUE16-NEXT:    v_fma_f32 v4, -v6, v8, v46365; GFX1150-TRUE16-NEXT:    s_denorm_mode 126366; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6367; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v86368; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v56369; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.06370; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_156371; GFX1150-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader6372; GFX1150-TRUE16-NEXT:    s_sub_i32 s7, s8, s76373; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6374; GFX1150-TRUE16-NEXT:    s_add_i32 s7, s7, 116375; GFX1150-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body6376; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16377; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6378; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, v36379; GFX1150-TRUE16-NEXT:    s_add_i32 s7, s7, -116380; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s7, 116381; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6382; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v3, v6, v46383; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v3, v36384; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6385; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36386; GFX1150-TRUE16-NEXT:    v_fma_f32 v3, v3, v2, v66387; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6388; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36389; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v5, v3, v26390; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo6391; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6392; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 116393; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_136394; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %Flow6395; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, s76396; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v3, v66397; GFX1150-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit6398; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6399; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v56400; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v56401; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6402; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v3, v46403; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v4, v46404; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6405; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v46406; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v3, v4, v26407; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6408; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36409; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v2, v3, v26410; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo6411; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6412; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v1, v2, v16413; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s66414; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v16415; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6416; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v26417; GFX1150-TRUE16-NEXT:  .LBB9_16: ; %Flow546418; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s3, 06419; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, 06420; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 06421; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s2, 0x7c006422; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 06423; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6424; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s2, s36425; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s5, 06426; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v0.l, s26427; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 06428; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s4, 0x7c006429; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 06430; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)6431; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s3, s26432; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v1.l, s26433; GFX1150-TRUE16-NEXT:    global_store_b32 v2, v0, s[0:1]6434; GFX1150-TRUE16-NEXT:    s_endpgm6435;6436; GFX1150-FAKE16-LABEL: frem_v2f16:6437; GFX1150-FAKE16:       ; %bb.0:6438; GFX1150-FAKE16-NEXT:    s_clause 0x16439; GFX1150-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x246440; GFX1150-FAKE16-NEXT:    s_load_b64 s[6:7], s[4:5], 0x346441; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v0, 06442; GFX1150-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)6443; GFX1150-FAKE16-NEXT:    s_clause 0x16444; GFX1150-FAKE16-NEXT:    global_load_b32 v1, v0, s[2:3]6445; GFX1150-FAKE16-NEXT:    global_load_b32 v0, v0, s[6:7] offset:166446; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(1)6447; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s4, v16448; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)6449; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s3, v06450; GFX1150-FAKE16-NEXT:    s_and_b32 s2, s4, 0x7fff6451; GFX1150-FAKE16-NEXT:    s_and_b32 s5, s3, 0x7fff6452; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s6, s26453; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s5, s56454; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6455; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s6, s56456; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_26457; GFX1150-FAKE16-NEXT:  ; %bb.1: ; %frem.else206458; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s6, s56459; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, 0, s46460; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 06461; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6462; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s4, v0, vcc_lo6463; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB9_36464; GFX1150-FAKE16-NEXT:    s_branch .LBB9_86465; GFX1150-FAKE16-NEXT:  .LBB9_2:6466; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr06467; GFX1150-FAKE16-NEXT:  .LBB9_3: ; %frem.compute196468; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s56469; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s66470; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s66471; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6472; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v1, v1, 16473; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v0, 116474; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s56475; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6476; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s6, v36477; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.06478; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6479; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s5, v06480; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v0, -1, v06481; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v6, v56482; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6483; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v4, v06484; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, v4, v36485; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.06486; GFX1150-FAKE16-NEXT:    s_denorm_mode 156487; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6488; GFX1150-FAKE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.06489; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v6, v7, v66490; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6491; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v7, v3, v66492; GFX1150-FAKE16-NEXT:    v_fma_f32 v8, -v5, v7, v36493; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6494; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v66495; GFX1150-FAKE16-NEXT:    v_fma_f32 v3, -v5, v7, v36496; GFX1150-FAKE16-NEXT:    s_denorm_mode 126497; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6498; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v76499; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v46500; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.06501; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_76502; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader6503; GFX1150-FAKE16-NEXT:    s_sub_i32 s5, s6, s56504; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6505; GFX1150-FAKE16-NEXT:    s_add_i32 s5, s5, 116506; GFX1150-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body276507; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16508; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6509; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v26510; GFX1150-FAKE16-NEXT:    s_add_i32 s5, s5, -116511; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s5, 116512; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6513; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v2, v5, v36514; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v2, v26515; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6516; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v26517; GFX1150-FAKE16-NEXT:    v_fma_f32 v2, v2, v1, v56518; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6519; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26520; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v4, v2, v16521; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo6522; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6523; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 116524; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_56525; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow556526; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, s56527; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, v56528; GFX1150-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit286529; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6530; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v46531; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v46532; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6533; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v2, v36534; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v3, v36535; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6536; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36537; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v2, v3, v16538; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6539; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26540; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v1, v2, v16541; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo6542; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6543; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v0, v1, v06544; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v06545; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6546; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s46547; GFX1150-FAKE16-NEXT:  .LBB9_8:6548; GFX1150-FAKE16-NEXT:    s_lshr_b32 s6, s4, 166549; GFX1150-FAKE16-NEXT:    s_lshr_b32 s5, s3, 166550; GFX1150-FAKE16-NEXT:    s_and_b32 s4, s6, 0x7fff6551; GFX1150-FAKE16-NEXT:    s_and_b32 s7, s5, 0x7fff6552; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s8, s46553; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s7, s76554; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6555; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s76556; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_106557; GFX1150-FAKE16-NEXT:  ; %bb.9: ; %frem.else6558; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s8, s76559; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, 0, s66560; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 06561; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6562; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s6, v1, vcc_lo6563; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB9_116564; GFX1150-FAKE16-NEXT:    s_branch .LBB9_166565; GFX1150-FAKE16-NEXT:  .LBB9_10:6566; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr16567; GFX1150-FAKE16-NEXT:  .LBB9_11: ; %frem.compute6568; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s76569; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s86570; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s86571; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6572; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 16573; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v1, 116574; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s76575; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6576; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s8, v46577; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.06578; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6579; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s7, v16580; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v1, -1, v16581; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v7, v66582; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6583; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v5, v16584; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, v5, v46585; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.06586; GFX1150-FAKE16-NEXT:    s_denorm_mode 156587; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6588; GFX1150-FAKE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.06589; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v76590; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6591; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v8, v4, v76592; GFX1150-FAKE16-NEXT:    v_fma_f32 v9, -v6, v8, v46593; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6594; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v76595; GFX1150-FAKE16-NEXT:    v_fma_f32 v4, -v6, v8, v46596; GFX1150-FAKE16-NEXT:    s_denorm_mode 126597; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6598; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v86599; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v56600; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.06601; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_156602; GFX1150-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader6603; GFX1150-FAKE16-NEXT:    s_sub_i32 s7, s8, s76604; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6605; GFX1150-FAKE16-NEXT:    s_add_i32 s7, s7, 116606; GFX1150-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body6607; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16608; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)6609; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, v36610; GFX1150-FAKE16-NEXT:    s_add_i32 s7, s7, -116611; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s7, 116612; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6613; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v6, v46614; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v3, v36615; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6616; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36617; GFX1150-FAKE16-NEXT:    v_fma_f32 v3, v3, v2, v66618; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6619; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36620; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v5, v3, v26621; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo6622; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6623; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 116624; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_136625; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %Flow6626; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, s76627; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v3, v66628; GFX1150-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit6629; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6630; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v56631; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v56632; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6633; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v3, v46634; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v4, v46635; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6636; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v46637; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v3, v4, v26638; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6639; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36640; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v2, v3, v26641; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo6642; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6643; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v1, v2, v16644; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v16645; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6646; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s66647; GFX1150-FAKE16-NEXT:  .LBB9_16: ; %Flow546648; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s3, 06649; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 06650; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s2, 0x7c006651; GFX1150-FAKE16-NEXT:    s_cselect_b32 s2, -1, 06652; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)6653; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, s36654; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s5, 06655; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v0, vcc_lo6656; GFX1150-FAKE16-NEXT:    s_cselect_b32 s2, -1, 06657; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s4, 0x7c006658; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v06659; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 06660; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)6661; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s26662; GFX1150-FAKE16-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_cndmask_b32 v1, 0x7e00, v16663; GFX1150-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v06664; GFX1150-FAKE16-NEXT:    global_store_b32 v2, v0, s[0:1]6665; GFX1150-FAKE16-NEXT:    s_endpgm6666;6667; GFX1200-TRUE16-LABEL: frem_v2f16:6668; GFX1200-TRUE16:       ; %bb.0:6669; GFX1200-TRUE16-NEXT:    s_clause 0x16670; GFX1200-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x246671; GFX1200-TRUE16-NEXT:    s_load_b64 s[6:7], s[4:5], 0x346672; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v0, 06673; GFX1200-TRUE16-NEXT:    s_wait_kmcnt 0x06674; GFX1200-TRUE16-NEXT:    s_clause 0x16675; GFX1200-TRUE16-NEXT:    global_load_b32 v1, v0, s[2:3]6676; GFX1200-TRUE16-NEXT:    global_load_b32 v0, v0, s[6:7] offset:166677; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x16678; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s4, v16679; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x06680; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s3, v06681; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s4, 0x7fff6682; GFX1200-TRUE16-NEXT:    s_and_b32 s5, s3, 0x7fff6683; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s6, s26684; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s5, s56685; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6686; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s6, s56687; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_26688; GFX1200-TRUE16-NEXT:  ; %bb.1: ; %frem.else206689; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v0.l, s46690; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 06691; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s6, s56692; GFX1200-TRUE16-NEXT:    s_cselect_b32 s7, -1, 06693; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6694; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v1, v06695; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, s4, v0.l, s76696; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB9_36697; GFX1200-TRUE16-NEXT:    s_branch .LBB9_86698; GFX1200-TRUE16-NEXT:  .LBB9_2:6699; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr06700; GFX1200-TRUE16-NEXT:  .LBB9_3: ; %frem.compute196701; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s56702; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s66703; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s66704; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6705; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v1, v1, 16706; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v0, 116707; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s56708; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6709; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s6, v36710; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.06711; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6712; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s5, v06713; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v0, -1, v06714; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v6, v56715; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6716; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v4, v06717; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v36718; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.06719; GFX1200-TRUE16-NEXT:    s_denorm_mode 156720; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6721; GFX1200-TRUE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.06722; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v6, v7, v66723; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6724; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v7, v3, v66725; GFX1200-TRUE16-NEXT:    v_fma_f32 v8, -v5, v7, v36726; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6727; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v66728; GFX1200-TRUE16-NEXT:    v_fma_f32 v3, -v5, v7, v36729; GFX1200-TRUE16-NEXT:    s_denorm_mode 126730; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6731; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v76732; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v46733; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.06734; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_76735; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader6736; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s5, s6, s56737; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6738; GFX1200-TRUE16-NEXT:    s_add_co_i32 s5, s5, 116739; GFX1200-TRUE16-NEXT:  .LBB9_5: ; %frem.loop_body276740; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16741; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6742; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v26743; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6744; GFX1200-TRUE16-NEXT:    s_add_co_i32 s5, s5, -116745; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6746; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s5, 116747; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v2, v5, v36748; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6749; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v2, v26750; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v26751; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6752; GFX1200-TRUE16-NEXT:    v_fma_f32 v2, v2, v1, v56753; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26754; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v4, v2, v16755; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6756; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6757; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo6758; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 116759; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_56760; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow556761; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, s56762; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, v56763; GFX1200-TRUE16-NEXT:  .LBB9_7: ; %frem.loop_exit286764; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6765; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v46766; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v46767; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6768; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v3, v2, v36769; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v3, v36770; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6771; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36772; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v2, v3, v16773; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)6774; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v26775; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v1, v2, v16776; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6777; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo6778; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6779; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v0, v1, v06780; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s46781; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v06782; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6783; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v16784; GFX1200-TRUE16-NEXT:  .LBB9_8:6785; GFX1200-TRUE16-NEXT:    s_lshr_b32 s6, s4, 166786; GFX1200-TRUE16-NEXT:    s_lshr_b32 s5, s3, 166787; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6788; GFX1200-TRUE16-NEXT:    s_and_b32 s4, s6, 0x7fff6789; GFX1200-TRUE16-NEXT:    s_and_b32 s7, s5, 0x7fff6790; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6791; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s8, s46792; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s7, s76793; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6794; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)6795; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s76796; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB9_106797; GFX1200-TRUE16-NEXT:  ; %bb.9: ; %frem.else6798; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s66799; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, 06800; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s8, s76801; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, -1, 06802; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6803; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v2, v16804; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.l, s6, v1.l, s96805; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB9_116806; GFX1200-TRUE16-NEXT:    s_branch .LBB9_166807; GFX1200-TRUE16-NEXT:  .LBB9_10:6808; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr16809; GFX1200-TRUE16-NEXT:  .LBB9_11: ; %frem.compute6810; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s76811; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s86812; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s86813; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6814; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 16815; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v1, 116816; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s76817; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6818; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s8, v46819; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.06820; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6821; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s7, v16822; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v1, -1, v16823; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v7, v66824; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6825; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v5, v16826; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v46827; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.06828; GFX1200-TRUE16-NEXT:    s_denorm_mode 156829; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6830; GFX1200-TRUE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.06831; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v76832; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6833; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v8, v4, v76834; GFX1200-TRUE16-NEXT:    v_fma_f32 v9, -v6, v8, v46835; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6836; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v76837; GFX1200-TRUE16-NEXT:    v_fma_f32 v4, -v6, v8, v46838; GFX1200-TRUE16-NEXT:    s_denorm_mode 126839; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6840; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6841; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v86842; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v56843; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.06844; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB9_156845; GFX1200-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader6846; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s7, s8, s76847; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6848; GFX1200-TRUE16-NEXT:    s_add_co_i32 s7, s7, 116849; GFX1200-TRUE16-NEXT:  .LBB9_13: ; %frem.loop_body6850; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=16851; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6852; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, v36853; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6854; GFX1200-TRUE16-NEXT:    s_add_co_i32 s7, s7, -116855; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6856; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s7, 116857; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v3, v6, v46858; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6859; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v3, v36860; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v36861; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6862; GFX1200-TRUE16-NEXT:    v_fma_f32 v3, v3, v2, v66863; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36864; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v5, v3, v26865; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6866; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6867; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo6868; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 116869; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB9_136870; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %Flow6871; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, s76872; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v3, v66873; GFX1200-TRUE16-NEXT:  .LBB9_15: ; %frem.loop_exit6874; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)6875; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v56876; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v56877; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6878; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v3, v46879; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v4, v46880; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6881; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v46882; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v3, v4, v26883; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)6884; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v36885; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v2, v3, v26886; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)6887; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo6888; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6889; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v1, v2, v16890; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s66891; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v16892; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6893; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v26894; GFX1200-TRUE16-NEXT:  .LBB9_16: ; %Flow546895; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s3, 06896; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, 06897; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 06898; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s2, 0x7c006899; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 06900; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)6901; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s2, s36902; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s5, 06903; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v0.l, s26904; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 06905; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s4, 0x7c006906; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 06907; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6908; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s3, s26909; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6910; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v1.l, s26911; GFX1200-TRUE16-NEXT:    global_store_b32 v2, v0, s[0:1]6912; GFX1200-TRUE16-NEXT:    s_endpgm6913;6914; GFX1200-FAKE16-LABEL: frem_v2f16:6915; GFX1200-FAKE16:       ; %bb.0:6916; GFX1200-FAKE16-NEXT:    s_clause 0x16917; GFX1200-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x246918; GFX1200-FAKE16-NEXT:    s_load_b64 s[6:7], s[4:5], 0x346919; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v0, 06920; GFX1200-FAKE16-NEXT:    s_wait_kmcnt 0x06921; GFX1200-FAKE16-NEXT:    s_clause 0x16922; GFX1200-FAKE16-NEXT:    global_load_b32 v1, v0, s[2:3]6923; GFX1200-FAKE16-NEXT:    global_load_b32 v0, v0, s[6:7] offset:166924; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x16925; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s4, v16926; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x06927; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s3, v06928; GFX1200-FAKE16-NEXT:    s_and_b32 s2, s4, 0x7fff6929; GFX1200-FAKE16-NEXT:    s_and_b32 s5, s3, 0x7fff6930; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s6, s26931; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s5, s56932; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)6933; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s6, s56934; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_26935; GFX1200-FAKE16-NEXT:  ; %bb.1: ; %frem.else206936; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s6, s56937; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, 0, s46938; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 06939; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6940; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s4, v0, vcc_lo6941; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB9_36942; GFX1200-FAKE16-NEXT:    s_branch .LBB9_86943; GFX1200-FAKE16-NEXT:  .LBB9_2:6944; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr06945; GFX1200-FAKE16-NEXT:  .LBB9_3: ; %frem.compute196946; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s56947; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s66948; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s66949; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)6950; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v1, v1, 16951; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v0, 116952; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s56953; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)6954; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s6, v36955; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.06956; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)6957; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s5, v06958; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v0, -1, v06959; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v6, v56960; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6961; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v4, v06962; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, v4, v36963; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.06964; GFX1200-FAKE16-NEXT:    s_denorm_mode 156965; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6966; GFX1200-FAKE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.06967; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v6, v7, v66968; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6969; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v7, v3, v66970; GFX1200-FAKE16-NEXT:    v_fma_f32 v8, -v5, v7, v36971; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6972; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v66973; GFX1200-FAKE16-NEXT:    v_fma_f32 v3, -v5, v7, v36974; GFX1200-FAKE16-NEXT:    s_denorm_mode 126975; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)6976; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)6977; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v76978; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v46979; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.06980; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_76981; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body27.preheader6982; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s5, s6, s56983; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6984; GFX1200-FAKE16-NEXT:    s_add_co_i32 s5, s5, 116985; GFX1200-FAKE16-NEXT:  .LBB9_5: ; %frem.loop_body276986; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=16987; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)6988; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v26989; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6990; GFX1200-FAKE16-NEXT:    s_add_co_i32 s5, s5, -116991; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)6992; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s5, 116993; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v2, v5, v36994; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6995; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v2, v26996; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v26997; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)6998; GFX1200-FAKE16-NEXT:    v_fma_f32 v2, v2, v1, v56999; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v27000; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v4, v2, v17001; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7002; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7003; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo7004; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 117005; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_57006; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow557007; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, s57008; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, v57009; GFX1200-FAKE16-NEXT:  .LBB9_7: ; %frem.loop_exit287010; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7011; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v47012; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v47013; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7014; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v2, v37015; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v3, v37016; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7017; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v37018; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v2, v3, v17019; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)7020; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v27021; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v1, v2, v17022; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7023; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo7024; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7025; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v0, v1, v07026; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v07027; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7028; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s47029; GFX1200-FAKE16-NEXT:  .LBB9_8:7030; GFX1200-FAKE16-NEXT:    s_lshr_b32 s6, s4, 167031; GFX1200-FAKE16-NEXT:    s_lshr_b32 s5, s3, 167032; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7033; GFX1200-FAKE16-NEXT:    s_and_b32 s4, s6, 0x7fff7034; GFX1200-FAKE16-NEXT:    s_and_b32 s7, s5, 0x7fff7035; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7036; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s8, s47037; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s7, s77038; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7039; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)7040; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s77041; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB9_107042; GFX1200-FAKE16-NEXT:  ; %bb.9: ; %frem.else7043; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s8, s77044; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, 0, s67045; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 07046; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7047; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7048; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s6, v1, vcc_lo7049; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB9_117050; GFX1200-FAKE16-NEXT:    s_branch .LBB9_167051; GFX1200-FAKE16-NEXT:  .LBB9_10:7052; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr17053; GFX1200-FAKE16-NEXT:  .LBB9_11: ; %frem.compute7054; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s77055; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s87056; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s87057; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)7058; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 17059; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v1, 117060; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s77061; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)7062; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s8, v47063; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.07064; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)7065; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s7, v17066; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v1, -1, v17067; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v7, v67068; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7069; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v5, v17070; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, v5, v47071; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.07072; GFX1200-FAKE16-NEXT:    s_denorm_mode 157073; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7074; GFX1200-FAKE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.07075; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v77076; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7077; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v8, v4, v77078; GFX1200-FAKE16-NEXT:    v_fma_f32 v9, -v6, v8, v47079; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7080; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v77081; GFX1200-FAKE16-NEXT:    v_fma_f32 v4, -v6, v8, v47082; GFX1200-FAKE16-NEXT:    s_denorm_mode 127083; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7084; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)7085; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v87086; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v57087; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.07088; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB9_157089; GFX1200-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body.preheader7090; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s7, s8, s77091; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7092; GFX1200-FAKE16-NEXT:    s_add_co_i32 s7, s7, 117093; GFX1200-FAKE16-NEXT:  .LBB9_13: ; %frem.loop_body7094; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=17095; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7096; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, v37097; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7098; GFX1200-FAKE16-NEXT:    s_add_co_i32 s7, s7, -117099; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7100; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s7, 117101; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v6, v47102; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7103; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v3, v37104; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v37105; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7106; GFX1200-FAKE16-NEXT:    v_fma_f32 v3, v3, v2, v67107; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v37108; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v5, v3, v27109; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7110; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7111; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo7112; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 117113; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB9_137114; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %Flow7115; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, s77116; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v3, v67117; GFX1200-FAKE16-NEXT:  .LBB9_15: ; %frem.loop_exit7118; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)7119; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v57120; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v57121; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7122; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v3, v47123; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v4, v47124; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7125; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v47126; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v3, v4, v27127; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)7128; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v37129; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v2, v3, v27130; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)7131; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo7132; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)7133; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v1, v2, v17134; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v17135; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7136; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s67137; GFX1200-FAKE16-NEXT:  .LBB9_16: ; %Flow547138; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s3, 07139; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 07140; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s2, 0x7c007141; GFX1200-FAKE16-NEXT:    s_cselect_b32 s2, -1, 07142; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)7143; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, s37144; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s5, 07145; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7146; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v0, vcc_lo7147; GFX1200-FAKE16-NEXT:    s_cselect_b32 s2, -1, 07148; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s4, 0x7c007149; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)7150; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v07151; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 07152; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s27153; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)7154; GFX1200-FAKE16-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_cndmask_b32 v1, 0x7e00, v17155; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)7156; GFX1200-FAKE16-NEXT:    v_lshl_or_b32 v0, v1, 16, v07157; GFX1200-FAKE16-NEXT:    global_store_b32 v2, v0, s[0:1]7158; GFX1200-FAKE16-NEXT:    s_endpgm7159                        ptr addrspace(1) %in2) #0 {7160   %gep2 = getelementptr <2 x half>, ptr addrspace(1) %in2, i32 47161   %r0 = load <2 x half>, ptr addrspace(1) %in1, align 87162   %r1 = load <2 x half>, ptr addrspace(1) %gep2, align 87163   %r2 = frem <2 x half> %r0, %r17164   store <2 x half> %r2, ptr addrspace(1) %out, align 87165   ret void7166}7167 7168define amdgpu_kernel void @frem_v4f16(ptr addrspace(1) %out, ptr addrspace(1) %in1,7169; SI-LABEL: frem_v4f16:7170; SI:       ; %bb.0:7171; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x97172; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd7173; SI-NEXT:    s_mov_b32 s7, 0xf0007174; SI-NEXT:    s_mov_b32 s6, -17175; SI-NEXT:    s_waitcnt lgkmcnt(0)7176; SI-NEXT:    s_mov_b32 s4, s107177; SI-NEXT:    s_mov_b32 s5, s117178; SI-NEXT:    s_mov_b32 s2, s67179; SI-NEXT:    s_mov_b32 s3, s77180; SI-NEXT:    buffer_load_dwordx2 v[3:4], off, s[4:7], 07181; SI-NEXT:    s_waitcnt vmcnt(0)7182; SI-NEXT:    v_cvt_f32_f16_e32 v2, v47183; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v47184; SI-NEXT:    v_cvt_f32_f16_e32 v0, v07185; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v37186; SI-NEXT:    v_cvt_f32_f16_e32 v4, v17187; SI-NEXT:    v_cvt_f32_f16_e32 v6, v37188; SI-NEXT:    buffer_load_dwordx2 v[7:8], off, s[0:3], 0 offset:327189; SI-NEXT:    s_waitcnt vmcnt(0)7190; SI-NEXT:    v_cvt_f32_f16_e32 v3, v87191; SI-NEXT:    v_lshrrev_b32_e32 v1, 16, v87192; SI-NEXT:    v_cvt_f32_f16_e32 v1, v17193; SI-NEXT:    v_lshrrev_b32_e32 v5, 16, v77194; SI-NEXT:    v_cvt_f32_f16_e32 v5, v57195; SI-NEXT:    v_cvt_f32_f16_e32 v7, v77196; SI-NEXT:    s_brev_b32 s0, -27197; SI-NEXT:    v_and_b32_e32 v9, 0x7fffffff, v67198; SI-NEXT:    v_and_b32_e32 v10, 0x7fffffff, v77199; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v6|, |v7|7200; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]7201; SI-NEXT:    v_cvt_f16_f32_e32 v8, v67202; SI-NEXT:    s_cbranch_vccz .LBB10_27203; SI-NEXT:  ; %bb.1: ; %frem.else867204; SI-NEXT:    v_bfi_b32 v11, s0, 0, v67205; SI-NEXT:    v_cvt_f32_f16_e32 v8, v87206; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v9, v107207; SI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc7208; SI-NEXT:    s_mov_b64 vcc, exec7209; SI-NEXT:    s_cbranch_execz .LBB10_37210; SI-NEXT:    s_branch .LBB10_87211; SI-NEXT:  .LBB10_2:7212; SI-NEXT:    ; implicit-def: $vgpr87213; SI-NEXT:    s_mov_b64 vcc, 07214; SI-NEXT:  .LBB10_3: ; %frem.compute857215; SI-NEXT:    s_mov_b32 s3, 0x7f8000007216; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v9|, s37217; SI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v97218; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7219; SI-NEXT:    v_readfirstlane_b32 s0, v87220; SI-NEXT:    s_cselect_b32 s2, s0, 07221; SI-NEXT:    v_frexp_mant_f32_e32 v8, v97222; SI-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc7223; SI-NEXT:    v_ldexp_f32_e64 v9, v8, 117224; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v10|, s37225; SI-NEXT:    v_frexp_mant_f32_e32 v8, v107226; SI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc7227; SI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v107228; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7229; SI-NEXT:    v_readfirstlane_b32 s0, v107230; SI-NEXT:    s_cselect_b32 s3, s0, 07231; SI-NEXT:    s_add_i32 s0, s3, -17232; SI-NEXT:    v_ldexp_f32_e64 v8, v8, 17233; SI-NEXT:    s_not_b32 s1, s07234; SI-NEXT:    s_add_i32 s1, s1, s27235; SI-NEXT:    v_div_scale_f32 v10, vcc, 1.0, v8, 1.07236; SI-NEXT:    v_div_scale_f32 v11, s[4:5], v8, v8, 1.07237; SI-NEXT:    v_rcp_f32_e32 v12, v117238; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37239; SI-NEXT:    v_fma_f32 v13, -v11, v12, 1.07240; SI-NEXT:    v_fma_f32 v12, v13, v12, v127241; SI-NEXT:    v_mul_f32_e32 v13, v10, v127242; SI-NEXT:    v_fma_f32 v14, -v11, v13, v107243; SI-NEXT:    v_fma_f32 v13, v14, v12, v137244; SI-NEXT:    v_fma_f32 v10, -v11, v13, v107245; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07246; SI-NEXT:    v_div_fmas_f32 v10, v10, v12, v137247; SI-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.07248; SI-NEXT:    s_cmp_lt_i32 s1, 127249; SI-NEXT:    s_cbranch_scc1 .LBB10_77250; SI-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader7251; SI-NEXT:    s_sub_i32 s1, s2, s37252; SI-NEXT:    s_add_i32 s1, s1, 117253; SI-NEXT:  .LBB10_5: ; %frem.loop_body937254; SI-NEXT:    ; =>This Inner Loop Header: Depth=17255; SI-NEXT:    v_mov_b32_e32 v11, v97256; SI-NEXT:    v_mul_f32_e32 v9, v11, v107257; SI-NEXT:    v_rndne_f32_e32 v9, v97258; SI-NEXT:    v_fma_f32 v9, -v9, v8, v117259; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v97260; SI-NEXT:    v_add_f32_e32 v12, v9, v87261; SI-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc7262; SI-NEXT:    v_ldexp_f32_e64 v9, v9, 117263; SI-NEXT:    s_add_i32 s1, s1, -117264; SI-NEXT:    s_cmp_gt_i32 s1, 117265; SI-NEXT:    s_cbranch_scc1 .LBB10_57266; SI-NEXT:  ; %bb.6: ; %Flow1337267; SI-NEXT:    v_mov_b32_e32 v9, v117268; SI-NEXT:  .LBB10_7: ; %frem.loop_exit947269; SI-NEXT:    s_add_i32 s1, s1, -107270; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s17271; SI-NEXT:    v_mul_f32_e32 v10, v9, v107272; SI-NEXT:    v_rndne_f32_e32 v10, v107273; SI-NEXT:    v_fma_f32 v9, -v10, v8, v97274; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v97275; SI-NEXT:    v_add_f32_e32 v8, v9, v87276; SI-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc7277; SI-NEXT:    v_ldexp_f32_e64 v8, v8, s07278; SI-NEXT:    v_cvt_f16_f32_e32 v8, v87279; SI-NEXT:    v_cvt_f32_f16_e32 v8, v87280; SI-NEXT:    s_brev_b32 s0, -27281; SI-NEXT:    v_bfi_b32 v8, s0, v8, v67282; SI-NEXT:  .LBB10_8:7283; SI-NEXT:    v_cvt_f16_f32_e32 v9, v47284; SI-NEXT:    v_cvt_f16_f32_e32 v11, v57285; SI-NEXT:    v_cvt_f32_f16_e64 v10, |v9|7286; SI-NEXT:    v_cvt_f32_f16_e64 v11, |v11|7287; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v10, v117288; SI-NEXT:    s_cbranch_vccz .LBB10_107289; SI-NEXT:  ; %bb.9: ; %frem.else537290; SI-NEXT:    s_brev_b32 s0, -27291; SI-NEXT:    v_bfi_b32 v12, s0, 0, v47292; SI-NEXT:    v_cvt_f32_f16_e32 v9, v97293; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v10, v117294; SI-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc7295; SI-NEXT:    s_mov_b64 vcc, exec7296; SI-NEXT:    s_cbranch_execz .LBB10_117297; SI-NEXT:    s_branch .LBB10_167298; SI-NEXT:  .LBB10_10:7299; SI-NEXT:    ; implicit-def: $vgpr97300; SI-NEXT:    s_mov_b64 vcc, 07301; SI-NEXT:  .LBB10_11: ; %frem.compute527302; SI-NEXT:    s_mov_b32 s3, 0x7f8000007303; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v10|, s37304; SI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v107305; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7306; SI-NEXT:    v_readfirstlane_b32 s0, v97307; SI-NEXT:    s_cselect_b32 s2, s0, 07308; SI-NEXT:    v_frexp_mant_f32_e32 v9, v107309; SI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc7310; SI-NEXT:    v_ldexp_f32_e64 v10, v9, 117311; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v11|, s37312; SI-NEXT:    v_frexp_mant_f32_e32 v9, v117313; SI-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc7314; SI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v117315; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7316; SI-NEXT:    v_readfirstlane_b32 s0, v117317; SI-NEXT:    s_cselect_b32 s3, s0, 07318; SI-NEXT:    s_add_i32 s0, s3, -17319; SI-NEXT:    v_ldexp_f32_e64 v9, v9, 17320; SI-NEXT:    s_not_b32 s1, s07321; SI-NEXT:    s_add_i32 s1, s1, s27322; SI-NEXT:    v_div_scale_f32 v11, vcc, 1.0, v9, 1.07323; SI-NEXT:    v_div_scale_f32 v12, s[4:5], v9, v9, 1.07324; SI-NEXT:    v_rcp_f32_e32 v13, v127325; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37326; SI-NEXT:    v_fma_f32 v14, -v12, v13, 1.07327; SI-NEXT:    v_fma_f32 v13, v14, v13, v137328; SI-NEXT:    v_mul_f32_e32 v14, v11, v137329; SI-NEXT:    v_fma_f32 v15, -v12, v14, v117330; SI-NEXT:    v_fma_f32 v14, v15, v13, v147331; SI-NEXT:    v_fma_f32 v11, -v12, v14, v117332; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07333; SI-NEXT:    v_div_fmas_f32 v11, v11, v13, v147334; SI-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.07335; SI-NEXT:    s_cmp_lt_i32 s1, 127336; SI-NEXT:    s_cbranch_scc1 .LBB10_157337; SI-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader7338; SI-NEXT:    s_sub_i32 s1, s2, s37339; SI-NEXT:    s_add_i32 s1, s1, 117340; SI-NEXT:  .LBB10_13: ; %frem.loop_body607341; SI-NEXT:    ; =>This Inner Loop Header: Depth=17342; SI-NEXT:    v_mov_b32_e32 v12, v107343; SI-NEXT:    v_mul_f32_e32 v10, v12, v117344; SI-NEXT:    v_rndne_f32_e32 v10, v107345; SI-NEXT:    v_fma_f32 v10, -v10, v9, v127346; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v107347; SI-NEXT:    v_add_f32_e32 v13, v10, v97348; SI-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc7349; SI-NEXT:    v_ldexp_f32_e64 v10, v10, 117350; SI-NEXT:    s_add_i32 s1, s1, -117351; SI-NEXT:    s_cmp_gt_i32 s1, 117352; SI-NEXT:    s_cbranch_scc1 .LBB10_137353; SI-NEXT:  ; %bb.14: ; %Flow1297354; SI-NEXT:    v_mov_b32_e32 v10, v127355; SI-NEXT:  .LBB10_15: ; %frem.loop_exit617356; SI-NEXT:    s_add_i32 s1, s1, -107357; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s17358; SI-NEXT:    v_mul_f32_e32 v11, v10, v117359; SI-NEXT:    v_rndne_f32_e32 v11, v117360; SI-NEXT:    v_fma_f32 v10, -v11, v9, v107361; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v107362; SI-NEXT:    v_add_f32_e32 v9, v10, v97363; SI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc7364; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s07365; SI-NEXT:    v_cvt_f16_f32_e32 v9, v97366; SI-NEXT:    v_cvt_f32_f16_e32 v9, v97367; SI-NEXT:    s_brev_b32 s0, -27368; SI-NEXT:    v_bfi_b32 v9, s0, v9, v47369; SI-NEXT:  .LBB10_16:7370; SI-NEXT:    v_cvt_f16_f32_e32 v10, v27371; SI-NEXT:    v_cvt_f16_f32_e32 v12, v37372; SI-NEXT:    v_cvt_f32_f16_e64 v11, |v10|7373; SI-NEXT:    v_cvt_f32_f16_e64 v12, |v12|7374; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v11, v127375; SI-NEXT:    s_cbranch_vccz .LBB10_187376; SI-NEXT:  ; %bb.17: ; %frem.else207377; SI-NEXT:    s_brev_b32 s0, -27378; SI-NEXT:    v_bfi_b32 v13, s0, 0, v27379; SI-NEXT:    v_cvt_f32_f16_e32 v10, v107380; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v11, v127381; SI-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc7382; SI-NEXT:    s_mov_b64 vcc, exec7383; SI-NEXT:    s_cbranch_execz .LBB10_197384; SI-NEXT:    s_branch .LBB10_247385; SI-NEXT:  .LBB10_18:7386; SI-NEXT:    ; implicit-def: $vgpr107387; SI-NEXT:    s_mov_b64 vcc, 07388; SI-NEXT:  .LBB10_19: ; %frem.compute197389; SI-NEXT:    s_mov_b32 s3, 0x7f8000007390; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v11|, s37391; SI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v117392; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7393; SI-NEXT:    v_readfirstlane_b32 s0, v107394; SI-NEXT:    s_cselect_b32 s2, s0, 07395; SI-NEXT:    v_frexp_mant_f32_e32 v10, v117396; SI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc7397; SI-NEXT:    v_ldexp_f32_e64 v11, v10, 117398; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v12|, s37399; SI-NEXT:    v_frexp_mant_f32_e32 v10, v127400; SI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc7401; SI-NEXT:    v_frexp_exp_i32_f32_e32 v12, v127402; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7403; SI-NEXT:    v_readfirstlane_b32 s0, v127404; SI-NEXT:    s_cselect_b32 s3, s0, 07405; SI-NEXT:    s_add_i32 s0, s3, -17406; SI-NEXT:    v_ldexp_f32_e64 v10, v10, 17407; SI-NEXT:    s_not_b32 s1, s07408; SI-NEXT:    s_add_i32 s1, s1, s27409; SI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v10, 1.07410; SI-NEXT:    v_div_scale_f32 v13, s[4:5], v10, v10, 1.07411; SI-NEXT:    v_rcp_f32_e32 v14, v137412; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37413; SI-NEXT:    v_fma_f32 v15, -v13, v14, 1.07414; SI-NEXT:    v_fma_f32 v14, v15, v14, v147415; SI-NEXT:    v_mul_f32_e32 v15, v12, v147416; SI-NEXT:    v_fma_f32 v16, -v13, v15, v127417; SI-NEXT:    v_fma_f32 v15, v16, v14, v157418; SI-NEXT:    v_fma_f32 v12, -v13, v15, v127419; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07420; SI-NEXT:    v_div_fmas_f32 v12, v12, v14, v157421; SI-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.07422; SI-NEXT:    s_cmp_lt_i32 s1, 127423; SI-NEXT:    s_cbranch_scc1 .LBB10_237424; SI-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader7425; SI-NEXT:    s_sub_i32 s1, s2, s37426; SI-NEXT:    s_add_i32 s1, s1, 117427; SI-NEXT:  .LBB10_21: ; %frem.loop_body277428; SI-NEXT:    ; =>This Inner Loop Header: Depth=17429; SI-NEXT:    v_mov_b32_e32 v13, v117430; SI-NEXT:    v_mul_f32_e32 v11, v13, v127431; SI-NEXT:    v_rndne_f32_e32 v11, v117432; SI-NEXT:    v_fma_f32 v11, -v11, v10, v137433; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v117434; SI-NEXT:    v_add_f32_e32 v14, v11, v107435; SI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc7436; SI-NEXT:    v_ldexp_f32_e64 v11, v11, 117437; SI-NEXT:    s_add_i32 s1, s1, -117438; SI-NEXT:    s_cmp_gt_i32 s1, 117439; SI-NEXT:    s_cbranch_scc1 .LBB10_217440; SI-NEXT:  ; %bb.22: ; %Flow1257441; SI-NEXT:    v_mov_b32_e32 v11, v137442; SI-NEXT:  .LBB10_23: ; %frem.loop_exit287443; SI-NEXT:    s_add_i32 s1, s1, -107444; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s17445; SI-NEXT:    v_mul_f32_e32 v12, v11, v127446; SI-NEXT:    v_rndne_f32_e32 v12, v127447; SI-NEXT:    v_fma_f32 v11, -v12, v10, v117448; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v117449; SI-NEXT:    v_add_f32_e32 v10, v11, v107450; SI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc7451; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s07452; SI-NEXT:    v_cvt_f16_f32_e32 v10, v107453; SI-NEXT:    v_cvt_f32_f16_e32 v10, v107454; SI-NEXT:    s_brev_b32 s0, -27455; SI-NEXT:    v_bfi_b32 v10, s0, v10, v27456; SI-NEXT:  .LBB10_24:7457; SI-NEXT:    v_cvt_f16_f32_e32 v11, v07458; SI-NEXT:    v_cvt_f16_f32_e32 v13, v17459; SI-NEXT:    v_cvt_f32_f16_e64 v12, |v11|7460; SI-NEXT:    v_cvt_f32_f16_e64 v13, |v13|7461; SI-NEXT:    v_cmp_ngt_f32_e32 vcc, v12, v137462; SI-NEXT:    s_cbranch_vccz .LBB10_267463; SI-NEXT:  ; %bb.25: ; %frem.else7464; SI-NEXT:    s_brev_b32 s0, -27465; SI-NEXT:    v_bfi_b32 v14, s0, 0, v07466; SI-NEXT:    v_cvt_f32_f16_e32 v11, v117467; SI-NEXT:    v_cmp_eq_f32_e32 vcc, v12, v137468; SI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc7469; SI-NEXT:    s_mov_b64 vcc, exec7470; SI-NEXT:    s_cbranch_execz .LBB10_277471; SI-NEXT:    s_branch .LBB10_327472; SI-NEXT:  .LBB10_26:7473; SI-NEXT:    ; implicit-def: $vgpr117474; SI-NEXT:    s_mov_b64 vcc, 07475; SI-NEXT:  .LBB10_27: ; %frem.compute7476; SI-NEXT:    s_mov_b32 s3, 0x7f8000007477; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v12|, s37478; SI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v127479; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7480; SI-NEXT:    v_readfirstlane_b32 s0, v117481; SI-NEXT:    s_cselect_b32 s2, s0, 07482; SI-NEXT:    v_frexp_mant_f32_e32 v11, v127483; SI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc7484; SI-NEXT:    v_ldexp_f32_e64 v12, v11, 117485; SI-NEXT:    v_cmp_lt_f32_e64 vcc, |v13|, s37486; SI-NEXT:    v_frexp_mant_f32_e32 v11, v137487; SI-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc7488; SI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v137489; SI-NEXT:    s_and_b64 s[0:1], vcc, exec7490; SI-NEXT:    v_readfirstlane_b32 s0, v137491; SI-NEXT:    s_cselect_b32 s3, s0, 07492; SI-NEXT:    s_add_i32 s0, s3, -17493; SI-NEXT:    v_ldexp_f32_e64 v11, v11, 17494; SI-NEXT:    s_not_b32 s1, s07495; SI-NEXT:    s_add_i32 s1, s1, s27496; SI-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v11, 1.07497; SI-NEXT:    v_div_scale_f32 v14, s[4:5], v11, v11, 1.07498; SI-NEXT:    v_rcp_f32_e32 v15, v147499; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37500; SI-NEXT:    v_fma_f32 v16, -v14, v15, 1.07501; SI-NEXT:    v_fma_f32 v15, v16, v15, v157502; SI-NEXT:    v_mul_f32_e32 v16, v13, v157503; SI-NEXT:    v_fma_f32 v17, -v14, v16, v137504; SI-NEXT:    v_fma_f32 v16, v17, v15, v167505; SI-NEXT:    v_fma_f32 v13, -v14, v16, v137506; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07507; SI-NEXT:    v_div_fmas_f32 v13, v13, v15, v167508; SI-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.07509; SI-NEXT:    s_cmp_lt_i32 s1, 127510; SI-NEXT:    s_cbranch_scc1 .LBB10_317511; SI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader7512; SI-NEXT:    s_sub_i32 s1, s2, s37513; SI-NEXT:    s_add_i32 s1, s1, 117514; SI-NEXT:  .LBB10_29: ; %frem.loop_body7515; SI-NEXT:    ; =>This Inner Loop Header: Depth=17516; SI-NEXT:    v_mov_b32_e32 v14, v127517; SI-NEXT:    v_mul_f32_e32 v12, v14, v137518; SI-NEXT:    v_rndne_f32_e32 v12, v127519; SI-NEXT:    v_fma_f32 v12, -v12, v11, v147520; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v127521; SI-NEXT:    v_add_f32_e32 v15, v12, v117522; SI-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc7523; SI-NEXT:    v_ldexp_f32_e64 v12, v12, 117524; SI-NEXT:    s_add_i32 s1, s1, -117525; SI-NEXT:    s_cmp_gt_i32 s1, 117526; SI-NEXT:    s_cbranch_scc1 .LBB10_297527; SI-NEXT:  ; %bb.30: ; %Flow7528; SI-NEXT:    v_mov_b32_e32 v12, v147529; SI-NEXT:  .LBB10_31: ; %frem.loop_exit7530; SI-NEXT:    s_add_i32 s1, s1, -107531; SI-NEXT:    v_ldexp_f32_e64 v12, v12, s17532; SI-NEXT:    v_mul_f32_e32 v13, v12, v137533; SI-NEXT:    v_rndne_f32_e32 v13, v137534; SI-NEXT:    v_fma_f32 v12, -v13, v11, v127535; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v127536; SI-NEXT:    v_add_f32_e32 v11, v12, v117537; SI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc7538; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s07539; SI-NEXT:    v_cvt_f16_f32_e32 v11, v117540; SI-NEXT:    v_cvt_f32_f16_e32 v11, v117541; SI-NEXT:    s_brev_b32 s0, -27542; SI-NEXT:    v_bfi_b32 v11, s0, v11, v07543; SI-NEXT:  .LBB10_32: ; %Flow1247544; SI-NEXT:    v_cvt_f16_f32_e32 v7, v77545; SI-NEXT:    v_cvt_f32_f16_e32 v7, v77546; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v77547; SI-NEXT:    v_cvt_f16_f32_e32 v7, v87548; SI-NEXT:    v_cvt_f32_f16_e32 v7, v77549; SI-NEXT:    v_cvt_f16_f32_e32 v6, v67550; SI-NEXT:    v_and_b32_e32 v6, 0x7fff, v67551; SI-NEXT:    s_movk_i32 s2, 0x7c007552; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v67553; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc7554; SI-NEXT:    v_mov_b32_e32 v6, 0x7fc000007555; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v6, vcc7556; SI-NEXT:    v_cvt_f16_f32_e32 v7, v77557; SI-NEXT:    v_cvt_f16_f32_e32 v5, v57558; SI-NEXT:    v_cvt_f32_f16_e32 v5, v57559; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v57560; SI-NEXT:    v_cvt_f16_f32_e32 v5, v97561; SI-NEXT:    v_cvt_f32_f16_e32 v5, v57562; SI-NEXT:    v_cvt_f16_f32_e32 v4, v47563; SI-NEXT:    v_and_b32_e32 v4, 0x7fff, v47564; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v47565; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc7566; SI-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc7567; SI-NEXT:    v_cvt_f16_f32_e32 v4, v47568; SI-NEXT:    v_cvt_f16_f32_e32 v3, v37569; SI-NEXT:    v_cvt_f32_f16_e32 v3, v37570; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v37571; SI-NEXT:    v_cvt_f16_f32_e32 v3, v107572; SI-NEXT:    v_cvt_f32_f16_e32 v3, v37573; SI-NEXT:    v_cvt_f16_f32_e32 v2, v27574; SI-NEXT:    v_and_b32_e32 v2, 0x7fff, v27575; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v27576; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc7577; SI-NEXT:    v_cndmask_b32_e32 v2, v3, v6, vcc7578; SI-NEXT:    v_cvt_f16_f32_e32 v2, v27579; SI-NEXT:    s_mov_b32 s11, 0xf0007580; SI-NEXT:    s_mov_b32 s10, -17581; SI-NEXT:    v_cvt_f16_f32_e32 v1, v17582; SI-NEXT:    v_cvt_f32_f16_e32 v1, v17583; SI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v17584; SI-NEXT:    v_cvt_f16_f32_e32 v1, v117585; SI-NEXT:    v_cvt_f32_f16_e32 v1, v17586; SI-NEXT:    v_cvt_f16_f32_e32 v0, v07587; SI-NEXT:    v_and_b32_e32 v0, 0x7fff, v07588; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v07589; SI-NEXT:    s_or_b64 vcc, s[0:1], vcc7590; SI-NEXT:    v_cndmask_b32_e32 v0, v1, v6, vcc7591; SI-NEXT:    v_cvt_f16_f32_e32 v0, v07592; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v07593; SI-NEXT:    v_or_b32_e32 v1, v2, v07594; SI-NEXT:    v_lshlrev_b32_e32 v0, 16, v47595; SI-NEXT:    v_or_b32_e32 v0, v7, v07596; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 07597; SI-NEXT:    s_endpgm7598;7599; CI-LABEL: frem_v4f16:7600; CI:       ; %bb.0:7601; CI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x97602; CI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd7603; CI-NEXT:    s_mov_b32 s7, 0xf0007604; CI-NEXT:    s_mov_b32 s6, -17605; CI-NEXT:    s_mov_b32 s2, s67606; CI-NEXT:    s_waitcnt lgkmcnt(0)7607; CI-NEXT:    s_mov_b32 s4, s107608; CI-NEXT:    s_mov_b32 s5, s117609; CI-NEXT:    buffer_load_dwordx2 v[3:4], off, s[4:7], 07610; CI-NEXT:    s_mov_b32 s3, s77611; CI-NEXT:    buffer_load_dwordx2 v[7:8], off, s[0:3], 0 offset:327612; CI-NEXT:    s_brev_b32 s0, -27613; CI-NEXT:    s_waitcnt vmcnt(1)7614; CI-NEXT:    v_cvt_f32_f16_e32 v6, v37615; CI-NEXT:    v_lshrrev_b32_e32 v1, 16, v37616; CI-NEXT:    s_waitcnt vmcnt(0)7617; CI-NEXT:    v_lshrrev_b32_e32 v5, 16, v77618; CI-NEXT:    v_cvt_f32_f16_e32 v7, v77619; CI-NEXT:    v_cvt_f32_f16_e32 v2, v47620; CI-NEXT:    v_lshrrev_b32_e32 v0, 16, v47621; CI-NEXT:    v_cvt_f32_f16_e32 v4, v17622; CI-NEXT:    v_lshrrev_b32_e32 v1, 16, v87623; CI-NEXT:    v_cvt_f32_f16_e32 v0, v07624; CI-NEXT:    v_cvt_f32_f16_e32 v3, v87625; CI-NEXT:    v_cvt_f32_f16_e32 v1, v17626; CI-NEXT:    v_cvt_f32_f16_e32 v5, v57627; CI-NEXT:    v_cvt_f16_f32_e32 v8, v67628; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v6|, |v7|7629; CI-NEXT:    v_and_b32_e32 v10, 0x7fffffff, v67630; CI-NEXT:    v_and_b32_e32 v9, 0x7fffffff, v77631; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]7632; CI-NEXT:    s_cbranch_vccz .LBB10_27633; CI-NEXT:  ; %bb.1: ; %frem.else867634; CI-NEXT:    v_cvt_f32_f16_e32 v8, v87635; CI-NEXT:    v_bfi_b32 v11, s0, 0, v67636; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v10, v97637; CI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc7638; CI-NEXT:    s_cbranch_execz .LBB10_37639; CI-NEXT:    s_branch .LBB10_87640; CI-NEXT:  .LBB10_2:7641; CI-NEXT:    ; implicit-def: $vgpr87642; CI-NEXT:  .LBB10_3: ; %frem.compute857643; CI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v107644; CI-NEXT:    v_frexp_mant_f32_e32 v8, v107645; CI-NEXT:    v_frexp_mant_f32_e32 v10, v97646; CI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v97647; CI-NEXT:    v_ldexp_f32_e64 v9, v10, 17648; CI-NEXT:    v_div_scale_f32 v15, s[0:1], v9, v9, 1.07649; CI-NEXT:    v_ldexp_f32_e64 v11, v8, 117650; CI-NEXT:    v_add_i32_e32 v8, vcc, -1, v147651; CI-NEXT:    v_not_b32_e32 v10, v87652; CI-NEXT:    v_add_i32_e32 v10, vcc, v10, v137653; CI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v9, 1.07654; CI-NEXT:    v_rcp_f32_e32 v16, v157655; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37656; CI-NEXT:    v_fma_f32 v17, -v15, v16, 1.07657; CI-NEXT:    v_fma_f32 v16, v17, v16, v167658; CI-NEXT:    v_mul_f32_e32 v17, v12, v167659; CI-NEXT:    v_fma_f32 v18, -v15, v17, v127660; CI-NEXT:    v_fma_f32 v17, v18, v16, v177661; CI-NEXT:    v_fma_f32 v12, -v15, v17, v127662; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07663; CI-NEXT:    v_div_fmas_f32 v12, v12, v16, v177664; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v107665; CI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.07666; CI-NEXT:    s_cbranch_vccnz .LBB10_77667; CI-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader7668; CI-NEXT:    v_sub_i32_e32 v10, vcc, v13, v147669; CI-NEXT:    v_add_i32_e32 v10, vcc, 11, v107670; CI-NEXT:  .LBB10_5: ; %frem.loop_body937671; CI-NEXT:    ; =>This Inner Loop Header: Depth=17672; CI-NEXT:    v_mov_b32_e32 v13, v117673; CI-NEXT:    v_mul_f32_e32 v11, v13, v127674; CI-NEXT:    v_rndne_f32_e32 v11, v117675; CI-NEXT:    v_fma_f32 v11, -v11, v9, v137676; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v117677; CI-NEXT:    v_add_f32_e32 v14, v11, v97678; CI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc7679; CI-NEXT:    v_add_i32_e32 v10, vcc, -11, v107680; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v107681; CI-NEXT:    v_ldexp_f32_e64 v11, v11, 117682; CI-NEXT:    s_cbranch_vccnz .LBB10_57683; CI-NEXT:  ; %bb.6: ; %Flow1337684; CI-NEXT:    v_mov_b32_e32 v11, v137685; CI-NEXT:  .LBB10_7: ; %frem.loop_exit947686; CI-NEXT:    v_add_i32_e32 v10, vcc, -10, v107687; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v107688; CI-NEXT:    v_mul_f32_e32 v11, v10, v127689; CI-NEXT:    v_rndne_f32_e32 v11, v117690; CI-NEXT:    v_fma_f32 v10, -v11, v9, v107691; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v107692; CI-NEXT:    v_add_f32_e32 v9, v10, v97693; CI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc7694; CI-NEXT:    v_ldexp_f32_e32 v8, v9, v87695; CI-NEXT:    v_cvt_f16_f32_e32 v8, v87696; CI-NEXT:    s_brev_b32 s0, -27697; CI-NEXT:    v_cvt_f32_f16_e32 v8, v87698; CI-NEXT:    v_bfi_b32 v8, s0, v8, v67699; CI-NEXT:  .LBB10_8:7700; CI-NEXT:    v_cvt_f16_f32_e32 v9, v47701; CI-NEXT:    v_cvt_f16_f32_e32 v10, v57702; CI-NEXT:    v_cvt_f32_f16_e64 v11, |v9|7703; CI-NEXT:    v_cvt_f32_f16_e64 v10, |v10|7704; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v11, v107705; CI-NEXT:    s_cbranch_vccz .LBB10_107706; CI-NEXT:  ; %bb.9: ; %frem.else537707; CI-NEXT:    v_cvt_f32_f16_e32 v9, v97708; CI-NEXT:    s_brev_b32 s0, -27709; CI-NEXT:    v_bfi_b32 v12, s0, 0, v47710; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v11, v107711; CI-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc7712; CI-NEXT:    s_cbranch_execz .LBB10_117713; CI-NEXT:    s_branch .LBB10_167714; CI-NEXT:  .LBB10_10:7715; CI-NEXT:    ; implicit-def: $vgpr97716; CI-NEXT:  .LBB10_11: ; %frem.compute527717; CI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v117718; CI-NEXT:    v_frexp_mant_f32_e32 v9, v117719; CI-NEXT:    v_frexp_mant_f32_e32 v11, v107720; CI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v107721; CI-NEXT:    v_ldexp_f32_e64 v10, v11, 17722; CI-NEXT:    v_div_scale_f32 v16, s[0:1], v10, v10, 1.07723; CI-NEXT:    v_ldexp_f32_e64 v12, v9, 117724; CI-NEXT:    v_add_i32_e32 v9, vcc, -1, v157725; CI-NEXT:    v_not_b32_e32 v11, v97726; CI-NEXT:    v_add_i32_e32 v11, vcc, v11, v147727; CI-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v10, 1.07728; CI-NEXT:    v_rcp_f32_e32 v17, v167729; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37730; CI-NEXT:    v_fma_f32 v18, -v16, v17, 1.07731; CI-NEXT:    v_fma_f32 v17, v18, v17, v177732; CI-NEXT:    v_mul_f32_e32 v18, v13, v177733; CI-NEXT:    v_fma_f32 v19, -v16, v18, v137734; CI-NEXT:    v_fma_f32 v18, v19, v17, v187735; CI-NEXT:    v_fma_f32 v13, -v16, v18, v137736; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07737; CI-NEXT:    v_div_fmas_f32 v13, v13, v17, v187738; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v117739; CI-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.07740; CI-NEXT:    s_cbranch_vccnz .LBB10_157741; CI-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader7742; CI-NEXT:    v_sub_i32_e32 v11, vcc, v14, v157743; CI-NEXT:    v_add_i32_e32 v11, vcc, 11, v117744; CI-NEXT:  .LBB10_13: ; %frem.loop_body607745; CI-NEXT:    ; =>This Inner Loop Header: Depth=17746; CI-NEXT:    v_mov_b32_e32 v14, v127747; CI-NEXT:    v_mul_f32_e32 v12, v14, v137748; CI-NEXT:    v_rndne_f32_e32 v12, v127749; CI-NEXT:    v_fma_f32 v12, -v12, v10, v147750; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v127751; CI-NEXT:    v_add_f32_e32 v15, v12, v107752; CI-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc7753; CI-NEXT:    v_add_i32_e32 v11, vcc, -11, v117754; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v117755; CI-NEXT:    v_ldexp_f32_e64 v12, v12, 117756; CI-NEXT:    s_cbranch_vccnz .LBB10_137757; CI-NEXT:  ; %bb.14: ; %Flow1297758; CI-NEXT:    v_mov_b32_e32 v12, v147759; CI-NEXT:  .LBB10_15: ; %frem.loop_exit617760; CI-NEXT:    v_add_i32_e32 v11, vcc, -10, v117761; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v117762; CI-NEXT:    v_mul_f32_e32 v12, v11, v137763; CI-NEXT:    v_rndne_f32_e32 v12, v127764; CI-NEXT:    v_fma_f32 v11, -v12, v10, v117765; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v117766; CI-NEXT:    v_add_f32_e32 v10, v11, v107767; CI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc7768; CI-NEXT:    v_ldexp_f32_e32 v9, v10, v97769; CI-NEXT:    v_cvt_f16_f32_e32 v9, v97770; CI-NEXT:    s_brev_b32 s0, -27771; CI-NEXT:    v_cvt_f32_f16_e32 v9, v97772; CI-NEXT:    v_bfi_b32 v9, s0, v9, v47773; CI-NEXT:  .LBB10_16:7774; CI-NEXT:    v_cvt_f16_f32_e32 v10, v27775; CI-NEXT:    v_cvt_f16_f32_e32 v11, v37776; CI-NEXT:    v_cvt_f32_f16_e64 v12, |v10|7777; CI-NEXT:    v_cvt_f32_f16_e64 v11, |v11|7778; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v12, v117779; CI-NEXT:    s_cbranch_vccz .LBB10_187780; CI-NEXT:  ; %bb.17: ; %frem.else207781; CI-NEXT:    v_cvt_f32_f16_e32 v10, v107782; CI-NEXT:    s_brev_b32 s0, -27783; CI-NEXT:    v_bfi_b32 v13, s0, 0, v27784; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v12, v117785; CI-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc7786; CI-NEXT:    s_cbranch_execz .LBB10_197787; CI-NEXT:    s_branch .LBB10_247788; CI-NEXT:  .LBB10_18:7789; CI-NEXT:    ; implicit-def: $vgpr107790; CI-NEXT:  .LBB10_19: ; %frem.compute197791; CI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v127792; CI-NEXT:    v_frexp_mant_f32_e32 v10, v127793; CI-NEXT:    v_frexp_mant_f32_e32 v12, v117794; CI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v117795; CI-NEXT:    v_ldexp_f32_e64 v11, v12, 17796; CI-NEXT:    v_div_scale_f32 v17, s[0:1], v11, v11, 1.07797; CI-NEXT:    v_ldexp_f32_e64 v13, v10, 117798; CI-NEXT:    v_add_i32_e32 v10, vcc, -1, v167799; CI-NEXT:    v_not_b32_e32 v12, v107800; CI-NEXT:    v_add_i32_e32 v12, vcc, v12, v157801; CI-NEXT:    v_div_scale_f32 v14, vcc, 1.0, v11, 1.07802; CI-NEXT:    v_rcp_f32_e32 v18, v177803; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37804; CI-NEXT:    v_fma_f32 v19, -v17, v18, 1.07805; CI-NEXT:    v_fma_f32 v18, v19, v18, v187806; CI-NEXT:    v_mul_f32_e32 v19, v14, v187807; CI-NEXT:    v_fma_f32 v20, -v17, v19, v147808; CI-NEXT:    v_fma_f32 v19, v20, v18, v197809; CI-NEXT:    v_fma_f32 v14, -v17, v19, v147810; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07811; CI-NEXT:    v_div_fmas_f32 v14, v14, v18, v197812; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v127813; CI-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.07814; CI-NEXT:    s_cbranch_vccnz .LBB10_237815; CI-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader7816; CI-NEXT:    v_sub_i32_e32 v12, vcc, v15, v167817; CI-NEXT:    v_add_i32_e32 v12, vcc, 11, v127818; CI-NEXT:  .LBB10_21: ; %frem.loop_body277819; CI-NEXT:    ; =>This Inner Loop Header: Depth=17820; CI-NEXT:    v_mov_b32_e32 v15, v137821; CI-NEXT:    v_mul_f32_e32 v13, v15, v147822; CI-NEXT:    v_rndne_f32_e32 v13, v137823; CI-NEXT:    v_fma_f32 v13, -v13, v11, v157824; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v137825; CI-NEXT:    v_add_f32_e32 v16, v13, v117826; CI-NEXT:    v_cndmask_b32_e32 v13, v13, v16, vcc7827; CI-NEXT:    v_add_i32_e32 v12, vcc, -11, v127828; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v127829; CI-NEXT:    v_ldexp_f32_e64 v13, v13, 117830; CI-NEXT:    s_cbranch_vccnz .LBB10_217831; CI-NEXT:  ; %bb.22: ; %Flow1257832; CI-NEXT:    v_mov_b32_e32 v13, v157833; CI-NEXT:  .LBB10_23: ; %frem.loop_exit287834; CI-NEXT:    v_add_i32_e32 v12, vcc, -10, v127835; CI-NEXT:    v_ldexp_f32_e32 v12, v13, v127836; CI-NEXT:    v_mul_f32_e32 v13, v12, v147837; CI-NEXT:    v_rndne_f32_e32 v13, v137838; CI-NEXT:    v_fma_f32 v12, -v13, v11, v127839; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v127840; CI-NEXT:    v_add_f32_e32 v11, v12, v117841; CI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc7842; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v107843; CI-NEXT:    v_cvt_f16_f32_e32 v10, v107844; CI-NEXT:    s_brev_b32 s0, -27845; CI-NEXT:    v_cvt_f32_f16_e32 v10, v107846; CI-NEXT:    v_bfi_b32 v10, s0, v10, v27847; CI-NEXT:  .LBB10_24:7848; CI-NEXT:    v_cvt_f16_f32_e32 v11, v07849; CI-NEXT:    v_cvt_f16_f32_e32 v12, v17850; CI-NEXT:    v_cvt_f32_f16_e64 v13, |v11|7851; CI-NEXT:    v_cvt_f32_f16_e64 v12, |v12|7852; CI-NEXT:    v_cmp_ngt_f32_e32 vcc, v13, v127853; CI-NEXT:    s_cbranch_vccz .LBB10_267854; CI-NEXT:  ; %bb.25: ; %frem.else7855; CI-NEXT:    v_cvt_f32_f16_e32 v11, v117856; CI-NEXT:    s_brev_b32 s0, -27857; CI-NEXT:    v_bfi_b32 v14, s0, 0, v07858; CI-NEXT:    v_cmp_eq_f32_e32 vcc, v13, v127859; CI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc7860; CI-NEXT:    s_cbranch_execz .LBB10_277861; CI-NEXT:    s_branch .LBB10_327862; CI-NEXT:  .LBB10_26:7863; CI-NEXT:    ; implicit-def: $vgpr117864; CI-NEXT:  .LBB10_27: ; %frem.compute7865; CI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v137866; CI-NEXT:    v_frexp_mant_f32_e32 v11, v137867; CI-NEXT:    v_frexp_mant_f32_e32 v13, v127868; CI-NEXT:    v_frexp_exp_i32_f32_e32 v17, v127869; CI-NEXT:    v_ldexp_f32_e64 v12, v13, 17870; CI-NEXT:    v_div_scale_f32 v18, s[0:1], v12, v12, 1.07871; CI-NEXT:    v_ldexp_f32_e64 v14, v11, 117872; CI-NEXT:    v_add_i32_e32 v11, vcc, -1, v177873; CI-NEXT:    v_not_b32_e32 v13, v117874; CI-NEXT:    v_add_i32_e32 v13, vcc, v13, v167875; CI-NEXT:    v_div_scale_f32 v15, vcc, 1.0, v12, 1.07876; CI-NEXT:    v_rcp_f32_e32 v19, v187877; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 37878; CI-NEXT:    v_fma_f32 v20, -v18, v19, 1.07879; CI-NEXT:    v_fma_f32 v19, v20, v19, v197880; CI-NEXT:    v_mul_f32_e32 v20, v15, v197881; CI-NEXT:    v_fma_f32 v21, -v18, v20, v157882; CI-NEXT:    v_fma_f32 v20, v21, v19, v207883; CI-NEXT:    v_fma_f32 v15, -v18, v20, v157884; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 07885; CI-NEXT:    v_div_fmas_f32 v15, v15, v19, v207886; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v137887; CI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.07888; CI-NEXT:    s_cbranch_vccnz .LBB10_317889; CI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader7890; CI-NEXT:    v_sub_i32_e32 v13, vcc, v16, v177891; CI-NEXT:    v_add_i32_e32 v13, vcc, 11, v137892; CI-NEXT:  .LBB10_29: ; %frem.loop_body7893; CI-NEXT:    ; =>This Inner Loop Header: Depth=17894; CI-NEXT:    v_mov_b32_e32 v16, v147895; CI-NEXT:    v_mul_f32_e32 v14, v16, v157896; CI-NEXT:    v_rndne_f32_e32 v14, v147897; CI-NEXT:    v_fma_f32 v14, -v14, v12, v167898; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v147899; CI-NEXT:    v_add_f32_e32 v17, v14, v127900; CI-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc7901; CI-NEXT:    v_add_i32_e32 v13, vcc, -11, v137902; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v137903; CI-NEXT:    v_ldexp_f32_e64 v14, v14, 117904; CI-NEXT:    s_cbranch_vccnz .LBB10_297905; CI-NEXT:  ; %bb.30: ; %Flow7906; CI-NEXT:    v_mov_b32_e32 v14, v167907; CI-NEXT:  .LBB10_31: ; %frem.loop_exit7908; CI-NEXT:    v_add_i32_e32 v13, vcc, -10, v137909; CI-NEXT:    v_ldexp_f32_e32 v13, v14, v137910; CI-NEXT:    v_mul_f32_e32 v14, v13, v157911; CI-NEXT:    v_rndne_f32_e32 v14, v147912; CI-NEXT:    v_fma_f32 v13, -v14, v12, v137913; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v137914; CI-NEXT:    v_add_f32_e32 v12, v13, v127915; CI-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc7916; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v117917; CI-NEXT:    v_cvt_f16_f32_e32 v11, v117918; CI-NEXT:    s_brev_b32 s0, -27919; CI-NEXT:    v_cvt_f32_f16_e32 v11, v117920; CI-NEXT:    v_bfi_b32 v11, s0, v11, v07921; CI-NEXT:  .LBB10_32: ; %Flow1247922; CI-NEXT:    v_cvt_f16_f32_e32 v7, v77923; CI-NEXT:    v_cvt_f16_f32_e32 v5, v57924; CI-NEXT:    v_cvt_f16_f32_e32 v6, v67925; CI-NEXT:    s_movk_i32 s2, 0x7c007926; CI-NEXT:    v_cvt_f32_f16_e32 v7, v77927; CI-NEXT:    v_cvt_f32_f16_e32 v5, v57928; CI-NEXT:    v_and_b32_e32 v6, 0x7fff, v67929; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v67930; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v77931; CI-NEXT:    v_cvt_f16_f32_e32 v7, v87932; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc7933; CI-NEXT:    v_mov_b32_e32 v6, 0x7fc000007934; CI-NEXT:    v_cvt_f16_f32_e32 v3, v37935; CI-NEXT:    v_cvt_f32_f16_e32 v7, v77936; CI-NEXT:    v_cvt_f16_f32_e32 v4, v47937; CI-NEXT:    v_cvt_f16_f32_e32 v1, v17938; CI-NEXT:    v_cvt_f32_f16_e32 v3, v37939; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v6, vcc7940; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v57941; CI-NEXT:    v_cvt_f16_f32_e32 v5, v97942; CI-NEXT:    v_and_b32_e32 v4, 0x7fff, v47943; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v47944; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc7945; CI-NEXT:    v_cvt_f32_f16_e32 v5, v57946; CI-NEXT:    v_cvt_f16_f32_e32 v2, v27947; CI-NEXT:    v_cvt_f32_f16_e32 v1, v17948; CI-NEXT:    v_cvt_f16_f32_e32 v0, v07949; CI-NEXT:    v_cndmask_b32_e32 v4, v5, v6, vcc7950; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v37951; CI-NEXT:    v_cvt_f16_f32_e32 v3, v107952; CI-NEXT:    v_and_b32_e32 v2, 0x7fff, v27953; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v27954; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc7955; CI-NEXT:    v_cvt_f32_f16_e32 v3, v37956; CI-NEXT:    v_and_b32_e32 v0, 0x7fff, v07957; CI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s2, v07958; CI-NEXT:    v_cvt_f16_f32_e32 v4, v47959; CI-NEXT:    v_cndmask_b32_e32 v2, v3, v6, vcc7960; CI-NEXT:    v_cmp_nlg_f32_e32 vcc, 0, v17961; CI-NEXT:    v_cvt_f16_f32_e32 v1, v117962; CI-NEXT:    s_or_b64 vcc, s[0:1], vcc7963; CI-NEXT:    v_cvt_f16_f32_e32 v2, v27964; CI-NEXT:    v_cvt_f16_f32_e32 v7, v77965; CI-NEXT:    v_cvt_f32_f16_e32 v1, v17966; CI-NEXT:    s_mov_b32 s11, 0xf0007967; CI-NEXT:    s_mov_b32 s10, -17968; CI-NEXT:    v_cndmask_b32_e32 v0, v1, v6, vcc7969; CI-NEXT:    v_cvt_f16_f32_e32 v0, v07970; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v07971; CI-NEXT:    v_or_b32_e32 v1, v2, v07972; CI-NEXT:    v_lshlrev_b32_e32 v0, 16, v47973; CI-NEXT:    v_or_b32_e32 v0, v7, v07974; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[8:11], 07975; CI-NEXT:    s_endpgm7976;7977; VI-LABEL: frem_v4f16:7978; VI:       ; %bb.0:7979; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x247980; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x347981; VI-NEXT:    s_waitcnt lgkmcnt(0)7982; VI-NEXT:    v_mov_b32_e32 v0, s27983; VI-NEXT:    s_add_u32 s2, s4, 327984; VI-NEXT:    v_mov_b32_e32 v1, s37985; VI-NEXT:    s_addc_u32 s3, s5, 07986; VI-NEXT:    v_mov_b32_e32 v2, s27987; VI-NEXT:    v_mov_b32_e32 v3, s37988; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]7989; VI-NEXT:    flat_load_dwordx2 v[2:3], v[2:3]7990; VI-NEXT:    s_waitcnt vmcnt(1)7991; VI-NEXT:    v_cvt_f32_f16_e64 v6, |v0|7992; VI-NEXT:    s_waitcnt vmcnt(0)7993; VI-NEXT:    v_cvt_f32_f16_e64 v5, |v2|7994; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v57995; VI-NEXT:    s_cbranch_vccz .LBB10_27996; VI-NEXT:  ; %bb.1: ; %frem.else867997; VI-NEXT:    s_movk_i32 s2, 0x7fff7998; VI-NEXT:    v_bfi_b32 v4, s2, 0, v07999; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v58000; VI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc8001; VI-NEXT:    s_cbranch_execz .LBB10_38002; VI-NEXT:    s_branch .LBB10_88003; VI-NEXT:  .LBB10_2:8004; VI-NEXT:    ; implicit-def: $vgpr48005; VI-NEXT:  .LBB10_3: ; %frem.compute858006; VI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v68007; VI-NEXT:    v_frexp_mant_f32_e32 v4, v68008; VI-NEXT:    v_frexp_mant_f32_e32 v6, v58009; VI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v58010; VI-NEXT:    v_ldexp_f32 v5, v6, 18011; VI-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.08012; VI-NEXT:    v_ldexp_f32 v7, v4, 118013; VI-NEXT:    v_add_u32_e32 v4, vcc, -1, v108014; VI-NEXT:    v_not_b32_e32 v6, v48015; VI-NEXT:    v_add_u32_e32 v6, vcc, v6, v98016; VI-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.08017; VI-NEXT:    v_rcp_f32_e32 v12, v118018; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38019; VI-NEXT:    v_fma_f32 v13, -v11, v12, 1.08020; VI-NEXT:    v_fma_f32 v12, v13, v12, v128021; VI-NEXT:    v_mul_f32_e32 v13, v8, v128022; VI-NEXT:    v_fma_f32 v14, -v11, v13, v88023; VI-NEXT:    v_fma_f32 v13, v14, v12, v138024; VI-NEXT:    v_fma_f32 v8, -v11, v13, v88025; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08026; VI-NEXT:    v_div_fmas_f32 v8, v8, v12, v138027; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v68028; VI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.08029; VI-NEXT:    s_cbranch_vccnz .LBB10_78030; VI-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader8031; VI-NEXT:    v_sub_u32_e32 v6, vcc, v9, v108032; VI-NEXT:    v_add_u32_e32 v6, vcc, 11, v68033; VI-NEXT:  .LBB10_5: ; %frem.loop_body938034; VI-NEXT:    ; =>This Inner Loop Header: Depth=18035; VI-NEXT:    v_mov_b32_e32 v9, v78036; VI-NEXT:    v_mul_f32_e32 v7, v9, v88037; VI-NEXT:    v_rndne_f32_e32 v7, v78038; VI-NEXT:    v_fma_f32 v7, -v7, v5, v98039; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v78040; VI-NEXT:    v_add_f32_e32 v10, v7, v58041; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc8042; VI-NEXT:    v_add_u32_e32 v6, vcc, -11, v68043; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v68044; VI-NEXT:    v_ldexp_f32 v7, v7, 118045; VI-NEXT:    s_cbranch_vccnz .LBB10_58046; VI-NEXT:  ; %bb.6: ; %Flow1338047; VI-NEXT:    v_mov_b32_e32 v7, v98048; VI-NEXT:  .LBB10_7: ; %frem.loop_exit948049; VI-NEXT:    v_add_u32_e32 v6, vcc, -10, v68050; VI-NEXT:    v_ldexp_f32 v6, v7, v68051; VI-NEXT:    v_mul_f32_e32 v7, v6, v88052; VI-NEXT:    v_rndne_f32_e32 v7, v78053; VI-NEXT:    v_fma_f32 v6, -v7, v5, v68054; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v68055; VI-NEXT:    v_add_f32_e32 v5, v6, v58056; VI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc8057; VI-NEXT:    v_ldexp_f32 v4, v5, v48058; VI-NEXT:    v_cvt_f16_f32_e32 v4, v48059; VI-NEXT:    s_movk_i32 s2, 0x7fff8060; VI-NEXT:    v_bfi_b32 v4, s2, v4, v08061; VI-NEXT:  .LBB10_8:8062; VI-NEXT:    v_lshrrev_b32_e32 v5, 16, v08063; VI-NEXT:    v_lshrrev_b32_e32 v6, 16, v28064; VI-NEXT:    v_cvt_f32_f16_e64 v9, |v5|8065; VI-NEXT:    v_cvt_f32_f16_e64 v8, |v6|8066; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v9, v88067; VI-NEXT:    s_cbranch_vccz .LBB10_108068; VI-NEXT:  ; %bb.9: ; %frem.else538069; VI-NEXT:    s_movk_i32 s2, 0x7fff8070; VI-NEXT:    v_bfi_b32 v7, s2, 0, v58071; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v9, v88072; VI-NEXT:    v_cndmask_b32_e32 v7, v5, v7, vcc8073; VI-NEXT:    s_cbranch_execz .LBB10_118074; VI-NEXT:    s_branch .LBB10_168075; VI-NEXT:  .LBB10_10:8076; VI-NEXT:    ; implicit-def: $vgpr78077; VI-NEXT:  .LBB10_11: ; %frem.compute528078; VI-NEXT:    v_frexp_exp_i32_f32_e32 v12, v98079; VI-NEXT:    v_frexp_mant_f32_e32 v7, v98080; VI-NEXT:    v_frexp_mant_f32_e32 v9, v88081; VI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v88082; VI-NEXT:    v_ldexp_f32 v8, v9, 18083; VI-NEXT:    v_div_scale_f32 v14, s[2:3], v8, v8, 1.08084; VI-NEXT:    v_ldexp_f32 v10, v7, 118085; VI-NEXT:    v_add_u32_e32 v7, vcc, -1, v138086; VI-NEXT:    v_not_b32_e32 v9, v78087; VI-NEXT:    v_add_u32_e32 v9, vcc, v9, v128088; VI-NEXT:    v_div_scale_f32 v11, vcc, 1.0, v8, 1.08089; VI-NEXT:    v_rcp_f32_e32 v15, v148090; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38091; VI-NEXT:    v_fma_f32 v16, -v14, v15, 1.08092; VI-NEXT:    v_fma_f32 v15, v16, v15, v158093; VI-NEXT:    v_mul_f32_e32 v16, v11, v158094; VI-NEXT:    v_fma_f32 v17, -v14, v16, v118095; VI-NEXT:    v_fma_f32 v16, v17, v15, v168096; VI-NEXT:    v_fma_f32 v11, -v14, v16, v118097; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08098; VI-NEXT:    v_div_fmas_f32 v11, v11, v15, v168099; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v98100; VI-NEXT:    v_div_fixup_f32 v11, v11, v8, 1.08101; VI-NEXT:    s_cbranch_vccnz .LBB10_158102; VI-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader8103; VI-NEXT:    v_sub_u32_e32 v9, vcc, v12, v138104; VI-NEXT:    v_add_u32_e32 v9, vcc, 11, v98105; VI-NEXT:  .LBB10_13: ; %frem.loop_body608106; VI-NEXT:    ; =>This Inner Loop Header: Depth=18107; VI-NEXT:    v_mov_b32_e32 v12, v108108; VI-NEXT:    v_mul_f32_e32 v10, v12, v118109; VI-NEXT:    v_rndne_f32_e32 v10, v108110; VI-NEXT:    v_fma_f32 v10, -v10, v8, v128111; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v108112; VI-NEXT:    v_add_f32_e32 v13, v10, v88113; VI-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc8114; VI-NEXT:    v_add_u32_e32 v9, vcc, -11, v98115; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v98116; VI-NEXT:    v_ldexp_f32 v10, v10, 118117; VI-NEXT:    s_cbranch_vccnz .LBB10_138118; VI-NEXT:  ; %bb.14: ; %Flow1298119; VI-NEXT:    v_mov_b32_e32 v10, v128120; VI-NEXT:  .LBB10_15: ; %frem.loop_exit618121; VI-NEXT:    v_add_u32_e32 v9, vcc, -10, v98122; VI-NEXT:    v_ldexp_f32 v9, v10, v98123; VI-NEXT:    v_mul_f32_e32 v10, v9, v118124; VI-NEXT:    v_rndne_f32_e32 v10, v108125; VI-NEXT:    v_fma_f32 v9, -v10, v8, v98126; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v98127; VI-NEXT:    v_add_f32_e32 v8, v9, v88128; VI-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc8129; VI-NEXT:    v_ldexp_f32 v7, v8, v78130; VI-NEXT:    v_cvt_f16_f32_e32 v7, v78131; VI-NEXT:    s_movk_i32 s2, 0x7fff8132; VI-NEXT:    v_bfi_b32 v7, s2, v7, v58133; VI-NEXT:  .LBB10_16:8134; VI-NEXT:    v_cvt_f32_f16_e64 v10, |v1|8135; VI-NEXT:    v_cvt_f32_f16_e64 v9, |v3|8136; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v10, v98137; VI-NEXT:    s_cbranch_vccz .LBB10_188138; VI-NEXT:  ; %bb.17: ; %frem.else208139; VI-NEXT:    s_movk_i32 s2, 0x7fff8140; VI-NEXT:    v_bfi_b32 v8, s2, 0, v18141; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v10, v98142; VI-NEXT:    v_cndmask_b32_e32 v8, v1, v8, vcc8143; VI-NEXT:    s_cbranch_execz .LBB10_198144; VI-NEXT:    s_branch .LBB10_248145; VI-NEXT:  .LBB10_18:8146; VI-NEXT:    ; implicit-def: $vgpr88147; VI-NEXT:  .LBB10_19: ; %frem.compute198148; VI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v108149; VI-NEXT:    v_frexp_mant_f32_e32 v8, v108150; VI-NEXT:    v_frexp_mant_f32_e32 v10, v98151; VI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v98152; VI-NEXT:    v_ldexp_f32 v9, v10, 18153; VI-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.08154; VI-NEXT:    v_ldexp_f32 v11, v8, 118155; VI-NEXT:    v_add_u32_e32 v8, vcc, -1, v148156; VI-NEXT:    v_not_b32_e32 v10, v88157; VI-NEXT:    v_add_u32_e32 v10, vcc, v10, v138158; VI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v9, 1.08159; VI-NEXT:    v_rcp_f32_e32 v16, v158160; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38161; VI-NEXT:    v_fma_f32 v17, -v15, v16, 1.08162; VI-NEXT:    v_fma_f32 v16, v17, v16, v168163; VI-NEXT:    v_mul_f32_e32 v17, v12, v168164; VI-NEXT:    v_fma_f32 v18, -v15, v17, v128165; VI-NEXT:    v_fma_f32 v17, v18, v16, v178166; VI-NEXT:    v_fma_f32 v12, -v15, v17, v128167; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08168; VI-NEXT:    v_div_fmas_f32 v12, v12, v16, v178169; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v108170; VI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.08171; VI-NEXT:    s_cbranch_vccnz .LBB10_238172; VI-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader8173; VI-NEXT:    v_sub_u32_e32 v10, vcc, v13, v148174; VI-NEXT:    v_add_u32_e32 v10, vcc, 11, v108175; VI-NEXT:  .LBB10_21: ; %frem.loop_body278176; VI-NEXT:    ; =>This Inner Loop Header: Depth=18177; VI-NEXT:    v_mov_b32_e32 v13, v118178; VI-NEXT:    v_mul_f32_e32 v11, v13, v128179; VI-NEXT:    v_rndne_f32_e32 v11, v118180; VI-NEXT:    v_fma_f32 v11, -v11, v9, v138181; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v118182; VI-NEXT:    v_add_f32_e32 v14, v11, v98183; VI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc8184; VI-NEXT:    v_add_u32_e32 v10, vcc, -11, v108185; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v108186; VI-NEXT:    v_ldexp_f32 v11, v11, 118187; VI-NEXT:    s_cbranch_vccnz .LBB10_218188; VI-NEXT:  ; %bb.22: ; %Flow1258189; VI-NEXT:    v_mov_b32_e32 v11, v138190; VI-NEXT:  .LBB10_23: ; %frem.loop_exit288191; VI-NEXT:    v_add_u32_e32 v10, vcc, -10, v108192; VI-NEXT:    v_ldexp_f32 v10, v11, v108193; VI-NEXT:    v_mul_f32_e32 v11, v10, v128194; VI-NEXT:    v_rndne_f32_e32 v11, v118195; VI-NEXT:    v_fma_f32 v10, -v11, v9, v108196; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v108197; VI-NEXT:    v_add_f32_e32 v9, v10, v98198; VI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc8199; VI-NEXT:    v_ldexp_f32 v8, v9, v88200; VI-NEXT:    v_cvt_f16_f32_e32 v8, v88201; VI-NEXT:    s_movk_i32 s2, 0x7fff8202; VI-NEXT:    v_bfi_b32 v8, s2, v8, v18203; VI-NEXT:  .LBB10_24:8204; VI-NEXT:    v_lshrrev_b32_e32 v9, 16, v18205; VI-NEXT:    v_lshrrev_b32_e32 v10, 16, v38206; VI-NEXT:    v_cvt_f32_f16_e64 v13, |v9|8207; VI-NEXT:    v_cvt_f32_f16_e64 v12, |v10|8208; VI-NEXT:    v_cmp_ngt_f32_e32 vcc, v13, v128209; VI-NEXT:    s_cbranch_vccz .LBB10_268210; VI-NEXT:  ; %bb.25: ; %frem.else8211; VI-NEXT:    s_movk_i32 s2, 0x7fff8212; VI-NEXT:    v_bfi_b32 v11, s2, 0, v98213; VI-NEXT:    v_cmp_eq_f32_e32 vcc, v13, v128214; VI-NEXT:    v_cndmask_b32_e32 v11, v9, v11, vcc8215; VI-NEXT:    s_cbranch_execz .LBB10_278216; VI-NEXT:    s_branch .LBB10_328217; VI-NEXT:  .LBB10_26:8218; VI-NEXT:    ; implicit-def: $vgpr118219; VI-NEXT:  .LBB10_27: ; %frem.compute8220; VI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v138221; VI-NEXT:    v_frexp_mant_f32_e32 v11, v138222; VI-NEXT:    v_frexp_mant_f32_e32 v13, v128223; VI-NEXT:    v_frexp_exp_i32_f32_e32 v17, v128224; VI-NEXT:    v_ldexp_f32 v12, v13, 18225; VI-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.08226; VI-NEXT:    v_ldexp_f32 v14, v11, 118227; VI-NEXT:    v_add_u32_e32 v11, vcc, -1, v178228; VI-NEXT:    v_not_b32_e32 v13, v118229; VI-NEXT:    v_add_u32_e32 v13, vcc, v13, v168230; VI-NEXT:    v_div_scale_f32 v15, vcc, 1.0, v12, 1.08231; VI-NEXT:    v_rcp_f32_e32 v19, v188232; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38233; VI-NEXT:    v_fma_f32 v20, -v18, v19, 1.08234; VI-NEXT:    v_fma_f32 v19, v20, v19, v198235; VI-NEXT:    v_mul_f32_e32 v20, v15, v198236; VI-NEXT:    v_fma_f32 v21, -v18, v20, v158237; VI-NEXT:    v_fma_f32 v20, v21, v19, v208238; VI-NEXT:    v_fma_f32 v15, -v18, v20, v158239; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08240; VI-NEXT:    v_div_fmas_f32 v15, v15, v19, v208241; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v138242; VI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.08243; VI-NEXT:    s_cbranch_vccnz .LBB10_318244; VI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader8245; VI-NEXT:    v_sub_u32_e32 v13, vcc, v16, v178246; VI-NEXT:    v_add_u32_e32 v13, vcc, 11, v138247; VI-NEXT:  .LBB10_29: ; %frem.loop_body8248; VI-NEXT:    ; =>This Inner Loop Header: Depth=18249; VI-NEXT:    v_mov_b32_e32 v16, v148250; VI-NEXT:    v_mul_f32_e32 v14, v16, v158251; VI-NEXT:    v_rndne_f32_e32 v14, v148252; VI-NEXT:    v_fma_f32 v14, -v14, v12, v168253; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v148254; VI-NEXT:    v_add_f32_e32 v17, v14, v128255; VI-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc8256; VI-NEXT:    v_add_u32_e32 v13, vcc, -11, v138257; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v138258; VI-NEXT:    v_ldexp_f32 v14, v14, 118259; VI-NEXT:    s_cbranch_vccnz .LBB10_298260; VI-NEXT:  ; %bb.30: ; %Flow8261; VI-NEXT:    v_mov_b32_e32 v14, v168262; VI-NEXT:  .LBB10_31: ; %frem.loop_exit8263; VI-NEXT:    v_add_u32_e32 v13, vcc, -10, v138264; VI-NEXT:    v_ldexp_f32 v13, v14, v138265; VI-NEXT:    v_mul_f32_e32 v14, v13, v158266; VI-NEXT:    v_rndne_f32_e32 v14, v148267; VI-NEXT:    v_fma_f32 v13, -v14, v12, v138268; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v138269; VI-NEXT:    v_add_f32_e32 v12, v13, v128270; VI-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc8271; VI-NEXT:    v_ldexp_f32 v11, v12, v118272; VI-NEXT:    v_cvt_f16_f32_e32 v11, v118273; VI-NEXT:    s_movk_i32 s2, 0x7fff8274; VI-NEXT:    v_bfi_b32 v11, s2, v11, v98275; VI-NEXT:  .LBB10_32: ; %Flow1248276; VI-NEXT:    s_movk_i32 s4, 0x7c008277; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v28278; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v0|, s48279; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc8280; VI-NEXT:    v_mov_b32_e32 v2, 0x7e008281; VI-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc8282; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v68283; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v5|, s48284; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc8285; VI-NEXT:    v_cndmask_b32_sdwa v5, v2, v7, vcc dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD8286; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v38287; VI-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v1|, s48288; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc8289; VI-NEXT:    v_cndmask_b32_e32 v3, v2, v8, vcc8290; VI-NEXT:    v_mov_b32_e32 v0, s08291; VI-NEXT:    v_mov_b32_e32 v1, s18292; VI-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v108293; VI-NEXT:    v_cmp_nge_f16_e64 s[0:1], |v9|, s48294; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc8295; VI-NEXT:    v_cndmask_b32_sdwa v2, v2, v11, vcc dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD8296; VI-NEXT:    v_or_b32_sdwa v3, v3, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD8297; VI-NEXT:    v_or_b32_sdwa v2, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD8298; VI-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]8299; VI-NEXT:    s_endpgm8300;8301; GFX9-LABEL: frem_v4f16:8302; GFX9:       ; %bb.0:8303; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x248304; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x348305; GFX9-NEXT:    v_mov_b32_e32 v4, 08306; GFX9-NEXT:    s_waitcnt lgkmcnt(0)8307; GFX9-NEXT:    global_load_dwordx2 v[2:3], v4, s[2:3]8308; GFX9-NEXT:    global_load_dwordx2 v[0:1], v4, s[6:7] offset:328309; GFX9-NEXT:    s_waitcnt vmcnt(1)8310; GFX9-NEXT:    v_cvt_f32_f16_e64 v6, |v2|8311; GFX9-NEXT:    s_waitcnt vmcnt(0)8312; GFX9-NEXT:    v_cvt_f32_f16_e64 v5, |v0|8313; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v6, v58314; GFX9-NEXT:    s_cbranch_vccz .LBB10_28315; GFX9-NEXT:  ; %bb.1: ; %frem.else868316; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8317; GFX9-NEXT:    v_bfi_b32 v4, s2, 0, v28318; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v6, v58319; GFX9-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc8320; GFX9-NEXT:    s_cbranch_execz .LBB10_38321; GFX9-NEXT:    s_branch .LBB10_88322; GFX9-NEXT:  .LBB10_2:8323; GFX9-NEXT:    ; implicit-def: $vgpr48324; GFX9-NEXT:  .LBB10_3: ; %frem.compute858325; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v9, v68326; GFX9-NEXT:    v_frexp_mant_f32_e32 v4, v68327; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v58328; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v10, v58329; GFX9-NEXT:    v_ldexp_f32 v5, v6, 18330; GFX9-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.08331; GFX9-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.08332; GFX9-NEXT:    v_ldexp_f32 v7, v4, 118333; GFX9-NEXT:    v_add_u32_e32 v4, -1, v108334; GFX9-NEXT:    v_not_b32_e32 v6, v48335; GFX9-NEXT:    v_add_u32_e32 v6, v6, v98336; GFX9-NEXT:    v_rcp_f32_e32 v12, v118337; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38338; GFX9-NEXT:    v_fma_f32 v13, -v11, v12, 1.08339; GFX9-NEXT:    v_fma_f32 v12, v13, v12, v128340; GFX9-NEXT:    v_mul_f32_e32 v13, v8, v128341; GFX9-NEXT:    v_fma_f32 v14, -v11, v13, v88342; GFX9-NEXT:    v_fma_f32 v13, v14, v12, v138343; GFX9-NEXT:    v_fma_f32 v8, -v11, v13, v88344; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08345; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v138346; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v68347; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.08348; GFX9-NEXT:    s_cbranch_vccnz .LBB10_78349; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader8350; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v108351; GFX9-NEXT:    v_add_u32_e32 v6, 11, v68352; GFX9-NEXT:  .LBB10_5: ; %frem.loop_body938353; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=18354; GFX9-NEXT:    v_mov_b32_e32 v9, v78355; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v88356; GFX9-NEXT:    v_rndne_f32_e32 v7, v78357; GFX9-NEXT:    v_fma_f32 v7, -v7, v5, v98358; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v78359; GFX9-NEXT:    v_add_f32_e32 v10, v7, v58360; GFX9-NEXT:    v_add_u32_e32 v6, -11, v68361; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc8362; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v68363; GFX9-NEXT:    v_ldexp_f32 v7, v7, 118364; GFX9-NEXT:    s_cbranch_vccnz .LBB10_58365; GFX9-NEXT:  ; %bb.6: ; %Flow1338366; GFX9-NEXT:    v_mov_b32_e32 v7, v98367; GFX9-NEXT:  .LBB10_7: ; %frem.loop_exit948368; GFX9-NEXT:    v_add_u32_e32 v6, -10, v68369; GFX9-NEXT:    v_ldexp_f32 v6, v7, v68370; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v88371; GFX9-NEXT:    v_rndne_f32_e32 v7, v78372; GFX9-NEXT:    v_fma_f32 v6, -v7, v5, v68373; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v68374; GFX9-NEXT:    v_add_f32_e32 v5, v6, v58375; GFX9-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc8376; GFX9-NEXT:    v_ldexp_f32 v4, v5, v48377; GFX9-NEXT:    v_cvt_f16_f32_e32 v4, v48378; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8379; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v28380; GFX9-NEXT:  .LBB10_8:8381; GFX9-NEXT:    v_lshrrev_b32_e32 v5, 16, v28382; GFX9-NEXT:    v_cvt_f32_f16_e64 v8, |v5|8383; GFX9-NEXT:    v_cvt_f32_f16_sdwa v7, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_18384; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v8, v78385; GFX9-NEXT:    s_cbranch_vccz .LBB10_108386; GFX9-NEXT:  ; %bb.9: ; %frem.else538387; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8388; GFX9-NEXT:    v_bfi_b32 v6, s2, 0, v58389; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v8, v78390; GFX9-NEXT:    v_cndmask_b32_e32 v6, v5, v6, vcc8391; GFX9-NEXT:    s_cbranch_execz .LBB10_118392; GFX9-NEXT:    s_branch .LBB10_168393; GFX9-NEXT:  .LBB10_10:8394; GFX9-NEXT:    ; implicit-def: $vgpr68395; GFX9-NEXT:  .LBB10_11: ; %frem.compute528396; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v11, v88397; GFX9-NEXT:    v_frexp_mant_f32_e32 v6, v88398; GFX9-NEXT:    v_frexp_mant_f32_e32 v8, v78399; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v12, v78400; GFX9-NEXT:    v_ldexp_f32 v7, v8, 18401; GFX9-NEXT:    v_div_scale_f32 v13, s[2:3], v7, v7, 1.08402; GFX9-NEXT:    v_div_scale_f32 v10, vcc, 1.0, v7, 1.08403; GFX9-NEXT:    v_ldexp_f32 v9, v6, 118404; GFX9-NEXT:    v_add_u32_e32 v6, -1, v128405; GFX9-NEXT:    v_not_b32_e32 v8, v68406; GFX9-NEXT:    v_add_u32_e32 v8, v8, v118407; GFX9-NEXT:    v_rcp_f32_e32 v14, v138408; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38409; GFX9-NEXT:    v_fma_f32 v15, -v13, v14, 1.08410; GFX9-NEXT:    v_fma_f32 v14, v15, v14, v148411; GFX9-NEXT:    v_mul_f32_e32 v15, v10, v148412; GFX9-NEXT:    v_fma_f32 v16, -v13, v15, v108413; GFX9-NEXT:    v_fma_f32 v15, v16, v14, v158414; GFX9-NEXT:    v_fma_f32 v10, -v13, v15, v108415; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08416; GFX9-NEXT:    v_div_fmas_f32 v10, v10, v14, v158417; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v88418; GFX9-NEXT:    v_div_fixup_f32 v10, v10, v7, 1.08419; GFX9-NEXT:    s_cbranch_vccnz .LBB10_158420; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader8421; GFX9-NEXT:    v_sub_u32_e32 v8, v11, v128422; GFX9-NEXT:    v_add_u32_e32 v8, 11, v88423; GFX9-NEXT:  .LBB10_13: ; %frem.loop_body608424; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=18425; GFX9-NEXT:    v_mov_b32_e32 v11, v98426; GFX9-NEXT:    v_mul_f32_e32 v9, v11, v108427; GFX9-NEXT:    v_rndne_f32_e32 v9, v98428; GFX9-NEXT:    v_fma_f32 v9, -v9, v7, v118429; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v98430; GFX9-NEXT:    v_add_f32_e32 v12, v9, v78431; GFX9-NEXT:    v_add_u32_e32 v8, -11, v88432; GFX9-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc8433; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v88434; GFX9-NEXT:    v_ldexp_f32 v9, v9, 118435; GFX9-NEXT:    s_cbranch_vccnz .LBB10_138436; GFX9-NEXT:  ; %bb.14: ; %Flow1298437; GFX9-NEXT:    v_mov_b32_e32 v9, v118438; GFX9-NEXT:  .LBB10_15: ; %frem.loop_exit618439; GFX9-NEXT:    v_add_u32_e32 v8, -10, v88440; GFX9-NEXT:    v_ldexp_f32 v8, v9, v88441; GFX9-NEXT:    v_mul_f32_e32 v9, v8, v108442; GFX9-NEXT:    v_rndne_f32_e32 v9, v98443; GFX9-NEXT:    v_fma_f32 v8, -v9, v7, v88444; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v88445; GFX9-NEXT:    v_add_f32_e32 v7, v8, v78446; GFX9-NEXT:    v_cndmask_b32_e32 v7, v8, v7, vcc8447; GFX9-NEXT:    v_ldexp_f32 v6, v7, v68448; GFX9-NEXT:    v_cvt_f16_f32_e32 v6, v68449; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8450; GFX9-NEXT:    v_bfi_b32 v6, s2, v6, v58451; GFX9-NEXT:  .LBB10_16:8452; GFX9-NEXT:    v_cvt_f32_f16_e64 v9, |v3|8453; GFX9-NEXT:    v_cvt_f32_f16_e64 v8, |v1|8454; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v9, v88455; GFX9-NEXT:    s_cbranch_vccz .LBB10_188456; GFX9-NEXT:  ; %bb.17: ; %frem.else208457; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8458; GFX9-NEXT:    v_bfi_b32 v7, s2, 0, v38459; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v9, v88460; GFX9-NEXT:    v_cndmask_b32_e32 v7, v3, v7, vcc8461; GFX9-NEXT:    s_cbranch_execz .LBB10_198462; GFX9-NEXT:    s_branch .LBB10_248463; GFX9-NEXT:  .LBB10_18:8464; GFX9-NEXT:    ; implicit-def: $vgpr78465; GFX9-NEXT:  .LBB10_19: ; %frem.compute198466; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v12, v98467; GFX9-NEXT:    v_frexp_mant_f32_e32 v7, v98468; GFX9-NEXT:    v_frexp_mant_f32_e32 v9, v88469; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v13, v88470; GFX9-NEXT:    v_ldexp_f32 v8, v9, 18471; GFX9-NEXT:    v_div_scale_f32 v14, s[2:3], v8, v8, 1.08472; GFX9-NEXT:    v_div_scale_f32 v11, vcc, 1.0, v8, 1.08473; GFX9-NEXT:    v_ldexp_f32 v10, v7, 118474; GFX9-NEXT:    v_add_u32_e32 v7, -1, v138475; GFX9-NEXT:    v_not_b32_e32 v9, v78476; GFX9-NEXT:    v_add_u32_e32 v9, v9, v128477; GFX9-NEXT:    v_rcp_f32_e32 v15, v148478; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38479; GFX9-NEXT:    v_fma_f32 v16, -v14, v15, 1.08480; GFX9-NEXT:    v_fma_f32 v15, v16, v15, v158481; GFX9-NEXT:    v_mul_f32_e32 v16, v11, v158482; GFX9-NEXT:    v_fma_f32 v17, -v14, v16, v118483; GFX9-NEXT:    v_fma_f32 v16, v17, v15, v168484; GFX9-NEXT:    v_fma_f32 v11, -v14, v16, v118485; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08486; GFX9-NEXT:    v_div_fmas_f32 v11, v11, v15, v168487; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v98488; GFX9-NEXT:    v_div_fixup_f32 v11, v11, v8, 1.08489; GFX9-NEXT:    s_cbranch_vccnz .LBB10_238490; GFX9-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader8491; GFX9-NEXT:    v_sub_u32_e32 v9, v12, v138492; GFX9-NEXT:    v_add_u32_e32 v9, 11, v98493; GFX9-NEXT:  .LBB10_21: ; %frem.loop_body278494; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=18495; GFX9-NEXT:    v_mov_b32_e32 v12, v108496; GFX9-NEXT:    v_mul_f32_e32 v10, v12, v118497; GFX9-NEXT:    v_rndne_f32_e32 v10, v108498; GFX9-NEXT:    v_fma_f32 v10, -v10, v8, v128499; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v108500; GFX9-NEXT:    v_add_f32_e32 v13, v10, v88501; GFX9-NEXT:    v_add_u32_e32 v9, -11, v98502; GFX9-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc8503; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v98504; GFX9-NEXT:    v_ldexp_f32 v10, v10, 118505; GFX9-NEXT:    s_cbranch_vccnz .LBB10_218506; GFX9-NEXT:  ; %bb.22: ; %Flow1258507; GFX9-NEXT:    v_mov_b32_e32 v10, v128508; GFX9-NEXT:  .LBB10_23: ; %frem.loop_exit288509; GFX9-NEXT:    v_add_u32_e32 v9, -10, v98510; GFX9-NEXT:    v_ldexp_f32 v9, v10, v98511; GFX9-NEXT:    v_mul_f32_e32 v10, v9, v118512; GFX9-NEXT:    v_rndne_f32_e32 v10, v108513; GFX9-NEXT:    v_fma_f32 v9, -v10, v8, v98514; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v98515; GFX9-NEXT:    v_add_f32_e32 v8, v9, v88516; GFX9-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc8517; GFX9-NEXT:    v_ldexp_f32 v7, v8, v78518; GFX9-NEXT:    v_cvt_f16_f32_e32 v7, v78519; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8520; GFX9-NEXT:    v_bfi_b32 v7, s2, v7, v38521; GFX9-NEXT:  .LBB10_24:8522; GFX9-NEXT:    v_lshrrev_b32_e32 v8, 16, v38523; GFX9-NEXT:    v_cvt_f32_f16_e64 v11, |v8|8524; GFX9-NEXT:    v_cvt_f32_f16_sdwa v10, |v1| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_18525; GFX9-NEXT:    v_cmp_ngt_f32_e32 vcc, v11, v108526; GFX9-NEXT:    s_cbranch_vccz .LBB10_268527; GFX9-NEXT:  ; %bb.25: ; %frem.else8528; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8529; GFX9-NEXT:    v_bfi_b32 v9, s2, 0, v88530; GFX9-NEXT:    v_cmp_eq_f32_e32 vcc, v11, v108531; GFX9-NEXT:    v_cndmask_b32_e32 v9, v8, v9, vcc8532; GFX9-NEXT:    s_cbranch_execz .LBB10_278533; GFX9-NEXT:    s_branch .LBB10_328534; GFX9-NEXT:  .LBB10_26:8535; GFX9-NEXT:    ; implicit-def: $vgpr98536; GFX9-NEXT:  .LBB10_27: ; %frem.compute8537; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v14, v118538; GFX9-NEXT:    v_frexp_mant_f32_e32 v9, v118539; GFX9-NEXT:    v_frexp_mant_f32_e32 v11, v108540; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v15, v108541; GFX9-NEXT:    v_ldexp_f32 v10, v11, 18542; GFX9-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.08543; GFX9-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v10, 1.08544; GFX9-NEXT:    v_ldexp_f32 v12, v9, 118545; GFX9-NEXT:    v_add_u32_e32 v9, -1, v158546; GFX9-NEXT:    v_not_b32_e32 v11, v98547; GFX9-NEXT:    v_add_u32_e32 v11, v11, v148548; GFX9-NEXT:    v_rcp_f32_e32 v17, v168549; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 38550; GFX9-NEXT:    v_fma_f32 v18, -v16, v17, 1.08551; GFX9-NEXT:    v_fma_f32 v17, v18, v17, v178552; GFX9-NEXT:    v_mul_f32_e32 v18, v13, v178553; GFX9-NEXT:    v_fma_f32 v19, -v16, v18, v138554; GFX9-NEXT:    v_fma_f32 v18, v19, v17, v188555; GFX9-NEXT:    v_fma_f32 v13, -v16, v18, v138556; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 08557; GFX9-NEXT:    v_div_fmas_f32 v13, v13, v17, v188558; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 12, v118559; GFX9-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.08560; GFX9-NEXT:    s_cbranch_vccnz .LBB10_318561; GFX9-NEXT:  ; %bb.28: ; %frem.loop_body.preheader8562; GFX9-NEXT:    v_sub_u32_e32 v11, v14, v158563; GFX9-NEXT:    v_add_u32_e32 v11, 11, v118564; GFX9-NEXT:  .LBB10_29: ; %frem.loop_body8565; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=18566; GFX9-NEXT:    v_mov_b32_e32 v14, v128567; GFX9-NEXT:    v_mul_f32_e32 v12, v14, v138568; GFX9-NEXT:    v_rndne_f32_e32 v12, v128569; GFX9-NEXT:    v_fma_f32 v12, -v12, v10, v148570; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v128571; GFX9-NEXT:    v_add_f32_e32 v15, v12, v108572; GFX9-NEXT:    v_add_u32_e32 v11, -11, v118573; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc8574; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 11, v118575; GFX9-NEXT:    v_ldexp_f32 v12, v12, 118576; GFX9-NEXT:    s_cbranch_vccnz .LBB10_298577; GFX9-NEXT:  ; %bb.30: ; %Flow8578; GFX9-NEXT:    v_mov_b32_e32 v12, v148579; GFX9-NEXT:  .LBB10_31: ; %frem.loop_exit8580; GFX9-NEXT:    v_add_u32_e32 v11, -10, v118581; GFX9-NEXT:    v_ldexp_f32 v11, v12, v118582; GFX9-NEXT:    v_mul_f32_e32 v12, v11, v138583; GFX9-NEXT:    v_rndne_f32_e32 v12, v128584; GFX9-NEXT:    v_fma_f32 v11, -v12, v10, v118585; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v118586; GFX9-NEXT:    v_add_f32_e32 v10, v11, v108587; GFX9-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc8588; GFX9-NEXT:    v_ldexp_f32 v9, v10, v98589; GFX9-NEXT:    v_cvt_f16_f32_e32 v9, v98590; GFX9-NEXT:    s_movk_i32 s2, 0x7fff8591; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v88592; GFX9-NEXT:  .LBB10_32: ; %Flow1248593; GFX9-NEXT:    s_movk_i32 s6, 0x7c008594; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v08595; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v2|, s68596; GFX9-NEXT:    v_mov_b32_e32 v10, 08597; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc8598; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7e008599; GFX9-NEXT:    v_cmp_lg_f16_sdwa s[2:3], v0, v10 src0_sel:WORD_1 src1_sel:DWORD8600; GFX9-NEXT:    v_cmp_nge_f16_e64 s[4:5], |v5|, s68601; GFX9-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc8602; GFX9-NEXT:    s_and_b64 vcc, s[4:5], s[2:3]8603; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v6, vcc8604; GFX9-NEXT:    v_cmp_lg_f16_e32 vcc, 0, v18605; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], |v3|, s68606; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc8607; GFX9-NEXT:    v_cmp_lg_f16_sdwa s[2:3], v1, v10 src0_sel:WORD_1 src1_sel:DWORD8608; GFX9-NEXT:    v_cmp_nge_f16_e64 s[4:5], |v8|, s68609; GFX9-NEXT:    v_cndmask_b32_e32 v3, v2, v7, vcc8610; GFX9-NEXT:    s_and_b64 vcc, s[4:5], s[2:3]8611; GFX9-NEXT:    v_cndmask_b32_e32 v1, v2, v9, vcc8612; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v38613; GFX9-NEXT:    v_lshl_or_b32 v1, v1, 16, v28614; GFX9-NEXT:    v_and_b32_e32 v2, 0xffff, v48615; GFX9-NEXT:    v_lshl_or_b32 v0, v0, 16, v28616; GFX9-NEXT:    global_store_dwordx2 v10, v[0:1], s[0:1]8617; GFX9-NEXT:    s_endpgm8618;8619; GFX10-LABEL: frem_v4f16:8620; GFX10:       ; %bb.0:8621; GFX10-NEXT:    s_clause 0x18622; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x248623; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x348624; GFX10-NEXT:    v_mov_b32_e32 v4, 08625; GFX10-NEXT:    s_waitcnt lgkmcnt(0)8626; GFX10-NEXT:    s_clause 0x18627; GFX10-NEXT:    global_load_dwordx2 v[2:3], v4, s[2:3]8628; GFX10-NEXT:    global_load_dwordx2 v[0:1], v4, s[6:7] offset:328629; GFX10-NEXT:    s_waitcnt vmcnt(1)8630; GFX10-NEXT:    v_cvt_f32_f16_e64 v6, |v2|8631; GFX10-NEXT:    s_waitcnt vmcnt(0)8632; GFX10-NEXT:    v_cvt_f32_f16_e64 v5, |v0|8633; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v58634; GFX10-NEXT:    s_cbranch_vccz .LBB10_28635; GFX10-NEXT:  ; %bb.1: ; %frem.else868636; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, 0, v28637; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v58638; GFX10-NEXT:    v_cndmask_b32_e32 v4, v2, v4, vcc_lo8639; GFX10-NEXT:    s_cbranch_execz .LBB10_38640; GFX10-NEXT:    s_branch .LBB10_88641; GFX10-NEXT:  .LBB10_2:8642; GFX10-NEXT:    ; implicit-def: $vgpr48643; GFX10-NEXT:  .LBB10_3: ; %frem.compute858644; GFX10-NEXT:    v_frexp_mant_f32_e32 v4, v68645; GFX10-NEXT:    v_frexp_mant_f32_e32 v8, v58646; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v68647; GFX10-NEXT:    v_ldexp_f32 v6, v4, 118648; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v4, v58649; GFX10-NEXT:    v_ldexp_f32 v5, v8, 18650; GFX10-NEXT:    v_readfirstlane_b32 s2, v78651; GFX10-NEXT:    v_readfirstlane_b32 s3, v48652; GFX10-NEXT:    v_div_scale_f32 v9, s4, v5, v5, 1.08653; GFX10-NEXT:    v_add_nc_u32_e32 v4, -1, v48654; GFX10-NEXT:    v_rcp_f32_e32 v10, v98655; GFX10-NEXT:    v_not_b32_e32 v8, v48656; GFX10-NEXT:    v_add_nc_u32_e32 v8, v8, v78657; GFX10-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.08658; GFX10-NEXT:    s_denorm_mode 158659; GFX10-NEXT:    v_fma_f32 v11, -v9, v10, 1.08660; GFX10-NEXT:    v_fmac_f32_e32 v10, v11, v108661; GFX10-NEXT:    v_mul_f32_e32 v11, v7, v108662; GFX10-NEXT:    v_fma_f32 v12, -v9, v11, v78663; GFX10-NEXT:    v_fmac_f32_e32 v11, v12, v108664; GFX10-NEXT:    v_fma_f32 v7, -v9, v11, v78665; GFX10-NEXT:    s_denorm_mode 128666; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v118667; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v88668; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.08669; GFX10-NEXT:    s_cbranch_vccnz .LBB10_78670; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader8671; GFX10-NEXT:    s_sub_i32 s2, s2, s38672; GFX10-NEXT:    s_add_i32 s2, s2, 118673; GFX10-NEXT:  .LBB10_5: ; %frem.loop_body938674; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18675; GFX10-NEXT:    v_mov_b32_e32 v9, v68676; GFX10-NEXT:    s_add_i32 s2, s2, -118677; GFX10-NEXT:    s_cmp_gt_i32 s2, 118678; GFX10-NEXT:    v_mul_f32_e32 v6, v9, v78679; GFX10-NEXT:    v_rndne_f32_e32 v6, v68680; GFX10-NEXT:    v_fma_f32 v6, -v6, v5, v98681; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v68682; GFX10-NEXT:    v_add_f32_e32 v8, v6, v58683; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo8684; GFX10-NEXT:    v_ldexp_f32 v6, v6, 118685; GFX10-NEXT:    s_cbranch_scc1 .LBB10_58686; GFX10-NEXT:  ; %bb.6: ; %Flow1338687; GFX10-NEXT:    v_mov_b32_e32 v8, s28688; GFX10-NEXT:    v_mov_b32_e32 v6, v98689; GFX10-NEXT:  .LBB10_7: ; %frem.loop_exit948690; GFX10-NEXT:    v_add_nc_u32_e32 v8, -10, v88691; GFX10-NEXT:    v_ldexp_f32 v6, v6, v88692; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v78693; GFX10-NEXT:    v_rndne_f32_e32 v7, v78694; GFX10-NEXT:    v_fma_f32 v6, -v7, v5, v68695; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v68696; GFX10-NEXT:    v_add_f32_e32 v5, v6, v58697; GFX10-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo8698; GFX10-NEXT:    v_ldexp_f32 v4, v5, v48699; GFX10-NEXT:    v_cvt_f16_f32_e32 v4, v48700; GFX10-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v28701; GFX10-NEXT:  .LBB10_8:8702; GFX10-NEXT:    v_lshrrev_b32_e32 v5, 16, v28703; GFX10-NEXT:    v_cvt_f32_f16_sdwa v7, |v0| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_18704; GFX10-NEXT:    v_cvt_f32_f16_e64 v8, |v5|8705; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v8, v78706; GFX10-NEXT:    s_cbranch_vccz .LBB10_108707; GFX10-NEXT:  ; %bb.9: ; %frem.else538708; GFX10-NEXT:    v_bfi_b32 v6, 0x7fff, 0, v58709; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v8, v78710; GFX10-NEXT:    v_cndmask_b32_e32 v6, v5, v6, vcc_lo8711; GFX10-NEXT:    s_cbranch_execz .LBB10_118712; GFX10-NEXT:    s_branch .LBB10_168713; GFX10-NEXT:  .LBB10_10:8714; GFX10-NEXT:    ; implicit-def: $vgpr68715; GFX10-NEXT:  .LBB10_11: ; %frem.compute528716; GFX10-NEXT:    v_frexp_mant_f32_e32 v6, v88717; GFX10-NEXT:    v_frexp_mant_f32_e32 v10, v78718; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v9, v88719; GFX10-NEXT:    v_ldexp_f32 v8, v6, 118720; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v6, v78721; GFX10-NEXT:    v_ldexp_f32 v7, v10, 18722; GFX10-NEXT:    v_readfirstlane_b32 s2, v98723; GFX10-NEXT:    v_readfirstlane_b32 s3, v68724; GFX10-NEXT:    v_div_scale_f32 v11, s4, v7, v7, 1.08725; GFX10-NEXT:    v_add_nc_u32_e32 v6, -1, v68726; GFX10-NEXT:    v_rcp_f32_e32 v12, v118727; GFX10-NEXT:    v_not_b32_e32 v10, v68728; GFX10-NEXT:    v_add_nc_u32_e32 v10, v10, v98729; GFX10-NEXT:    v_div_scale_f32 v9, vcc_lo, 1.0, v7, 1.08730; GFX10-NEXT:    s_denorm_mode 158731; GFX10-NEXT:    v_fma_f32 v13, -v11, v12, 1.08732; GFX10-NEXT:    v_fmac_f32_e32 v12, v13, v128733; GFX10-NEXT:    v_mul_f32_e32 v13, v9, v128734; GFX10-NEXT:    v_fma_f32 v14, -v11, v13, v98735; GFX10-NEXT:    v_fmac_f32_e32 v13, v14, v128736; GFX10-NEXT:    v_fma_f32 v9, -v11, v13, v98737; GFX10-NEXT:    s_denorm_mode 128738; GFX10-NEXT:    v_div_fmas_f32 v9, v9, v12, v138739; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v108740; GFX10-NEXT:    v_div_fixup_f32 v9, v9, v7, 1.08741; GFX10-NEXT:    s_cbranch_vccnz .LBB10_158742; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader8743; GFX10-NEXT:    s_sub_i32 s2, s2, s38744; GFX10-NEXT:    s_add_i32 s2, s2, 118745; GFX10-NEXT:  .LBB10_13: ; %frem.loop_body608746; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18747; GFX10-NEXT:    v_mov_b32_e32 v11, v88748; GFX10-NEXT:    s_add_i32 s2, s2, -118749; GFX10-NEXT:    s_cmp_gt_i32 s2, 118750; GFX10-NEXT:    v_mul_f32_e32 v8, v11, v98751; GFX10-NEXT:    v_rndne_f32_e32 v8, v88752; GFX10-NEXT:    v_fma_f32 v8, -v8, v7, v118753; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v88754; GFX10-NEXT:    v_add_f32_e32 v10, v8, v78755; GFX10-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc_lo8756; GFX10-NEXT:    v_ldexp_f32 v8, v8, 118757; GFX10-NEXT:    s_cbranch_scc1 .LBB10_138758; GFX10-NEXT:  ; %bb.14: ; %Flow1298759; GFX10-NEXT:    v_mov_b32_e32 v10, s28760; GFX10-NEXT:    v_mov_b32_e32 v8, v118761; GFX10-NEXT:  .LBB10_15: ; %frem.loop_exit618762; GFX10-NEXT:    v_add_nc_u32_e32 v10, -10, v108763; GFX10-NEXT:    v_ldexp_f32 v8, v8, v108764; GFX10-NEXT:    v_mul_f32_e32 v9, v8, v98765; GFX10-NEXT:    v_rndne_f32_e32 v9, v98766; GFX10-NEXT:    v_fma_f32 v8, -v9, v7, v88767; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v88768; GFX10-NEXT:    v_add_f32_e32 v7, v8, v78769; GFX10-NEXT:    v_cndmask_b32_e32 v7, v8, v7, vcc_lo8770; GFX10-NEXT:    v_ldexp_f32 v6, v7, v68771; GFX10-NEXT:    v_cvt_f16_f32_e32 v6, v68772; GFX10-NEXT:    v_bfi_b32 v6, 0x7fff, v6, v58773; GFX10-NEXT:  .LBB10_16:8774; GFX10-NEXT:    v_cvt_f32_f16_e64 v9, |v3|8775; GFX10-NEXT:    v_cvt_f32_f16_e64 v8, |v1|8776; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v88777; GFX10-NEXT:    s_cbranch_vccz .LBB10_188778; GFX10-NEXT:  ; %bb.17: ; %frem.else208779; GFX10-NEXT:    v_bfi_b32 v7, 0x7fff, 0, v38780; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v88781; GFX10-NEXT:    v_cndmask_b32_e32 v7, v3, v7, vcc_lo8782; GFX10-NEXT:    s_cbranch_execz .LBB10_198783; GFX10-NEXT:    s_branch .LBB10_248784; GFX10-NEXT:  .LBB10_18:8785; GFX10-NEXT:    ; implicit-def: $vgpr78786; GFX10-NEXT:  .LBB10_19: ; %frem.compute198787; GFX10-NEXT:    v_frexp_mant_f32_e32 v7, v98788; GFX10-NEXT:    v_frexp_mant_f32_e32 v11, v88789; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v10, v98790; GFX10-NEXT:    v_ldexp_f32 v9, v7, 118791; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v88792; GFX10-NEXT:    v_ldexp_f32 v8, v11, 18793; GFX10-NEXT:    v_readfirstlane_b32 s2, v108794; GFX10-NEXT:    v_readfirstlane_b32 s3, v78795; GFX10-NEXT:    v_div_scale_f32 v12, s4, v8, v8, 1.08796; GFX10-NEXT:    v_add_nc_u32_e32 v7, -1, v78797; GFX10-NEXT:    v_rcp_f32_e32 v13, v128798; GFX10-NEXT:    v_not_b32_e32 v11, v78799; GFX10-NEXT:    v_add_nc_u32_e32 v11, v11, v108800; GFX10-NEXT:    v_div_scale_f32 v10, vcc_lo, 1.0, v8, 1.08801; GFX10-NEXT:    s_denorm_mode 158802; GFX10-NEXT:    v_fma_f32 v14, -v12, v13, 1.08803; GFX10-NEXT:    v_fmac_f32_e32 v13, v14, v138804; GFX10-NEXT:    v_mul_f32_e32 v14, v10, v138805; GFX10-NEXT:    v_fma_f32 v15, -v12, v14, v108806; GFX10-NEXT:    v_fmac_f32_e32 v14, v15, v138807; GFX10-NEXT:    v_fma_f32 v10, -v12, v14, v108808; GFX10-NEXT:    s_denorm_mode 128809; GFX10-NEXT:    v_div_fmas_f32 v10, v10, v13, v148810; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v118811; GFX10-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.08812; GFX10-NEXT:    s_cbranch_vccnz .LBB10_238813; GFX10-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader8814; GFX10-NEXT:    s_sub_i32 s2, s2, s38815; GFX10-NEXT:    s_add_i32 s2, s2, 118816; GFX10-NEXT:  .LBB10_21: ; %frem.loop_body278817; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18818; GFX10-NEXT:    v_mov_b32_e32 v12, v98819; GFX10-NEXT:    s_add_i32 s2, s2, -118820; GFX10-NEXT:    s_cmp_gt_i32 s2, 118821; GFX10-NEXT:    v_mul_f32_e32 v9, v12, v108822; GFX10-NEXT:    v_rndne_f32_e32 v9, v98823; GFX10-NEXT:    v_fma_f32 v9, -v9, v8, v128824; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v98825; GFX10-NEXT:    v_add_f32_e32 v11, v9, v88826; GFX10-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo8827; GFX10-NEXT:    v_ldexp_f32 v9, v9, 118828; GFX10-NEXT:    s_cbranch_scc1 .LBB10_218829; GFX10-NEXT:  ; %bb.22: ; %Flow1258830; GFX10-NEXT:    v_mov_b32_e32 v11, s28831; GFX10-NEXT:    v_mov_b32_e32 v9, v128832; GFX10-NEXT:  .LBB10_23: ; %frem.loop_exit288833; GFX10-NEXT:    v_add_nc_u32_e32 v11, -10, v118834; GFX10-NEXT:    v_ldexp_f32 v9, v9, v118835; GFX10-NEXT:    v_mul_f32_e32 v10, v9, v108836; GFX10-NEXT:    v_rndne_f32_e32 v10, v108837; GFX10-NEXT:    v_fma_f32 v9, -v10, v8, v98838; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v98839; GFX10-NEXT:    v_add_f32_e32 v8, v9, v88840; GFX10-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc_lo8841; GFX10-NEXT:    v_ldexp_f32 v7, v8, v78842; GFX10-NEXT:    v_cvt_f16_f32_e32 v7, v78843; GFX10-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v38844; GFX10-NEXT:  .LBB10_24:8845; GFX10-NEXT:    v_lshrrev_b32_e32 v8, 16, v38846; GFX10-NEXT:    v_cvt_f32_f16_sdwa v10, |v1| dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_18847; GFX10-NEXT:    v_cvt_f32_f16_e64 v11, |v8|8848; GFX10-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v11, v108849; GFX10-NEXT:    s_cbranch_vccz .LBB10_268850; GFX10-NEXT:  ; %bb.25: ; %frem.else8851; GFX10-NEXT:    v_bfi_b32 v9, 0x7fff, 0, v88852; GFX10-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v11, v108853; GFX10-NEXT:    v_cndmask_b32_e32 v9, v8, v9, vcc_lo8854; GFX10-NEXT:    s_cbranch_execz .LBB10_278855; GFX10-NEXT:    s_branch .LBB10_328856; GFX10-NEXT:  .LBB10_26:8857; GFX10-NEXT:    ; implicit-def: $vgpr98858; GFX10-NEXT:  .LBB10_27: ; %frem.compute8859; GFX10-NEXT:    v_frexp_mant_f32_e32 v9, v118860; GFX10-NEXT:    v_frexp_mant_f32_e32 v13, v108861; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v12, v118862; GFX10-NEXT:    v_ldexp_f32 v11, v9, 118863; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v9, v108864; GFX10-NEXT:    v_ldexp_f32 v10, v13, 18865; GFX10-NEXT:    v_readfirstlane_b32 s2, v128866; GFX10-NEXT:    v_readfirstlane_b32 s3, v98867; GFX10-NEXT:    v_div_scale_f32 v14, s4, v10, v10, 1.08868; GFX10-NEXT:    v_add_nc_u32_e32 v9, -1, v98869; GFX10-NEXT:    v_rcp_f32_e32 v15, v148870; GFX10-NEXT:    v_not_b32_e32 v13, v98871; GFX10-NEXT:    v_add_nc_u32_e32 v13, v13, v128872; GFX10-NEXT:    v_div_scale_f32 v12, vcc_lo, 1.0, v10, 1.08873; GFX10-NEXT:    s_denorm_mode 158874; GFX10-NEXT:    v_fma_f32 v16, -v14, v15, 1.08875; GFX10-NEXT:    v_fmac_f32_e32 v15, v16, v158876; GFX10-NEXT:    v_mul_f32_e32 v16, v12, v158877; GFX10-NEXT:    v_fma_f32 v17, -v14, v16, v128878; GFX10-NEXT:    v_fmac_f32_e32 v16, v17, v158879; GFX10-NEXT:    v_fma_f32 v12, -v14, v16, v128880; GFX10-NEXT:    s_denorm_mode 128881; GFX10-NEXT:    v_div_fmas_f32 v12, v12, v15, v168882; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v138883; GFX10-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.08884; GFX10-NEXT:    s_cbranch_vccnz .LBB10_318885; GFX10-NEXT:  ; %bb.28: ; %frem.loop_body.preheader8886; GFX10-NEXT:    s_sub_i32 s2, s2, s38887; GFX10-NEXT:    s_add_i32 s2, s2, 118888; GFX10-NEXT:  .LBB10_29: ; %frem.loop_body8889; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=18890; GFX10-NEXT:    v_mov_b32_e32 v14, v118891; GFX10-NEXT:    s_add_i32 s2, s2, -118892; GFX10-NEXT:    s_cmp_gt_i32 s2, 118893; GFX10-NEXT:    v_mul_f32_e32 v11, v14, v128894; GFX10-NEXT:    v_rndne_f32_e32 v11, v118895; GFX10-NEXT:    v_fma_f32 v11, -v11, v10, v148896; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v118897; GFX10-NEXT:    v_add_f32_e32 v13, v11, v108898; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo8899; GFX10-NEXT:    v_ldexp_f32 v11, v11, 118900; GFX10-NEXT:    s_cbranch_scc1 .LBB10_298901; GFX10-NEXT:  ; %bb.30: ; %Flow8902; GFX10-NEXT:    v_mov_b32_e32 v13, s28903; GFX10-NEXT:    v_mov_b32_e32 v11, v148904; GFX10-NEXT:  .LBB10_31: ; %frem.loop_exit8905; GFX10-NEXT:    v_add_nc_u32_e32 v13, -10, v138906; GFX10-NEXT:    v_ldexp_f32 v11, v11, v138907; GFX10-NEXT:    v_mul_f32_e32 v12, v11, v128908; GFX10-NEXT:    v_rndne_f32_e32 v12, v128909; GFX10-NEXT:    v_fma_f32 v11, -v12, v10, v118910; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v118911; GFX10-NEXT:    v_add_f32_e32 v10, v11, v108912; GFX10-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc_lo8913; GFX10-NEXT:    v_ldexp_f32 v9, v10, v98914; GFX10-NEXT:    v_cvt_f16_f32_e32 v9, v98915; GFX10-NEXT:    v_bfi_b32 v9, 0x7fff, v9, v88916; GFX10-NEXT:  .LBB10_32: ; %Flow1248917; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v08918; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v2|8919; GFX10-NEXT:    v_cmp_nle_f16_e64 s3, 0x7c00, |v5|8920; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo8921; GFX10-NEXT:    v_cndmask_b32_e32 v2, 0x7e00, v4, vcc_lo8922; GFX10-NEXT:    v_mov_b32_e32 v4, 08923; GFX10-NEXT:    v_and_b32_e32 v2, 0xffff, v28924; GFX10-NEXT:    v_cmp_lg_f16_sdwa s2, v0, v4 src0_sel:WORD_1 src1_sel:DWORD8925; GFX10-NEXT:    s_and_b32 vcc_lo, s3, s28926; GFX10-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v3|8927; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v6, vcc_lo8928; GFX10-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v18929; GFX10-NEXT:    v_cmp_nle_f16_e64 s3, 0x7c00, |v8|8930; GFX10-NEXT:    v_lshl_or_b32 v0, v0, 16, v28931; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo8932; GFX10-NEXT:    v_cmp_lg_f16_sdwa s2, v1, v4 src0_sel:WORD_1 src1_sel:DWORD8933; GFX10-NEXT:    v_cndmask_b32_e32 v3, 0x7e00, v7, vcc_lo8934; GFX10-NEXT:    s_and_b32 vcc_lo, s3, s28935; GFX10-NEXT:    v_and_b32_e32 v3, 0xffff, v38936; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7e00, v9, vcc_lo8937; GFX10-NEXT:    v_lshl_or_b32 v1, v1, 16, v38938; GFX10-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]8939; GFX10-NEXT:    s_endpgm8940;8941; GFX11-TRUE16-LABEL: frem_v4f16:8942; GFX11-TRUE16:       ; %bb.0:8943; GFX11-TRUE16-NEXT:    s_clause 0x18944; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x248945; GFX11-TRUE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x348946; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, 08947; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)8948; GFX11-TRUE16-NEXT:    s_clause 0x18949; GFX11-TRUE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]8950; GFX11-TRUE16-NEXT:    global_load_b64 v[2:3], v2, s[4:5] offset:328951; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(1)8952; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v6, |v0.l|8953; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)8954; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v5, |v2.l|8955; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)8956; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v58957; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_28958; GFX11-TRUE16-NEXT:  ; %bb.1: ; %frem.else868959; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v4.l, v0.l8960; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, 08961; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v58962; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)8963; GFX11-TRUE16-NEXT:    v_bfi_b32 v4, 0x7fff, v7, v48964; GFX11-TRUE16-NEXT:    v_cndmask_b16 v4.l, v0.l, v4.l, vcc_lo8965; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_38966; GFX11-TRUE16-NEXT:    s_branch .LBB10_88967; GFX11-TRUE16-NEXT:  .LBB10_2:8968; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr48969; GFX11-TRUE16-NEXT:  .LBB10_3: ; %frem.compute858970; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, v68971; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v8, v58972; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v68973; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)8974; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v4, 118975; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, v58976; GFX11-TRUE16-NEXT:    v_ldexp_f32 v5, v8, 18977; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)8978; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v78979; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v48980; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)8981; GFX11-TRUE16-NEXT:    v_div_scale_f32 v9, null, v5, v5, 1.08982; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -1, v48983; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v10, v98984; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8985; GFX11-TRUE16-NEXT:    v_not_b32_e32 v8, v48986; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, v8, v78987; GFX11-TRUE16-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.08988; GFX11-TRUE16-NEXT:    s_denorm_mode 158989; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)8990; GFX11-TRUE16-NEXT:    v_fma_f32 v11, -v9, v10, 1.08991; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8992; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v10, v11, v108993; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v11, v7, v108994; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)8995; GFX11-TRUE16-NEXT:    v_fma_f32 v12, -v9, v11, v78996; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v11, v12, v108997; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)8998; GFX11-TRUE16-NEXT:    v_fma_f32 v7, -v9, v11, v78999; GFX11-TRUE16-NEXT:    s_denorm_mode 129000; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v7, v7, v10, v119001; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v89002; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9003; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.09004; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_79005; GFX11-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader9006; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s39007; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9008; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 119009; GFX11-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body939010; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19011; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9012; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v69013; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -119014; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 119015; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9016; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v6, v9, v79017; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v6, v69018; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9019; GFX11-TRUE16-NEXT:    v_fma_f32 v6, -v6, v5, v99020; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v69021; GFX11-TRUE16-NEXT:    v_add_f32_e32 v8, v6, v59022; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9023; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo9024; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v6, 119025; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_59026; GFX11-TRUE16-NEXT:  ; %bb.6: ; %Flow1339027; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v8, s29028; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v6, v99029; GFX11-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit949030; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9031; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, -10, v89032; GFX11-TRUE16-NEXT:    v_ldexp_f32 v6, v6, v89033; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9034; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v7, v6, v79035; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v7, v79036; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9037; GFX11-TRUE16-NEXT:    v_fma_f32 v6, -v7, v5, v69038; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v69039; GFX11-TRUE16-NEXT:    v_add_f32_e32 v5, v6, v59040; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9041; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo9042; GFX11-TRUE16-NEXT:    v_ldexp_f32 v4, v5, v49043; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v5.l, v0.l9044; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9045; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v4.l, v49046; GFX11-TRUE16-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v59047; GFX11-TRUE16-NEXT:  .LBB10_8:9048; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v09049; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v29050; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9051; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v9, |v5.l|9052; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v8, |v6.l|9053; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9054; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v89055; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_109056; GFX11-TRUE16-NEXT:  ; %bb.9: ; %frem.else539057; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v7.l, v5.l9058; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v10.l, 09059; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v89060; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9061; GFX11-TRUE16-NEXT:    v_bfi_b32 v7, 0x7fff, v10, v79062; GFX11-TRUE16-NEXT:    v_cndmask_b16 v7.l, v5.l, v7.l, vcc_lo9063; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_119064; GFX11-TRUE16-NEXT:    s_branch .LBB10_169065; GFX11-TRUE16-NEXT:  .LBB10_10:9066; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr79067; GFX11-TRUE16-NEXT:  .LBB10_11: ; %frem.compute529068; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v7, v99069; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v11, v89070; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v10, v99071; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9072; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v7, 119073; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v89074; GFX11-TRUE16-NEXT:    v_ldexp_f32 v8, v11, 19075; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9076; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v109077; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v79078; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9079; GFX11-TRUE16-NEXT:    v_div_scale_f32 v12, null, v8, v8, 1.09080; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v7, -1, v79081; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v13, v129082; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9083; GFX11-TRUE16-NEXT:    v_not_b32_e32 v11, v79084; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v11, v11, v109085; GFX11-TRUE16-NEXT:    v_div_scale_f32 v10, vcc_lo, 1.0, v8, 1.09086; GFX11-TRUE16-NEXT:    s_denorm_mode 159087; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9088; GFX11-TRUE16-NEXT:    v_fma_f32 v14, -v12, v13, 1.09089; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9090; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v13, v14, v139091; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v14, v10, v139092; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9093; GFX11-TRUE16-NEXT:    v_fma_f32 v15, -v12, v14, v109094; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v14, v15, v139095; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9096; GFX11-TRUE16-NEXT:    v_fma_f32 v10, -v12, v14, v109097; GFX11-TRUE16-NEXT:    s_denorm_mode 129098; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v10, v10, v13, v149099; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v119100; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9101; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.09102; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_159103; GFX11-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader9104; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s39105; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9106; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 119107; GFX11-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body609108; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19109; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9110; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, v99111; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -119112; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 119113; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9114; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v9, v12, v109115; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v9, v99116; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9117; GFX11-TRUE16-NEXT:    v_fma_f32 v9, -v9, v8, v129118; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v99119; GFX11-TRUE16-NEXT:    v_add_f32_e32 v11, v9, v89120; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9121; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo9122; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v9, 119123; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_139124; GFX11-TRUE16-NEXT:  ; %bb.14: ; %Flow1299125; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v11, s29126; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v9, v129127; GFX11-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit619128; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9129; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v11, -10, v119130; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v9, v119131; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9132; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v10, v9, v109133; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v10, v109134; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9135; GFX11-TRUE16-NEXT:    v_fma_f32 v9, -v10, v8, v99136; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v99137; GFX11-TRUE16-NEXT:    v_add_f32_e32 v8, v9, v89138; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9139; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc_lo9140; GFX11-TRUE16-NEXT:    v_ldexp_f32 v7, v8, v79141; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v5.l9142; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9143; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v7.l, v79144; GFX11-TRUE16-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v89145; GFX11-TRUE16-NEXT:  .LBB10_16:9146; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v10, |v1.l|9147; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v9, |v3.l|9148; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9149; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v10, v99150; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_189151; GFX11-TRUE16-NEXT:  ; %bb.17: ; %frem.else209152; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v8.l, v1.l9153; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v11.l, 09154; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v10, v99155; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9156; GFX11-TRUE16-NEXT:    v_bfi_b32 v8, 0x7fff, v11, v89157; GFX11-TRUE16-NEXT:    v_cndmask_b16 v8.l, v1.l, v8.l, vcc_lo9158; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_199159; GFX11-TRUE16-NEXT:    s_branch .LBB10_249160; GFX11-TRUE16-NEXT:  .LBB10_18:9161; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr89162; GFX11-TRUE16-NEXT:  .LBB10_19: ; %frem.compute199163; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v8, v109164; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v12, v99165; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v109166; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9167; GFX11-TRUE16-NEXT:    v_ldexp_f32 v10, v8, 119168; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v99169; GFX11-TRUE16-NEXT:    v_ldexp_f32 v9, v12, 19170; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9171; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v119172; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v89173; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9174; GFX11-TRUE16-NEXT:    v_div_scale_f32 v13, null, v9, v9, 1.09175; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v8, -1, v89176; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v14, v139177; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9178; GFX11-TRUE16-NEXT:    v_not_b32_e32 v12, v89179; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v12, v12, v119180; GFX11-TRUE16-NEXT:    v_div_scale_f32 v11, vcc_lo, 1.0, v9, 1.09181; GFX11-TRUE16-NEXT:    s_denorm_mode 159182; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9183; GFX11-TRUE16-NEXT:    v_fma_f32 v15, -v13, v14, 1.09184; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9185; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v14, v15, v149186; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v15, v11, v149187; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9188; GFX11-TRUE16-NEXT:    v_fma_f32 v16, -v13, v15, v119189; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v15, v16, v149190; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9191; GFX11-TRUE16-NEXT:    v_fma_f32 v11, -v13, v15, v119192; GFX11-TRUE16-NEXT:    s_denorm_mode 129193; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v11, v11, v14, v159194; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v129195; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9196; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.09197; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_239198; GFX11-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader9199; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s39200; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9201; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 119202; GFX11-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body279203; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19204; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9205; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v109206; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -119207; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 119208; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9209; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v10, v13, v119210; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v10, v109211; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9212; GFX11-TRUE16-NEXT:    v_fma_f32 v10, -v10, v9, v139213; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v109214; GFX11-TRUE16-NEXT:    v_add_f32_e32 v12, v10, v99215; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9216; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo9217; GFX11-TRUE16-NEXT:    v_ldexp_f32 v10, v10, 119218; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_219219; GFX11-TRUE16-NEXT:  ; %bb.22: ; %Flow1259220; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v12, s29221; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v10, v139222; GFX11-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit289223; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9224; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v12, -10, v129225; GFX11-TRUE16-NEXT:    v_ldexp_f32 v10, v10, v129226; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9227; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v11, v10, v119228; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v11, v119229; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9230; GFX11-TRUE16-NEXT:    v_fma_f32 v10, -v11, v9, v109231; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v109232; GFX11-TRUE16-NEXT:    v_add_f32_e32 v9, v10, v99233; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9234; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc_lo9235; GFX11-TRUE16-NEXT:    v_ldexp_f32 v8, v9, v89236; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v9.l, v1.l9237; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9238; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v8.l, v89239; GFX11-TRUE16-NEXT:    v_bfi_b32 v8, 0x7fff, v8, v99240; GFX11-TRUE16-NEXT:  .LBB10_24:9241; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v19242; GFX11-TRUE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v39243; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9244; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v13, |v9.l|9245; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e64 v12, |v10.l|9246; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9247; GFX11-TRUE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v13, v129248; GFX11-TRUE16-NEXT:    s_cbranch_vccz .LBB10_269249; GFX11-TRUE16-NEXT:  ; %bb.25: ; %frem.else9250; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v11.l, v9.l9251; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v14.l, 09252; GFX11-TRUE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v13, v129253; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9254; GFX11-TRUE16-NEXT:    v_bfi_b32 v11, 0x7fff, v14, v119255; GFX11-TRUE16-NEXT:    v_cndmask_b16 v11.l, v9.l, v11.l, vcc_lo9256; GFX11-TRUE16-NEXT:    s_cbranch_execz .LBB10_279257; GFX11-TRUE16-NEXT:    s_branch .LBB10_329258; GFX11-TRUE16-NEXT:  .LBB10_26:9259; GFX11-TRUE16-NEXT:    ; implicit-def: $vgpr119260; GFX11-TRUE16-NEXT:  .LBB10_27: ; %frem.compute9261; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v11, v139262; GFX11-TRUE16-NEXT:    v_frexp_mant_f32_e32 v15, v129263; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v14, v139264; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9265; GFX11-TRUE16-NEXT:    v_ldexp_f32 v13, v11, 119266; GFX11-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v129267; GFX11-TRUE16-NEXT:    v_ldexp_f32 v12, v15, 19268; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9269; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s2, v149270; GFX11-TRUE16-NEXT:    v_readfirstlane_b32 s3, v119271; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9272; GFX11-TRUE16-NEXT:    v_div_scale_f32 v16, null, v12, v12, 1.09273; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v11, -1, v119274; GFX11-TRUE16-NEXT:    v_rcp_f32_e32 v17, v169275; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9276; GFX11-TRUE16-NEXT:    v_not_b32_e32 v15, v119277; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v15, v15, v149278; GFX11-TRUE16-NEXT:    v_div_scale_f32 v14, vcc_lo, 1.0, v12, 1.09279; GFX11-TRUE16-NEXT:    s_denorm_mode 159280; GFX11-TRUE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9281; GFX11-TRUE16-NEXT:    v_fma_f32 v18, -v16, v17, 1.09282; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9283; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v17, v18, v179284; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v18, v14, v179285; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9286; GFX11-TRUE16-NEXT:    v_fma_f32 v19, -v16, v18, v149287; GFX11-TRUE16-NEXT:    v_fmac_f32_e32 v18, v19, v179288; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9289; GFX11-TRUE16-NEXT:    v_fma_f32 v14, -v16, v18, v149290; GFX11-TRUE16-NEXT:    s_denorm_mode 129291; GFX11-TRUE16-NEXT:    v_div_fmas_f32 v14, v14, v17, v189292; GFX11-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v159293; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9294; GFX11-TRUE16-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.09295; GFX11-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_319296; GFX11-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader9297; GFX11-TRUE16-NEXT:    s_sub_i32 s2, s2, s39298; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9299; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, 119300; GFX11-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body9301; GFX11-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19302; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9303; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v16, v139304; GFX11-TRUE16-NEXT:    s_add_i32 s2, s2, -119305; GFX11-TRUE16-NEXT:    s_cmp_gt_i32 s2, 119306; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9307; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v13, v16, v149308; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v13, v139309; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9310; GFX11-TRUE16-NEXT:    v_fma_f32 v13, -v13, v12, v169311; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v139312; GFX11-TRUE16-NEXT:    v_add_f32_e32 v15, v13, v129313; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9314; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo9315; GFX11-TRUE16-NEXT:    v_ldexp_f32 v13, v13, 119316; GFX11-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_299317; GFX11-TRUE16-NEXT:  ; %bb.30: ; %Flow9318; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v15, s29319; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v13, v169320; GFX11-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit9321; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9322; GFX11-TRUE16-NEXT:    v_add_nc_u32_e32 v15, -10, v159323; GFX11-TRUE16-NEXT:    v_ldexp_f32 v13, v13, v159324; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9325; GFX11-TRUE16-NEXT:    v_mul_f32_e32 v14, v13, v149326; GFX11-TRUE16-NEXT:    v_rndne_f32_e32 v14, v149327; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9328; GFX11-TRUE16-NEXT:    v_fma_f32 v13, -v14, v12, v139329; GFX11-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v139330; GFX11-TRUE16-NEXT:    v_add_f32_e32 v12, v13, v129331; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9332; GFX11-TRUE16-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc_lo9333; GFX11-TRUE16-NEXT:    v_ldexp_f32 v11, v12, v119334; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v12.l, v9.l9335; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9336; GFX11-TRUE16-NEXT:    v_cvt_f16_f32_e32 v11.l, v119337; GFX11-TRUE16-NEXT:    v_bfi_b32 v11, 0x7fff, v11, v129338; GFX11-TRUE16-NEXT:  .LBB10_32: ; %Flow1249339; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v2.l9340; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0.l|9341; GFX11-TRUE16-NEXT:    v_mov_b32_e32 v2, 09342; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo9343; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v6.l9344; GFX11-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v4.l, s29345; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v5.l|9346; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo9347; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v3.l9348; GFX11-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v7.l, s29349; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1.l|9350; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo9351; GFX11-TRUE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v10.l9352; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.l, 0x7e00, v8.l, s29353; GFX11-TRUE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v9.l|9354; GFX11-TRUE16-NEXT:    s_and_b32 s2, s2, vcc_lo9355; GFX11-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9356; GFX11-TRUE16-NEXT:    v_cndmask_b16 v1.h, 0x7e00, v11.l, s29357; GFX11-TRUE16-NEXT:    global_store_b64 v2, v[0:1], s[0:1]9358; GFX11-TRUE16-NEXT:    s_endpgm9359;9360; GFX11-FAKE16-LABEL: frem_v4f16:9361; GFX11-FAKE16:       ; %bb.0:9362; GFX11-FAKE16-NEXT:    s_clause 0x19363; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x249364; GFX11-FAKE16-NEXT:    s_load_b64 s[4:5], s[4:5], 0x349365; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v2, 09366; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)9367; GFX11-FAKE16-NEXT:    s_clause 0x19368; GFX11-FAKE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]9369; GFX11-FAKE16-NEXT:    global_load_b64 v[2:3], v2, s[4:5] offset:329370; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(1)9371; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v6, |v0|9372; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)9373; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v5, |v2|9374; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9375; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v6, v59376; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_29377; GFX11-FAKE16-NEXT:  ; %bb.1: ; %frem.else869378; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, 0, v09379; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v6, v59380; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9381; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo9382; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_39383; GFX11-FAKE16-NEXT:    s_branch .LBB10_89384; GFX11-FAKE16-NEXT:  .LBB10_2:9385; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr49386; GFX11-FAKE16-NEXT:  .LBB10_3: ; %frem.compute859387; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, v69388; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v8, v59389; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v69390; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9391; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v4, 119392; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, v59393; GFX11-FAKE16-NEXT:    v_ldexp_f32 v5, v8, 19394; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9395; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v79396; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v49397; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9398; GFX11-FAKE16-NEXT:    v_div_scale_f32 v9, null, v5, v5, 1.09399; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -1, v49400; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v10, v99401; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9402; GFX11-FAKE16-NEXT:    v_not_b32_e32 v8, v49403; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v8, v8, v79404; GFX11-FAKE16-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.09405; GFX11-FAKE16-NEXT:    s_denorm_mode 159406; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9407; GFX11-FAKE16-NEXT:    v_fma_f32 v11, -v9, v10, 1.09408; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9409; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v10, v11, v109410; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v11, v7, v109411; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9412; GFX11-FAKE16-NEXT:    v_fma_f32 v12, -v9, v11, v79413; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v11, v12, v109414; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9415; GFX11-FAKE16-NEXT:    v_fma_f32 v7, -v9, v11, v79416; GFX11-FAKE16-NEXT:    s_denorm_mode 129417; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v7, v7, v10, v119418; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v89419; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9420; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.09421; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_79422; GFX11-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader9423; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s39424; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9425; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 119426; GFX11-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body939427; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19428; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9429; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v69430; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -119431; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 119432; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9433; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v6, v9, v79434; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v6, v69435; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9436; GFX11-FAKE16-NEXT:    v_fma_f32 v6, -v6, v5, v99437; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v69438; GFX11-FAKE16-NEXT:    v_add_f32_e32 v8, v6, v59439; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9440; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo9441; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v6, 119442; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_59443; GFX11-FAKE16-NEXT:  ; %bb.6: ; %Flow1339444; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v8, s29445; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v6, v99446; GFX11-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit949447; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9448; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v8, -10, v89449; GFX11-FAKE16-NEXT:    v_ldexp_f32 v6, v6, v89450; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9451; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v7, v6, v79452; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v7, v79453; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9454; GFX11-FAKE16-NEXT:    v_fma_f32 v6, -v7, v5, v69455; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v69456; GFX11-FAKE16-NEXT:    v_add_f32_e32 v5, v6, v59457; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9458; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo9459; GFX11-FAKE16-NEXT:    v_ldexp_f32 v4, v5, v49460; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9461; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v4, v49462; GFX11-FAKE16-NEXT:    v_bfi_b32 v4, 0x7fff, v4, v09463; GFX11-FAKE16-NEXT:  .LBB10_8:9464; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v5, 16, v09465; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v6, 16, v29466; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9467; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v9, |v5|9468; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v8, |v6|9469; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9470; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v9, v89471; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_109472; GFX11-FAKE16-NEXT:  ; %bb.9: ; %frem.else539473; GFX11-FAKE16-NEXT:    v_bfi_b32 v7, 0x7fff, 0, v59474; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v9, v89475; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9476; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v7, v5, v7, vcc_lo9477; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_119478; GFX11-FAKE16-NEXT:    s_branch .LBB10_169479; GFX11-FAKE16-NEXT:  .LBB10_10:9480; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr79481; GFX11-FAKE16-NEXT:  .LBB10_11: ; %frem.compute529482; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v7, v99483; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v11, v89484; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v10, v99485; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9486; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v7, 119487; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v7, v89488; GFX11-FAKE16-NEXT:    v_ldexp_f32 v8, v11, 19489; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9490; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v109491; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v79492; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9493; GFX11-FAKE16-NEXT:    v_div_scale_f32 v12, null, v8, v8, 1.09494; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v7, -1, v79495; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v13, v129496; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9497; GFX11-FAKE16-NEXT:    v_not_b32_e32 v11, v79498; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v11, v11, v109499; GFX11-FAKE16-NEXT:    v_div_scale_f32 v10, vcc_lo, 1.0, v8, 1.09500; GFX11-FAKE16-NEXT:    s_denorm_mode 159501; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9502; GFX11-FAKE16-NEXT:    v_fma_f32 v14, -v12, v13, 1.09503; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9504; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v13, v14, v139505; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v14, v10, v139506; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9507; GFX11-FAKE16-NEXT:    v_fma_f32 v15, -v12, v14, v109508; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v14, v15, v139509; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9510; GFX11-FAKE16-NEXT:    v_fma_f32 v10, -v12, v14, v109511; GFX11-FAKE16-NEXT:    s_denorm_mode 129512; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v10, v10, v13, v149513; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v119514; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9515; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.09516; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_159517; GFX11-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader9518; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s39519; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9520; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 119521; GFX11-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body609522; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19523; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9524; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, v99525; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -119526; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 119527; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9528; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v9, v12, v109529; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v9, v99530; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9531; GFX11-FAKE16-NEXT:    v_fma_f32 v9, -v9, v8, v129532; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v99533; GFX11-FAKE16-NEXT:    v_add_f32_e32 v11, v9, v89534; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9535; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc_lo9536; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v9, 119537; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_139538; GFX11-FAKE16-NEXT:  ; %bb.14: ; %Flow1299539; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v11, s29540; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v9, v129541; GFX11-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit619542; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9543; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v11, -10, v119544; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v9, v119545; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9546; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v10, v9, v109547; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v10, v109548; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9549; GFX11-FAKE16-NEXT:    v_fma_f32 v9, -v10, v8, v99550; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v99551; GFX11-FAKE16-NEXT:    v_add_f32_e32 v8, v9, v89552; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9553; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc_lo9554; GFX11-FAKE16-NEXT:    v_ldexp_f32 v7, v8, v79555; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9556; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v7, v79557; GFX11-FAKE16-NEXT:    v_bfi_b32 v7, 0x7fff, v7, v59558; GFX11-FAKE16-NEXT:  .LBB10_16:9559; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v10, |v1|9560; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v9, |v3|9561; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9562; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v10, v99563; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_189564; GFX11-FAKE16-NEXT:  ; %bb.17: ; %frem.else209565; GFX11-FAKE16-NEXT:    v_bfi_b32 v8, 0x7fff, 0, v19566; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v10, v99567; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9568; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v8, v1, v8, vcc_lo9569; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_199570; GFX11-FAKE16-NEXT:    s_branch .LBB10_249571; GFX11-FAKE16-NEXT:  .LBB10_18:9572; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr89573; GFX11-FAKE16-NEXT:  .LBB10_19: ; %frem.compute199574; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v8, v109575; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v12, v99576; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v109577; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9578; GFX11-FAKE16-NEXT:    v_ldexp_f32 v10, v8, 119579; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v8, v99580; GFX11-FAKE16-NEXT:    v_ldexp_f32 v9, v12, 19581; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9582; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v119583; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v89584; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9585; GFX11-FAKE16-NEXT:    v_div_scale_f32 v13, null, v9, v9, 1.09586; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v8, -1, v89587; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v14, v139588; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9589; GFX11-FAKE16-NEXT:    v_not_b32_e32 v12, v89590; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v12, v12, v119591; GFX11-FAKE16-NEXT:    v_div_scale_f32 v11, vcc_lo, 1.0, v9, 1.09592; GFX11-FAKE16-NEXT:    s_denorm_mode 159593; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9594; GFX11-FAKE16-NEXT:    v_fma_f32 v15, -v13, v14, 1.09595; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9596; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v14, v15, v149597; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v15, v11, v149598; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9599; GFX11-FAKE16-NEXT:    v_fma_f32 v16, -v13, v15, v119600; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v15, v16, v149601; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9602; GFX11-FAKE16-NEXT:    v_fma_f32 v11, -v13, v15, v119603; GFX11-FAKE16-NEXT:    s_denorm_mode 129604; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v11, v11, v14, v159605; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v129606; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9607; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.09608; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_239609; GFX11-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader9610; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s39611; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9612; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 119613; GFX11-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body279614; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19615; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9616; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v109617; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -119618; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 119619; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9620; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v10, v13, v119621; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v10, v109622; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9623; GFX11-FAKE16-NEXT:    v_fma_f32 v10, -v10, v9, v139624; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v109625; GFX11-FAKE16-NEXT:    v_add_f32_e32 v12, v10, v99626; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9627; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo9628; GFX11-FAKE16-NEXT:    v_ldexp_f32 v10, v10, 119629; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_219630; GFX11-FAKE16-NEXT:  ; %bb.22: ; %Flow1259631; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v12, s29632; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v10, v139633; GFX11-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit289634; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9635; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v12, -10, v129636; GFX11-FAKE16-NEXT:    v_ldexp_f32 v10, v10, v129637; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9638; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v11, v10, v119639; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v11, v119640; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9641; GFX11-FAKE16-NEXT:    v_fma_f32 v10, -v11, v9, v109642; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v109643; GFX11-FAKE16-NEXT:    v_add_f32_e32 v9, v10, v99644; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9645; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc_lo9646; GFX11-FAKE16-NEXT:    v_ldexp_f32 v8, v9, v89647; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9648; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v8, v89649; GFX11-FAKE16-NEXT:    v_bfi_b32 v8, 0x7fff, v8, v19650; GFX11-FAKE16-NEXT:  .LBB10_24:9651; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v9, 16, v19652; GFX11-FAKE16-NEXT:    v_lshrrev_b32_e32 v10, 16, v39653; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)9654; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v13, |v9|9655; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e64 v12, |v10|9656; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9657; GFX11-FAKE16-NEXT:    v_cmp_ngt_f32_e32 vcc_lo, v13, v129658; GFX11-FAKE16-NEXT:    s_cbranch_vccz .LBB10_269659; GFX11-FAKE16-NEXT:  ; %bb.25: ; %frem.else9660; GFX11-FAKE16-NEXT:    v_bfi_b32 v11, 0x7fff, 0, v99661; GFX11-FAKE16-NEXT:    v_cmp_eq_f32_e32 vcc_lo, v13, v129662; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9663; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v11, v9, v11, vcc_lo9664; GFX11-FAKE16-NEXT:    s_cbranch_execz .LBB10_279665; GFX11-FAKE16-NEXT:    s_branch .LBB10_329666; GFX11-FAKE16-NEXT:  .LBB10_26:9667; GFX11-FAKE16-NEXT:    ; implicit-def: $vgpr119668; GFX11-FAKE16-NEXT:  .LBB10_27: ; %frem.compute9669; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v11, v139670; GFX11-FAKE16-NEXT:    v_frexp_mant_f32_e32 v15, v129671; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v14, v139672; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)9673; GFX11-FAKE16-NEXT:    v_ldexp_f32 v13, v11, 119674; GFX11-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v11, v129675; GFX11-FAKE16-NEXT:    v_ldexp_f32 v12, v15, 19676; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_3)9677; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s2, v149678; GFX11-FAKE16-NEXT:    v_readfirstlane_b32 s3, v119679; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_2)9680; GFX11-FAKE16-NEXT:    v_div_scale_f32 v16, null, v12, v12, 1.09681; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v11, -1, v119682; GFX11-FAKE16-NEXT:    v_rcp_f32_e32 v17, v169683; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9684; GFX11-FAKE16-NEXT:    v_not_b32_e32 v15, v119685; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v15, v15, v149686; GFX11-FAKE16-NEXT:    v_div_scale_f32 v14, vcc_lo, 1.0, v12, 1.09687; GFX11-FAKE16-NEXT:    s_denorm_mode 159688; GFX11-FAKE16-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)9689; GFX11-FAKE16-NEXT:    v_fma_f32 v18, -v16, v17, 1.09690; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9691; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v17, v18, v179692; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v18, v14, v179693; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9694; GFX11-FAKE16-NEXT:    v_fma_f32 v19, -v16, v18, v149695; GFX11-FAKE16-NEXT:    v_fmac_f32_e32 v18, v19, v179696; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9697; GFX11-FAKE16-NEXT:    v_fma_f32 v14, -v16, v18, v149698; GFX11-FAKE16-NEXT:    s_denorm_mode 129699; GFX11-FAKE16-NEXT:    v_div_fmas_f32 v14, v14, v17, v189700; GFX11-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v159701; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2)9702; GFX11-FAKE16-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.09703; GFX11-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_319704; GFX11-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader9705; GFX11-FAKE16-NEXT:    s_sub_i32 s2, s2, s39706; GFX11-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9707; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, 119708; GFX11-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body9709; GFX11-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=19710; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9711; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v16, v139712; GFX11-FAKE16-NEXT:    s_add_i32 s2, s2, -119713; GFX11-FAKE16-NEXT:    s_cmp_gt_i32 s2, 119714; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9715; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v13, v16, v149716; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v13, v139717; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9718; GFX11-FAKE16-NEXT:    v_fma_f32 v13, -v13, v12, v169719; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v139720; GFX11-FAKE16-NEXT:    v_add_f32_e32 v15, v13, v129721; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9722; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo9723; GFX11-FAKE16-NEXT:    v_ldexp_f32 v13, v13, 119724; GFX11-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_299725; GFX11-FAKE16-NEXT:  ; %bb.30: ; %Flow9726; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v15, s29727; GFX11-FAKE16-NEXT:    v_mov_b32_e32 v13, v169728; GFX11-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit9729; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9730; GFX11-FAKE16-NEXT:    v_add_nc_u32_e32 v15, -10, v159731; GFX11-FAKE16-NEXT:    v_ldexp_f32 v13, v13, v159732; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9733; GFX11-FAKE16-NEXT:    v_mul_f32_e32 v14, v13, v149734; GFX11-FAKE16-NEXT:    v_rndne_f32_e32 v14, v149735; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9736; GFX11-FAKE16-NEXT:    v_fma_f32 v13, -v14, v12, v139737; GFX11-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v139738; GFX11-FAKE16-NEXT:    v_add_f32_e32 v12, v13, v129739; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9740; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc_lo9741; GFX11-FAKE16-NEXT:    v_ldexp_f32 v11, v12, v119742; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9743; GFX11-FAKE16-NEXT:    v_cvt_f16_f32_e32 v11, v119744; GFX11-FAKE16-NEXT:    v_bfi_b32 v11, 0x7fff, v11, v99745; GFX11-FAKE16-NEXT:  .LBB10_32: ; %Flow1249746; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v29747; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v0|9748; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo9749; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v5|9750; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v4, vcc_lo9751; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v69752; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo9753; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v1|9754; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v2, 0x7e00, v7, vcc_lo9755; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v39756; GFX11-FAKE16-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_and_b32 v0, 0xffff, v09757; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo9758; GFX11-FAKE16-NEXT:    v_cmp_nle_f16_e64 s2, 0x7c00, |v9|9759; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v1, 0x7e00, v8, vcc_lo9760; GFX11-FAKE16-NEXT:    v_cmp_lg_f16_e32 vcc_lo, 0, v109761; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v0, v2, 16, v09762; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_2) | instid1(VALU_DEP_1)9763; GFX11-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v19764; GFX11-FAKE16-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo9765; GFX11-FAKE16-NEXT:    v_cndmask_b32_e32 v4, 0x7e00, v11, vcc_lo9766; GFX11-FAKE16-NEXT:    v_lshl_or_b32 v1, v4, 16, v19767; GFX11-FAKE16-NEXT:    global_store_b64 v3, v[0:1], s[0:1]9768; GFX11-FAKE16-NEXT:    s_endpgm9769;9770; GFX1150-TRUE16-LABEL: frem_v4f16:9771; GFX1150-TRUE16:       ; %bb.0:9772; GFX1150-TRUE16-NEXT:    s_clause 0x19773; GFX1150-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x249774; GFX1150-TRUE16-NEXT:    s_load_b64 s[8:9], s[4:5], 0x349775; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, 09776; GFX1150-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)9777; GFX1150-TRUE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]9778; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)9779; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s5, v09780; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s7, v19781; GFX1150-TRUE16-NEXT:    global_load_b64 v[0:1], v2, s[8:9] offset:329782; GFX1150-TRUE16-NEXT:    s_and_b32 s3, s5, 0x7fff9783; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)9784; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s8, s39785; GFX1150-TRUE16-NEXT:    s_waitcnt vmcnt(0)9786; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s4, v09787; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s2, v19788; GFX1150-TRUE16-NEXT:    s_and_b32 s6, s4, 0x7fff9789; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s6, s69790; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)9791; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s69792; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_29793; GFX1150-TRUE16-NEXT:  ; %bb.1: ; %frem.else869794; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v0.l, s59795; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 09796; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s8, s69797; GFX1150-TRUE16-NEXT:    s_cselect_b32 s9, -1, 09798; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9799; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v1, v09800; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, s5, v0.l, s99801; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_39802; GFX1150-TRUE16-NEXT:    s_branch .LBB10_89803; GFX1150-TRUE16-NEXT:  .LBB10_2:9804; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr09805; GFX1150-TRUE16-NEXT:  .LBB10_3: ; %frem.compute859806; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s69807; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s89808; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s89809; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)9810; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v1, v1, 19811; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v0, 119812; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s69813; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)9814; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s8, v39815; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.09816; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)9817; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s6, v09818; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v0, -1, v09819; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v6, v59820; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9821; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v4, v09822; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v39823; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.09824; GFX1150-TRUE16-NEXT:    s_denorm_mode 159825; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9826; GFX1150-TRUE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.09827; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v6, v7, v69828; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9829; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v7, v3, v69830; GFX1150-TRUE16-NEXT:    v_fma_f32 v8, -v5, v7, v39831; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9832; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v69833; GFX1150-TRUE16-NEXT:    v_fma_f32 v3, -v5, v7, v39834; GFX1150-TRUE16-NEXT:    s_denorm_mode 129835; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9836; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v79837; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v49838; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.09839; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_79840; GFX1150-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader9841; GFX1150-TRUE16-NEXT:    s_sub_i32 s6, s8, s69842; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9843; GFX1150-TRUE16-NEXT:    s_add_i32 s6, s6, 119844; GFX1150-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body939845; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19846; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9847; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v29848; GFX1150-TRUE16-NEXT:    s_add_i32 s6, s6, -119849; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s6, 119850; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9851; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v2, v5, v39852; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v2, v29853; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9854; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v29855; GFX1150-TRUE16-NEXT:    v_fma_f32 v2, v2, v1, v59856; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9857; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v29858; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v4, v2, v19859; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo9860; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9861; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 119862; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_59863; GFX1150-TRUE16-NEXT:  ; %bb.6: ; %Flow1339864; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, s69865; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, v59866; GFX1150-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit949867; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9868; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v49869; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v49870; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9871; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v3, v2, v39872; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v3, v39873; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9874; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v39875; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v2, v3, v19876; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9877; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v29878; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v1, v2, v19879; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo9880; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9881; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v0, v1, v09882; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s59883; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v09884; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9885; GFX1150-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v19886; GFX1150-TRUE16-NEXT:  .LBB10_8:9887; GFX1150-TRUE16-NEXT:    s_lshr_b32 s8, s5, 169888; GFX1150-TRUE16-NEXT:    s_lshr_b32 s6, s4, 169889; GFX1150-TRUE16-NEXT:    s_and_b32 s5, s8, 0x7fff9890; GFX1150-TRUE16-NEXT:    s_and_b32 s9, s6, 0x7fff9891; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s10, s59892; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s9, s99893; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)9894; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s99895; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_109896; GFX1150-TRUE16-NEXT:  ; %bb.9: ; %frem.else539897; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s89898; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, 09899; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s10, s99900; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, -1, 09901; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9902; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v2, v19903; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.l, s8, v1.l, s119904; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_119905; GFX1150-TRUE16-NEXT:    s_branch .LBB10_169906; GFX1150-TRUE16-NEXT:  .LBB10_10:9907; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr19908; GFX1150-TRUE16-NEXT:  .LBB10_11: ; %frem.compute529909; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s99910; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s109911; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s109912; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)9913; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 19914; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v1, 119915; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s99916; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)9917; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s10, v49918; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.09919; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)9920; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s9, v19921; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v1, -1, v19922; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v7, v69923; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9924; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v5, v19925; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v49926; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.09927; GFX1150-TRUE16-NEXT:    s_denorm_mode 159928; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9929; GFX1150-TRUE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.09930; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v79931; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9932; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v8, v4, v79933; GFX1150-TRUE16-NEXT:    v_fma_f32 v9, -v6, v8, v49934; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9935; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v79936; GFX1150-TRUE16-NEXT:    v_fma_f32 v4, -v6, v8, v49937; GFX1150-TRUE16-NEXT:    s_denorm_mode 129938; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9939; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v89940; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v59941; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.09942; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_159943; GFX1150-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader9944; GFX1150-TRUE16-NEXT:    s_sub_i32 s9, s10, s99945; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)9946; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, 119947; GFX1150-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body609948; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=19949; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)9950; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, v39951; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, -119952; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s9, 119953; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9954; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v3, v6, v49955; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v3, v39956; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9957; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v39958; GFX1150-TRUE16-NEXT:    v_fma_f32 v3, v3, v2, v69959; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9960; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v39961; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v5, v3, v29962; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo9963; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9964; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 119965; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_139966; GFX1150-TRUE16-NEXT:  ; %bb.14: ; %Flow1299967; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, s99968; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v3, v69969; GFX1150-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit619970; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)9971; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v59972; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v59973; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9974; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v3, v49975; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v4, v49976; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)9977; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v49978; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v3, v4, v29979; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)9980; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v39981; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v2, v3, v29982; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo9983; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)9984; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v1, v2, v19985; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s89986; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v19987; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)9988; GFX1150-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v29989; GFX1150-TRUE16-NEXT:  .LBB10_16:9990; GFX1150-TRUE16-NEXT:    s_and_b32 s8, s7, 0x7fff9991; GFX1150-TRUE16-NEXT:    s_and_b32 s9, s2, 0x7fff9992; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s10, s89993; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s9, s99994; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)9995; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s99996; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_189997; GFX1150-TRUE16-NEXT:  ; %bb.17: ; %frem.else209998; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s79999; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 010000; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s10, s910001; GFX1150-TRUE16-NEXT:    s_cselect_b32 s11, -1, 010002; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10003; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v3, v210004; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v2.l, s7, v2.l, s1110005; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_1910006; GFX1150-TRUE16-NEXT:    s_branch .LBB10_2410007; GFX1150-TRUE16-NEXT:  .LBB10_18:10008; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr210009; GFX1150-TRUE16-NEXT:  .LBB10_19: ; %frem.compute1910010; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s910011; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s1010012; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1010013; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10014; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 110015; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v2, 1110016; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s910017; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10018; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s10, v510019; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.010020; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10021; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s9, v210022; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v210023; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v8, v710024; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10025; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v6, v210026; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v510027; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.010028; GFX1150-TRUE16-NEXT:    s_denorm_mode 1510029; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10030; GFX1150-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.010031; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v810032; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10033; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v810034; GFX1150-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v510035; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10036; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v810037; GFX1150-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v510038; GFX1150-TRUE16-NEXT:    s_denorm_mode 1210039; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10040; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v910041; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v610042; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.010043; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_2310044; GFX1150-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader10045; GFX1150-TRUE16-NEXT:    s_sub_i32 s9, s10, s910046; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10047; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, 1110048; GFX1150-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body2710049; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110050; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10051; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, v410052; GFX1150-TRUE16-NEXT:    s_add_i32 s9, s9, -1110053; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s9, 1110054; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10055; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v510056; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v4, v410057; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10058; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v410059; GFX1150-TRUE16-NEXT:    v_fma_f32 v4, v4, v3, v710060; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10061; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v410062; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v310063; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo10064; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10065; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 1110066; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_2110067; GFX1150-TRUE16-NEXT:  ; %bb.22: ; %Flow12510068; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v6, s910069; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v4, v710070; GFX1150-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit2810071; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10072; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v610073; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v610074; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10075; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v510076; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v5, v510077; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10078; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v510079; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v4, v5, v310080; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10081; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v410082; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v310083; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo10084; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10085; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v210086; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v3.l, s710087; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v210088; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10089; GFX1150-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v310090; GFX1150-TRUE16-NEXT:  .LBB10_24:10091; GFX1150-TRUE16-NEXT:    s_lshr_b32 s10, s7, 1610092; GFX1150-TRUE16-NEXT:    s_lshr_b32 s9, s2, 1610093; GFX1150-TRUE16-NEXT:    s_and_b32 s7, s10, 0x7fff10094; GFX1150-TRUE16-NEXT:    s_and_b32 s11, s9, 0x7fff10095; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s12, s710096; GFX1150-TRUE16-NEXT:    s_cvt_f32_f16 s11, s1110097; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10098; GFX1150-TRUE16-NEXT:    s_cmp_ngt_f32 s12, s1110099; GFX1150-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_2610100; GFX1150-TRUE16-NEXT:  ; %bb.25: ; %frem.else10101; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v3.l, s1010102; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v4.l, 010103; GFX1150-TRUE16-NEXT:    s_cmp_eq_f32 s12, s1110104; GFX1150-TRUE16-NEXT:    s_cselect_b32 s13, -1, 010105; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10106; GFX1150-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v4, v310107; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v3.l, s10, v3.l, s1310108; GFX1150-TRUE16-NEXT:    s_cbranch_execz .LBB10_2710109; GFX1150-TRUE16-NEXT:    s_branch .LBB10_3210110; GFX1150-TRUE16-NEXT:  .LBB10_26:10111; GFX1150-TRUE16-NEXT:    ; implicit-def: $vgpr310112; GFX1150-TRUE16-NEXT:  .LBB10_27: ; %frem.compute10113; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, s1110114; GFX1150-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s1210115; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s1210116; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10117; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 110118; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v5, v3, 1110119; GFX1150-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s1110120; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10121; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s12, v610122; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.010123; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10124; GFX1150-TRUE16-NEXT:    v_readfirstlane_b32 s11, v310125; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v3, -1, v310126; GFX1150-TRUE16-NEXT:    v_rcp_f32_e32 v9, v810127; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10128; GFX1150-TRUE16-NEXT:    v_not_b32_e32 v7, v310129; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v7, v7, v610130; GFX1150-TRUE16-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.010131; GFX1150-TRUE16-NEXT:    s_denorm_mode 1510132; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10133; GFX1150-TRUE16-NEXT:    v_fma_f32 v10, -v8, v9, 1.010134; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v910135; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10136; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v10, v6, v910137; GFX1150-TRUE16-NEXT:    v_fma_f32 v11, -v8, v10, v610138; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10139; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v10, v11, v910140; GFX1150-TRUE16-NEXT:    v_fma_f32 v6, -v8, v10, v610141; GFX1150-TRUE16-NEXT:    s_denorm_mode 1210142; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10143; GFX1150-TRUE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v1010144; GFX1150-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v710145; GFX1150-TRUE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.010146; GFX1150-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_3110147; GFX1150-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader10148; GFX1150-TRUE16-NEXT:    s_sub_i32 s11, s12, s1110149; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10150; GFX1150-TRUE16-NEXT:    s_add_i32 s11, s11, 1110151; GFX1150-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body10152; GFX1150-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110153; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10154; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v8, v510155; GFX1150-TRUE16-NEXT:    s_add_i32 s11, s11, -1110156; GFX1150-TRUE16-NEXT:    s_cmp_gt_i32 s11, 1110157; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10158; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v5, v8, v610159; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v5, v510160; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10161; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v510162; GFX1150-TRUE16-NEXT:    v_fma_f32 v5, v5, v4, v810163; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10164; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v510165; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v7, v5, v410166; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo10167; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10168; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v5, v5, 1110169; GFX1150-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_2910170; GFX1150-TRUE16-NEXT:  ; %bb.30: ; %Flow10171; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v7, s1110172; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v5, v810173; GFX1150-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit10174; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10175; GFX1150-TRUE16-NEXT:    v_add_nc_u32_e32 v7, -10, v710176; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v5, v5, v710177; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10178; GFX1150-TRUE16-NEXT:    v_mul_f32_e32 v6, v5, v610179; GFX1150-TRUE16-NEXT:    v_rndne_f32_e32 v6, v610180; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10181; GFX1150-TRUE16-NEXT:    v_xor_b32_e32 v6, 0x80000000, v610182; GFX1150-TRUE16-NEXT:    v_fmac_f32_e32 v5, v6, v410183; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10184; GFX1150-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v510185; GFX1150-TRUE16-NEXT:    v_add_f32_e32 v4, v5, v410186; GFX1150-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo10187; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10188; GFX1150-TRUE16-NEXT:    v_ldexp_f32 v3, v4, v310189; GFX1150-TRUE16-NEXT:    v_mov_b16_e32 v4.l, s1010190; GFX1150-TRUE16-NEXT:    v_cvt_f16_f32_e32 v3.l, v310191; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10192; GFX1150-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, v410193; GFX1150-TRUE16-NEXT:  .LBB10_32: ; %Flow12410194; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s4, 010195; GFX1150-TRUE16-NEXT:    s_cselect_b32 s4, -1, 010196; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s3, 0x7c0010197; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 010198; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10199; GFX1150-TRUE16-NEXT:    s_and_b32 s3, s3, s410200; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s6, 010201; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v0.l, s310202; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 010203; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s5, 0x7c0010204; GFX1150-TRUE16-NEXT:    s_cselect_b32 s4, -1, 010205; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10206; GFX1150-TRUE16-NEXT:    s_and_b32 s3, s4, s310207; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s2, 010208; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v1.l, s310209; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 010210; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s8, 0x7c0010211; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 010212; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10213; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s3, s210214; GFX1150-TRUE16-NEXT:    s_cmp_lg_f16 s9, 010215; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.l, 0x7e00, v2.l, s210216; GFX1150-TRUE16-NEXT:    v_mov_b32_e32 v2, 010217; GFX1150-TRUE16-NEXT:    s_cselect_b32 s2, -1, 010218; GFX1150-TRUE16-NEXT:    s_cmp_nge_f16 s7, 0x7c0010219; GFX1150-TRUE16-NEXT:    s_cselect_b32 s3, -1, 010220; GFX1150-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)10221; GFX1150-TRUE16-NEXT:    s_and_b32 s2, s3, s210222; GFX1150-TRUE16-NEXT:    v_cndmask_b16 v1.h, 0x7e00, v3.l, s210223; GFX1150-TRUE16-NEXT:    global_store_b64 v2, v[0:1], s[0:1]10224; GFX1150-TRUE16-NEXT:    s_endpgm10225;10226; GFX1150-FAKE16-LABEL: frem_v4f16:10227; GFX1150-FAKE16:       ; %bb.0:10228; GFX1150-FAKE16-NEXT:    s_clause 0x110229; GFX1150-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2410230; GFX1150-FAKE16-NEXT:    s_load_b64 s[8:9], s[4:5], 0x3410231; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, 010232; GFX1150-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)10233; GFX1150-FAKE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]10234; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)10235; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s5, v010236; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s7, v110237; GFX1150-FAKE16-NEXT:    global_load_b64 v[0:1], v2, s[8:9] offset:3210238; GFX1150-FAKE16-NEXT:    s_and_b32 s3, s5, 0x7fff10239; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)10240; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s8, s310241; GFX1150-FAKE16-NEXT:    s_waitcnt vmcnt(0)10242; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s4, v010243; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s2, v110244; GFX1150-FAKE16-NEXT:    s_and_b32 s6, s4, 0x7fff10245; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s6, s610246; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10247; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s610248; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_210249; GFX1150-FAKE16-NEXT:  ; %bb.1: ; %frem.else8610250; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s8, s610251; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, 0, s510252; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 010253; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10254; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s5, v0, vcc_lo10255; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_310256; GFX1150-FAKE16-NEXT:    s_branch .LBB10_810257; GFX1150-FAKE16-NEXT:  .LBB10_2:10258; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr010259; GFX1150-FAKE16-NEXT:  .LBB10_3: ; %frem.compute8510260; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s610261; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s810262; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s810263; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10264; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v1, v1, 110265; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v0, 1110266; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s610267; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10268; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s8, v310269; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.010270; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10271; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s6, v010272; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v0, -1, v010273; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v6, v510274; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10275; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v4, v010276; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, v4, v310277; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.010278; GFX1150-FAKE16-NEXT:    s_denorm_mode 1510279; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10280; GFX1150-FAKE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.010281; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v6, v7, v610282; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10283; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v7, v3, v610284; GFX1150-FAKE16-NEXT:    v_fma_f32 v8, -v5, v7, v310285; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10286; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v610287; GFX1150-FAKE16-NEXT:    v_fma_f32 v3, -v5, v7, v310288; GFX1150-FAKE16-NEXT:    s_denorm_mode 1210289; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10290; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v710291; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v410292; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.010293; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_710294; GFX1150-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader10295; GFX1150-FAKE16-NEXT:    s_sub_i32 s6, s8, s610296; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10297; GFX1150-FAKE16-NEXT:    s_add_i32 s6, s6, 1110298; GFX1150-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body9310299; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110300; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10301; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v210302; GFX1150-FAKE16-NEXT:    s_add_i32 s6, s6, -1110303; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s6, 1110304; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10305; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v2, v5, v310306; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v2, v210307; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10308; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v210309; GFX1150-FAKE16-NEXT:    v_fma_f32 v2, v2, v1, v510310; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10311; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v210312; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v4, v2, v110313; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo10314; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10315; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 1110316; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_510317; GFX1150-FAKE16-NEXT:  ; %bb.6: ; %Flow13310318; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, s610319; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v2, v510320; GFX1150-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit9410321; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10322; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v410323; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v410324; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10325; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v2, v310326; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v3, v310327; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10328; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v310329; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v2, v3, v110330; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10331; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v210332; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v1, v2, v110333; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo10334; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10335; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v0, v1, v010336; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v010337; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10338; GFX1150-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s510339; GFX1150-FAKE16-NEXT:  .LBB10_8:10340; GFX1150-FAKE16-NEXT:    s_lshr_b32 s8, s5, 1610341; GFX1150-FAKE16-NEXT:    s_lshr_b32 s6, s4, 1610342; GFX1150-FAKE16-NEXT:    s_and_b32 s5, s8, 0x7fff10343; GFX1150-FAKE16-NEXT:    s_and_b32 s9, s6, 0x7fff10344; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s10, s510345; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s9, s910346; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10347; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s910348; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_1010349; GFX1150-FAKE16-NEXT:  ; %bb.9: ; %frem.else5310350; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s10, s910351; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, 0, s810352; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 010353; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10354; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo10355; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_1110356; GFX1150-FAKE16-NEXT:    s_branch .LBB10_1610357; GFX1150-FAKE16-NEXT:  .LBB10_10:10358; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr110359; GFX1150-FAKE16-NEXT:  .LBB10_11: ; %frem.compute5210360; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s910361; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s1010362; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s1010363; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10364; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 110365; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v1, 1110366; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s910367; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10368; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s10, v410369; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.010370; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10371; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s9, v110372; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v1, -1, v110373; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v7, v610374; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10375; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v5, v110376; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, v5, v410377; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.010378; GFX1150-FAKE16-NEXT:    s_denorm_mode 1510379; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10380; GFX1150-FAKE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.010381; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v710382; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10383; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v8, v4, v710384; GFX1150-FAKE16-NEXT:    v_fma_f32 v9, -v6, v8, v410385; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10386; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v710387; GFX1150-FAKE16-NEXT:    v_fma_f32 v4, -v6, v8, v410388; GFX1150-FAKE16-NEXT:    s_denorm_mode 1210389; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10390; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v810391; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v510392; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.010393; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_1510394; GFX1150-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader10395; GFX1150-FAKE16-NEXT:    s_sub_i32 s9, s10, s910396; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10397; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, 1110398; GFX1150-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body6010399; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110400; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10401; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, v310402; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, -1110403; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s9, 1110404; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10405; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v3, v6, v410406; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v3, v310407; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10408; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v310409; GFX1150-FAKE16-NEXT:    v_fma_f32 v3, v3, v2, v610410; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10411; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v310412; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v5, v3, v210413; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo10414; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10415; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 1110416; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_1310417; GFX1150-FAKE16-NEXT:  ; %bb.14: ; %Flow12910418; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, s910419; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v3, v610420; GFX1150-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit6110421; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10422; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v510423; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v510424; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10425; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v3, v410426; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v4, v410427; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10428; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v410429; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v3, v4, v210430; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10431; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v310432; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v2, v3, v210433; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo10434; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10435; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v1, v2, v110436; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v110437; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10438; GFX1150-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s810439; GFX1150-FAKE16-NEXT:  .LBB10_16:10440; GFX1150-FAKE16-NEXT:    s_and_b32 s8, s7, 0x7fff10441; GFX1150-FAKE16-NEXT:    s_and_b32 s9, s2, 0x7fff10442; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s10, s810443; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s9, s910444; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10445; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s910446; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_1810447; GFX1150-FAKE16-NEXT:  ; %bb.17: ; %frem.else2010448; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s10, s910449; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, 0, s710450; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 010451; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10452; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v2, s7, v2, vcc_lo10453; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_1910454; GFX1150-FAKE16-NEXT:    s_branch .LBB10_2410455; GFX1150-FAKE16-NEXT:  .LBB10_18:10456; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr210457; GFX1150-FAKE16-NEXT:  .LBB10_19: ; %frem.compute1910458; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s910459; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s1010460; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1010461; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10462; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 110463; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v2, 1110464; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s910465; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10466; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s10, v510467; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.010468; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10469; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s9, v210470; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v210471; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v8, v710472; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10473; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v6, v210474; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v510475; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.010476; GFX1150-FAKE16-NEXT:    s_denorm_mode 1510477; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10478; GFX1150-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.010479; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v810480; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10481; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v810482; GFX1150-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v510483; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10484; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v810485; GFX1150-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v510486; GFX1150-FAKE16-NEXT:    s_denorm_mode 1210487; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10488; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v910489; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v610490; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.010491; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_2310492; GFX1150-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader10493; GFX1150-FAKE16-NEXT:    s_sub_i32 s9, s10, s910494; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10495; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, 1110496; GFX1150-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body2710497; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110498; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10499; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, v410500; GFX1150-FAKE16-NEXT:    s_add_i32 s9, s9, -1110501; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s9, 1110502; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10503; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v510504; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v4, v410505; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10506; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v410507; GFX1150-FAKE16-NEXT:    v_fma_f32 v4, v4, v3, v710508; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10509; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v410510; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v310511; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo10512; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10513; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 1110514; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_2110515; GFX1150-FAKE16-NEXT:  ; %bb.22: ; %Flow12510516; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v6, s910517; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v4, v710518; GFX1150-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit2810519; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10520; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v610521; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v610522; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10523; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v510524; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v5, v510525; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10526; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v510527; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v4, v5, v310528; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10529; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v410530; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v310531; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo10532; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10533; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v210534; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v210535; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10536; GFX1150-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, s710537; GFX1150-FAKE16-NEXT:  .LBB10_24:10538; GFX1150-FAKE16-NEXT:    s_lshr_b32 s10, s7, 1610539; GFX1150-FAKE16-NEXT:    s_lshr_b32 s9, s2, 1610540; GFX1150-FAKE16-NEXT:    s_and_b32 s7, s10, 0x7fff10541; GFX1150-FAKE16-NEXT:    s_and_b32 s11, s9, 0x7fff10542; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s12, s710543; GFX1150-FAKE16-NEXT:    s_cvt_f32_f16 s11, s1110544; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10545; GFX1150-FAKE16-NEXT:    s_cmp_ngt_f32 s12, s1110546; GFX1150-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_2610547; GFX1150-FAKE16-NEXT:  ; %bb.25: ; %frem.else10548; GFX1150-FAKE16-NEXT:    s_cmp_eq_f32 s12, s1110549; GFX1150-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, 0, s1010550; GFX1150-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 010551; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10552; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, s10, v3, vcc_lo10553; GFX1150-FAKE16-NEXT:    s_cbranch_execz .LBB10_2710554; GFX1150-FAKE16-NEXT:    s_branch .LBB10_3210555; GFX1150-FAKE16-NEXT:  .LBB10_26:10556; GFX1150-FAKE16-NEXT:    ; implicit-def: $vgpr310557; GFX1150-FAKE16-NEXT:  .LBB10_27: ; %frem.compute10558; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, s1110559; GFX1150-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s1210560; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s1210561; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10562; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 110563; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v5, v3, 1110564; GFX1150-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s1110565; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10566; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s12, v610567; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.010568; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10569; GFX1150-FAKE16-NEXT:    v_readfirstlane_b32 s11, v310570; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v3, -1, v310571; GFX1150-FAKE16-NEXT:    v_rcp_f32_e32 v9, v810572; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10573; GFX1150-FAKE16-NEXT:    v_not_b32_e32 v7, v310574; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v7, v7, v610575; GFX1150-FAKE16-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.010576; GFX1150-FAKE16-NEXT:    s_denorm_mode 1510577; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10578; GFX1150-FAKE16-NEXT:    v_fma_f32 v10, -v8, v9, 1.010579; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v910580; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10581; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v10, v6, v910582; GFX1150-FAKE16-NEXT:    v_fma_f32 v11, -v8, v10, v610583; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10584; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v10, v11, v910585; GFX1150-FAKE16-NEXT:    v_fma_f32 v6, -v8, v10, v610586; GFX1150-FAKE16-NEXT:    s_denorm_mode 1210587; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10588; GFX1150-FAKE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v1010589; GFX1150-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v710590; GFX1150-FAKE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.010591; GFX1150-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_3110592; GFX1150-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader10593; GFX1150-FAKE16-NEXT:    s_sub_i32 s11, s12, s1110594; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)10595; GFX1150-FAKE16-NEXT:    s_add_i32 s11, s11, 1110596; GFX1150-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body10597; GFX1150-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=110598; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)10599; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v8, v510600; GFX1150-FAKE16-NEXT:    s_add_i32 s11, s11, -1110601; GFX1150-FAKE16-NEXT:    s_cmp_gt_i32 s11, 1110602; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10603; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v5, v8, v610604; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v5, v510605; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10606; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v510607; GFX1150-FAKE16-NEXT:    v_fma_f32 v5, v5, v4, v810608; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10609; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v510610; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v7, v5, v410611; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo10612; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10613; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v5, v5, 1110614; GFX1150-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_2910615; GFX1150-FAKE16-NEXT:  ; %bb.30: ; %Flow10616; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v7, s1110617; GFX1150-FAKE16-NEXT:    v_mov_b32_e32 v5, v810618; GFX1150-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit10619; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10620; GFX1150-FAKE16-NEXT:    v_add_nc_u32_e32 v7, -10, v710621; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v5, v5, v710622; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10623; GFX1150-FAKE16-NEXT:    v_mul_f32_e32 v6, v5, v610624; GFX1150-FAKE16-NEXT:    v_rndne_f32_e32 v6, v610625; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10626; GFX1150-FAKE16-NEXT:    v_xor_b32_e32 v6, 0x80000000, v610627; GFX1150-FAKE16-NEXT:    v_fmac_f32_e32 v5, v6, v410628; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10629; GFX1150-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v510630; GFX1150-FAKE16-NEXT:    v_add_f32_e32 v4, v5, v410631; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo10632; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10633; GFX1150-FAKE16-NEXT:    v_ldexp_f32 v3, v4, v310634; GFX1150-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v310635; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10636; GFX1150-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, s1010637; GFX1150-FAKE16-NEXT:  .LBB10_32: ; %Flow12410638; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s4, 010639; GFX1150-FAKE16-NEXT:    s_cselect_b32 s4, -1, 010640; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s3, 0x7c0010641; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 010642; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)10643; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s410644; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s6, 010645; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v0, vcc_lo10646; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 010647; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s5, 0x7c0010648; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v010649; GFX1150-FAKE16-NEXT:    s_cselect_b32 s4, -1, 010650; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)10651; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s4, s310652; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s2, 010653; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v4, 0x7e00, v1, vcc_lo10654; GFX1150-FAKE16-NEXT:    s_cselect_b32 s2, -1, 010655; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s8, 0x7c0010656; GFX1150-FAKE16-NEXT:    v_lshl_or_b32 v0, v4, 16, v010657; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 010658; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(VALU_DEP_1)10659; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s210660; GFX1150-FAKE16-NEXT:    s_cmp_lg_f16 s9, 010661; GFX1150-FAKE16-NEXT:    v_dual_cndmask_b32 v1, 0x7e00, v2 :: v_dual_mov_b32 v2, 010662; GFX1150-FAKE16-NEXT:    s_cselect_b32 s2, -1, 010663; GFX1150-FAKE16-NEXT:    s_cmp_nge_f16 s7, 0x7c0010664; GFX1150-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v110665; GFX1150-FAKE16-NEXT:    s_cselect_b32 s3, -1, 010666; GFX1150-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10667; GFX1150-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s210668; GFX1150-FAKE16-NEXT:    v_cndmask_b32_e32 v3, 0x7e00, v3, vcc_lo10669; GFX1150-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v110670; GFX1150-FAKE16-NEXT:    global_store_b64 v2, v[0:1], s[0:1]10671; GFX1150-FAKE16-NEXT:    s_endpgm10672;10673; GFX1200-TRUE16-LABEL: frem_v4f16:10674; GFX1200-TRUE16:       ; %bb.0:10675; GFX1200-TRUE16-NEXT:    s_clause 0x110676; GFX1200-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2410677; GFX1200-TRUE16-NEXT:    s_load_b64 s[8:9], s[4:5], 0x3410678; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, 010679; GFX1200-TRUE16-NEXT:    s_wait_kmcnt 0x010680; GFX1200-TRUE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]10681; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x010682; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s5, v010683; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s7, v110684; GFX1200-TRUE16-NEXT:    global_load_b64 v[0:1], v2, s[8:9] offset:3210685; GFX1200-TRUE16-NEXT:    s_and_b32 s3, s5, 0x7fff10686; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)10687; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s8, s310688; GFX1200-TRUE16-NEXT:    s_wait_loadcnt 0x010689; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s4, v010690; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s2, v110691; GFX1200-TRUE16-NEXT:    s_and_b32 s6, s4, 0x7fff10692; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s6, s610693; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)10694; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s8, s610695; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_210696; GFX1200-TRUE16-NEXT:  ; %bb.1: ; %frem.else8610697; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v0.l, s510698; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, 010699; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s8, s610700; GFX1200-TRUE16-NEXT:    s_cselect_b32 s9, -1, 010701; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10702; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v1, v010703; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, s5, v0.l, s910704; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_310705; GFX1200-TRUE16-NEXT:    s_branch .LBB10_810706; GFX1200-TRUE16-NEXT:  .LBB10_2:10707; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr010708; GFX1200-TRUE16-NEXT:  .LBB10_3: ; %frem.compute8510709; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s610710; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v0, s810711; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s810712; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10713; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v1, v1, 110714; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v0, 1110715; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s610716; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10717; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s8, v310718; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.010719; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10720; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s6, v010721; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v0, -1, v010722; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v6, v510723; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10724; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v4, v010725; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, v4, v310726; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.010727; GFX1200-TRUE16-NEXT:    s_denorm_mode 1510728; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10729; GFX1200-TRUE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.010730; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v6, v7, v610731; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10732; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v7, v3, v610733; GFX1200-TRUE16-NEXT:    v_fma_f32 v8, -v5, v7, v310734; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10735; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v610736; GFX1200-TRUE16-NEXT:    v_fma_f32 v3, -v5, v7, v310737; GFX1200-TRUE16-NEXT:    s_denorm_mode 1210738; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10739; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v710740; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v410741; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.010742; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_710743; GFX1200-TRUE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader10744; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s6, s8, s610745; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10746; GFX1200-TRUE16-NEXT:    s_add_co_i32 s6, s6, 1110747; GFX1200-TRUE16-NEXT:  .LBB10_5: ; %frem.loop_body9310748; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110749; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10750; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v210751; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10752; GFX1200-TRUE16-NEXT:    s_add_co_i32 s6, s6, -1110753; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10754; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s6, 1110755; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v2, v5, v310756; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10757; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v2, v210758; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v210759; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10760; GFX1200-TRUE16-NEXT:    v_fma_f32 v2, v2, v1, v510761; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v210762; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v4, v2, v110763; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10764; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10765; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo10766; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 1110767; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_510768; GFX1200-TRUE16-NEXT:  ; %bb.6: ; %Flow13310769; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, s610770; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, v510771; GFX1200-TRUE16-NEXT:  .LBB10_7: ; %frem.loop_exit9410772; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10773; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v4, -10, v410774; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, v410775; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10776; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v3, v2, v310777; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v3, v310778; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10779; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v310780; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v2, v3, v110781; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)10782; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v210783; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v1, v2, v110784; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10785; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo10786; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10787; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v0, v1, v010788; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s510789; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v0.l, v010790; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10791; GFX1200-TRUE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, v110792; GFX1200-TRUE16-NEXT:  .LBB10_8:10793; GFX1200-TRUE16-NEXT:    s_lshr_b32 s8, s5, 1610794; GFX1200-TRUE16-NEXT:    s_lshr_b32 s6, s4, 1610795; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10796; GFX1200-TRUE16-NEXT:    s_and_b32 s5, s8, 0x7fff10797; GFX1200-TRUE16-NEXT:    s_and_b32 s9, s6, 0x7fff10798; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10799; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s10, s510800; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s9, s910801; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10802; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)10803; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s910804; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_1010805; GFX1200-TRUE16-NEXT:  ; %bb.9: ; %frem.else5310806; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v1.l, s810807; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, 010808; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s10, s910809; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, -1, 010810; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10811; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v2, v110812; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.l, s8, v1.l, s1110813; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_1110814; GFX1200-TRUE16-NEXT:    s_branch .LBB10_1610815; GFX1200-TRUE16-NEXT:  .LBB10_10:10816; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr110817; GFX1200-TRUE16-NEXT:  .LBB10_11: ; %frem.compute5210818; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s910819; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v1, s1010820; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s1010821; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10822; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v2, 110823; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v1, 1110824; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s910825; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10826; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s10, v410827; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.010828; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10829; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s9, v110830; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v1, -1, v110831; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v7, v610832; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10833; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v5, v110834; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, v5, v410835; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.010836; GFX1200-TRUE16-NEXT:    s_denorm_mode 1510837; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10838; GFX1200-TRUE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.010839; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v7, v8, v710840; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10841; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v8, v4, v710842; GFX1200-TRUE16-NEXT:    v_fma_f32 v9, -v6, v8, v410843; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10844; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v710845; GFX1200-TRUE16-NEXT:    v_fma_f32 v4, -v6, v8, v410846; GFX1200-TRUE16-NEXT:    s_denorm_mode 1210847; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10848; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10849; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v810850; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v510851; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.010852; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_1510853; GFX1200-TRUE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader10854; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s9, s10, s910855; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10856; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, 1110857; GFX1200-TRUE16-NEXT:  .LBB10_13: ; %frem.loop_body6010858; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110859; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10860; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, v310861; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10862; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, -1110863; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10864; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s9, 1110865; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v3, v6, v410866; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10867; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v3, v310868; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v310869; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10870; GFX1200-TRUE16-NEXT:    v_fma_f32 v3, v3, v2, v610871; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v310872; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v5, v3, v210873; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10874; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10875; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo10876; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 1110877; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_1310878; GFX1200-TRUE16-NEXT:  ; %bb.14: ; %Flow12910879; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, s910880; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v3, v610881; GFX1200-TRUE16-NEXT:  .LBB10_15: ; %frem.loop_exit6110882; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10883; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v5, -10, v510884; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, v510885; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10886; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v3, v410887; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v4, v410888; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10889; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v410890; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v3, v4, v210891; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)10892; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v310893; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v2, v3, v210894; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10895; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo10896; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10897; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v1, v2, v110898; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s810899; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v1.l, v110900; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10901; GFX1200-TRUE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, v210902; GFX1200-TRUE16-NEXT:  .LBB10_16:10903; GFX1200-TRUE16-NEXT:    s_and_b32 s8, s7, 0x7fff10904; GFX1200-TRUE16-NEXT:    s_and_b32 s9, s2, 0x7fff10905; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10906; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s10, s810907; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s9, s910908; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10909; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)10910; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s10, s910911; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_1810912; GFX1200-TRUE16-NEXT:  ; %bb.17: ; %frem.else2010913; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v2.l, s710914; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v3.l, 010915; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s10, s910916; GFX1200-TRUE16-NEXT:    s_cselect_b32 s11, -1, 010917; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)10918; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v3, v210919; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10920; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v2.l, s7, v2.l, s1110921; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_1910922; GFX1200-TRUE16-NEXT:    s_branch .LBB10_2410923; GFX1200-TRUE16-NEXT:  .LBB10_18:10924; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr210925; GFX1200-TRUE16-NEXT:  .LBB10_19: ; %frem.compute1910926; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s910927; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v2, s1010928; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1010929; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)10930; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v3, 110931; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v2, 1110932; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s910933; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)10934; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s10, v510935; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.010936; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)10937; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s9, v210938; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v2, -1, v210939; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v8, v710940; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10941; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v6, v210942; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, v6, v510943; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.010944; GFX1200-TRUE16-NEXT:    s_denorm_mode 1510945; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10946; GFX1200-TRUE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.010947; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v8, v9, v810948; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10949; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v9, v5, v810950; GFX1200-TRUE16-NEXT:    v_fma_f32 v10, -v7, v9, v510951; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10952; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v810953; GFX1200-TRUE16-NEXT:    v_fma_f32 v5, -v7, v9, v510954; GFX1200-TRUE16-NEXT:    s_denorm_mode 1210955; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10956; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)10957; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v910958; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v610959; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.010960; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_2310961; GFX1200-TRUE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader10962; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s9, s10, s910963; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10964; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, 1110965; GFX1200-TRUE16-NEXT:  .LBB10_21: ; %frem.loop_body2710966; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=110967; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)10968; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, v410969; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10970; GFX1200-TRUE16-NEXT:    s_add_co_i32 s9, s9, -1110971; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)10972; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s9, 1110973; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v4, v7, v510974; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10975; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v4, v410976; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v410977; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10978; GFX1200-TRUE16-NEXT:    v_fma_f32 v4, v4, v3, v710979; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v410980; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v6, v4, v310981; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)10982; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10983; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo10984; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 1110985; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_2110986; GFX1200-TRUE16-NEXT:  ; %bb.22: ; %Flow12510987; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v6, s910988; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v4, v710989; GFX1200-TRUE16-NEXT:  .LBB10_23: ; %frem.loop_exit2810990; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)10991; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v6, -10, v610992; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, v610993; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10994; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v5, v4, v510995; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v5, v510996; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)10997; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v510998; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v4, v5, v310999; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11000; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v411001; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v3, v4, v311002; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11003; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo11004; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11005; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v2, v3, v211006; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v3.l, s711007; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v2.l, v211008; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11009; GFX1200-TRUE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, v311010; GFX1200-TRUE16-NEXT:  .LBB10_24:11011; GFX1200-TRUE16-NEXT:    s_lshr_b32 s10, s7, 1611012; GFX1200-TRUE16-NEXT:    s_lshr_b32 s9, s2, 1611013; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11014; GFX1200-TRUE16-NEXT:    s_and_b32 s7, s10, 0x7fff11015; GFX1200-TRUE16-NEXT:    s_and_b32 s11, s9, 0x7fff11016; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11017; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s12, s711018; GFX1200-TRUE16-NEXT:    s_cvt_f32_f16 s11, s1111019; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11020; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)11021; GFX1200-TRUE16-NEXT:    s_cmp_ngt_f32 s12, s1111022; GFX1200-TRUE16-NEXT:    s_cbranch_scc0 .LBB10_2611023; GFX1200-TRUE16-NEXT:  ; %bb.25: ; %frem.else11024; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v3.l, s1011025; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v4.l, 011026; GFX1200-TRUE16-NEXT:    s_cmp_eq_f32 s12, s1111027; GFX1200-TRUE16-NEXT:    s_cselect_b32 s13, -1, 011028; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11029; GFX1200-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v4, v311030; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v3.l, s10, v3.l, s1311031; GFX1200-TRUE16-NEXT:    s_cbranch_execz .LBB10_2711032; GFX1200-TRUE16-NEXT:    s_branch .LBB10_3211033; GFX1200-TRUE16-NEXT:  .LBB10_26:11034; GFX1200-TRUE16-NEXT:    ; implicit-def: $vgpr311035; GFX1200-TRUE16-NEXT:  .LBB10_27: ; %frem.compute11036; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v4, s1111037; GFX1200-TRUE16-NEXT:    v_frexp_mant_f32_e32 v3, s1211038; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s1211039; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)11040; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v4, v4, 111041; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v5, v3, 1111042; GFX1200-TRUE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s1111043; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11044; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s12, v611045; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.011046; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)11047; GFX1200-TRUE16-NEXT:    v_readfirstlane_b32 s11, v311048; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v3, -1, v311049; GFX1200-TRUE16-NEXT:    v_rcp_f32_e32 v9, v811050; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11051; GFX1200-TRUE16-NEXT:    v_not_b32_e32 v7, v311052; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v7, v7, v611053; GFX1200-TRUE16-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.011054; GFX1200-TRUE16-NEXT:    s_denorm_mode 1511055; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11056; GFX1200-TRUE16-NEXT:    v_fma_f32 v10, -v8, v9, 1.011057; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v9, v10, v911058; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11059; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v10, v6, v911060; GFX1200-TRUE16-NEXT:    v_fma_f32 v11, -v8, v10, v611061; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11062; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v10, v11, v911063; GFX1200-TRUE16-NEXT:    v_fma_f32 v6, -v8, v10, v611064; GFX1200-TRUE16-NEXT:    s_denorm_mode 1211065; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11066; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11067; GFX1200-TRUE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v1011068; GFX1200-TRUE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v711069; GFX1200-TRUE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.011070; GFX1200-TRUE16-NEXT:    s_cbranch_vccnz .LBB10_3111071; GFX1200-TRUE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader11072; GFX1200-TRUE16-NEXT:    s_sub_co_i32 s11, s12, s1111073; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11074; GFX1200-TRUE16-NEXT:    s_add_co_i32 s11, s11, 1111075; GFX1200-TRUE16-NEXT:  .LBB10_29: ; %frem.loop_body11076; GFX1200-TRUE16-NEXT:    ; =>This Inner Loop Header: Depth=111077; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11078; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v8, v511079; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11080; GFX1200-TRUE16-NEXT:    s_add_co_i32 s11, s11, -1111081; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11082; GFX1200-TRUE16-NEXT:    s_cmp_gt_i32 s11, 1111083; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v5, v8, v611084; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11085; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v5, v511086; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v511087; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11088; GFX1200-TRUE16-NEXT:    v_fma_f32 v5, v5, v4, v811089; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v511090; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v7, v5, v411091; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11092; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11093; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo11094; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v5, v5, 1111095; GFX1200-TRUE16-NEXT:    s_cbranch_scc1 .LBB10_2911096; GFX1200-TRUE16-NEXT:  ; %bb.30: ; %Flow11097; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v7, s1111098; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v5, v811099; GFX1200-TRUE16-NEXT:  .LBB10_31: ; %frem.loop_exit11100; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11101; GFX1200-TRUE16-NEXT:    v_add_nc_u32_e32 v7, -10, v711102; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v5, v5, v711103; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11104; GFX1200-TRUE16-NEXT:    v_mul_f32_e32 v6, v5, v611105; GFX1200-TRUE16-NEXT:    v_rndne_f32_e32 v6, v611106; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11107; GFX1200-TRUE16-NEXT:    v_xor_b32_e32 v6, 0x80000000, v611108; GFX1200-TRUE16-NEXT:    v_fmac_f32_e32 v5, v6, v411109; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11110; GFX1200-TRUE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v511111; GFX1200-TRUE16-NEXT:    v_add_f32_e32 v4, v5, v411112; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_va_vcc(0)11113; GFX1200-TRUE16-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo11114; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11115; GFX1200-TRUE16-NEXT:    v_ldexp_f32 v3, v4, v311116; GFX1200-TRUE16-NEXT:    v_mov_b16_e32 v4.l, s1011117; GFX1200-TRUE16-NEXT:    v_cvt_f16_f32_e32 v3.l, v311118; GFX1200-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11119; GFX1200-TRUE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, v411120; GFX1200-TRUE16-NEXT:  .LBB10_32: ; %Flow12411121; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s4, 011122; GFX1200-TRUE16-NEXT:    s_cselect_b32 s4, -1, 011123; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s3, 0x7c0011124; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 011125; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11126; GFX1200-TRUE16-NEXT:    s_and_b32 s3, s3, s411127; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s6, 011128; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.l, 0x7e00, v0.l, s311129; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 011130; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s5, 0x7c0011131; GFX1200-TRUE16-NEXT:    s_cselect_b32 s4, -1, 011132; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11133; GFX1200-TRUE16-NEXT:    s_and_b32 s3, s4, s311134; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s2, 011135; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11136; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v0.h, 0x7e00, v1.l, s311137; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 011138; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s8, 0x7c0011139; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 011140; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11141; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s3, s211142; GFX1200-TRUE16-NEXT:    s_cmp_lg_f16 s9, 011143; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11144; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.l, 0x7e00, v2.l, s211145; GFX1200-TRUE16-NEXT:    v_mov_b32_e32 v2, 011146; GFX1200-TRUE16-NEXT:    s_cselect_b32 s2, -1, 011147; GFX1200-TRUE16-NEXT:    s_cmp_nge_f16 s7, 0x7c0011148; GFX1200-TRUE16-NEXT:    s_cselect_b32 s3, -1, 011149; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11150; GFX1200-TRUE16-NEXT:    s_and_b32 s2, s3, s211151; GFX1200-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11152; GFX1200-TRUE16-NEXT:    v_cndmask_b16 v1.h, 0x7e00, v3.l, s211153; GFX1200-TRUE16-NEXT:    global_store_b64 v2, v[0:1], s[0:1]11154; GFX1200-TRUE16-NEXT:    s_endpgm11155;11156; GFX1200-FAKE16-LABEL: frem_v4f16:11157; GFX1200-FAKE16:       ; %bb.0:11158; GFX1200-FAKE16-NEXT:    s_clause 0x111159; GFX1200-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2411160; GFX1200-FAKE16-NEXT:    s_load_b64 s[8:9], s[4:5], 0x3411161; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, 011162; GFX1200-FAKE16-NEXT:    s_wait_kmcnt 0x011163; GFX1200-FAKE16-NEXT:    global_load_b64 v[0:1], v2, s[2:3]11164; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x011165; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s5, v011166; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s7, v111167; GFX1200-FAKE16-NEXT:    global_load_b64 v[0:1], v2, s[8:9] offset:3211168; GFX1200-FAKE16-NEXT:    s_and_b32 s3, s5, 0x7fff11169; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_4) | instid1(SALU_CYCLE_1)11170; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s8, s311171; GFX1200-FAKE16-NEXT:    s_wait_loadcnt 0x011172; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s4, v011173; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s2, v111174; GFX1200-FAKE16-NEXT:    s_and_b32 s6, s4, 0x7fff11175; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s6, s611176; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_3)11177; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s8, s611178; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_211179; GFX1200-FAKE16-NEXT:  ; %bb.1: ; %frem.else8611180; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s8, s611181; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, 0, s511182; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 011183; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11184; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, s5, v0, vcc_lo11185; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_311186; GFX1200-FAKE16-NEXT:    s_branch .LBB10_811187; GFX1200-FAKE16-NEXT:  .LBB10_2:11188; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr011189; GFX1200-FAKE16-NEXT:  .LBB10_3: ; %frem.compute8511190; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s611191; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v0, s811192; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s811193; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)11194; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v1, v1, 111195; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v0, 1111196; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v0, s611197; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11198; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s8, v311199; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.011200; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)11201; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s6, v011202; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v0, -1, v011203; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v6, v511204; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11205; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v4, v011206; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, v4, v311207; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.011208; GFX1200-FAKE16-NEXT:    s_denorm_mode 1511209; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11210; GFX1200-FAKE16-NEXT:    v_fma_f32 v7, -v5, v6, 1.011211; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v6, v7, v611212; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11213; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v7, v3, v611214; GFX1200-FAKE16-NEXT:    v_fma_f32 v8, -v5, v7, v311215; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11216; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v611217; GFX1200-FAKE16-NEXT:    v_fma_f32 v3, -v5, v7, v311218; GFX1200-FAKE16-NEXT:    s_denorm_mode 1211219; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11220; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11221; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v3, v3, v6, v711222; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v411223; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.011224; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_711225; GFX1200-FAKE16-NEXT:  ; %bb.4: ; %frem.loop_body93.preheader11226; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s6, s8, s611227; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11228; GFX1200-FAKE16-NEXT:    s_add_co_i32 s6, s6, 1111229; GFX1200-FAKE16-NEXT:  .LBB10_5: ; %frem.loop_body9311230; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111231; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11232; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v211233; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11234; GFX1200-FAKE16-NEXT:    s_add_co_i32 s6, s6, -1111235; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11236; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s6, 1111237; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v2, v5, v311238; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11239; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v2, v211240; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v2, 0x80000000, v211241; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11242; GFX1200-FAKE16-NEXT:    v_fma_f32 v2, v2, v1, v511243; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v211244; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v4, v2, v111245; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11246; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11247; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo11248; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 1111249; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_511250; GFX1200-FAKE16-NEXT:  ; %bb.6: ; %Flow13311251; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, s611252; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v2, v511253; GFX1200-FAKE16-NEXT:  .LBB10_7: ; %frem.loop_exit9411254; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11255; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v4, -10, v411256; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, v411257; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11258; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v2, v311259; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v3, v311260; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11261; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v311262; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v2, v3, v111263; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11264; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v211265; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v1, v2, v111266; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11267; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo11268; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11269; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v0, v1, v011270; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v0, v011271; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11272; GFX1200-FAKE16-NEXT:    v_bfi_b32 v0, 0x7fff, v0, s511273; GFX1200-FAKE16-NEXT:  .LBB10_8:11274; GFX1200-FAKE16-NEXT:    s_lshr_b32 s8, s5, 1611275; GFX1200-FAKE16-NEXT:    s_lshr_b32 s6, s4, 1611276; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11277; GFX1200-FAKE16-NEXT:    s_and_b32 s5, s8, 0x7fff11278; GFX1200-FAKE16-NEXT:    s_and_b32 s9, s6, 0x7fff11279; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11280; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s10, s511281; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s9, s911282; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11283; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)11284; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s911285; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_1011286; GFX1200-FAKE16-NEXT:  ; %bb.9: ; %frem.else5311287; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s10, s911288; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, 0, s811289; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 011290; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11291; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11292; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v1, s8, v1, vcc_lo11293; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_1111294; GFX1200-FAKE16-NEXT:    s_branch .LBB10_1611295; GFX1200-FAKE16-NEXT:  .LBB10_10:11296; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr111297; GFX1200-FAKE16-NEXT:  .LBB10_11: ; %frem.compute5211298; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s911299; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v1, s1011300; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v4, s1011301; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)11302; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v2, 111303; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v1, 1111304; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v1, s911305; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11306; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s10, v411307; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.011308; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)11309; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s9, v111310; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v1, -1, v111311; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v7, v611312; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11313; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v5, v111314; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, v5, v411315; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.011316; GFX1200-FAKE16-NEXT:    s_denorm_mode 1511317; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11318; GFX1200-FAKE16-NEXT:    v_fma_f32 v8, -v6, v7, 1.011319; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v7, v8, v711320; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11321; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v8, v4, v711322; GFX1200-FAKE16-NEXT:    v_fma_f32 v9, -v6, v8, v411323; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11324; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v711325; GFX1200-FAKE16-NEXT:    v_fma_f32 v4, -v6, v8, v411326; GFX1200-FAKE16-NEXT:    s_denorm_mode 1211327; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11328; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11329; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v4, v4, v7, v811330; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v511331; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.011332; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_1511333; GFX1200-FAKE16-NEXT:  ; %bb.12: ; %frem.loop_body60.preheader11334; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s9, s10, s911335; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11336; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, 1111337; GFX1200-FAKE16-NEXT:  .LBB10_13: ; %frem.loop_body6011338; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111339; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11340; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, v311341; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11342; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, -1111343; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11344; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s9, 1111345; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v3, v6, v411346; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11347; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v3, v311348; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v3, 0x80000000, v311349; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11350; GFX1200-FAKE16-NEXT:    v_fma_f32 v3, v3, v2, v611351; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v311352; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v5, v3, v211353; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11354; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11355; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo11356; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 1111357; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_1311358; GFX1200-FAKE16-NEXT:  ; %bb.14: ; %Flow12911359; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, s911360; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v3, v611361; GFX1200-FAKE16-NEXT:  .LBB10_15: ; %frem.loop_exit6111362; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11363; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v5, -10, v511364; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, v511365; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11366; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v3, v411367; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v4, v411368; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11369; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v411370; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v3, v4, v211371; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11372; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v311373; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v2, v3, v211374; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11375; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo11376; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11377; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v1, v2, v111378; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v1, v111379; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11380; GFX1200-FAKE16-NEXT:    v_bfi_b32 v1, 0x7fff, v1, s811381; GFX1200-FAKE16-NEXT:  .LBB10_16:11382; GFX1200-FAKE16-NEXT:    s_and_b32 s8, s7, 0x7fff11383; GFX1200-FAKE16-NEXT:    s_and_b32 s9, s2, 0x7fff11384; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11385; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s10, s811386; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s9, s911387; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11388; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)11389; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s10, s911390; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_1811391; GFX1200-FAKE16-NEXT:  ; %bb.17: ; %frem.else2011392; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s10, s911393; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, 0, s711394; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 011395; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11396; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11397; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v2, s7, v2, vcc_lo11398; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_1911399; GFX1200-FAKE16-NEXT:    s_branch .LBB10_2411400; GFX1200-FAKE16-NEXT:  .LBB10_18:11401; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr211402; GFX1200-FAKE16-NEXT:  .LBB10_19: ; %frem.compute1911403; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s911404; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v2, s1011405; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v5, s1011406; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)11407; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v3, 111408; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v2, 1111409; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v2, s911410; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11411; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s10, v511412; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.011413; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)11414; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s9, v211415; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v2, -1, v211416; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v8, v711417; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11418; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v6, v211419; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, v6, v511420; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.011421; GFX1200-FAKE16-NEXT:    s_denorm_mode 1511422; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11423; GFX1200-FAKE16-NEXT:    v_fma_f32 v9, -v7, v8, 1.011424; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v8, v9, v811425; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11426; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v9, v5, v811427; GFX1200-FAKE16-NEXT:    v_fma_f32 v10, -v7, v9, v511428; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11429; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v811430; GFX1200-FAKE16-NEXT:    v_fma_f32 v5, -v7, v9, v511431; GFX1200-FAKE16-NEXT:    s_denorm_mode 1211432; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11433; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11434; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v5, v5, v8, v911435; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v611436; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.011437; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_2311438; GFX1200-FAKE16-NEXT:  ; %bb.20: ; %frem.loop_body27.preheader11439; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s9, s10, s911440; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11441; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, 1111442; GFX1200-FAKE16-NEXT:  .LBB10_21: ; %frem.loop_body2711443; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111444; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11445; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, v411446; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11447; GFX1200-FAKE16-NEXT:    s_add_co_i32 s9, s9, -1111448; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11449; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s9, 1111450; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v4, v7, v511451; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11452; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v4, v411453; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v4, 0x80000000, v411454; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11455; GFX1200-FAKE16-NEXT:    v_fma_f32 v4, v4, v3, v711456; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v411457; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v6, v4, v311458; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11459; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11460; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo11461; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 1111462; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_2111463; GFX1200-FAKE16-NEXT:  ; %bb.22: ; %Flow12511464; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v6, s911465; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v4, v711466; GFX1200-FAKE16-NEXT:  .LBB10_23: ; %frem.loop_exit2811467; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11468; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v6, -10, v611469; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, v611470; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11471; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v5, v4, v511472; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v5, v511473; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11474; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v511475; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v4, v5, v311476; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11477; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v411478; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v3, v4, v311479; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11480; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo11481; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11482; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v2, v3, v211483; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v2, v211484; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11485; GFX1200-FAKE16-NEXT:    v_bfi_b32 v2, 0x7fff, v2, s711486; GFX1200-FAKE16-NEXT:  .LBB10_24:11487; GFX1200-FAKE16-NEXT:    s_lshr_b32 s10, s7, 1611488; GFX1200-FAKE16-NEXT:    s_lshr_b32 s9, s2, 1611489; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11490; GFX1200-FAKE16-NEXT:    s_and_b32 s7, s10, 0x7fff11491; GFX1200-FAKE16-NEXT:    s_and_b32 s11, s9, 0x7fff11492; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11493; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s12, s711494; GFX1200-FAKE16-NEXT:    s_cvt_f32_f16 s11, s1111495; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11496; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(SALU_CYCLE_2)11497; GFX1200-FAKE16-NEXT:    s_cmp_ngt_f32 s12, s1111498; GFX1200-FAKE16-NEXT:    s_cbranch_scc0 .LBB10_2611499; GFX1200-FAKE16-NEXT:  ; %bb.25: ; %frem.else11500; GFX1200-FAKE16-NEXT:    s_cmp_eq_f32 s12, s1111501; GFX1200-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, 0, s1011502; GFX1200-FAKE16-NEXT:    s_cselect_b32 vcc_lo, -1, 011503; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11504; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11505; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, s10, v3, vcc_lo11506; GFX1200-FAKE16-NEXT:    s_cbranch_execz .LBB10_2711507; GFX1200-FAKE16-NEXT:    s_branch .LBB10_3211508; GFX1200-FAKE16-NEXT:  .LBB10_26:11509; GFX1200-FAKE16-NEXT:    ; implicit-def: $vgpr311510; GFX1200-FAKE16-NEXT:  .LBB10_27: ; %frem.compute11511; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v4, s1111512; GFX1200-FAKE16-NEXT:    v_frexp_mant_f32_e32 v3, s1211513; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v6, s1211514; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)11515; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v4, v4, 111516; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v5, v3, 1111517; GFX1200-FAKE16-NEXT:    v_frexp_exp_i32_f32_e32 v3, s1111518; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)11519; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s12, v611520; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.011521; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)11522; GFX1200-FAKE16-NEXT:    v_readfirstlane_b32 s11, v311523; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v3, -1, v311524; GFX1200-FAKE16-NEXT:    v_rcp_f32_e32 v9, v811525; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11526; GFX1200-FAKE16-NEXT:    v_not_b32_e32 v7, v311527; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v7, v7, v611528; GFX1200-FAKE16-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.011529; GFX1200-FAKE16-NEXT:    s_denorm_mode 1511530; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11531; GFX1200-FAKE16-NEXT:    v_fma_f32 v10, -v8, v9, 1.011532; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v9, v10, v911533; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11534; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v10, v6, v911535; GFX1200-FAKE16-NEXT:    v_fma_f32 v11, -v8, v10, v611536; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11537; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v10, v11, v911538; GFX1200-FAKE16-NEXT:    v_fma_f32 v6, -v8, v10, v611539; GFX1200-FAKE16-NEXT:    s_denorm_mode 1211540; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11541; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)11542; GFX1200-FAKE16-NEXT:    v_div_fmas_f32 v6, v6, v9, v1011543; GFX1200-FAKE16-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 12, v711544; GFX1200-FAKE16-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.011545; GFX1200-FAKE16-NEXT:    s_cbranch_vccnz .LBB10_3111546; GFX1200-FAKE16-NEXT:  ; %bb.28: ; %frem.loop_body.preheader11547; GFX1200-FAKE16-NEXT:    s_sub_co_i32 s11, s12, s1111548; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11549; GFX1200-FAKE16-NEXT:    s_add_co_i32 s11, s11, 1111550; GFX1200-FAKE16-NEXT:  .LBB10_29: ; %frem.loop_body11551; GFX1200-FAKE16-NEXT:    ; =>This Inner Loop Header: Depth=111552; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11553; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v8, v511554; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11555; GFX1200-FAKE16-NEXT:    s_add_co_i32 s11, s11, -1111556; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11557; GFX1200-FAKE16-NEXT:    s_cmp_gt_i32 s11, 1111558; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v5, v8, v611559; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11560; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v5, v511561; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v5, 0x80000000, v511562; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11563; GFX1200-FAKE16-NEXT:    v_fma_f32 v5, v5, v4, v811564; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v511565; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v7, v5, v411566; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11567; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11568; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo11569; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v5, v5, 1111570; GFX1200-FAKE16-NEXT:    s_cbranch_scc1 .LBB10_2911571; GFX1200-FAKE16-NEXT:  ; %bb.30: ; %Flow11572; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v7, s1111573; GFX1200-FAKE16-NEXT:    v_mov_b32_e32 v5, v811574; GFX1200-FAKE16-NEXT:  .LBB10_31: ; %frem.loop_exit11575; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)11576; GFX1200-FAKE16-NEXT:    v_add_nc_u32_e32 v7, -10, v711577; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v5, v5, v711578; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11579; GFX1200-FAKE16-NEXT:    v_mul_f32_e32 v6, v5, v611580; GFX1200-FAKE16-NEXT:    v_rndne_f32_e32 v6, v611581; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11582; GFX1200-FAKE16-NEXT:    v_xor_b32_e32 v6, 0x80000000, v611583; GFX1200-FAKE16-NEXT:    v_fmac_f32_e32 v5, v6, v411584; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)11585; GFX1200-FAKE16-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v511586; GFX1200-FAKE16-NEXT:    v_add_f32_e32 v4, v5, v411587; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_va_vcc(0)11588; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo11589; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11590; GFX1200-FAKE16-NEXT:    v_ldexp_f32 v3, v4, v311591; GFX1200-FAKE16-NEXT:    v_cvt_f16_f32_e32 v3, v311592; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11593; GFX1200-FAKE16-NEXT:    v_bfi_b32 v3, 0x7fff, v3, s1011594; GFX1200-FAKE16-NEXT:  .LBB10_32: ; %Flow12411595; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s4, 011596; GFX1200-FAKE16-NEXT:    s_cselect_b32 s4, -1, 011597; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s3, 0x7c0011598; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 011599; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11600; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s411601; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s6, 011602; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11603; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v0, 0x7e00, v0, vcc_lo11604; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 011605; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s5, 0x7c0011606; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11607; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v0, 0xffff, v011608; GFX1200-FAKE16-NEXT:    s_cselect_b32 s4, -1, 011609; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11610; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s4, s311611; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s2, 011612; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11613; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v4, 0x7e00, v1, vcc_lo11614; GFX1200-FAKE16-NEXT:    s_cselect_b32 s2, -1, 011615; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s8, 0x7c0011616; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)11617; GFX1200-FAKE16-NEXT:    v_lshl_or_b32 v0, v4, 16, v011618; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 011619; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s211620; GFX1200-FAKE16-NEXT:    s_cmp_lg_f16 s9, 011621; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11622; GFX1200-FAKE16-NEXT:    v_dual_cndmask_b32 v1, 0x7e00, v2 :: v_dual_mov_b32 v2, 011623; GFX1200-FAKE16-NEXT:    s_cselect_b32 s2, -1, 011624; GFX1200-FAKE16-NEXT:    s_cmp_nge_f16 s7, 0x7c0011625; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)11626; GFX1200-FAKE16-NEXT:    v_and_b32_e32 v1, 0xffff, v111627; GFX1200-FAKE16-NEXT:    s_cselect_b32 s3, -1, 011628; GFX1200-FAKE16-NEXT:    s_and_b32 vcc_lo, s3, s211629; GFX1200-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)11630; GFX1200-FAKE16-NEXT:    v_cndmask_b32_e32 v3, 0x7e00, v3, vcc_lo11631; GFX1200-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)11632; GFX1200-FAKE16-NEXT:    v_lshl_or_b32 v1, v3, 16, v111633; GFX1200-FAKE16-NEXT:    global_store_b64 v2, v[0:1], s[0:1]11634; GFX1200-FAKE16-NEXT:    s_endpgm11635                        ptr addrspace(1) %in2) #0 {11636   %gep2 = getelementptr <4 x half>, ptr addrspace(1) %in2, i32 411637   %r0 = load <4 x half>, ptr addrspace(1) %in1, align 1611638   %r1 = load <4 x half>, ptr addrspace(1) %gep2, align 1611639   %r2 = frem <4 x half> %r0, %r111640   store <4 x half> %r2, ptr addrspace(1) %out, align 1611641   ret void11642}11643 11644define amdgpu_kernel void @frem_v2f32(ptr addrspace(1) %out, ptr addrspace(1) %in1,11645; SI-LABEL: frem_v2f32:11646; SI:       ; %bb.0:11647; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x911648; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd11649; SI-NEXT:    s_mov_b32 s11, 0xf00011650; SI-NEXT:    s_mov_b32 s10, -111651; SI-NEXT:    s_waitcnt lgkmcnt(0)11652; SI-NEXT:    s_mov_b32 s8, s211653; SI-NEXT:    s_mov_b32 s9, s311654; SI-NEXT:    s_mov_b32 s6, s1011655; SI-NEXT:    s_mov_b32 s7, s1111656; SI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 011657; SI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 0 offset:3211658; SI-NEXT:    s_waitcnt vmcnt(0)11659; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v2|11660; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]11661; SI-NEXT:    s_cbranch_vccz .LBB11_211662; SI-NEXT:  ; %bb.1: ; %frem.else1611663; SI-NEXT:    s_brev_b32 s2, -211664; SI-NEXT:    v_bfi_b32 v4, s2, 0, v011665; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|11666; SI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc11667; SI-NEXT:    s_mov_b64 vcc, exec11668; SI-NEXT:    s_cbranch_execz .LBB11_311669; SI-NEXT:    s_branch .LBB11_811670; SI-NEXT:  .LBB11_2:11671; SI-NEXT:    ; implicit-def: $vgpr411672; SI-NEXT:    s_mov_b64 vcc, 011673; SI-NEXT:  .LBB11_3: ; %frem.compute1511674; SI-NEXT:    s_mov_b32 s6, 0x7f80000011675; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s611676; SI-NEXT:    v_frexp_exp_i32_f32_e32 v4, v011677; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec11678; SI-NEXT:    v_readfirstlane_b32 s4, v411679; SI-NEXT:    s_cselect_b32 s4, s4, 011680; SI-NEXT:    v_frexp_mant_f32_e64 v4, |v0|11681; SI-NEXT:    v_cndmask_b32_e64 v4, |v0|, v4, s[2:3]11682; SI-NEXT:    v_ldexp_f32_e64 v5, v4, 1211683; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v2|, s611684; SI-NEXT:    v_frexp_mant_f32_e64 v4, |v2|11685; SI-NEXT:    v_cndmask_b32_e64 v4, |v2|, v4, s[2:3]11686; SI-NEXT:    v_frexp_exp_i32_f32_e32 v6, v211687; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec11688; SI-NEXT:    v_readfirstlane_b32 s2, v611689; SI-NEXT:    s_cselect_b32 s5, s2, 011690; SI-NEXT:    s_add_i32 s2, s5, -111691; SI-NEXT:    v_ldexp_f32_e64 v4, v4, 111692; SI-NEXT:    s_not_b32 s3, s211693; SI-NEXT:    s_add_i32 s3, s3, s411694; SI-NEXT:    v_div_scale_f32 v6, vcc, 1.0, v4, 1.011695; SI-NEXT:    v_div_scale_f32 v7, s[6:7], v4, v4, 1.011696; SI-NEXT:    v_rcp_f32_e32 v8, v711697; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 311698; SI-NEXT:    v_fma_f32 v9, -v7, v8, 1.011699; SI-NEXT:    v_fma_f32 v8, v9, v8, v811700; SI-NEXT:    v_mul_f32_e32 v9, v6, v811701; SI-NEXT:    v_fma_f32 v10, -v7, v9, v611702; SI-NEXT:    v_fma_f32 v9, v10, v8, v911703; SI-NEXT:    v_fma_f32 v6, -v7, v9, v611704; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 011705; SI-NEXT:    v_div_fmas_f32 v6, v6, v8, v911706; SI-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.011707; SI-NEXT:    s_cmp_lt_i32 s3, 1311708; SI-NEXT:    s_cbranch_scc1 .LBB11_711709; SI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader11710; SI-NEXT:    s_sub_i32 s3, s4, s511711; SI-NEXT:    s_add_i32 s3, s3, 1211712; SI-NEXT:  .LBB11_5: ; %frem.loop_body2311713; SI-NEXT:    ; =>This Inner Loop Header: Depth=111714; SI-NEXT:    v_mov_b32_e32 v7, v511715; SI-NEXT:    v_mul_f32_e32 v5, v7, v611716; SI-NEXT:    v_rndne_f32_e32 v5, v511717; SI-NEXT:    v_fma_f32 v5, -v5, v4, v711718; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v511719; SI-NEXT:    v_add_f32_e32 v8, v5, v411720; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v8, vcc11721; SI-NEXT:    v_ldexp_f32_e64 v5, v5, 1211722; SI-NEXT:    s_add_i32 s3, s3, -1211723; SI-NEXT:    s_cmp_gt_i32 s3, 1211724; SI-NEXT:    s_cbranch_scc1 .LBB11_511725; SI-NEXT:  ; %bb.6: ; %Flow5111726; SI-NEXT:    v_mov_b32_e32 v5, v711727; SI-NEXT:  .LBB11_7: ; %frem.loop_exit2411728; SI-NEXT:    s_add_i32 s3, s3, -1111729; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s311730; SI-NEXT:    v_mul_f32_e32 v6, v5, v611731; SI-NEXT:    v_rndne_f32_e32 v6, v611732; SI-NEXT:    v_fma_f32 v5, -v6, v4, v511733; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v511734; SI-NEXT:    v_add_f32_e32 v4, v5, v411735; SI-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc11736; SI-NEXT:    v_ldexp_f32_e64 v4, v4, s211737; SI-NEXT:    s_brev_b32 s2, -211738; SI-NEXT:    v_bfi_b32 v4, s2, v4, v011739; SI-NEXT:  .LBB11_8:11740; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|11741; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]11742; SI-NEXT:    s_cbranch_vccz .LBB11_1011743; SI-NEXT:  ; %bb.9: ; %frem.else11744; SI-NEXT:    s_brev_b32 s2, -211745; SI-NEXT:    v_bfi_b32 v5, s2, 0, v111746; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|11747; SI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc11748; SI-NEXT:    s_mov_b64 vcc, exec11749; SI-NEXT:    s_cbranch_execz .LBB11_1111750; SI-NEXT:    s_branch .LBB11_1611751; SI-NEXT:  .LBB11_10:11752; SI-NEXT:    ; implicit-def: $vgpr511753; SI-NEXT:    s_mov_b64 vcc, 011754; SI-NEXT:  .LBB11_11: ; %frem.compute11755; SI-NEXT:    s_mov_b32 s6, 0x7f80000011756; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v1|, s611757; SI-NEXT:    v_frexp_exp_i32_f32_e32 v5, v111758; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec11759; SI-NEXT:    v_readfirstlane_b32 s4, v511760; SI-NEXT:    s_cselect_b32 s4, s4, 011761; SI-NEXT:    v_frexp_mant_f32_e64 v5, |v1|11762; SI-NEXT:    v_cndmask_b32_e64 v5, |v1|, v5, s[2:3]11763; SI-NEXT:    v_ldexp_f32_e64 v6, v5, 1211764; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v3|, s611765; SI-NEXT:    v_frexp_mant_f32_e64 v5, |v3|11766; SI-NEXT:    v_cndmask_b32_e64 v5, |v3|, v5, s[2:3]11767; SI-NEXT:    v_frexp_exp_i32_f32_e32 v7, v311768; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec11769; SI-NEXT:    v_readfirstlane_b32 s2, v711770; SI-NEXT:    s_cselect_b32 s5, s2, 011771; SI-NEXT:    s_add_i32 s2, s5, -111772; SI-NEXT:    v_ldexp_f32_e64 v5, v5, 111773; SI-NEXT:    s_not_b32 s3, s211774; SI-NEXT:    s_add_i32 s3, s3, s411775; SI-NEXT:    v_div_scale_f32 v7, vcc, 1.0, v5, 1.011776; SI-NEXT:    v_div_scale_f32 v8, s[6:7], v5, v5, 1.011777; SI-NEXT:    v_rcp_f32_e32 v9, v811778; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 311779; SI-NEXT:    v_fma_f32 v10, -v8, v9, 1.011780; SI-NEXT:    v_fma_f32 v9, v10, v9, v911781; SI-NEXT:    v_mul_f32_e32 v10, v7, v911782; SI-NEXT:    v_fma_f32 v11, -v8, v10, v711783; SI-NEXT:    v_fma_f32 v10, v11, v9, v1011784; SI-NEXT:    v_fma_f32 v7, -v8, v10, v711785; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 011786; SI-NEXT:    v_div_fmas_f32 v7, v7, v9, v1011787; SI-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.011788; SI-NEXT:    s_cmp_lt_i32 s3, 1311789; SI-NEXT:    s_cbranch_scc1 .LBB11_1511790; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader11791; SI-NEXT:    s_sub_i32 s3, s4, s511792; SI-NEXT:    s_add_i32 s3, s3, 1211793; SI-NEXT:  .LBB11_13: ; %frem.loop_body11794; SI-NEXT:    ; =>This Inner Loop Header: Depth=111795; SI-NEXT:    v_mov_b32_e32 v8, v611796; SI-NEXT:    v_mul_f32_e32 v6, v8, v711797; SI-NEXT:    v_rndne_f32_e32 v6, v611798; SI-NEXT:    v_fma_f32 v6, -v6, v5, v811799; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v611800; SI-NEXT:    v_add_f32_e32 v9, v6, v511801; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v9, vcc11802; SI-NEXT:    v_ldexp_f32_e64 v6, v6, 1211803; SI-NEXT:    s_add_i32 s3, s3, -1211804; SI-NEXT:    s_cmp_gt_i32 s3, 1211805; SI-NEXT:    s_cbranch_scc1 .LBB11_1311806; SI-NEXT:  ; %bb.14: ; %Flow11807; SI-NEXT:    v_mov_b32_e32 v6, v811808; SI-NEXT:  .LBB11_15: ; %frem.loop_exit11809; SI-NEXT:    s_add_i32 s3, s3, -1111810; SI-NEXT:    v_ldexp_f32_e64 v6, v6, s311811; SI-NEXT:    v_mul_f32_e32 v7, v6, v711812; SI-NEXT:    v_rndne_f32_e32 v7, v711813; SI-NEXT:    v_fma_f32 v6, -v7, v5, v611814; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v611815; SI-NEXT:    v_add_f32_e32 v5, v6, v511816; SI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc11817; SI-NEXT:    v_ldexp_f32_e64 v5, v5, s211818; SI-NEXT:    s_brev_b32 s2, -211819; SI-NEXT:    v_bfi_b32 v5, s2, v5, v111820; SI-NEXT:  .LBB11_16: ; %Flow5011821; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v211822; SI-NEXT:    s_mov_b32 s4, 0x7f80000011823; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s411824; SI-NEXT:    s_and_b64 vcc, s[2:3], vcc11825; SI-NEXT:    v_mov_b32_e32 v2, 0x7fc0000011826; SI-NEXT:    v_cndmask_b32_e32 v0, v2, v4, vcc11827; SI-NEXT:    s_mov_b32 s3, 0xf00011828; SI-NEXT:    s_mov_b32 s2, -111829; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v311830; SI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v1|, s411831; SI-NEXT:    s_and_b64 vcc, s[4:5], vcc11832; SI-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc11833; SI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 011834; SI-NEXT:    s_endpgm11835;11836; CI-LABEL: frem_v2f32:11837; CI:       ; %bb.0:11838; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x911839; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd11840; CI-NEXT:    s_mov_b32 s11, 0xf00011841; CI-NEXT:    s_mov_b32 s10, -111842; CI-NEXT:    s_mov_b32 s6, s1011843; CI-NEXT:    s_waitcnt lgkmcnt(0)11844; CI-NEXT:    s_mov_b32 s8, s211845; CI-NEXT:    s_mov_b32 s9, s311846; CI-NEXT:    s_mov_b32 s7, s1111847; CI-NEXT:    buffer_load_dwordx2 v[0:1], off, s[8:11], 011848; CI-NEXT:    buffer_load_dwordx2 v[2:3], off, s[4:7], 0 offset:3211849; CI-NEXT:    s_waitcnt vmcnt(0)11850; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v2|11851; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]11852; CI-NEXT:    s_cbranch_vccz .LBB11_211853; CI-NEXT:  ; %bb.1: ; %frem.else1611854; CI-NEXT:    s_brev_b32 s2, -211855; CI-NEXT:    v_bfi_b32 v4, s2, 0, v011856; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|11857; CI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc11858; CI-NEXT:    s_cbranch_execz .LBB11_311859; CI-NEXT:    s_branch .LBB11_811860; CI-NEXT:  .LBB11_2:11861; CI-NEXT:    ; implicit-def: $vgpr411862; CI-NEXT:  .LBB11_3: ; %frem.compute1511863; CI-NEXT:    v_frexp_mant_f32_e64 v5, |v2|11864; CI-NEXT:    v_ldexp_f32_e64 v5, v5, 111865; CI-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.011866; CI-NEXT:    v_frexp_mant_f32_e64 v4, |v0|11867; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v211868; CI-NEXT:    v_ldexp_f32_e64 v7, v4, 1211869; CI-NEXT:    v_add_i32_e32 v4, vcc, -1, v1011870; CI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v011871; CI-NEXT:    v_not_b32_e32 v6, v411872; CI-NEXT:    v_add_i32_e32 v6, vcc, v6, v911873; CI-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.011874; CI-NEXT:    v_rcp_f32_e32 v12, v1111875; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 311876; CI-NEXT:    v_fma_f32 v13, -v11, v12, 1.011877; CI-NEXT:    v_fma_f32 v12, v13, v12, v1211878; CI-NEXT:    v_mul_f32_e32 v13, v8, v1211879; CI-NEXT:    v_fma_f32 v14, -v11, v13, v811880; CI-NEXT:    v_fma_f32 v13, v14, v12, v1311881; CI-NEXT:    v_fma_f32 v8, -v11, v13, v811882; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 011883; CI-NEXT:    v_div_fmas_f32 v8, v8, v12, v1311884; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v611885; CI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.011886; CI-NEXT:    s_cbranch_vccnz .LBB11_711887; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader11888; CI-NEXT:    v_sub_i32_e32 v6, vcc, v9, v1011889; CI-NEXT:    v_add_i32_e32 v6, vcc, 12, v611890; CI-NEXT:  .LBB11_5: ; %frem.loop_body2311891; CI-NEXT:    ; =>This Inner Loop Header: Depth=111892; CI-NEXT:    v_mov_b32_e32 v9, v711893; CI-NEXT:    v_mul_f32_e32 v7, v9, v811894; CI-NEXT:    v_rndne_f32_e32 v7, v711895; CI-NEXT:    v_fma_f32 v7, -v7, v5, v911896; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v711897; CI-NEXT:    v_add_f32_e32 v10, v7, v511898; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc11899; CI-NEXT:    v_add_i32_e32 v6, vcc, -12, v611900; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v611901; CI-NEXT:    v_ldexp_f32_e64 v7, v7, 1211902; CI-NEXT:    s_cbranch_vccnz .LBB11_511903; CI-NEXT:  ; %bb.6: ; %Flow5111904; CI-NEXT:    v_mov_b32_e32 v7, v911905; CI-NEXT:  .LBB11_7: ; %frem.loop_exit2411906; CI-NEXT:    v_add_i32_e32 v6, vcc, -11, v611907; CI-NEXT:    v_ldexp_f32_e32 v6, v7, v611908; CI-NEXT:    v_mul_f32_e32 v7, v6, v811909; CI-NEXT:    v_rndne_f32_e32 v7, v711910; CI-NEXT:    v_fma_f32 v6, -v7, v5, v611911; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v611912; CI-NEXT:    v_add_f32_e32 v5, v6, v511913; CI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc11914; CI-NEXT:    v_ldexp_f32_e32 v4, v5, v411915; CI-NEXT:    s_brev_b32 s2, -211916; CI-NEXT:    v_bfi_b32 v4, s2, v4, v011917; CI-NEXT:  .LBB11_8:11918; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|11919; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]11920; CI-NEXT:    s_cbranch_vccz .LBB11_1011921; CI-NEXT:  ; %bb.9: ; %frem.else11922; CI-NEXT:    s_brev_b32 s2, -211923; CI-NEXT:    v_bfi_b32 v5, s2, 0, v111924; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|11925; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc11926; CI-NEXT:    s_cbranch_execz .LBB11_1111927; CI-NEXT:    s_branch .LBB11_1611928; CI-NEXT:  .LBB11_10:11929; CI-NEXT:    ; implicit-def: $vgpr511930; CI-NEXT:  .LBB11_11: ; %frem.compute11931; CI-NEXT:    v_frexp_mant_f32_e64 v6, |v3|11932; CI-NEXT:    v_ldexp_f32_e64 v6, v6, 111933; CI-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.011934; CI-NEXT:    v_frexp_mant_f32_e64 v5, |v1|11935; CI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v311936; CI-NEXT:    v_ldexp_f32_e64 v8, v5, 1211937; CI-NEXT:    v_add_i32_e32 v5, vcc, -1, v1111938; CI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v111939; CI-NEXT:    v_not_b32_e32 v7, v511940; CI-NEXT:    v_add_i32_e32 v7, vcc, v7, v1011941; CI-NEXT:    v_div_scale_f32 v9, vcc, 1.0, v6, 1.011942; CI-NEXT:    v_rcp_f32_e32 v13, v1211943; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 311944; CI-NEXT:    v_fma_f32 v14, -v12, v13, 1.011945; CI-NEXT:    v_fma_f32 v13, v14, v13, v1311946; CI-NEXT:    v_mul_f32_e32 v14, v9, v1311947; CI-NEXT:    v_fma_f32 v15, -v12, v14, v911948; CI-NEXT:    v_fma_f32 v14, v15, v13, v1411949; CI-NEXT:    v_fma_f32 v9, -v12, v14, v911950; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 011951; CI-NEXT:    v_div_fmas_f32 v9, v9, v13, v1411952; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v711953; CI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.011954; CI-NEXT:    s_cbranch_vccnz .LBB11_1511955; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader11956; CI-NEXT:    v_sub_i32_e32 v7, vcc, v10, v1111957; CI-NEXT:    v_add_i32_e32 v7, vcc, 12, v711958; CI-NEXT:  .LBB11_13: ; %frem.loop_body11959; CI-NEXT:    ; =>This Inner Loop Header: Depth=111960; CI-NEXT:    v_mov_b32_e32 v10, v811961; CI-NEXT:    v_mul_f32_e32 v8, v10, v911962; CI-NEXT:    v_rndne_f32_e32 v8, v811963; CI-NEXT:    v_fma_f32 v8, -v8, v6, v1011964; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v811965; CI-NEXT:    v_add_f32_e32 v11, v8, v611966; CI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc11967; CI-NEXT:    v_add_i32_e32 v7, vcc, -12, v711968; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v711969; CI-NEXT:    v_ldexp_f32_e64 v8, v8, 1211970; CI-NEXT:    s_cbranch_vccnz .LBB11_1311971; CI-NEXT:  ; %bb.14: ; %Flow11972; CI-NEXT:    v_mov_b32_e32 v8, v1011973; CI-NEXT:  .LBB11_15: ; %frem.loop_exit11974; CI-NEXT:    v_add_i32_e32 v7, vcc, -11, v711975; CI-NEXT:    v_ldexp_f32_e32 v7, v8, v711976; CI-NEXT:    v_mul_f32_e32 v8, v7, v911977; CI-NEXT:    v_rndne_f32_e32 v8, v811978; CI-NEXT:    v_fma_f32 v7, -v8, v6, v711979; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v711980; CI-NEXT:    v_add_f32_e32 v6, v7, v611981; CI-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc11982; CI-NEXT:    v_ldexp_f32_e32 v5, v6, v511983; CI-NEXT:    s_brev_b32 s2, -211984; CI-NEXT:    v_bfi_b32 v5, s2, v5, v111985; CI-NEXT:  .LBB11_16: ; %Flow5011986; CI-NEXT:    s_mov_b32 s4, 0x7f80000011987; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v211988; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s411989; CI-NEXT:    s_and_b64 vcc, s[2:3], vcc11990; CI-NEXT:    v_mov_b32_e32 v2, 0x7fc0000011991; CI-NEXT:    v_cndmask_b32_e32 v0, v2, v4, vcc11992; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v311993; CI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v1|, s411994; CI-NEXT:    s_and_b64 vcc, s[4:5], vcc11995; CI-NEXT:    s_mov_b32 s3, 0xf00011996; CI-NEXT:    s_mov_b32 s2, -111997; CI-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc11998; CI-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], 011999; CI-NEXT:    s_endpgm12000;12001; VI-LABEL: frem_v2f32:12002; VI:       ; %bb.0:12003; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2412004; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x3412005; VI-NEXT:    s_waitcnt lgkmcnt(0)12006; VI-NEXT:    v_mov_b32_e32 v0, s212007; VI-NEXT:    s_add_u32 s2, s4, 3212008; VI-NEXT:    v_mov_b32_e32 v1, s312009; VI-NEXT:    s_addc_u32 s3, s5, 012010; VI-NEXT:    v_mov_b32_e32 v2, s212011; VI-NEXT:    v_mov_b32_e32 v3, s312012; VI-NEXT:    flat_load_dwordx2 v[0:1], v[0:1]12013; VI-NEXT:    flat_load_dwordx2 v[2:3], v[2:3]12014; VI-NEXT:    s_waitcnt vmcnt(0)12015; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v2|12016; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]12017; VI-NEXT:    s_cbranch_vccz .LBB11_212018; VI-NEXT:  ; %bb.1: ; %frem.else1612019; VI-NEXT:    s_brev_b32 s2, -212020; VI-NEXT:    v_bfi_b32 v4, s2, 0, v012021; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|12022; VI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc12023; VI-NEXT:    s_cbranch_execz .LBB11_312024; VI-NEXT:    s_branch .LBB11_812025; VI-NEXT:  .LBB11_2:12026; VI-NEXT:    ; implicit-def: $vgpr412027; VI-NEXT:  .LBB11_3: ; %frem.compute1512028; VI-NEXT:    v_frexp_mant_f32_e64 v5, |v2|12029; VI-NEXT:    v_ldexp_f32 v5, v5, 112030; VI-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.012031; VI-NEXT:    v_frexp_mant_f32_e64 v4, |v0|12032; VI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v212033; VI-NEXT:    v_ldexp_f32 v7, v4, 1212034; VI-NEXT:    v_add_u32_e32 v4, vcc, -1, v1012035; VI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v012036; VI-NEXT:    v_not_b32_e32 v6, v412037; VI-NEXT:    v_add_u32_e32 v6, vcc, v6, v912038; VI-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.012039; VI-NEXT:    v_rcp_f32_e32 v12, v1112040; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 312041; VI-NEXT:    v_fma_f32 v13, -v11, v12, 1.012042; VI-NEXT:    v_fma_f32 v12, v13, v12, v1212043; VI-NEXT:    v_mul_f32_e32 v13, v8, v1212044; VI-NEXT:    v_fma_f32 v14, -v11, v13, v812045; VI-NEXT:    v_fma_f32 v13, v14, v12, v1312046; VI-NEXT:    v_fma_f32 v8, -v11, v13, v812047; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 012048; VI-NEXT:    v_div_fmas_f32 v8, v8, v12, v1312049; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v612050; VI-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.012051; VI-NEXT:    s_cbranch_vccnz .LBB11_712052; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12053; VI-NEXT:    v_sub_u32_e32 v6, vcc, v9, v1012054; VI-NEXT:    v_add_u32_e32 v6, vcc, 12, v612055; VI-NEXT:  .LBB11_5: ; %frem.loop_body2312056; VI-NEXT:    ; =>This Inner Loop Header: Depth=112057; VI-NEXT:    v_mov_b32_e32 v9, v712058; VI-NEXT:    v_mul_f32_e32 v7, v9, v812059; VI-NEXT:    v_rndne_f32_e32 v7, v712060; VI-NEXT:    v_fma_f32 v7, -v7, v5, v912061; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v712062; VI-NEXT:    v_add_f32_e32 v10, v7, v512063; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc12064; VI-NEXT:    v_add_u32_e32 v6, vcc, -12, v612065; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v612066; VI-NEXT:    v_ldexp_f32 v7, v7, 1212067; VI-NEXT:    s_cbranch_vccnz .LBB11_512068; VI-NEXT:  ; %bb.6: ; %Flow5112069; VI-NEXT:    v_mov_b32_e32 v7, v912070; VI-NEXT:  .LBB11_7: ; %frem.loop_exit2412071; VI-NEXT:    v_add_u32_e32 v6, vcc, -11, v612072; VI-NEXT:    v_ldexp_f32 v6, v7, v612073; VI-NEXT:    v_mul_f32_e32 v7, v6, v812074; VI-NEXT:    v_rndne_f32_e32 v7, v712075; VI-NEXT:    v_fma_f32 v6, -v7, v5, v612076; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v612077; VI-NEXT:    v_add_f32_e32 v5, v6, v512078; VI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc12079; VI-NEXT:    v_ldexp_f32 v4, v5, v412080; VI-NEXT:    s_brev_b32 s2, -212081; VI-NEXT:    v_bfi_b32 v4, s2, v4, v012082; VI-NEXT:  .LBB11_8:12083; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|12084; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]12085; VI-NEXT:    s_cbranch_vccz .LBB11_1012086; VI-NEXT:  ; %bb.9: ; %frem.else12087; VI-NEXT:    s_brev_b32 s2, -212088; VI-NEXT:    v_bfi_b32 v5, s2, 0, v112089; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|12090; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc12091; VI-NEXT:    s_cbranch_execz .LBB11_1112092; VI-NEXT:    s_branch .LBB11_1612093; VI-NEXT:  .LBB11_10:12094; VI-NEXT:    ; implicit-def: $vgpr512095; VI-NEXT:  .LBB11_11: ; %frem.compute12096; VI-NEXT:    v_frexp_mant_f32_e64 v6, |v3|12097; VI-NEXT:    v_ldexp_f32 v6, v6, 112098; VI-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.012099; VI-NEXT:    v_frexp_mant_f32_e64 v5, |v1|12100; VI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v312101; VI-NEXT:    v_ldexp_f32 v8, v5, 1212102; VI-NEXT:    v_add_u32_e32 v5, vcc, -1, v1112103; VI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v112104; VI-NEXT:    v_not_b32_e32 v7, v512105; VI-NEXT:    v_add_u32_e32 v7, vcc, v7, v1012106; VI-NEXT:    v_div_scale_f32 v9, vcc, 1.0, v6, 1.012107; VI-NEXT:    v_rcp_f32_e32 v13, v1212108; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 312109; VI-NEXT:    v_fma_f32 v14, -v12, v13, 1.012110; VI-NEXT:    v_fma_f32 v13, v14, v13, v1312111; VI-NEXT:    v_mul_f32_e32 v14, v9, v1312112; VI-NEXT:    v_fma_f32 v15, -v12, v14, v912113; VI-NEXT:    v_fma_f32 v14, v15, v13, v1412114; VI-NEXT:    v_fma_f32 v9, -v12, v14, v912115; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 012116; VI-NEXT:    v_div_fmas_f32 v9, v9, v13, v1412117; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v712118; VI-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.012119; VI-NEXT:    s_cbranch_vccnz .LBB11_1512120; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader12121; VI-NEXT:    v_sub_u32_e32 v7, vcc, v10, v1112122; VI-NEXT:    v_add_u32_e32 v7, vcc, 12, v712123; VI-NEXT:  .LBB11_13: ; %frem.loop_body12124; VI-NEXT:    ; =>This Inner Loop Header: Depth=112125; VI-NEXT:    v_mov_b32_e32 v10, v812126; VI-NEXT:    v_mul_f32_e32 v8, v10, v912127; VI-NEXT:    v_rndne_f32_e32 v8, v812128; VI-NEXT:    v_fma_f32 v8, -v8, v6, v1012129; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v812130; VI-NEXT:    v_add_f32_e32 v11, v8, v612131; VI-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc12132; VI-NEXT:    v_add_u32_e32 v7, vcc, -12, v712133; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v712134; VI-NEXT:    v_ldexp_f32 v8, v8, 1212135; VI-NEXT:    s_cbranch_vccnz .LBB11_1312136; VI-NEXT:  ; %bb.14: ; %Flow12137; VI-NEXT:    v_mov_b32_e32 v8, v1012138; VI-NEXT:  .LBB11_15: ; %frem.loop_exit12139; VI-NEXT:    v_add_u32_e32 v7, vcc, -11, v712140; VI-NEXT:    v_ldexp_f32 v7, v8, v712141; VI-NEXT:    v_mul_f32_e32 v8, v7, v912142; VI-NEXT:    v_rndne_f32_e32 v8, v812143; VI-NEXT:    v_fma_f32 v7, -v8, v6, v712144; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v712145; VI-NEXT:    v_add_f32_e32 v6, v7, v612146; VI-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc12147; VI-NEXT:    v_ldexp_f32 v5, v6, v512148; VI-NEXT:    s_brev_b32 s2, -212149; VI-NEXT:    v_bfi_b32 v5, s2, v5, v112150; VI-NEXT:  .LBB11_16: ; %Flow5012151; VI-NEXT:    s_mov_b32 s4, 0x7f80000012152; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v212153; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s412154; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc12155; VI-NEXT:    v_mov_b32_e32 v2, 0x7fc0000012156; VI-NEXT:    v_cndmask_b32_e32 v0, v2, v4, vcc12157; VI-NEXT:    v_mov_b32_e32 v6, s012158; VI-NEXT:    v_mov_b32_e32 v7, s112159; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v312160; VI-NEXT:    v_cmp_nge_f32_e64 s[0:1], |v1|, s412161; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc12162; VI-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc12163; VI-NEXT:    flat_store_dwordx2 v[6:7], v[0:1]12164; VI-NEXT:    s_endpgm12165;12166; GFX9-LABEL: frem_v2f32:12167; GFX9:       ; %bb.0:12168; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2412169; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3412170; GFX9-NEXT:    v_mov_b32_e32 v4, 012171; GFX9-NEXT:    s_waitcnt lgkmcnt(0)12172; GFX9-NEXT:    global_load_dwordx2 v[0:1], v4, s[2:3]12173; GFX9-NEXT:    global_load_dwordx2 v[2:3], v4, s[6:7] offset:3212174; GFX9-NEXT:    s_waitcnt vmcnt(0)12175; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v2|12176; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]12177; GFX9-NEXT:    s_cbranch_vccz .LBB11_212178; GFX9-NEXT:  ; %bb.1: ; %frem.else1612179; GFX9-NEXT:    s_brev_b32 s2, -212180; GFX9-NEXT:    v_bfi_b32 v4, s2, 0, v012181; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v2|12182; GFX9-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc12183; GFX9-NEXT:    s_cbranch_execz .LBB11_312184; GFX9-NEXT:    s_branch .LBB11_812185; GFX9-NEXT:  .LBB11_2:12186; GFX9-NEXT:    ; implicit-def: $vgpr412187; GFX9-NEXT:  .LBB11_3: ; %frem.compute1512188; GFX9-NEXT:    v_frexp_mant_f32_e64 v5, |v2|12189; GFX9-NEXT:    v_ldexp_f32 v5, v5, 112190; GFX9-NEXT:    v_div_scale_f32 v11, s[2:3], v5, v5, 1.012191; GFX9-NEXT:    v_div_scale_f32 v8, vcc, 1.0, v5, 1.012192; GFX9-NEXT:    v_frexp_mant_f32_e64 v4, |v0|12193; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v9, v012194; GFX9-NEXT:    v_ldexp_f32 v7, v4, 1212195; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v10, v212196; GFX9-NEXT:    v_add_u32_e32 v4, -1, v1012197; GFX9-NEXT:    v_not_b32_e32 v6, v412198; GFX9-NEXT:    v_add_u32_e32 v6, v6, v912199; GFX9-NEXT:    v_rcp_f32_e32 v12, v1112200; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 312201; GFX9-NEXT:    v_fma_f32 v13, -v11, v12, 1.012202; GFX9-NEXT:    v_fma_f32 v12, v13, v12, v1212203; GFX9-NEXT:    v_mul_f32_e32 v13, v8, v1212204; GFX9-NEXT:    v_fma_f32 v14, -v11, v13, v812205; GFX9-NEXT:    v_fma_f32 v13, v14, v12, v1312206; GFX9-NEXT:    v_fma_f32 v8, -v11, v13, v812207; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 012208; GFX9-NEXT:    v_div_fmas_f32 v8, v8, v12, v1312209; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v612210; GFX9-NEXT:    v_div_fixup_f32 v8, v8, v5, 1.012211; GFX9-NEXT:    s_cbranch_vccnz .LBB11_712212; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12213; GFX9-NEXT:    v_sub_u32_e32 v6, v9, v1012214; GFX9-NEXT:    v_add_u32_e32 v6, 12, v612215; GFX9-NEXT:  .LBB11_5: ; %frem.loop_body2312216; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=112217; GFX9-NEXT:    v_mov_b32_e32 v9, v712218; GFX9-NEXT:    v_mul_f32_e32 v7, v9, v812219; GFX9-NEXT:    v_rndne_f32_e32 v7, v712220; GFX9-NEXT:    v_fma_f32 v7, -v7, v5, v912221; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v712222; GFX9-NEXT:    v_add_f32_e32 v10, v7, v512223; GFX9-NEXT:    v_add_u32_e32 v6, -12, v612224; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc12225; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v612226; GFX9-NEXT:    v_ldexp_f32 v7, v7, 1212227; GFX9-NEXT:    s_cbranch_vccnz .LBB11_512228; GFX9-NEXT:  ; %bb.6: ; %Flow5112229; GFX9-NEXT:    v_mov_b32_e32 v7, v912230; GFX9-NEXT:  .LBB11_7: ; %frem.loop_exit2412231; GFX9-NEXT:    v_add_u32_e32 v6, -11, v612232; GFX9-NEXT:    v_ldexp_f32 v6, v7, v612233; GFX9-NEXT:    v_mul_f32_e32 v7, v6, v812234; GFX9-NEXT:    v_rndne_f32_e32 v7, v712235; GFX9-NEXT:    v_fma_f32 v6, -v7, v5, v612236; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v612237; GFX9-NEXT:    v_add_f32_e32 v5, v6, v512238; GFX9-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc12239; GFX9-NEXT:    v_ldexp_f32 v4, v5, v412240; GFX9-NEXT:    s_brev_b32 s2, -212241; GFX9-NEXT:    v_bfi_b32 v4, s2, v4, v012242; GFX9-NEXT:  .LBB11_8:12243; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v3|12244; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]12245; GFX9-NEXT:    s_cbranch_vccz .LBB11_1012246; GFX9-NEXT:  ; %bb.9: ; %frem.else12247; GFX9-NEXT:    s_brev_b32 s2, -212248; GFX9-NEXT:    v_bfi_b32 v5, s2, 0, v112249; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v3|12250; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc12251; GFX9-NEXT:    s_cbranch_execz .LBB11_1112252; GFX9-NEXT:    s_branch .LBB11_1612253; GFX9-NEXT:  .LBB11_10:12254; GFX9-NEXT:    ; implicit-def: $vgpr512255; GFX9-NEXT:  .LBB11_11: ; %frem.compute12256; GFX9-NEXT:    v_frexp_mant_f32_e64 v6, |v3|12257; GFX9-NEXT:    v_ldexp_f32 v6, v6, 112258; GFX9-NEXT:    v_div_scale_f32 v12, s[2:3], v6, v6, 1.012259; GFX9-NEXT:    v_div_scale_f32 v9, vcc, 1.0, v6, 1.012260; GFX9-NEXT:    v_frexp_mant_f32_e64 v5, |v1|12261; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v10, v112262; GFX9-NEXT:    v_ldexp_f32 v8, v5, 1212263; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v11, v312264; GFX9-NEXT:    v_add_u32_e32 v5, -1, v1112265; GFX9-NEXT:    v_not_b32_e32 v7, v512266; GFX9-NEXT:    v_add_u32_e32 v7, v7, v1012267; GFX9-NEXT:    v_rcp_f32_e32 v13, v1212268; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 312269; GFX9-NEXT:    v_fma_f32 v14, -v12, v13, 1.012270; GFX9-NEXT:    v_fma_f32 v13, v14, v13, v1312271; GFX9-NEXT:    v_mul_f32_e32 v14, v9, v1312272; GFX9-NEXT:    v_fma_f32 v15, -v12, v14, v912273; GFX9-NEXT:    v_fma_f32 v14, v15, v13, v1412274; GFX9-NEXT:    v_fma_f32 v9, -v12, v14, v912275; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 012276; GFX9-NEXT:    v_div_fmas_f32 v9, v9, v13, v1412277; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v712278; GFX9-NEXT:    v_div_fixup_f32 v9, v9, v6, 1.012279; GFX9-NEXT:    s_cbranch_vccnz .LBB11_1512280; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader12281; GFX9-NEXT:    v_sub_u32_e32 v7, v10, v1112282; GFX9-NEXT:    v_add_u32_e32 v7, 12, v712283; GFX9-NEXT:  .LBB11_13: ; %frem.loop_body12284; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=112285; GFX9-NEXT:    v_mov_b32_e32 v10, v812286; GFX9-NEXT:    v_mul_f32_e32 v8, v10, v912287; GFX9-NEXT:    v_rndne_f32_e32 v8, v812288; GFX9-NEXT:    v_fma_f32 v8, -v8, v6, v1012289; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v812290; GFX9-NEXT:    v_add_f32_e32 v11, v8, v612291; GFX9-NEXT:    v_add_u32_e32 v7, -12, v712292; GFX9-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc12293; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v712294; GFX9-NEXT:    v_ldexp_f32 v8, v8, 1212295; GFX9-NEXT:    s_cbranch_vccnz .LBB11_1312296; GFX9-NEXT:  ; %bb.14: ; %Flow12297; GFX9-NEXT:    v_mov_b32_e32 v8, v1012298; GFX9-NEXT:  .LBB11_15: ; %frem.loop_exit12299; GFX9-NEXT:    v_add_u32_e32 v7, -11, v712300; GFX9-NEXT:    v_ldexp_f32 v7, v8, v712301; GFX9-NEXT:    v_mul_f32_e32 v8, v7, v912302; GFX9-NEXT:    v_rndne_f32_e32 v8, v812303; GFX9-NEXT:    v_fma_f32 v7, -v8, v6, v712304; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v712305; GFX9-NEXT:    v_add_f32_e32 v6, v7, v612306; GFX9-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc12307; GFX9-NEXT:    v_ldexp_f32 v5, v6, v512308; GFX9-NEXT:    s_brev_b32 s2, -212309; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v112310; GFX9-NEXT:  .LBB11_16: ; %Flow5012311; GFX9-NEXT:    s_mov_b32 s4, 0x7f80000012312; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v212313; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s412314; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc12315; GFX9-NEXT:    v_mov_b32_e32 v2, 0x7fc0000012316; GFX9-NEXT:    v_cndmask_b32_e32 v0, v2, v4, vcc12317; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v312318; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v1|, s412319; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc12320; GFX9-NEXT:    v_mov_b32_e32 v4, 012321; GFX9-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc12322; GFX9-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]12323; GFX9-NEXT:    s_endpgm12324;12325; GFX10-LABEL: frem_v2f32:12326; GFX10:       ; %bb.0:12327; GFX10-NEXT:    s_clause 0x112328; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2412329; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3412330; GFX10-NEXT:    v_mov_b32_e32 v4, 012331; GFX10-NEXT:    s_waitcnt lgkmcnt(0)12332; GFX10-NEXT:    s_clause 0x112333; GFX10-NEXT:    global_load_dwordx2 v[0:1], v4, s[2:3]12334; GFX10-NEXT:    global_load_dwordx2 v[2:3], v4, s[6:7] offset:3212335; GFX10-NEXT:    s_waitcnt vmcnt(0)12336; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v2|12337; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s212338; GFX10-NEXT:    s_cbranch_vccz .LBB11_212339; GFX10-NEXT:  ; %bb.1: ; %frem.else1612340; GFX10-NEXT:    v_bfi_b32 v4, 0x7fffffff, 0, v012341; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v2|12342; GFX10-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo12343; GFX10-NEXT:    s_cbranch_execz .LBB11_312344; GFX10-NEXT:    s_branch .LBB11_812345; GFX10-NEXT:  .LBB11_2:12346; GFX10-NEXT:    ; implicit-def: $vgpr412347; GFX10-NEXT:  .LBB11_3: ; %frem.compute1512348; GFX10-NEXT:    v_frexp_mant_f32_e64 v5, |v2|12349; GFX10-NEXT:    v_frexp_mant_f32_e64 v4, |v0|12350; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v7, v012351; GFX10-NEXT:    v_ldexp_f32 v5, v5, 112352; GFX10-NEXT:    v_ldexp_f32 v6, v4, 1212353; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v4, v212354; GFX10-NEXT:    v_readfirstlane_b32 s2, v712355; GFX10-NEXT:    v_div_scale_f32 v9, s4, v5, v5, 1.012356; GFX10-NEXT:    v_readfirstlane_b32 s3, v412357; GFX10-NEXT:    v_add_nc_u32_e32 v4, -1, v412358; GFX10-NEXT:    v_rcp_f32_e32 v10, v912359; GFX10-NEXT:    v_not_b32_e32 v8, v412360; GFX10-NEXT:    v_add_nc_u32_e32 v8, v8, v712361; GFX10-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.012362; GFX10-NEXT:    s_denorm_mode 1512363; GFX10-NEXT:    v_fma_f32 v11, -v9, v10, 1.012364; GFX10-NEXT:    v_fmac_f32_e32 v10, v11, v1012365; GFX10-NEXT:    v_mul_f32_e32 v11, v7, v1012366; GFX10-NEXT:    v_fma_f32 v12, -v9, v11, v712367; GFX10-NEXT:    v_fmac_f32_e32 v11, v12, v1012368; GFX10-NEXT:    v_fma_f32 v7, -v9, v11, v712369; GFX10-NEXT:    s_denorm_mode 1212370; GFX10-NEXT:    v_div_fmas_f32 v7, v7, v10, v1112371; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v812372; GFX10-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.012373; GFX10-NEXT:    s_cbranch_vccnz .LBB11_712374; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12375; GFX10-NEXT:    s_sub_i32 s2, s2, s312376; GFX10-NEXT:    s_add_i32 s2, s2, 1212377; GFX10-NEXT:  .LBB11_5: ; %frem.loop_body2312378; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112379; GFX10-NEXT:    v_mov_b32_e32 v9, v612380; GFX10-NEXT:    s_add_i32 s2, s2, -1212381; GFX10-NEXT:    s_cmp_gt_i32 s2, 1212382; GFX10-NEXT:    v_mul_f32_e32 v6, v9, v712383; GFX10-NEXT:    v_rndne_f32_e32 v6, v612384; GFX10-NEXT:    v_fma_f32 v6, -v6, v5, v912385; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v612386; GFX10-NEXT:    v_add_f32_e32 v8, v6, v512387; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo12388; GFX10-NEXT:    v_ldexp_f32 v6, v6, 1212389; GFX10-NEXT:    s_cbranch_scc1 .LBB11_512390; GFX10-NEXT:  ; %bb.6: ; %Flow5112391; GFX10-NEXT:    v_mov_b32_e32 v8, s212392; GFX10-NEXT:    v_mov_b32_e32 v6, v912393; GFX10-NEXT:  .LBB11_7: ; %frem.loop_exit2412394; GFX10-NEXT:    v_add_nc_u32_e32 v8, -11, v812395; GFX10-NEXT:    v_ldexp_f32 v6, v6, v812396; GFX10-NEXT:    v_mul_f32_e32 v7, v6, v712397; GFX10-NEXT:    v_rndne_f32_e32 v7, v712398; GFX10-NEXT:    v_fma_f32 v6, -v7, v5, v612399; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v612400; GFX10-NEXT:    v_add_f32_e32 v5, v6, v512401; GFX10-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo12402; GFX10-NEXT:    v_ldexp_f32 v4, v5, v412403; GFX10-NEXT:    v_bfi_b32 v4, 0x7fffffff, v4, v012404; GFX10-NEXT:  .LBB11_8:12405; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v3|12406; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s212407; GFX10-NEXT:    s_cbranch_vccz .LBB11_1012408; GFX10-NEXT:  ; %bb.9: ; %frem.else12409; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, 0, v112410; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v3|12411; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc_lo12412; GFX10-NEXT:    s_cbranch_execz .LBB11_1112413; GFX10-NEXT:    s_branch .LBB11_1612414; GFX10-NEXT:  .LBB11_10:12415; GFX10-NEXT:    ; implicit-def: $vgpr512416; GFX10-NEXT:  .LBB11_11: ; %frem.compute12417; GFX10-NEXT:    v_frexp_mant_f32_e64 v6, |v3|12418; GFX10-NEXT:    v_frexp_mant_f32_e64 v5, |v1|12419; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v8, v112420; GFX10-NEXT:    v_ldexp_f32 v6, v6, 112421; GFX10-NEXT:    v_ldexp_f32 v7, v5, 1212422; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v5, v312423; GFX10-NEXT:    v_readfirstlane_b32 s2, v812424; GFX10-NEXT:    v_div_scale_f32 v10, s4, v6, v6, 1.012425; GFX10-NEXT:    v_readfirstlane_b32 s3, v512426; GFX10-NEXT:    v_add_nc_u32_e32 v5, -1, v512427; GFX10-NEXT:    v_rcp_f32_e32 v11, v1012428; GFX10-NEXT:    v_not_b32_e32 v9, v512429; GFX10-NEXT:    v_add_nc_u32_e32 v9, v9, v812430; GFX10-NEXT:    v_div_scale_f32 v8, vcc_lo, 1.0, v6, 1.012431; GFX10-NEXT:    s_denorm_mode 1512432; GFX10-NEXT:    v_fma_f32 v12, -v10, v11, 1.012433; GFX10-NEXT:    v_fmac_f32_e32 v11, v12, v1112434; GFX10-NEXT:    v_mul_f32_e32 v12, v8, v1112435; GFX10-NEXT:    v_fma_f32 v13, -v10, v12, v812436; GFX10-NEXT:    v_fmac_f32_e32 v12, v13, v1112437; GFX10-NEXT:    v_fma_f32 v8, -v10, v12, v812438; GFX10-NEXT:    s_denorm_mode 1212439; GFX10-NEXT:    v_div_fmas_f32 v8, v8, v11, v1212440; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v912441; GFX10-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.012442; GFX10-NEXT:    s_cbranch_vccnz .LBB11_1512443; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader12444; GFX10-NEXT:    s_sub_i32 s2, s2, s312445; GFX10-NEXT:    s_add_i32 s2, s2, 1212446; GFX10-NEXT:  .LBB11_13: ; %frem.loop_body12447; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=112448; GFX10-NEXT:    v_mov_b32_e32 v10, v712449; GFX10-NEXT:    s_add_i32 s2, s2, -1212450; GFX10-NEXT:    s_cmp_gt_i32 s2, 1212451; GFX10-NEXT:    v_mul_f32_e32 v7, v10, v812452; GFX10-NEXT:    v_rndne_f32_e32 v7, v712453; GFX10-NEXT:    v_fma_f32 v7, -v7, v6, v1012454; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v712455; GFX10-NEXT:    v_add_f32_e32 v9, v7, v612456; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo12457; GFX10-NEXT:    v_ldexp_f32 v7, v7, 1212458; GFX10-NEXT:    s_cbranch_scc1 .LBB11_1312459; GFX10-NEXT:  ; %bb.14: ; %Flow12460; GFX10-NEXT:    v_mov_b32_e32 v9, s212461; GFX10-NEXT:    v_mov_b32_e32 v7, v1012462; GFX10-NEXT:  .LBB11_15: ; %frem.loop_exit12463; GFX10-NEXT:    v_add_nc_u32_e32 v9, -11, v912464; GFX10-NEXT:    v_ldexp_f32 v7, v7, v912465; GFX10-NEXT:    v_mul_f32_e32 v8, v7, v812466; GFX10-NEXT:    v_rndne_f32_e32 v8, v812467; GFX10-NEXT:    v_fma_f32 v7, -v8, v6, v712468; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v712469; GFX10-NEXT:    v_add_f32_e32 v6, v7, v612470; GFX10-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc_lo12471; GFX10-NEXT:    v_ldexp_f32 v5, v6, v512472; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v112473; GFX10-NEXT:  .LBB11_16: ; %Flow5012474; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v212475; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|12476; GFX10-NEXT:    v_mov_b32_e32 v2, 012477; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo12478; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v1|12479; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v4, vcc_lo12480; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v312481; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo12482; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7fc00000, v5, vcc_lo12483; GFX10-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]12484; GFX10-NEXT:    s_endpgm12485;12486; GFX11-LABEL: frem_v2f32:12487; GFX11:       ; %bb.0:12488; GFX11-NEXT:    s_clause 0x112489; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2412490; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3412491; GFX11-NEXT:    v_mov_b32_e32 v2, 012492; GFX11-NEXT:    s_waitcnt lgkmcnt(0)12493; GFX11-NEXT:    s_clause 0x112494; GFX11-NEXT:    global_load_b64 v[0:1], v2, s[2:3]12495; GFX11-NEXT:    global_load_b64 v[2:3], v2, s[4:5] offset:3212496; GFX11-NEXT:    s_waitcnt vmcnt(0)12497; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v2|12498; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s212499; GFX11-NEXT:    s_cbranch_vccz .LBB11_212500; GFX11-NEXT:  ; %bb.1: ; %frem.else1612501; GFX11-NEXT:    v_bfi_b32 v4, 0x7fffffff, 0, v012502; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v2|12503; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)12504; GFX11-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc_lo12505; GFX11-NEXT:    s_cbranch_execz .LBB11_312506; GFX11-NEXT:    s_branch .LBB11_812507; GFX11-NEXT:  .LBB11_2:12508; GFX11-NEXT:    ; implicit-def: $vgpr412509; GFX11-NEXT:  .LBB11_3: ; %frem.compute1512510; GFX11-NEXT:    v_frexp_mant_f32_e64 v5, |v2|12511; GFX11-NEXT:    v_frexp_mant_f32_e64 v4, |v0|12512; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v7, v012513; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)12514; GFX11-NEXT:    v_ldexp_f32 v5, v5, 112515; GFX11-NEXT:    v_ldexp_f32 v6, v4, 1212516; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v4, v212517; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)12518; GFX11-NEXT:    v_readfirstlane_b32 s2, v712519; GFX11-NEXT:    v_div_scale_f32 v9, null, v5, v5, 1.012520; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)12521; GFX11-NEXT:    v_readfirstlane_b32 s3, v412522; GFX11-NEXT:    v_add_nc_u32_e32 v4, -1, v412523; GFX11-NEXT:    v_rcp_f32_e32 v10, v912524; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12525; GFX11-NEXT:    v_not_b32_e32 v8, v412526; GFX11-NEXT:    v_add_nc_u32_e32 v8, v8, v712527; GFX11-NEXT:    v_div_scale_f32 v7, vcc_lo, 1.0, v5, 1.012528; GFX11-NEXT:    s_denorm_mode 1512529; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)12530; GFX11-NEXT:    v_fma_f32 v11, -v9, v10, 1.012531; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12532; GFX11-NEXT:    v_fmac_f32_e32 v10, v11, v1012533; GFX11-NEXT:    v_mul_f32_e32 v11, v7, v1012534; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12535; GFX11-NEXT:    v_fma_f32 v12, -v9, v11, v712536; GFX11-NEXT:    v_fmac_f32_e32 v11, v12, v1012537; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12538; GFX11-NEXT:    v_fma_f32 v7, -v9, v11, v712539; GFX11-NEXT:    s_denorm_mode 1212540; GFX11-NEXT:    v_div_fmas_f32 v7, v7, v10, v1112541; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v812542; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)12543; GFX11-NEXT:    v_div_fixup_f32 v7, v7, v5, 1.012544; GFX11-NEXT:    s_cbranch_vccnz .LBB11_712545; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12546; GFX11-NEXT:    s_sub_i32 s2, s2, s312547; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12548; GFX11-NEXT:    s_add_i32 s2, s2, 1212549; GFX11-NEXT:  .LBB11_5: ; %frem.loop_body2312550; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=112551; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12552; GFX11-NEXT:    v_mov_b32_e32 v9, v612553; GFX11-NEXT:    s_add_i32 s2, s2, -1212554; GFX11-NEXT:    s_cmp_gt_i32 s2, 1212555; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12556; GFX11-NEXT:    v_mul_f32_e32 v6, v9, v712557; GFX11-NEXT:    v_rndne_f32_e32 v6, v612558; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12559; GFX11-NEXT:    v_fma_f32 v6, -v6, v5, v912560; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v612561; GFX11-NEXT:    v_add_f32_e32 v8, v6, v512562; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12563; GFX11-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo12564; GFX11-NEXT:    v_ldexp_f32 v6, v6, 1212565; GFX11-NEXT:    s_cbranch_scc1 .LBB11_512566; GFX11-NEXT:  ; %bb.6: ; %Flow5112567; GFX11-NEXT:    v_mov_b32_e32 v8, s212568; GFX11-NEXT:    v_mov_b32_e32 v6, v912569; GFX11-NEXT:  .LBB11_7: ; %frem.loop_exit2412570; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12571; GFX11-NEXT:    v_add_nc_u32_e32 v8, -11, v812572; GFX11-NEXT:    v_ldexp_f32 v6, v6, v812573; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12574; GFX11-NEXT:    v_mul_f32_e32 v7, v6, v712575; GFX11-NEXT:    v_rndne_f32_e32 v7, v712576; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12577; GFX11-NEXT:    v_fma_f32 v6, -v7, v5, v612578; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v612579; GFX11-NEXT:    v_add_f32_e32 v5, v6, v512580; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12581; GFX11-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc_lo12582; GFX11-NEXT:    v_ldexp_f32 v4, v5, v412583; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)12584; GFX11-NEXT:    v_bfi_b32 v4, 0x7fffffff, v4, v012585; GFX11-NEXT:  .LBB11_8:12586; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v3|12587; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s212588; GFX11-NEXT:    s_cbranch_vccz .LBB11_1012589; GFX11-NEXT:  ; %bb.9: ; %frem.else12590; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, 0, v112591; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v3|12592; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)12593; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v5, vcc_lo12594; GFX11-NEXT:    s_cbranch_execz .LBB11_1112595; GFX11-NEXT:    s_branch .LBB11_1612596; GFX11-NEXT:  .LBB11_10:12597; GFX11-NEXT:    ; implicit-def: $vgpr512598; GFX11-NEXT:  .LBB11_11: ; %frem.compute12599; GFX11-NEXT:    v_frexp_mant_f32_e64 v6, |v3|12600; GFX11-NEXT:    v_frexp_mant_f32_e64 v5, |v1|12601; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v8, v112602; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)12603; GFX11-NEXT:    v_ldexp_f32 v6, v6, 112604; GFX11-NEXT:    v_ldexp_f32 v7, v5, 1212605; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v5, v312606; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)12607; GFX11-NEXT:    v_readfirstlane_b32 s2, v812608; GFX11-NEXT:    v_div_scale_f32 v10, null, v6, v6, 1.012609; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)12610; GFX11-NEXT:    v_readfirstlane_b32 s3, v512611; GFX11-NEXT:    v_add_nc_u32_e32 v5, -1, v512612; GFX11-NEXT:    v_rcp_f32_e32 v11, v1012613; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12614; GFX11-NEXT:    v_not_b32_e32 v9, v512615; GFX11-NEXT:    v_add_nc_u32_e32 v9, v9, v812616; GFX11-NEXT:    v_div_scale_f32 v8, vcc_lo, 1.0, v6, 1.012617; GFX11-NEXT:    s_denorm_mode 1512618; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)12619; GFX11-NEXT:    v_fma_f32 v12, -v10, v11, 1.012620; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12621; GFX11-NEXT:    v_fmac_f32_e32 v11, v12, v1112622; GFX11-NEXT:    v_mul_f32_e32 v12, v8, v1112623; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12624; GFX11-NEXT:    v_fma_f32 v13, -v10, v12, v812625; GFX11-NEXT:    v_fmac_f32_e32 v12, v13, v1112626; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12627; GFX11-NEXT:    v_fma_f32 v8, -v10, v12, v812628; GFX11-NEXT:    s_denorm_mode 1212629; GFX11-NEXT:    v_div_fmas_f32 v8, v8, v11, v1212630; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v912631; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)12632; GFX11-NEXT:    v_div_fixup_f32 v8, v8, v6, 1.012633; GFX11-NEXT:    s_cbranch_vccnz .LBB11_1512634; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader12635; GFX11-NEXT:    s_sub_i32 s2, s2, s312636; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12637; GFX11-NEXT:    s_add_i32 s2, s2, 1212638; GFX11-NEXT:  .LBB11_13: ; %frem.loop_body12639; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=112640; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12641; GFX11-NEXT:    v_mov_b32_e32 v10, v712642; GFX11-NEXT:    s_add_i32 s2, s2, -1212643; GFX11-NEXT:    s_cmp_gt_i32 s2, 1212644; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12645; GFX11-NEXT:    v_mul_f32_e32 v7, v10, v812646; GFX11-NEXT:    v_rndne_f32_e32 v7, v712647; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12648; GFX11-NEXT:    v_fma_f32 v7, -v7, v6, v1012649; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v712650; GFX11-NEXT:    v_add_f32_e32 v9, v7, v612651; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12652; GFX11-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo12653; GFX11-NEXT:    v_ldexp_f32 v7, v7, 1212654; GFX11-NEXT:    s_cbranch_scc1 .LBB11_1312655; GFX11-NEXT:  ; %bb.14: ; %Flow12656; GFX11-NEXT:    v_mov_b32_e32 v9, s212657; GFX11-NEXT:    v_mov_b32_e32 v7, v1012658; GFX11-NEXT:  .LBB11_15: ; %frem.loop_exit12659; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12660; GFX11-NEXT:    v_add_nc_u32_e32 v9, -11, v912661; GFX11-NEXT:    v_ldexp_f32 v7, v7, v912662; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12663; GFX11-NEXT:    v_mul_f32_e32 v8, v7, v812664; GFX11-NEXT:    v_rndne_f32_e32 v8, v812665; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12666; GFX11-NEXT:    v_fma_f32 v7, -v8, v6, v712667; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v712668; GFX11-NEXT:    v_add_f32_e32 v6, v7, v612669; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12670; GFX11-NEXT:    v_cndmask_b32_e32 v6, v7, v6, vcc_lo12671; GFX11-NEXT:    v_ldexp_f32 v5, v6, v512672; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)12673; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v112674; GFX11-NEXT:  .LBB11_16: ; %Flow5012675; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v212676; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|12677; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo12678; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v1|12679; GFX11-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v4, vcc_lo12680; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v312681; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo12682; GFX11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_cndmask_b32 v1, 0x7fc00000, v512683; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]12684; GFX11-NEXT:    s_endpgm12685;12686; GFX1150-LABEL: frem_v2f32:12687; GFX1150:       ; %bb.0:12688; GFX1150-NEXT:    s_clause 0x112689; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2412690; GFX1150-NEXT:    s_load_b64 s[6:7], s[4:5], 0x3412691; GFX1150-NEXT:    v_mov_b32_e32 v2, 012692; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)12693; GFX1150-NEXT:    global_load_b64 v[0:1], v2, s[2:3]12694; GFX1150-NEXT:    s_waitcnt vmcnt(0)12695; GFX1150-NEXT:    v_readfirstlane_b32 s5, v112696; GFX1150-NEXT:    global_load_b64 v[1:2], v2, s[6:7] offset:3212697; GFX1150-NEXT:    v_readfirstlane_b32 s6, v012698; GFX1150-NEXT:    s_and_b32 s3, s6, 0x7fffffff12699; GFX1150-NEXT:    s_waitcnt vmcnt(0)12700; GFX1150-NEXT:    v_readfirstlane_b32 s4, v112701; GFX1150-NEXT:    v_readfirstlane_b32 s2, v212702; GFX1150-NEXT:    s_and_b32 s8, s4, 0x7fffffff12703; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12704; GFX1150-NEXT:    s_cmp_ngt_f32 s3, s812705; GFX1150-NEXT:    s_cbranch_scc0 .LBB11_212706; GFX1150-NEXT:  ; %bb.1: ; %frem.else1612707; GFX1150-NEXT:    s_cmp_eq_f32 s3, s812708; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, 0, s612709; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 012710; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)12711; GFX1150-NEXT:    v_cndmask_b32_e32 v0, s6, v0, vcc_lo12712; GFX1150-NEXT:    s_cbranch_execz .LBB11_312713; GFX1150-NEXT:    s_branch .LBB11_812714; GFX1150-NEXT:  .LBB11_2:12715; GFX1150-NEXT:    ; implicit-def: $vgpr012716; GFX1150-NEXT:  .LBB11_3: ; %frem.compute1512717; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s4|12718; GFX1150-NEXT:    v_frexp_mant_f32_e64 v0, |s6|12719; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, s612720; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)12721; GFX1150-NEXT:    v_ldexp_f32 v1, v1, 112722; GFX1150-NEXT:    v_ldexp_f32 v2, v0, 1212723; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v0, s412724; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)12725; GFX1150-NEXT:    v_readfirstlane_b32 s7, v312726; GFX1150-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.012727; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)12728; GFX1150-NEXT:    v_readfirstlane_b32 s8, v012729; GFX1150-NEXT:    v_add_nc_u32_e32 v0, -1, v012730; GFX1150-NEXT:    v_rcp_f32_e32 v6, v512731; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12732; GFX1150-NEXT:    v_not_b32_e32 v4, v012733; GFX1150-NEXT:    v_add_nc_u32_e32 v4, v4, v312734; GFX1150-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.012735; GFX1150-NEXT:    s_denorm_mode 1512736; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12737; GFX1150-NEXT:    v_fma_f32 v7, -v5, v6, 1.012738; GFX1150-NEXT:    v_fmac_f32_e32 v6, v7, v612739; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12740; GFX1150-NEXT:    v_mul_f32_e32 v7, v3, v612741; GFX1150-NEXT:    v_fma_f32 v8, -v5, v7, v312742; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12743; GFX1150-NEXT:    v_fmac_f32_e32 v7, v8, v612744; GFX1150-NEXT:    v_fma_f32 v3, -v5, v7, v312745; GFX1150-NEXT:    s_denorm_mode 1212746; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12747; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v6, v712748; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v412749; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.012750; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_712751; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12752; GFX1150-NEXT:    s_sub_i32 s7, s7, s812753; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12754; GFX1150-NEXT:    s_add_i32 s7, s7, 1212755; GFX1150-NEXT:  .LBB11_5: ; %frem.loop_body2312756; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=112757; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12758; GFX1150-NEXT:    v_mov_b32_e32 v5, v212759; GFX1150-NEXT:    s_add_i32 s7, s7, -1212760; GFX1150-NEXT:    s_cmp_gt_i32 s7, 1212761; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12762; GFX1150-NEXT:    v_mul_f32_e32 v2, v5, v312763; GFX1150-NEXT:    v_rndne_f32_e32 v2, v212764; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12765; GFX1150-NEXT:    v_xor_b32_e32 v2, 0x80000000, v212766; GFX1150-NEXT:    v_fma_f32 v2, v2, v1, v512767; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12768; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v212769; GFX1150-NEXT:    v_add_f32_e32 v4, v2, v112770; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo12771; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)12772; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 1212773; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_512774; GFX1150-NEXT:  ; %bb.6: ; %Flow5112775; GFX1150-NEXT:    v_mov_b32_e32 v4, s712776; GFX1150-NEXT:    v_mov_b32_e32 v2, v512777; GFX1150-NEXT:  .LBB11_7: ; %frem.loop_exit2412778; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12779; GFX1150-NEXT:    v_add_nc_u32_e32 v4, -11, v412780; GFX1150-NEXT:    v_ldexp_f32 v2, v2, v412781; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12782; GFX1150-NEXT:    v_mul_f32_e32 v3, v2, v312783; GFX1150-NEXT:    v_rndne_f32_e32 v3, v312784; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12785; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v312786; GFX1150-NEXT:    v_fmac_f32_e32 v2, v3, v112787; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12788; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v212789; GFX1150-NEXT:    v_add_f32_e32 v1, v2, v112790; GFX1150-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo12791; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12792; GFX1150-NEXT:    v_ldexp_f32 v0, v1, v012793; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s612794; GFX1150-NEXT:  .LBB11_8:12795; GFX1150-NEXT:    s_and_b32 s6, s5, 0x7fffffff12796; GFX1150-NEXT:    s_and_b32 s8, s2, 0x7fffffff12797; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12798; GFX1150-NEXT:    s_cmp_ngt_f32 s6, s812799; GFX1150-NEXT:    s_cbranch_scc0 .LBB11_1012800; GFX1150-NEXT:  ; %bb.9: ; %frem.else12801; GFX1150-NEXT:    s_cmp_eq_f32 s6, s812802; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, 0, s512803; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 012804; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)12805; GFX1150-NEXT:    v_cndmask_b32_e32 v1, s5, v1, vcc_lo12806; GFX1150-NEXT:    s_cbranch_execz .LBB11_1112807; GFX1150-NEXT:    s_branch .LBB11_1612808; GFX1150-NEXT:  .LBB11_10:12809; GFX1150-NEXT:    ; implicit-def: $vgpr112810; GFX1150-NEXT:  .LBB11_11: ; %frem.compute12811; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s2|12812; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s5|12813; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v4, s512814; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)12815; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 112816; GFX1150-NEXT:    v_ldexp_f32 v3, v1, 1212817; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v1, s212818; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)12819; GFX1150-NEXT:    v_readfirstlane_b32 s7, v412820; GFX1150-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.012821; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)12822; GFX1150-NEXT:    v_readfirstlane_b32 s8, v112823; GFX1150-NEXT:    v_add_nc_u32_e32 v1, -1, v112824; GFX1150-NEXT:    v_rcp_f32_e32 v7, v612825; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12826; GFX1150-NEXT:    v_not_b32_e32 v5, v112827; GFX1150-NEXT:    v_add_nc_u32_e32 v5, v5, v412828; GFX1150-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.012829; GFX1150-NEXT:    s_denorm_mode 1512830; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12831; GFX1150-NEXT:    v_fma_f32 v8, -v6, v7, 1.012832; GFX1150-NEXT:    v_fmac_f32_e32 v7, v8, v712833; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12834; GFX1150-NEXT:    v_mul_f32_e32 v8, v4, v712835; GFX1150-NEXT:    v_fma_f32 v9, -v6, v8, v412836; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12837; GFX1150-NEXT:    v_fmac_f32_e32 v8, v9, v712838; GFX1150-NEXT:    v_fma_f32 v4, -v6, v8, v412839; GFX1150-NEXT:    s_denorm_mode 1212840; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12841; GFX1150-NEXT:    v_div_fmas_f32 v4, v4, v7, v812842; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v512843; GFX1150-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.012844; GFX1150-NEXT:    s_cbranch_vccnz .LBB11_1512845; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader12846; GFX1150-NEXT:    s_sub_i32 s7, s7, s812847; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12848; GFX1150-NEXT:    s_add_i32 s7, s7, 1212849; GFX1150-NEXT:  .LBB11_13: ; %frem.loop_body12850; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=112851; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)12852; GFX1150-NEXT:    v_mov_b32_e32 v6, v312853; GFX1150-NEXT:    s_add_i32 s7, s7, -1212854; GFX1150-NEXT:    s_cmp_gt_i32 s7, 1212855; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12856; GFX1150-NEXT:    v_mul_f32_e32 v3, v6, v412857; GFX1150-NEXT:    v_rndne_f32_e32 v3, v312858; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12859; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v312860; GFX1150-NEXT:    v_fma_f32 v3, v3, v2, v612861; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12862; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v312863; GFX1150-NEXT:    v_add_f32_e32 v5, v3, v212864; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo12865; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)12866; GFX1150-NEXT:    v_ldexp_f32 v3, v3, 1212867; GFX1150-NEXT:    s_cbranch_scc1 .LBB11_1312868; GFX1150-NEXT:  ; %bb.14: ; %Flow12869; GFX1150-NEXT:    v_mov_b32_e32 v5, s712870; GFX1150-NEXT:    v_mov_b32_e32 v3, v612871; GFX1150-NEXT:  .LBB11_15: ; %frem.loop_exit12872; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)12873; GFX1150-NEXT:    v_add_nc_u32_e32 v5, -11, v512874; GFX1150-NEXT:    v_ldexp_f32 v3, v3, v512875; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12876; GFX1150-NEXT:    v_mul_f32_e32 v4, v3, v412877; GFX1150-NEXT:    v_rndne_f32_e32 v4, v412878; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12879; GFX1150-NEXT:    v_xor_b32_e32 v4, 0x80000000, v412880; GFX1150-NEXT:    v_fmac_f32_e32 v3, v4, v212881; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)12882; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v312883; GFX1150-NEXT:    v_add_f32_e32 v2, v3, v212884; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo12885; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12886; GFX1150-NEXT:    v_ldexp_f32 v1, v2, v112887; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s512888; GFX1150-NEXT:  .LBB11_16: ; %Flow5012889; GFX1150-NEXT:    s_cmp_lg_f32 s4, 012890; GFX1150-NEXT:    s_cselect_b32 s4, -1, 012891; GFX1150-NEXT:    s_cmp_nge_f32 s3, 0x7f80000012892; GFX1150-NEXT:    s_cselect_b32 s3, -1, 012893; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12894; GFX1150-NEXT:    s_and_b32 vcc_lo, s3, s412895; GFX1150-NEXT:    s_cmp_lg_f32 s2, 012896; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v0, vcc_lo12897; GFX1150-NEXT:    s_cselect_b32 s2, -1, 012898; GFX1150-NEXT:    s_cmp_nge_f32 s6, 0x7f80000012899; GFX1150-NEXT:    s_cselect_b32 s3, -1, 012900; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12901; GFX1150-NEXT:    s_and_b32 vcc_lo, s3, s212902; GFX1150-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_cndmask_b32 v1, 0x7fc00000, v112903; GFX1150-NEXT:    global_store_b64 v2, v[0:1], s[0:1]12904; GFX1150-NEXT:    s_endpgm12905;12906; GFX1200-LABEL: frem_v2f32:12907; GFX1200:       ; %bb.0:12908; GFX1200-NEXT:    s_clause 0x112909; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2412910; GFX1200-NEXT:    s_load_b64 s[6:7], s[4:5], 0x3412911; GFX1200-NEXT:    v_mov_b32_e32 v2, 012912; GFX1200-NEXT:    s_wait_kmcnt 0x012913; GFX1200-NEXT:    global_load_b64 v[0:1], v2, s[2:3]12914; GFX1200-NEXT:    s_wait_loadcnt 0x012915; GFX1200-NEXT:    v_readfirstlane_b32 s5, v112916; GFX1200-NEXT:    global_load_b64 v[1:2], v2, s[6:7] offset:3212917; GFX1200-NEXT:    v_readfirstlane_b32 s6, v012918; GFX1200-NEXT:    s_and_b32 s3, s6, 0x7fffffff12919; GFX1200-NEXT:    s_wait_loadcnt 0x012920; GFX1200-NEXT:    v_readfirstlane_b32 s4, v112921; GFX1200-NEXT:    v_readfirstlane_b32 s2, v212922; GFX1200-NEXT:    s_and_b32 s8, s4, 0x7fffffff12923; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)12924; GFX1200-NEXT:    s_cmp_ngt_f32 s3, s812925; GFX1200-NEXT:    s_cbranch_scc0 .LBB11_212926; GFX1200-NEXT:  ; %bb.1: ; %frem.else1612927; GFX1200-NEXT:    s_cmp_eq_f32 s3, s812928; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, 0, s612929; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 012930; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)12931; GFX1200-NEXT:    v_cndmask_b32_e32 v0, s6, v0, vcc_lo12932; GFX1200-NEXT:    s_cbranch_execz .LBB11_312933; GFX1200-NEXT:    s_branch .LBB11_812934; GFX1200-NEXT:  .LBB11_2:12935; GFX1200-NEXT:    ; implicit-def: $vgpr012936; GFX1200-NEXT:  .LBB11_3: ; %frem.compute1512937; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s4|12938; GFX1200-NEXT:    v_frexp_mant_f32_e64 v0, |s6|12939; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, s612940; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)12941; GFX1200-NEXT:    v_ldexp_f32 v1, v1, 112942; GFX1200-NEXT:    v_ldexp_f32 v2, v0, 1212943; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v0, s412944; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)12945; GFX1200-NEXT:    v_readfirstlane_b32 s7, v312946; GFX1200-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.012947; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)12948; GFX1200-NEXT:    v_readfirstlane_b32 s8, v012949; GFX1200-NEXT:    v_add_nc_u32_e32 v0, -1, v012950; GFX1200-NEXT:    v_rcp_f32_e32 v6, v512951; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12952; GFX1200-NEXT:    v_not_b32_e32 v4, v012953; GFX1200-NEXT:    v_add_nc_u32_e32 v4, v4, v312954; GFX1200-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.012955; GFX1200-NEXT:    s_denorm_mode 1512956; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12957; GFX1200-NEXT:    v_fma_f32 v7, -v5, v6, 1.012958; GFX1200-NEXT:    v_fmac_f32_e32 v6, v7, v612959; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12960; GFX1200-NEXT:    v_mul_f32_e32 v7, v3, v612961; GFX1200-NEXT:    v_fma_f32 v8, -v5, v7, v312962; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12963; GFX1200-NEXT:    v_fmac_f32_e32 v7, v8, v612964; GFX1200-NEXT:    v_fma_f32 v3, -v5, v7, v312965; GFX1200-NEXT:    s_denorm_mode 1212966; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)12967; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)12968; GFX1200-NEXT:    v_div_fmas_f32 v3, v3, v6, v712969; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v412970; GFX1200-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.012971; GFX1200-NEXT:    s_cbranch_vccnz .LBB11_712972; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader12973; GFX1200-NEXT:    s_sub_co_i32 s7, s7, s812974; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)12975; GFX1200-NEXT:    s_add_co_i32 s7, s7, 1212976; GFX1200-NEXT:  .LBB11_5: ; %frem.loop_body2312977; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=112978; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)12979; GFX1200-NEXT:    v_mov_b32_e32 v5, v212980; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)12981; GFX1200-NEXT:    s_add_co_i32 s7, s7, -1212982; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)12983; GFX1200-NEXT:    s_cmp_gt_i32 s7, 1212984; GFX1200-NEXT:    v_mul_f32_e32 v2, v5, v312985; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12986; GFX1200-NEXT:    v_rndne_f32_e32 v2, v212987; GFX1200-NEXT:    v_xor_b32_e32 v2, 0x80000000, v212988; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12989; GFX1200-NEXT:    v_fma_f32 v2, v2, v1, v512990; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v212991; GFX1200-NEXT:    v_add_f32_e32 v4, v2, v112992; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)12993; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)12994; GFX1200-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo12995; GFX1200-NEXT:    v_ldexp_f32 v2, v2, 1212996; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_512997; GFX1200-NEXT:  ; %bb.6: ; %Flow5112998; GFX1200-NEXT:    v_mov_b32_e32 v4, s712999; GFX1200-NEXT:    v_mov_b32_e32 v2, v513000; GFX1200-NEXT:  .LBB11_7: ; %frem.loop_exit2413001; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)13002; GFX1200-NEXT:    v_add_nc_u32_e32 v4, -11, v413003; GFX1200-NEXT:    v_ldexp_f32 v2, v2, v413004; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13005; GFX1200-NEXT:    v_mul_f32_e32 v3, v2, v313006; GFX1200-NEXT:    v_rndne_f32_e32 v3, v313007; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13008; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v313009; GFX1200-NEXT:    v_fmac_f32_e32 v2, v3, v113010; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)13011; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v213012; GFX1200-NEXT:    v_add_f32_e32 v1, v2, v113013; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)13014; GFX1200-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo13015; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13016; GFX1200-NEXT:    v_ldexp_f32 v0, v1, v013017; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s613018; GFX1200-NEXT:  .LBB11_8:13019; GFX1200-NEXT:    s_and_b32 s6, s5, 0x7fffffff13020; GFX1200-NEXT:    s_and_b32 s8, s2, 0x7fffffff13021; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13022; GFX1200-NEXT:    s_cmp_ngt_f32 s6, s813023; GFX1200-NEXT:    s_cbranch_scc0 .LBB11_1013024; GFX1200-NEXT:  ; %bb.9: ; %frem.else13025; GFX1200-NEXT:    s_cmp_eq_f32 s6, s813026; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, 0, s513027; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 013028; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13029; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)13030; GFX1200-NEXT:    v_cndmask_b32_e32 v1, s5, v1, vcc_lo13031; GFX1200-NEXT:    s_cbranch_execz .LBB11_1113032; GFX1200-NEXT:    s_branch .LBB11_1613033; GFX1200-NEXT:  .LBB11_10:13034; GFX1200-NEXT:    ; implicit-def: $vgpr113035; GFX1200-NEXT:  .LBB11_11: ; %frem.compute13036; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s2|13037; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s5|13038; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v4, s513039; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)13040; GFX1200-NEXT:    v_ldexp_f32 v2, v2, 113041; GFX1200-NEXT:    v_ldexp_f32 v3, v1, 1213042; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v1, s213043; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)13044; GFX1200-NEXT:    v_readfirstlane_b32 s7, v413045; GFX1200-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.013046; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)13047; GFX1200-NEXT:    v_readfirstlane_b32 s8, v113048; GFX1200-NEXT:    v_add_nc_u32_e32 v1, -1, v113049; GFX1200-NEXT:    v_rcp_f32_e32 v7, v613050; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13051; GFX1200-NEXT:    v_not_b32_e32 v5, v113052; GFX1200-NEXT:    v_add_nc_u32_e32 v5, v5, v413053; GFX1200-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.013054; GFX1200-NEXT:    s_denorm_mode 1513055; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13056; GFX1200-NEXT:    v_fma_f32 v8, -v6, v7, 1.013057; GFX1200-NEXT:    v_fmac_f32_e32 v7, v8, v713058; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13059; GFX1200-NEXT:    v_mul_f32_e32 v8, v4, v713060; GFX1200-NEXT:    v_fma_f32 v9, -v6, v8, v413061; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13062; GFX1200-NEXT:    v_fmac_f32_e32 v8, v9, v713063; GFX1200-NEXT:    v_fma_f32 v4, -v6, v8, v413064; GFX1200-NEXT:    s_denorm_mode 1213065; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)13066; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)13067; GFX1200-NEXT:    v_div_fmas_f32 v4, v4, v7, v813068; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v513069; GFX1200-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.013070; GFX1200-NEXT:    s_cbranch_vccnz .LBB11_1513071; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body.preheader13072; GFX1200-NEXT:    s_sub_co_i32 s7, s7, s813073; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13074; GFX1200-NEXT:    s_add_co_i32 s7, s7, 1213075; GFX1200-NEXT:  .LBB11_13: ; %frem.loop_body13076; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=113077; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)13078; GFX1200-NEXT:    v_mov_b32_e32 v6, v313079; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13080; GFX1200-NEXT:    s_add_co_i32 s7, s7, -1213081; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13082; GFX1200-NEXT:    s_cmp_gt_i32 s7, 1213083; GFX1200-NEXT:    v_mul_f32_e32 v3, v6, v413084; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13085; GFX1200-NEXT:    v_rndne_f32_e32 v3, v313086; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v313087; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13088; GFX1200-NEXT:    v_fma_f32 v3, v3, v2, v613089; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v313090; GFX1200-NEXT:    v_add_f32_e32 v5, v3, v213091; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)13092; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13093; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo13094; GFX1200-NEXT:    v_ldexp_f32 v3, v3, 1213095; GFX1200-NEXT:    s_cbranch_scc1 .LBB11_1313096; GFX1200-NEXT:  ; %bb.14: ; %Flow13097; GFX1200-NEXT:    v_mov_b32_e32 v5, s713098; GFX1200-NEXT:    v_mov_b32_e32 v3, v613099; GFX1200-NEXT:  .LBB11_15: ; %frem.loop_exit13100; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)13101; GFX1200-NEXT:    v_add_nc_u32_e32 v5, -11, v513102; GFX1200-NEXT:    v_ldexp_f32 v3, v3, v513103; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13104; GFX1200-NEXT:    v_mul_f32_e32 v4, v3, v413105; GFX1200-NEXT:    v_rndne_f32_e32 v4, v413106; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13107; GFX1200-NEXT:    v_xor_b32_e32 v4, 0x80000000, v413108; GFX1200-NEXT:    v_fmac_f32_e32 v3, v4, v213109; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)13110; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v313111; GFX1200-NEXT:    v_add_f32_e32 v2, v3, v213112; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)13113; GFX1200-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo13114; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)13115; GFX1200-NEXT:    v_ldexp_f32 v1, v2, v113116; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s513117; GFX1200-NEXT:  .LBB11_16: ; %Flow5013118; GFX1200-NEXT:    s_cmp_lg_f32 s4, 013119; GFX1200-NEXT:    s_cselect_b32 s4, -1, 013120; GFX1200-NEXT:    s_cmp_nge_f32 s3, 0x7f80000013121; GFX1200-NEXT:    s_cselect_b32 s3, -1, 013122; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13123; GFX1200-NEXT:    s_and_b32 vcc_lo, s3, s413124; GFX1200-NEXT:    s_cmp_lg_f32 s2, 013125; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13126; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v0, vcc_lo13127; GFX1200-NEXT:    s_cselect_b32 s2, -1, 013128; GFX1200-NEXT:    s_cmp_nge_f32 s6, 0x7f80000013129; GFX1200-NEXT:    s_cselect_b32 s3, -1, 013130; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13131; GFX1200-NEXT:    s_and_b32 vcc_lo, s3, s213132; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)13133; GFX1200-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_cndmask_b32 v1, 0x7fc00000, v113134; GFX1200-NEXT:    global_store_b64 v2, v[0:1], s[0:1]13135; GFX1200-NEXT:    s_endpgm13136                        ptr addrspace(1) %in2) #0 {13137   %gep2 = getelementptr <2 x float>, ptr addrspace(1) %in2, i32 413138   %r0 = load <2 x float>, ptr addrspace(1) %in1, align 813139   %r1 = load <2 x float>, ptr addrspace(1) %gep2, align 813140   %r2 = frem <2 x float> %r0, %r113141   store <2 x float> %r2, ptr addrspace(1) %out, align 813142   ret void13143}13144 13145define amdgpu_kernel void @frem_v4f32(ptr addrspace(1) %out, ptr addrspace(1) %in1,13146; SI-LABEL: frem_v4f32:13147; SI:       ; %bb.0:13148; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x913149; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd13150; SI-NEXT:    s_mov_b32 s11, 0xf00013151; SI-NEXT:    s_mov_b32 s10, -113152; SI-NEXT:    s_waitcnt lgkmcnt(0)13153; SI-NEXT:    s_mov_b32 s8, s213154; SI-NEXT:    s_mov_b32 s9, s313155; SI-NEXT:    s_mov_b32 s6, s1013156; SI-NEXT:    s_mov_b32 s7, s1113157; SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 013158; SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:6413159; SI-NEXT:    s_waitcnt vmcnt(0)13160; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v4|13161; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]13162; SI-NEXT:    s_cbranch_vccz .LBB12_213163; SI-NEXT:  ; %bb.1: ; %frem.else7813164; SI-NEXT:    s_brev_b32 s2, -213165; SI-NEXT:    v_bfi_b32 v8, s2, 0, v013166; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|13167; SI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc13168; SI-NEXT:    s_mov_b64 vcc, exec13169; SI-NEXT:    s_cbranch_execz .LBB12_313170; SI-NEXT:    s_branch .LBB12_813171; SI-NEXT:  .LBB12_2:13172; SI-NEXT:    ; implicit-def: $vgpr813173; SI-NEXT:    s_mov_b64 vcc, 013174; SI-NEXT:  .LBB12_3: ; %frem.compute7713175; SI-NEXT:    s_mov_b32 s6, 0x7f80000013176; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v0|, s613177; SI-NEXT:    v_frexp_exp_i32_f32_e32 v8, v013178; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec13179; SI-NEXT:    v_readfirstlane_b32 s4, v813180; SI-NEXT:    s_cselect_b32 s4, s4, 013181; SI-NEXT:    v_frexp_mant_f32_e64 v8, |v0|13182; SI-NEXT:    v_cndmask_b32_e64 v8, |v0|, v8, s[2:3]13183; SI-NEXT:    v_ldexp_f32_e64 v9, v8, 1213184; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v4|, s613185; SI-NEXT:    v_frexp_mant_f32_e64 v8, |v4|13186; SI-NEXT:    v_cndmask_b32_e64 v8, |v4|, v8, s[2:3]13187; SI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v413188; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec13189; SI-NEXT:    v_readfirstlane_b32 s2, v1013190; SI-NEXT:    s_cselect_b32 s5, s2, 013191; SI-NEXT:    s_add_i32 s2, s5, -113192; SI-NEXT:    v_ldexp_f32_e64 v8, v8, 113193; SI-NEXT:    s_not_b32 s3, s213194; SI-NEXT:    s_add_i32 s3, s3, s413195; SI-NEXT:    v_div_scale_f32 v10, vcc, 1.0, v8, 1.013196; SI-NEXT:    v_div_scale_f32 v11, s[6:7], v8, v8, 1.013197; SI-NEXT:    v_rcp_f32_e32 v12, v1113198; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313199; SI-NEXT:    v_fma_f32 v13, -v11, v12, 1.013200; SI-NEXT:    v_fma_f32 v12, v13, v12, v1213201; SI-NEXT:    v_mul_f32_e32 v13, v10, v1213202; SI-NEXT:    v_fma_f32 v14, -v11, v13, v1013203; SI-NEXT:    v_fma_f32 v13, v14, v12, v1313204; SI-NEXT:    v_fma_f32 v10, -v11, v13, v1013205; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013206; SI-NEXT:    v_div_fmas_f32 v10, v10, v12, v1313207; SI-NEXT:    v_div_fixup_f32 v10, v10, v8, 1.013208; SI-NEXT:    s_cmp_lt_i32 s3, 1313209; SI-NEXT:    s_cbranch_scc1 .LBB12_713210; SI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader13211; SI-NEXT:    s_sub_i32 s3, s4, s513212; SI-NEXT:    s_add_i32 s3, s3, 1213213; SI-NEXT:  .LBB12_5: ; %frem.loop_body8513214; SI-NEXT:    ; =>This Inner Loop Header: Depth=113215; SI-NEXT:    v_mov_b32_e32 v11, v913216; SI-NEXT:    v_mul_f32_e32 v9, v11, v1013217; SI-NEXT:    v_rndne_f32_e32 v9, v913218; SI-NEXT:    v_fma_f32 v9, -v9, v8, v1113219; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v913220; SI-NEXT:    v_add_f32_e32 v12, v9, v813221; SI-NEXT:    v_cndmask_b32_e32 v9, v9, v12, vcc13222; SI-NEXT:    v_ldexp_f32_e64 v9, v9, 1213223; SI-NEXT:    s_add_i32 s3, s3, -1213224; SI-NEXT:    s_cmp_gt_i32 s3, 1213225; SI-NEXT:    s_cbranch_scc1 .LBB12_513226; SI-NEXT:  ; %bb.6: ; %Flow12513227; SI-NEXT:    v_mov_b32_e32 v9, v1113228; SI-NEXT:  .LBB12_7: ; %frem.loop_exit8613229; SI-NEXT:    s_add_i32 s3, s3, -1113230; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s313231; SI-NEXT:    v_mul_f32_e32 v10, v9, v1013232; SI-NEXT:    v_rndne_f32_e32 v10, v1013233; SI-NEXT:    v_fma_f32 v9, -v10, v8, v913234; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v913235; SI-NEXT:    v_add_f32_e32 v8, v9, v813236; SI-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc13237; SI-NEXT:    v_ldexp_f32_e64 v8, v8, s213238; SI-NEXT:    s_brev_b32 s2, -213239; SI-NEXT:    v_bfi_b32 v8, s2, v8, v013240; SI-NEXT:  .LBB12_8:13241; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|13242; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]13243; SI-NEXT:    s_cbranch_vccz .LBB12_1013244; SI-NEXT:  ; %bb.9: ; %frem.else4713245; SI-NEXT:    s_brev_b32 s2, -213246; SI-NEXT:    v_bfi_b32 v9, s2, 0, v113247; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|13248; SI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc13249; SI-NEXT:    s_mov_b64 vcc, exec13250; SI-NEXT:    s_cbranch_execz .LBB12_1113251; SI-NEXT:    s_branch .LBB12_1613252; SI-NEXT:  .LBB12_10:13253; SI-NEXT:    ; implicit-def: $vgpr913254; SI-NEXT:    s_mov_b64 vcc, 013255; SI-NEXT:  .LBB12_11: ; %frem.compute4613256; SI-NEXT:    s_mov_b32 s6, 0x7f80000013257; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v1|, s613258; SI-NEXT:    v_frexp_exp_i32_f32_e32 v9, v113259; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec13260; SI-NEXT:    v_readfirstlane_b32 s4, v913261; SI-NEXT:    s_cselect_b32 s4, s4, 013262; SI-NEXT:    v_frexp_mant_f32_e64 v9, |v1|13263; SI-NEXT:    v_cndmask_b32_e64 v9, |v1|, v9, s[2:3]13264; SI-NEXT:    v_ldexp_f32_e64 v10, v9, 1213265; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v5|, s613266; SI-NEXT:    v_frexp_mant_f32_e64 v9, |v5|13267; SI-NEXT:    v_cndmask_b32_e64 v9, |v5|, v9, s[2:3]13268; SI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v513269; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec13270; SI-NEXT:    v_readfirstlane_b32 s2, v1113271; SI-NEXT:    s_cselect_b32 s5, s2, 013272; SI-NEXT:    s_add_i32 s2, s5, -113273; SI-NEXT:    v_ldexp_f32_e64 v9, v9, 113274; SI-NEXT:    s_not_b32 s3, s213275; SI-NEXT:    s_add_i32 s3, s3, s413276; SI-NEXT:    v_div_scale_f32 v11, vcc, 1.0, v9, 1.013277; SI-NEXT:    v_div_scale_f32 v12, s[6:7], v9, v9, 1.013278; SI-NEXT:    v_rcp_f32_e32 v13, v1213279; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313280; SI-NEXT:    v_fma_f32 v14, -v12, v13, 1.013281; SI-NEXT:    v_fma_f32 v13, v14, v13, v1313282; SI-NEXT:    v_mul_f32_e32 v14, v11, v1313283; SI-NEXT:    v_fma_f32 v15, -v12, v14, v1113284; SI-NEXT:    v_fma_f32 v14, v15, v13, v1413285; SI-NEXT:    v_fma_f32 v11, -v12, v14, v1113286; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013287; SI-NEXT:    v_div_fmas_f32 v11, v11, v13, v1413288; SI-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.013289; SI-NEXT:    s_cmp_lt_i32 s3, 1313290; SI-NEXT:    s_cbranch_scc1 .LBB12_1513291; SI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader13292; SI-NEXT:    s_sub_i32 s3, s4, s513293; SI-NEXT:    s_add_i32 s3, s3, 1213294; SI-NEXT:  .LBB12_13: ; %frem.loop_body5413295; SI-NEXT:    ; =>This Inner Loop Header: Depth=113296; SI-NEXT:    v_mov_b32_e32 v12, v1013297; SI-NEXT:    v_mul_f32_e32 v10, v12, v1113298; SI-NEXT:    v_rndne_f32_e32 v10, v1013299; SI-NEXT:    v_fma_f32 v10, -v10, v9, v1213300; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1013301; SI-NEXT:    v_add_f32_e32 v13, v10, v913302; SI-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc13303; SI-NEXT:    v_ldexp_f32_e64 v10, v10, 1213304; SI-NEXT:    s_add_i32 s3, s3, -1213305; SI-NEXT:    s_cmp_gt_i32 s3, 1213306; SI-NEXT:    s_cbranch_scc1 .LBB12_1313307; SI-NEXT:  ; %bb.14: ; %Flow12113308; SI-NEXT:    v_mov_b32_e32 v10, v1213309; SI-NEXT:  .LBB12_15: ; %frem.loop_exit5513310; SI-NEXT:    s_add_i32 s3, s3, -1113311; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s313312; SI-NEXT:    v_mul_f32_e32 v11, v10, v1113313; SI-NEXT:    v_rndne_f32_e32 v11, v1113314; SI-NEXT:    v_fma_f32 v10, -v11, v9, v1013315; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1013316; SI-NEXT:    v_add_f32_e32 v9, v10, v913317; SI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc13318; SI-NEXT:    v_ldexp_f32_e64 v9, v9, s213319; SI-NEXT:    s_brev_b32 s2, -213320; SI-NEXT:    v_bfi_b32 v9, s2, v9, v113321; SI-NEXT:  .LBB12_16:13322; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|13323; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]13324; SI-NEXT:    s_cbranch_vccz .LBB12_1813325; SI-NEXT:  ; %bb.17: ; %frem.else1613326; SI-NEXT:    s_brev_b32 s2, -213327; SI-NEXT:    v_bfi_b32 v10, s2, 0, v213328; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|13329; SI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc13330; SI-NEXT:    s_mov_b64 vcc, exec13331; SI-NEXT:    s_cbranch_execz .LBB12_1913332; SI-NEXT:    s_branch .LBB12_2413333; SI-NEXT:  .LBB12_18:13334; SI-NEXT:    ; implicit-def: $vgpr1013335; SI-NEXT:    s_mov_b64 vcc, 013336; SI-NEXT:  .LBB12_19: ; %frem.compute1513337; SI-NEXT:    s_mov_b32 s6, 0x7f80000013338; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v2|, s613339; SI-NEXT:    v_frexp_exp_i32_f32_e32 v10, v213340; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec13341; SI-NEXT:    v_readfirstlane_b32 s4, v1013342; SI-NEXT:    s_cselect_b32 s4, s4, 013343; SI-NEXT:    v_frexp_mant_f32_e64 v10, |v2|13344; SI-NEXT:    v_cndmask_b32_e64 v10, |v2|, v10, s[2:3]13345; SI-NEXT:    v_ldexp_f32_e64 v11, v10, 1213346; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v6|, s613347; SI-NEXT:    v_frexp_mant_f32_e64 v10, |v6|13348; SI-NEXT:    v_cndmask_b32_e64 v10, |v6|, v10, s[2:3]13349; SI-NEXT:    v_frexp_exp_i32_f32_e32 v12, v613350; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec13351; SI-NEXT:    v_readfirstlane_b32 s2, v1213352; SI-NEXT:    s_cselect_b32 s5, s2, 013353; SI-NEXT:    s_add_i32 s2, s5, -113354; SI-NEXT:    v_ldexp_f32_e64 v10, v10, 113355; SI-NEXT:    s_not_b32 s3, s213356; SI-NEXT:    s_add_i32 s3, s3, s413357; SI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v10, 1.013358; SI-NEXT:    v_div_scale_f32 v13, s[6:7], v10, v10, 1.013359; SI-NEXT:    v_rcp_f32_e32 v14, v1313360; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313361; SI-NEXT:    v_fma_f32 v15, -v13, v14, 1.013362; SI-NEXT:    v_fma_f32 v14, v15, v14, v1413363; SI-NEXT:    v_mul_f32_e32 v15, v12, v1413364; SI-NEXT:    v_fma_f32 v16, -v13, v15, v1213365; SI-NEXT:    v_fma_f32 v15, v16, v14, v1513366; SI-NEXT:    v_fma_f32 v12, -v13, v15, v1213367; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013368; SI-NEXT:    v_div_fmas_f32 v12, v12, v14, v1513369; SI-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.013370; SI-NEXT:    s_cmp_lt_i32 s3, 1313371; SI-NEXT:    s_cbranch_scc1 .LBB12_2313372; SI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader13373; SI-NEXT:    s_sub_i32 s3, s4, s513374; SI-NEXT:    s_add_i32 s3, s3, 1213375; SI-NEXT:  .LBB12_21: ; %frem.loop_body2313376; SI-NEXT:    ; =>This Inner Loop Header: Depth=113377; SI-NEXT:    v_mov_b32_e32 v13, v1113378; SI-NEXT:    v_mul_f32_e32 v11, v13, v1213379; SI-NEXT:    v_rndne_f32_e32 v11, v1113380; SI-NEXT:    v_fma_f32 v11, -v11, v10, v1313381; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113382; SI-NEXT:    v_add_f32_e32 v14, v11, v1013383; SI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc13384; SI-NEXT:    v_ldexp_f32_e64 v11, v11, 1213385; SI-NEXT:    s_add_i32 s3, s3, -1213386; SI-NEXT:    s_cmp_gt_i32 s3, 1213387; SI-NEXT:    s_cbranch_scc1 .LBB12_2113388; SI-NEXT:  ; %bb.22: ; %Flow11713389; SI-NEXT:    v_mov_b32_e32 v11, v1313390; SI-NEXT:  .LBB12_23: ; %frem.loop_exit2413391; SI-NEXT:    s_add_i32 s3, s3, -1113392; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s313393; SI-NEXT:    v_mul_f32_e32 v12, v11, v1213394; SI-NEXT:    v_rndne_f32_e32 v12, v1213395; SI-NEXT:    v_fma_f32 v11, -v12, v10, v1113396; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113397; SI-NEXT:    v_add_f32_e32 v10, v11, v1013398; SI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc13399; SI-NEXT:    v_ldexp_f32_e64 v10, v10, s213400; SI-NEXT:    s_brev_b32 s2, -213401; SI-NEXT:    v_bfi_b32 v10, s2, v10, v213402; SI-NEXT:  .LBB12_24:13403; SI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|13404; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]13405; SI-NEXT:    s_cbranch_vccz .LBB12_2613406; SI-NEXT:  ; %bb.25: ; %frem.else13407; SI-NEXT:    s_brev_b32 s2, -213408; SI-NEXT:    v_bfi_b32 v11, s2, 0, v313409; SI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|13410; SI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc13411; SI-NEXT:    s_mov_b64 vcc, exec13412; SI-NEXT:    s_cbranch_execz .LBB12_2713413; SI-NEXT:    s_branch .LBB12_3213414; SI-NEXT:  .LBB12_26:13415; SI-NEXT:    ; implicit-def: $vgpr1113416; SI-NEXT:    s_mov_b64 vcc, 013417; SI-NEXT:  .LBB12_27: ; %frem.compute13418; SI-NEXT:    s_mov_b32 s6, 0x7f80000013419; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v3|, s613420; SI-NEXT:    v_frexp_exp_i32_f32_e32 v11, v313421; SI-NEXT:    s_and_b64 s[4:5], s[2:3], exec13422; SI-NEXT:    v_readfirstlane_b32 s4, v1113423; SI-NEXT:    s_cselect_b32 s4, s4, 013424; SI-NEXT:    v_frexp_mant_f32_e64 v11, |v3|13425; SI-NEXT:    v_cndmask_b32_e64 v11, |v3|, v11, s[2:3]13426; SI-NEXT:    v_ldexp_f32_e64 v12, v11, 1213427; SI-NEXT:    v_cmp_lt_f32_e64 s[2:3], |v7|, s613428; SI-NEXT:    v_frexp_mant_f32_e64 v11, |v7|13429; SI-NEXT:    v_cndmask_b32_e64 v11, |v7|, v11, s[2:3]13430; SI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v713431; SI-NEXT:    s_and_b64 s[2:3], s[2:3], exec13432; SI-NEXT:    v_readfirstlane_b32 s2, v1313433; SI-NEXT:    s_cselect_b32 s5, s2, 013434; SI-NEXT:    s_add_i32 s2, s5, -113435; SI-NEXT:    v_ldexp_f32_e64 v11, v11, 113436; SI-NEXT:    s_not_b32 s3, s213437; SI-NEXT:    s_add_i32 s3, s3, s413438; SI-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v11, 1.013439; SI-NEXT:    v_div_scale_f32 v14, s[6:7], v11, v11, 1.013440; SI-NEXT:    v_rcp_f32_e32 v15, v1413441; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313442; SI-NEXT:    v_fma_f32 v16, -v14, v15, 1.013443; SI-NEXT:    v_fma_f32 v15, v16, v15, v1513444; SI-NEXT:    v_mul_f32_e32 v16, v13, v1513445; SI-NEXT:    v_fma_f32 v17, -v14, v16, v1313446; SI-NEXT:    v_fma_f32 v16, v17, v15, v1613447; SI-NEXT:    v_fma_f32 v13, -v14, v16, v1313448; SI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013449; SI-NEXT:    v_div_fmas_f32 v13, v13, v15, v1613450; SI-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.013451; SI-NEXT:    s_cmp_lt_i32 s3, 1313452; SI-NEXT:    s_cbranch_scc1 .LBB12_3113453; SI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader13454; SI-NEXT:    s_sub_i32 s3, s4, s513455; SI-NEXT:    s_add_i32 s3, s3, 1213456; SI-NEXT:  .LBB12_29: ; %frem.loop_body13457; SI-NEXT:    ; =>This Inner Loop Header: Depth=113458; SI-NEXT:    v_mov_b32_e32 v14, v1213459; SI-NEXT:    v_mul_f32_e32 v12, v14, v1313460; SI-NEXT:    v_rndne_f32_e32 v12, v1213461; SI-NEXT:    v_fma_f32 v12, -v12, v11, v1413462; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1213463; SI-NEXT:    v_add_f32_e32 v15, v12, v1113464; SI-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc13465; SI-NEXT:    v_ldexp_f32_e64 v12, v12, 1213466; SI-NEXT:    s_add_i32 s3, s3, -1213467; SI-NEXT:    s_cmp_gt_i32 s3, 1213468; SI-NEXT:    s_cbranch_scc1 .LBB12_2913469; SI-NEXT:  ; %bb.30: ; %Flow13470; SI-NEXT:    v_mov_b32_e32 v12, v1413471; SI-NEXT:  .LBB12_31: ; %frem.loop_exit13472; SI-NEXT:    s_add_i32 s3, s3, -1113473; SI-NEXT:    v_ldexp_f32_e64 v12, v12, s313474; SI-NEXT:    v_mul_f32_e32 v13, v12, v1313475; SI-NEXT:    v_rndne_f32_e32 v13, v1313476; SI-NEXT:    v_fma_f32 v12, -v13, v11, v1213477; SI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1213478; SI-NEXT:    v_add_f32_e32 v11, v12, v1113479; SI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc13480; SI-NEXT:    v_ldexp_f32_e64 v11, v11, s213481; SI-NEXT:    s_brev_b32 s2, -213482; SI-NEXT:    v_bfi_b32 v11, s2, v11, v313483; SI-NEXT:  .LBB12_32: ; %Flow11613484; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v413485; SI-NEXT:    s_mov_b32 s4, 0x7f80000013486; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s413487; SI-NEXT:    s_and_b64 vcc, s[2:3], vcc13488; SI-NEXT:    v_mov_b32_e32 v4, 0x7fc0000013489; SI-NEXT:    v_cndmask_b32_e32 v0, v4, v8, vcc13490; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v513491; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v1|, s413492; SI-NEXT:    s_and_b64 vcc, s[2:3], vcc13493; SI-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc13494; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v613495; SI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v2|, s413496; SI-NEXT:    s_and_b64 vcc, s[2:3], vcc13497; SI-NEXT:    v_cndmask_b32_e32 v2, v4, v10, vcc13498; SI-NEXT:    s_mov_b32 s3, 0xf00013499; SI-NEXT:    s_mov_b32 s2, -113500; SI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v713501; SI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v3|, s413502; SI-NEXT:    s_and_b64 vcc, s[4:5], vcc13503; SI-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc13504; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 013505; SI-NEXT:    s_endpgm13506;13507; CI-LABEL: frem_v4f32:13508; CI:       ; %bb.0:13509; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x913510; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd13511; CI-NEXT:    s_mov_b32 s11, 0xf00013512; CI-NEXT:    s_mov_b32 s10, -113513; CI-NEXT:    s_mov_b32 s6, s1013514; CI-NEXT:    s_waitcnt lgkmcnt(0)13515; CI-NEXT:    s_mov_b32 s8, s213516; CI-NEXT:    s_mov_b32 s9, s313517; CI-NEXT:    s_mov_b32 s7, s1113518; CI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 013519; CI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:6413520; CI-NEXT:    s_waitcnt vmcnt(0)13521; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v4|13522; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]13523; CI-NEXT:    s_cbranch_vccz .LBB12_213524; CI-NEXT:  ; %bb.1: ; %frem.else7813525; CI-NEXT:    s_brev_b32 s2, -213526; CI-NEXT:    v_bfi_b32 v8, s2, 0, v013527; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|13528; CI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc13529; CI-NEXT:    s_cbranch_execz .LBB12_313530; CI-NEXT:    s_branch .LBB12_813531; CI-NEXT:  .LBB12_2:13532; CI-NEXT:    ; implicit-def: $vgpr813533; CI-NEXT:  .LBB12_3: ; %frem.compute7713534; CI-NEXT:    v_frexp_mant_f32_e64 v9, |v4|13535; CI-NEXT:    v_ldexp_f32_e64 v9, v9, 113536; CI-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.013537; CI-NEXT:    v_frexp_mant_f32_e64 v8, |v0|13538; CI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v413539; CI-NEXT:    v_ldexp_f32_e64 v11, v8, 1213540; CI-NEXT:    v_add_i32_e32 v8, vcc, -1, v1413541; CI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v013542; CI-NEXT:    v_not_b32_e32 v10, v813543; CI-NEXT:    v_add_i32_e32 v10, vcc, v10, v1313544; CI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v9, 1.013545; CI-NEXT:    v_rcp_f32_e32 v16, v1513546; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313547; CI-NEXT:    v_fma_f32 v17, -v15, v16, 1.013548; CI-NEXT:    v_fma_f32 v16, v17, v16, v1613549; CI-NEXT:    v_mul_f32_e32 v17, v12, v1613550; CI-NEXT:    v_fma_f32 v18, -v15, v17, v1213551; CI-NEXT:    v_fma_f32 v17, v18, v16, v1713552; CI-NEXT:    v_fma_f32 v12, -v15, v17, v1213553; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013554; CI-NEXT:    v_div_fmas_f32 v12, v12, v16, v1713555; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1013556; CI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.013557; CI-NEXT:    s_cbranch_vccnz .LBB12_713558; CI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader13559; CI-NEXT:    v_sub_i32_e32 v10, vcc, v13, v1413560; CI-NEXT:    v_add_i32_e32 v10, vcc, 12, v1013561; CI-NEXT:  .LBB12_5: ; %frem.loop_body8513562; CI-NEXT:    ; =>This Inner Loop Header: Depth=113563; CI-NEXT:    v_mov_b32_e32 v13, v1113564; CI-NEXT:    v_mul_f32_e32 v11, v13, v1213565; CI-NEXT:    v_rndne_f32_e32 v11, v1113566; CI-NEXT:    v_fma_f32 v11, -v11, v9, v1313567; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113568; CI-NEXT:    v_add_f32_e32 v14, v11, v913569; CI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc13570; CI-NEXT:    v_add_i32_e32 v10, vcc, -12, v1013571; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1013572; CI-NEXT:    v_ldexp_f32_e64 v11, v11, 1213573; CI-NEXT:    s_cbranch_vccnz .LBB12_513574; CI-NEXT:  ; %bb.6: ; %Flow12513575; CI-NEXT:    v_mov_b32_e32 v11, v1313576; CI-NEXT:  .LBB12_7: ; %frem.loop_exit8613577; CI-NEXT:    v_add_i32_e32 v10, vcc, -11, v1013578; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v1013579; CI-NEXT:    v_mul_f32_e32 v11, v10, v1213580; CI-NEXT:    v_rndne_f32_e32 v11, v1113581; CI-NEXT:    v_fma_f32 v10, -v11, v9, v1013582; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1013583; CI-NEXT:    v_add_f32_e32 v9, v10, v913584; CI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc13585; CI-NEXT:    v_ldexp_f32_e32 v8, v9, v813586; CI-NEXT:    s_brev_b32 s2, -213587; CI-NEXT:    v_bfi_b32 v8, s2, v8, v013588; CI-NEXT:  .LBB12_8:13589; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|13590; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]13591; CI-NEXT:    s_cbranch_vccz .LBB12_1013592; CI-NEXT:  ; %bb.9: ; %frem.else4713593; CI-NEXT:    s_brev_b32 s2, -213594; CI-NEXT:    v_bfi_b32 v9, s2, 0, v113595; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|13596; CI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc13597; CI-NEXT:    s_cbranch_execz .LBB12_1113598; CI-NEXT:    s_branch .LBB12_1613599; CI-NEXT:  .LBB12_10:13600; CI-NEXT:    ; implicit-def: $vgpr913601; CI-NEXT:  .LBB12_11: ; %frem.compute4613602; CI-NEXT:    v_frexp_mant_f32_e64 v10, |v5|13603; CI-NEXT:    v_ldexp_f32_e64 v10, v10, 113604; CI-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.013605; CI-NEXT:    v_frexp_mant_f32_e64 v9, |v1|13606; CI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v513607; CI-NEXT:    v_ldexp_f32_e64 v12, v9, 1213608; CI-NEXT:    v_add_i32_e32 v9, vcc, -1, v1513609; CI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v113610; CI-NEXT:    v_not_b32_e32 v11, v913611; CI-NEXT:    v_add_i32_e32 v11, vcc, v11, v1413612; CI-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v10, 1.013613; CI-NEXT:    v_rcp_f32_e32 v17, v1613614; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313615; CI-NEXT:    v_fma_f32 v18, -v16, v17, 1.013616; CI-NEXT:    v_fma_f32 v17, v18, v17, v1713617; CI-NEXT:    v_mul_f32_e32 v18, v13, v1713618; CI-NEXT:    v_fma_f32 v19, -v16, v18, v1313619; CI-NEXT:    v_fma_f32 v18, v19, v17, v1813620; CI-NEXT:    v_fma_f32 v13, -v16, v18, v1313621; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013622; CI-NEXT:    v_div_fmas_f32 v13, v13, v17, v1813623; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1113624; CI-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.013625; CI-NEXT:    s_cbranch_vccnz .LBB12_1513626; CI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader13627; CI-NEXT:    v_sub_i32_e32 v11, vcc, v14, v1513628; CI-NEXT:    v_add_i32_e32 v11, vcc, 12, v1113629; CI-NEXT:  .LBB12_13: ; %frem.loop_body5413630; CI-NEXT:    ; =>This Inner Loop Header: Depth=113631; CI-NEXT:    v_mov_b32_e32 v14, v1213632; CI-NEXT:    v_mul_f32_e32 v12, v14, v1313633; CI-NEXT:    v_rndne_f32_e32 v12, v1213634; CI-NEXT:    v_fma_f32 v12, -v12, v10, v1413635; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1213636; CI-NEXT:    v_add_f32_e32 v15, v12, v1013637; CI-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc13638; CI-NEXT:    v_add_i32_e32 v11, vcc, -12, v1113639; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1113640; CI-NEXT:    v_ldexp_f32_e64 v12, v12, 1213641; CI-NEXT:    s_cbranch_vccnz .LBB12_1313642; CI-NEXT:  ; %bb.14: ; %Flow12113643; CI-NEXT:    v_mov_b32_e32 v12, v1413644; CI-NEXT:  .LBB12_15: ; %frem.loop_exit5513645; CI-NEXT:    v_add_i32_e32 v11, vcc, -11, v1113646; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v1113647; CI-NEXT:    v_mul_f32_e32 v12, v11, v1313648; CI-NEXT:    v_rndne_f32_e32 v12, v1213649; CI-NEXT:    v_fma_f32 v11, -v12, v10, v1113650; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113651; CI-NEXT:    v_add_f32_e32 v10, v11, v1013652; CI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc13653; CI-NEXT:    v_ldexp_f32_e32 v9, v10, v913654; CI-NEXT:    s_brev_b32 s2, -213655; CI-NEXT:    v_bfi_b32 v9, s2, v9, v113656; CI-NEXT:  .LBB12_16:13657; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|13658; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]13659; CI-NEXT:    s_cbranch_vccz .LBB12_1813660; CI-NEXT:  ; %bb.17: ; %frem.else1613661; CI-NEXT:    s_brev_b32 s2, -213662; CI-NEXT:    v_bfi_b32 v10, s2, 0, v213663; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|13664; CI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc13665; CI-NEXT:    s_cbranch_execz .LBB12_1913666; CI-NEXT:    s_branch .LBB12_2413667; CI-NEXT:  .LBB12_18:13668; CI-NEXT:    ; implicit-def: $vgpr1013669; CI-NEXT:  .LBB12_19: ; %frem.compute1513670; CI-NEXT:    v_frexp_mant_f32_e64 v11, |v6|13671; CI-NEXT:    v_ldexp_f32_e64 v11, v11, 113672; CI-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.013673; CI-NEXT:    v_frexp_mant_f32_e64 v10, |v2|13674; CI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v613675; CI-NEXT:    v_ldexp_f32_e64 v13, v10, 1213676; CI-NEXT:    v_add_i32_e32 v10, vcc, -1, v1613677; CI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v213678; CI-NEXT:    v_not_b32_e32 v12, v1013679; CI-NEXT:    v_add_i32_e32 v12, vcc, v12, v1513680; CI-NEXT:    v_div_scale_f32 v14, vcc, 1.0, v11, 1.013681; CI-NEXT:    v_rcp_f32_e32 v18, v1713682; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313683; CI-NEXT:    v_fma_f32 v19, -v17, v18, 1.013684; CI-NEXT:    v_fma_f32 v18, v19, v18, v1813685; CI-NEXT:    v_mul_f32_e32 v19, v14, v1813686; CI-NEXT:    v_fma_f32 v20, -v17, v19, v1413687; CI-NEXT:    v_fma_f32 v19, v20, v18, v1913688; CI-NEXT:    v_fma_f32 v14, -v17, v19, v1413689; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013690; CI-NEXT:    v_div_fmas_f32 v14, v14, v18, v1913691; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1213692; CI-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.013693; CI-NEXT:    s_cbranch_vccnz .LBB12_2313694; CI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader13695; CI-NEXT:    v_sub_i32_e32 v12, vcc, v15, v1613696; CI-NEXT:    v_add_i32_e32 v12, vcc, 12, v1213697; CI-NEXT:  .LBB12_21: ; %frem.loop_body2313698; CI-NEXT:    ; =>This Inner Loop Header: Depth=113699; CI-NEXT:    v_mov_b32_e32 v15, v1313700; CI-NEXT:    v_mul_f32_e32 v13, v15, v1413701; CI-NEXT:    v_rndne_f32_e32 v13, v1313702; CI-NEXT:    v_fma_f32 v13, -v13, v11, v1513703; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1313704; CI-NEXT:    v_add_f32_e32 v16, v13, v1113705; CI-NEXT:    v_cndmask_b32_e32 v13, v13, v16, vcc13706; CI-NEXT:    v_add_i32_e32 v12, vcc, -12, v1213707; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1213708; CI-NEXT:    v_ldexp_f32_e64 v13, v13, 1213709; CI-NEXT:    s_cbranch_vccnz .LBB12_2113710; CI-NEXT:  ; %bb.22: ; %Flow11713711; CI-NEXT:    v_mov_b32_e32 v13, v1513712; CI-NEXT:  .LBB12_23: ; %frem.loop_exit2413713; CI-NEXT:    v_add_i32_e32 v12, vcc, -11, v1213714; CI-NEXT:    v_ldexp_f32_e32 v12, v13, v1213715; CI-NEXT:    v_mul_f32_e32 v13, v12, v1413716; CI-NEXT:    v_rndne_f32_e32 v13, v1313717; CI-NEXT:    v_fma_f32 v12, -v13, v11, v1213718; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1213719; CI-NEXT:    v_add_f32_e32 v11, v12, v1113720; CI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc13721; CI-NEXT:    v_ldexp_f32_e32 v10, v11, v1013722; CI-NEXT:    s_brev_b32 s2, -213723; CI-NEXT:    v_bfi_b32 v10, s2, v10, v213724; CI-NEXT:  .LBB12_24:13725; CI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|13726; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]13727; CI-NEXT:    s_cbranch_vccz .LBB12_2613728; CI-NEXT:  ; %bb.25: ; %frem.else13729; CI-NEXT:    s_brev_b32 s2, -213730; CI-NEXT:    v_bfi_b32 v11, s2, 0, v313731; CI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|13732; CI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc13733; CI-NEXT:    s_cbranch_execz .LBB12_2713734; CI-NEXT:    s_branch .LBB12_3213735; CI-NEXT:  .LBB12_26:13736; CI-NEXT:    ; implicit-def: $vgpr1113737; CI-NEXT:  .LBB12_27: ; %frem.compute13738; CI-NEXT:    v_frexp_mant_f32_e64 v12, |v7|13739; CI-NEXT:    v_ldexp_f32_e64 v12, v12, 113740; CI-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.013741; CI-NEXT:    v_frexp_mant_f32_e64 v11, |v3|13742; CI-NEXT:    v_frexp_exp_i32_f32_e32 v17, v713743; CI-NEXT:    v_ldexp_f32_e64 v14, v11, 1213744; CI-NEXT:    v_add_i32_e32 v11, vcc, -1, v1713745; CI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v313746; CI-NEXT:    v_not_b32_e32 v13, v1113747; CI-NEXT:    v_add_i32_e32 v13, vcc, v13, v1613748; CI-NEXT:    v_div_scale_f32 v15, vcc, 1.0, v12, 1.013749; CI-NEXT:    v_rcp_f32_e32 v19, v1813750; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313751; CI-NEXT:    v_fma_f32 v20, -v18, v19, 1.013752; CI-NEXT:    v_fma_f32 v19, v20, v19, v1913753; CI-NEXT:    v_mul_f32_e32 v20, v15, v1913754; CI-NEXT:    v_fma_f32 v21, -v18, v20, v1513755; CI-NEXT:    v_fma_f32 v20, v21, v19, v2013756; CI-NEXT:    v_fma_f32 v15, -v18, v20, v1513757; CI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013758; CI-NEXT:    v_div_fmas_f32 v15, v15, v19, v2013759; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1313760; CI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.013761; CI-NEXT:    s_cbranch_vccnz .LBB12_3113762; CI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader13763; CI-NEXT:    v_sub_i32_e32 v13, vcc, v16, v1713764; CI-NEXT:    v_add_i32_e32 v13, vcc, 12, v1313765; CI-NEXT:  .LBB12_29: ; %frem.loop_body13766; CI-NEXT:    ; =>This Inner Loop Header: Depth=113767; CI-NEXT:    v_mov_b32_e32 v16, v1413768; CI-NEXT:    v_mul_f32_e32 v14, v16, v1513769; CI-NEXT:    v_rndne_f32_e32 v14, v1413770; CI-NEXT:    v_fma_f32 v14, -v14, v12, v1613771; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1413772; CI-NEXT:    v_add_f32_e32 v17, v14, v1213773; CI-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc13774; CI-NEXT:    v_add_i32_e32 v13, vcc, -12, v1313775; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1313776; CI-NEXT:    v_ldexp_f32_e64 v14, v14, 1213777; CI-NEXT:    s_cbranch_vccnz .LBB12_2913778; CI-NEXT:  ; %bb.30: ; %Flow13779; CI-NEXT:    v_mov_b32_e32 v14, v1613780; CI-NEXT:  .LBB12_31: ; %frem.loop_exit13781; CI-NEXT:    v_add_i32_e32 v13, vcc, -11, v1313782; CI-NEXT:    v_ldexp_f32_e32 v13, v14, v1313783; CI-NEXT:    v_mul_f32_e32 v14, v13, v1513784; CI-NEXT:    v_rndne_f32_e32 v14, v1413785; CI-NEXT:    v_fma_f32 v13, -v14, v12, v1313786; CI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1313787; CI-NEXT:    v_add_f32_e32 v12, v13, v1213788; CI-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc13789; CI-NEXT:    v_ldexp_f32_e32 v11, v12, v1113790; CI-NEXT:    s_brev_b32 s2, -213791; CI-NEXT:    v_bfi_b32 v11, s2, v11, v313792; CI-NEXT:  .LBB12_32: ; %Flow11613793; CI-NEXT:    s_mov_b32 s4, 0x7f80000013794; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v413795; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s413796; CI-NEXT:    s_and_b64 vcc, s[2:3], vcc13797; CI-NEXT:    v_mov_b32_e32 v4, 0x7fc0000013798; CI-NEXT:    v_cndmask_b32_e32 v0, v4, v8, vcc13799; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v513800; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v1|, s413801; CI-NEXT:    s_and_b64 vcc, s[2:3], vcc13802; CI-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc13803; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v613804; CI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v2|, s413805; CI-NEXT:    s_and_b64 vcc, s[2:3], vcc13806; CI-NEXT:    v_cndmask_b32_e32 v2, v4, v10, vcc13807; CI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v713808; CI-NEXT:    v_cmp_nge_f32_e64 s[4:5], |v3|, s413809; CI-NEXT:    s_and_b64 vcc, s[4:5], vcc13810; CI-NEXT:    s_mov_b32 s3, 0xf00013811; CI-NEXT:    s_mov_b32 s2, -113812; CI-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc13813; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 013814; CI-NEXT:    s_endpgm13815;13816; VI-LABEL: frem_v4f32:13817; VI:       ; %bb.0:13818; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2413819; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x3413820; VI-NEXT:    s_waitcnt lgkmcnt(0)13821; VI-NEXT:    v_mov_b32_e32 v0, s213822; VI-NEXT:    s_add_u32 s2, s4, 6413823; VI-NEXT:    v_mov_b32_e32 v1, s313824; VI-NEXT:    s_addc_u32 s3, s5, 013825; VI-NEXT:    v_mov_b32_e32 v5, s313826; VI-NEXT:    v_mov_b32_e32 v4, s213827; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]13828; VI-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]13829; VI-NEXT:    s_waitcnt vmcnt(0)13830; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v4|13831; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]13832; VI-NEXT:    s_cbranch_vccz .LBB12_213833; VI-NEXT:  ; %bb.1: ; %frem.else7813834; VI-NEXT:    s_brev_b32 s2, -213835; VI-NEXT:    v_bfi_b32 v8, s2, 0, v013836; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|13837; VI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc13838; VI-NEXT:    s_cbranch_execz .LBB12_313839; VI-NEXT:    s_branch .LBB12_813840; VI-NEXT:  .LBB12_2:13841; VI-NEXT:    ; implicit-def: $vgpr813842; VI-NEXT:  .LBB12_3: ; %frem.compute7713843; VI-NEXT:    v_frexp_mant_f32_e64 v9, |v4|13844; VI-NEXT:    v_ldexp_f32 v9, v9, 113845; VI-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.013846; VI-NEXT:    v_frexp_mant_f32_e64 v8, |v0|13847; VI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v413848; VI-NEXT:    v_ldexp_f32 v11, v8, 1213849; VI-NEXT:    v_add_u32_e32 v8, vcc, -1, v1413850; VI-NEXT:    v_frexp_exp_i32_f32_e32 v13, v013851; VI-NEXT:    v_not_b32_e32 v10, v813852; VI-NEXT:    v_add_u32_e32 v10, vcc, v10, v1313853; VI-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v9, 1.013854; VI-NEXT:    v_rcp_f32_e32 v16, v1513855; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313856; VI-NEXT:    v_fma_f32 v17, -v15, v16, 1.013857; VI-NEXT:    v_fma_f32 v16, v17, v16, v1613858; VI-NEXT:    v_mul_f32_e32 v17, v12, v1613859; VI-NEXT:    v_fma_f32 v18, -v15, v17, v1213860; VI-NEXT:    v_fma_f32 v17, v18, v16, v1713861; VI-NEXT:    v_fma_f32 v12, -v15, v17, v1213862; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013863; VI-NEXT:    v_div_fmas_f32 v12, v12, v16, v1713864; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1013865; VI-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.013866; VI-NEXT:    s_cbranch_vccnz .LBB12_713867; VI-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader13868; VI-NEXT:    v_sub_u32_e32 v10, vcc, v13, v1413869; VI-NEXT:    v_add_u32_e32 v10, vcc, 12, v1013870; VI-NEXT:  .LBB12_5: ; %frem.loop_body8513871; VI-NEXT:    ; =>This Inner Loop Header: Depth=113872; VI-NEXT:    v_mov_b32_e32 v13, v1113873; VI-NEXT:    v_mul_f32_e32 v11, v13, v1213874; VI-NEXT:    v_rndne_f32_e32 v11, v1113875; VI-NEXT:    v_fma_f32 v11, -v11, v9, v1313876; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113877; VI-NEXT:    v_add_f32_e32 v14, v11, v913878; VI-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc13879; VI-NEXT:    v_add_u32_e32 v10, vcc, -12, v1013880; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1013881; VI-NEXT:    v_ldexp_f32 v11, v11, 1213882; VI-NEXT:    s_cbranch_vccnz .LBB12_513883; VI-NEXT:  ; %bb.6: ; %Flow12513884; VI-NEXT:    v_mov_b32_e32 v11, v1313885; VI-NEXT:  .LBB12_7: ; %frem.loop_exit8613886; VI-NEXT:    v_add_u32_e32 v10, vcc, -11, v1013887; VI-NEXT:    v_ldexp_f32 v10, v11, v1013888; VI-NEXT:    v_mul_f32_e32 v11, v10, v1213889; VI-NEXT:    v_rndne_f32_e32 v11, v1113890; VI-NEXT:    v_fma_f32 v10, -v11, v9, v1013891; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1013892; VI-NEXT:    v_add_f32_e32 v9, v10, v913893; VI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc13894; VI-NEXT:    v_ldexp_f32 v8, v9, v813895; VI-NEXT:    s_brev_b32 s2, -213896; VI-NEXT:    v_bfi_b32 v8, s2, v8, v013897; VI-NEXT:  .LBB12_8:13898; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|13899; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]13900; VI-NEXT:    s_cbranch_vccz .LBB12_1013901; VI-NEXT:  ; %bb.9: ; %frem.else4713902; VI-NEXT:    s_brev_b32 s2, -213903; VI-NEXT:    v_bfi_b32 v9, s2, 0, v113904; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|13905; VI-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc13906; VI-NEXT:    s_cbranch_execz .LBB12_1113907; VI-NEXT:    s_branch .LBB12_1613908; VI-NEXT:  .LBB12_10:13909; VI-NEXT:    ; implicit-def: $vgpr913910; VI-NEXT:  .LBB12_11: ; %frem.compute4613911; VI-NEXT:    v_frexp_mant_f32_e64 v10, |v5|13912; VI-NEXT:    v_ldexp_f32 v10, v10, 113913; VI-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.013914; VI-NEXT:    v_frexp_mant_f32_e64 v9, |v1|13915; VI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v513916; VI-NEXT:    v_ldexp_f32 v12, v9, 1213917; VI-NEXT:    v_add_u32_e32 v9, vcc, -1, v1513918; VI-NEXT:    v_frexp_exp_i32_f32_e32 v14, v113919; VI-NEXT:    v_not_b32_e32 v11, v913920; VI-NEXT:    v_add_u32_e32 v11, vcc, v11, v1413921; VI-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v10, 1.013922; VI-NEXT:    v_rcp_f32_e32 v17, v1613923; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313924; VI-NEXT:    v_fma_f32 v18, -v16, v17, 1.013925; VI-NEXT:    v_fma_f32 v17, v18, v17, v1713926; VI-NEXT:    v_mul_f32_e32 v18, v13, v1713927; VI-NEXT:    v_fma_f32 v19, -v16, v18, v1313928; VI-NEXT:    v_fma_f32 v18, v19, v17, v1813929; VI-NEXT:    v_fma_f32 v13, -v16, v18, v1313930; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013931; VI-NEXT:    v_div_fmas_f32 v13, v13, v17, v1813932; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1113933; VI-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.013934; VI-NEXT:    s_cbranch_vccnz .LBB12_1513935; VI-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader13936; VI-NEXT:    v_sub_u32_e32 v11, vcc, v14, v1513937; VI-NEXT:    v_add_u32_e32 v11, vcc, 12, v1113938; VI-NEXT:  .LBB12_13: ; %frem.loop_body5413939; VI-NEXT:    ; =>This Inner Loop Header: Depth=113940; VI-NEXT:    v_mov_b32_e32 v14, v1213941; VI-NEXT:    v_mul_f32_e32 v12, v14, v1313942; VI-NEXT:    v_rndne_f32_e32 v12, v1213943; VI-NEXT:    v_fma_f32 v12, -v12, v10, v1413944; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1213945; VI-NEXT:    v_add_f32_e32 v15, v12, v1013946; VI-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc13947; VI-NEXT:    v_add_u32_e32 v11, vcc, -12, v1113948; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1113949; VI-NEXT:    v_ldexp_f32 v12, v12, 1213950; VI-NEXT:    s_cbranch_vccnz .LBB12_1313951; VI-NEXT:  ; %bb.14: ; %Flow12113952; VI-NEXT:    v_mov_b32_e32 v12, v1413953; VI-NEXT:  .LBB12_15: ; %frem.loop_exit5513954; VI-NEXT:    v_add_u32_e32 v11, vcc, -11, v1113955; VI-NEXT:    v_ldexp_f32 v11, v12, v1113956; VI-NEXT:    v_mul_f32_e32 v12, v11, v1313957; VI-NEXT:    v_rndne_f32_e32 v12, v1213958; VI-NEXT:    v_fma_f32 v11, -v12, v10, v1113959; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1113960; VI-NEXT:    v_add_f32_e32 v10, v11, v1013961; VI-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc13962; VI-NEXT:    v_ldexp_f32 v9, v10, v913963; VI-NEXT:    s_brev_b32 s2, -213964; VI-NEXT:    v_bfi_b32 v9, s2, v9, v113965; VI-NEXT:  .LBB12_16:13966; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|13967; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]13968; VI-NEXT:    s_cbranch_vccz .LBB12_1813969; VI-NEXT:  ; %bb.17: ; %frem.else1613970; VI-NEXT:    s_brev_b32 s2, -213971; VI-NEXT:    v_bfi_b32 v10, s2, 0, v213972; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|13973; VI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc13974; VI-NEXT:    s_cbranch_execz .LBB12_1913975; VI-NEXT:    s_branch .LBB12_2413976; VI-NEXT:  .LBB12_18:13977; VI-NEXT:    ; implicit-def: $vgpr1013978; VI-NEXT:  .LBB12_19: ; %frem.compute1513979; VI-NEXT:    v_frexp_mant_f32_e64 v11, |v6|13980; VI-NEXT:    v_ldexp_f32 v11, v11, 113981; VI-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.013982; VI-NEXT:    v_frexp_mant_f32_e64 v10, |v2|13983; VI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v613984; VI-NEXT:    v_ldexp_f32 v13, v10, 1213985; VI-NEXT:    v_add_u32_e32 v10, vcc, -1, v1613986; VI-NEXT:    v_frexp_exp_i32_f32_e32 v15, v213987; VI-NEXT:    v_not_b32_e32 v12, v1013988; VI-NEXT:    v_add_u32_e32 v12, vcc, v12, v1513989; VI-NEXT:    v_div_scale_f32 v14, vcc, 1.0, v11, 1.013990; VI-NEXT:    v_rcp_f32_e32 v18, v1713991; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 313992; VI-NEXT:    v_fma_f32 v19, -v17, v18, 1.013993; VI-NEXT:    v_fma_f32 v18, v19, v18, v1813994; VI-NEXT:    v_mul_f32_e32 v19, v14, v1813995; VI-NEXT:    v_fma_f32 v20, -v17, v19, v1413996; VI-NEXT:    v_fma_f32 v19, v20, v18, v1913997; VI-NEXT:    v_fma_f32 v14, -v17, v19, v1413998; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 013999; VI-NEXT:    v_div_fmas_f32 v14, v14, v18, v1914000; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1214001; VI-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.014002; VI-NEXT:    s_cbranch_vccnz .LBB12_2314003; VI-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader14004; VI-NEXT:    v_sub_u32_e32 v12, vcc, v15, v1614005; VI-NEXT:    v_add_u32_e32 v12, vcc, 12, v1214006; VI-NEXT:  .LBB12_21: ; %frem.loop_body2314007; VI-NEXT:    ; =>This Inner Loop Header: Depth=114008; VI-NEXT:    v_mov_b32_e32 v15, v1314009; VI-NEXT:    v_mul_f32_e32 v13, v15, v1414010; VI-NEXT:    v_rndne_f32_e32 v13, v1314011; VI-NEXT:    v_fma_f32 v13, -v13, v11, v1514012; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1314013; VI-NEXT:    v_add_f32_e32 v16, v13, v1114014; VI-NEXT:    v_cndmask_b32_e32 v13, v13, v16, vcc14015; VI-NEXT:    v_add_u32_e32 v12, vcc, -12, v1214016; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1214017; VI-NEXT:    v_ldexp_f32 v13, v13, 1214018; VI-NEXT:    s_cbranch_vccnz .LBB12_2114019; VI-NEXT:  ; %bb.22: ; %Flow11714020; VI-NEXT:    v_mov_b32_e32 v13, v1514021; VI-NEXT:  .LBB12_23: ; %frem.loop_exit2414022; VI-NEXT:    v_add_u32_e32 v12, vcc, -11, v1214023; VI-NEXT:    v_ldexp_f32 v12, v13, v1214024; VI-NEXT:    v_mul_f32_e32 v13, v12, v1414025; VI-NEXT:    v_rndne_f32_e32 v13, v1314026; VI-NEXT:    v_fma_f32 v12, -v13, v11, v1214027; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1214028; VI-NEXT:    v_add_f32_e32 v11, v12, v1114029; VI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc14030; VI-NEXT:    v_ldexp_f32 v10, v11, v1014031; VI-NEXT:    s_brev_b32 s2, -214032; VI-NEXT:    v_bfi_b32 v10, s2, v10, v214033; VI-NEXT:  .LBB12_24:14034; VI-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|14035; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]14036; VI-NEXT:    s_cbranch_vccz .LBB12_2614037; VI-NEXT:  ; %bb.25: ; %frem.else14038; VI-NEXT:    s_brev_b32 s2, -214039; VI-NEXT:    v_bfi_b32 v11, s2, 0, v314040; VI-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|14041; VI-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc14042; VI-NEXT:    s_cbranch_execz .LBB12_2714043; VI-NEXT:    s_branch .LBB12_3214044; VI-NEXT:  .LBB12_26:14045; VI-NEXT:    ; implicit-def: $vgpr1114046; VI-NEXT:  .LBB12_27: ; %frem.compute14047; VI-NEXT:    v_frexp_mant_f32_e64 v12, |v7|14048; VI-NEXT:    v_ldexp_f32 v12, v12, 114049; VI-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.014050; VI-NEXT:    v_frexp_mant_f32_e64 v11, |v3|14051; VI-NEXT:    v_frexp_exp_i32_f32_e32 v17, v714052; VI-NEXT:    v_ldexp_f32 v14, v11, 1214053; VI-NEXT:    v_add_u32_e32 v11, vcc, -1, v1714054; VI-NEXT:    v_frexp_exp_i32_f32_e32 v16, v314055; VI-NEXT:    v_not_b32_e32 v13, v1114056; VI-NEXT:    v_add_u32_e32 v13, vcc, v13, v1614057; VI-NEXT:    v_div_scale_f32 v15, vcc, 1.0, v12, 1.014058; VI-NEXT:    v_rcp_f32_e32 v19, v1814059; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 314060; VI-NEXT:    v_fma_f32 v20, -v18, v19, 1.014061; VI-NEXT:    v_fma_f32 v19, v20, v19, v1914062; VI-NEXT:    v_mul_f32_e32 v20, v15, v1914063; VI-NEXT:    v_fma_f32 v21, -v18, v20, v1514064; VI-NEXT:    v_fma_f32 v20, v21, v19, v2014065; VI-NEXT:    v_fma_f32 v15, -v18, v20, v1514066; VI-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 014067; VI-NEXT:    v_div_fmas_f32 v15, v15, v19, v2014068; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1314069; VI-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.014070; VI-NEXT:    s_cbranch_vccnz .LBB12_3114071; VI-NEXT:  ; %bb.28: ; %frem.loop_body.preheader14072; VI-NEXT:    v_sub_u32_e32 v13, vcc, v16, v1714073; VI-NEXT:    v_add_u32_e32 v13, vcc, 12, v1314074; VI-NEXT:  .LBB12_29: ; %frem.loop_body14075; VI-NEXT:    ; =>This Inner Loop Header: Depth=114076; VI-NEXT:    v_mov_b32_e32 v16, v1414077; VI-NEXT:    v_mul_f32_e32 v14, v16, v1514078; VI-NEXT:    v_rndne_f32_e32 v14, v1414079; VI-NEXT:    v_fma_f32 v14, -v14, v12, v1614080; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1414081; VI-NEXT:    v_add_f32_e32 v17, v14, v1214082; VI-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc14083; VI-NEXT:    v_add_u32_e32 v13, vcc, -12, v1314084; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1314085; VI-NEXT:    v_ldexp_f32 v14, v14, 1214086; VI-NEXT:    s_cbranch_vccnz .LBB12_2914087; VI-NEXT:  ; %bb.30: ; %Flow14088; VI-NEXT:    v_mov_b32_e32 v14, v1614089; VI-NEXT:  .LBB12_31: ; %frem.loop_exit14090; VI-NEXT:    v_add_u32_e32 v13, vcc, -11, v1314091; VI-NEXT:    v_ldexp_f32 v13, v14, v1314092; VI-NEXT:    v_mul_f32_e32 v14, v13, v1514093; VI-NEXT:    v_rndne_f32_e32 v14, v1414094; VI-NEXT:    v_fma_f32 v13, -v14, v12, v1314095; VI-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1314096; VI-NEXT:    v_add_f32_e32 v12, v13, v1214097; VI-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc14098; VI-NEXT:    v_ldexp_f32 v11, v12, v1114099; VI-NEXT:    s_brev_b32 s2, -214100; VI-NEXT:    v_bfi_b32 v11, s2, v11, v314101; VI-NEXT:  .LBB12_32: ; %Flow11614102; VI-NEXT:    s_mov_b32 s4, 0x7f80000014103; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v414104; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s414105; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc14106; VI-NEXT:    v_mov_b32_e32 v12, 0x7fc0000014107; VI-NEXT:    v_cndmask_b32_e32 v0, v12, v8, vcc14108; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v514109; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v1|, s414110; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc14111; VI-NEXT:    v_cndmask_b32_e32 v1, v12, v9, vcc14112; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v614113; VI-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v2|, s414114; VI-NEXT:    s_and_b64 vcc, s[2:3], vcc14115; VI-NEXT:    v_cndmask_b32_e32 v2, v12, v10, vcc14116; VI-NEXT:    v_mov_b32_e32 v4, s014117; VI-NEXT:    v_mov_b32_e32 v5, s114118; VI-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v714119; VI-NEXT:    v_cmp_nge_f32_e64 s[0:1], |v3|, s414120; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc14121; VI-NEXT:    v_cndmask_b32_e32 v3, v12, v11, vcc14122; VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]14123; VI-NEXT:    s_endpgm14124;14125; GFX9-LABEL: frem_v4f32:14126; GFX9:       ; %bb.0:14127; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2414128; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3414129; GFX9-NEXT:    v_mov_b32_e32 v8, 014130; GFX9-NEXT:    s_waitcnt lgkmcnt(0)14131; GFX9-NEXT:    global_load_dwordx4 v[0:3], v8, s[2:3]14132; GFX9-NEXT:    global_load_dwordx4 v[4:7], v8, s[6:7] offset:6414133; GFX9-NEXT:    s_waitcnt vmcnt(0)14134; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v0|, |v4|14135; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]14136; GFX9-NEXT:    s_cbranch_vccz .LBB12_214137; GFX9-NEXT:  ; %bb.1: ; %frem.else7814138; GFX9-NEXT:    s_brev_b32 s2, -214139; GFX9-NEXT:    v_bfi_b32 v8, s2, 0, v014140; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v0|, |v4|14141; GFX9-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc14142; GFX9-NEXT:    s_cbranch_execz .LBB12_314143; GFX9-NEXT:    s_branch .LBB12_814144; GFX9-NEXT:  .LBB12_2:14145; GFX9-NEXT:    ; implicit-def: $vgpr814146; GFX9-NEXT:  .LBB12_3: ; %frem.compute7714147; GFX9-NEXT:    v_frexp_mant_f32_e64 v9, |v4|14148; GFX9-NEXT:    v_ldexp_f32 v9, v9, 114149; GFX9-NEXT:    v_div_scale_f32 v15, s[2:3], v9, v9, 1.014150; GFX9-NEXT:    v_div_scale_f32 v12, vcc, 1.0, v9, 1.014151; GFX9-NEXT:    v_frexp_mant_f32_e64 v8, |v0|14152; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v13, v014153; GFX9-NEXT:    v_ldexp_f32 v11, v8, 1214154; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v14, v414155; GFX9-NEXT:    v_add_u32_e32 v8, -1, v1414156; GFX9-NEXT:    v_not_b32_e32 v10, v814157; GFX9-NEXT:    v_add_u32_e32 v10, v10, v1314158; GFX9-NEXT:    v_rcp_f32_e32 v16, v1514159; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 314160; GFX9-NEXT:    v_fma_f32 v17, -v15, v16, 1.014161; GFX9-NEXT:    v_fma_f32 v16, v17, v16, v1614162; GFX9-NEXT:    v_mul_f32_e32 v17, v12, v1614163; GFX9-NEXT:    v_fma_f32 v18, -v15, v17, v1214164; GFX9-NEXT:    v_fma_f32 v17, v18, v16, v1714165; GFX9-NEXT:    v_fma_f32 v12, -v15, v17, v1214166; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 014167; GFX9-NEXT:    v_div_fmas_f32 v12, v12, v16, v1714168; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1014169; GFX9-NEXT:    v_div_fixup_f32 v12, v12, v9, 1.014170; GFX9-NEXT:    s_cbranch_vccnz .LBB12_714171; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader14172; GFX9-NEXT:    v_sub_u32_e32 v10, v13, v1414173; GFX9-NEXT:    v_add_u32_e32 v10, 12, v1014174; GFX9-NEXT:  .LBB12_5: ; %frem.loop_body8514175; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=114176; GFX9-NEXT:    v_mov_b32_e32 v13, v1114177; GFX9-NEXT:    v_mul_f32_e32 v11, v13, v1214178; GFX9-NEXT:    v_rndne_f32_e32 v11, v1114179; GFX9-NEXT:    v_fma_f32 v11, -v11, v9, v1314180; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1114181; GFX9-NEXT:    v_add_f32_e32 v14, v11, v914182; GFX9-NEXT:    v_add_u32_e32 v10, -12, v1014183; GFX9-NEXT:    v_cndmask_b32_e32 v11, v11, v14, vcc14184; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1014185; GFX9-NEXT:    v_ldexp_f32 v11, v11, 1214186; GFX9-NEXT:    s_cbranch_vccnz .LBB12_514187; GFX9-NEXT:  ; %bb.6: ; %Flow12514188; GFX9-NEXT:    v_mov_b32_e32 v11, v1314189; GFX9-NEXT:  .LBB12_7: ; %frem.loop_exit8614190; GFX9-NEXT:    v_add_u32_e32 v10, -11, v1014191; GFX9-NEXT:    v_ldexp_f32 v10, v11, v1014192; GFX9-NEXT:    v_mul_f32_e32 v11, v10, v1214193; GFX9-NEXT:    v_rndne_f32_e32 v11, v1114194; GFX9-NEXT:    v_fma_f32 v10, -v11, v9, v1014195; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1014196; GFX9-NEXT:    v_add_f32_e32 v9, v10, v914197; GFX9-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc14198; GFX9-NEXT:    v_ldexp_f32 v8, v9, v814199; GFX9-NEXT:    s_brev_b32 s2, -214200; GFX9-NEXT:    v_bfi_b32 v8, s2, v8, v014201; GFX9-NEXT:  .LBB12_8:14202; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v1|, |v5|14203; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]14204; GFX9-NEXT:    s_cbranch_vccz .LBB12_1014205; GFX9-NEXT:  ; %bb.9: ; %frem.else4714206; GFX9-NEXT:    s_brev_b32 s2, -214207; GFX9-NEXT:    v_bfi_b32 v9, s2, 0, v114208; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v1|, |v5|14209; GFX9-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc14210; GFX9-NEXT:    s_cbranch_execz .LBB12_1114211; GFX9-NEXT:    s_branch .LBB12_1614212; GFX9-NEXT:  .LBB12_10:14213; GFX9-NEXT:    ; implicit-def: $vgpr914214; GFX9-NEXT:  .LBB12_11: ; %frem.compute4614215; GFX9-NEXT:    v_frexp_mant_f32_e64 v10, |v5|14216; GFX9-NEXT:    v_ldexp_f32 v10, v10, 114217; GFX9-NEXT:    v_div_scale_f32 v16, s[2:3], v10, v10, 1.014218; GFX9-NEXT:    v_div_scale_f32 v13, vcc, 1.0, v10, 1.014219; GFX9-NEXT:    v_frexp_mant_f32_e64 v9, |v1|14220; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v14, v114221; GFX9-NEXT:    v_ldexp_f32 v12, v9, 1214222; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v15, v514223; GFX9-NEXT:    v_add_u32_e32 v9, -1, v1514224; GFX9-NEXT:    v_not_b32_e32 v11, v914225; GFX9-NEXT:    v_add_u32_e32 v11, v11, v1414226; GFX9-NEXT:    v_rcp_f32_e32 v17, v1614227; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 314228; GFX9-NEXT:    v_fma_f32 v18, -v16, v17, 1.014229; GFX9-NEXT:    v_fma_f32 v17, v18, v17, v1714230; GFX9-NEXT:    v_mul_f32_e32 v18, v13, v1714231; GFX9-NEXT:    v_fma_f32 v19, -v16, v18, v1314232; GFX9-NEXT:    v_fma_f32 v18, v19, v17, v1814233; GFX9-NEXT:    v_fma_f32 v13, -v16, v18, v1314234; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 014235; GFX9-NEXT:    v_div_fmas_f32 v13, v13, v17, v1814236; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1114237; GFX9-NEXT:    v_div_fixup_f32 v13, v13, v10, 1.014238; GFX9-NEXT:    s_cbranch_vccnz .LBB12_1514239; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader14240; GFX9-NEXT:    v_sub_u32_e32 v11, v14, v1514241; GFX9-NEXT:    v_add_u32_e32 v11, 12, v1114242; GFX9-NEXT:  .LBB12_13: ; %frem.loop_body5414243; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=114244; GFX9-NEXT:    v_mov_b32_e32 v14, v1214245; GFX9-NEXT:    v_mul_f32_e32 v12, v14, v1314246; GFX9-NEXT:    v_rndne_f32_e32 v12, v1214247; GFX9-NEXT:    v_fma_f32 v12, -v12, v10, v1414248; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1214249; GFX9-NEXT:    v_add_f32_e32 v15, v12, v1014250; GFX9-NEXT:    v_add_u32_e32 v11, -12, v1114251; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v15, vcc14252; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1114253; GFX9-NEXT:    v_ldexp_f32 v12, v12, 1214254; GFX9-NEXT:    s_cbranch_vccnz .LBB12_1314255; GFX9-NEXT:  ; %bb.14: ; %Flow12114256; GFX9-NEXT:    v_mov_b32_e32 v12, v1414257; GFX9-NEXT:  .LBB12_15: ; %frem.loop_exit5514258; GFX9-NEXT:    v_add_u32_e32 v11, -11, v1114259; GFX9-NEXT:    v_ldexp_f32 v11, v12, v1114260; GFX9-NEXT:    v_mul_f32_e32 v12, v11, v1314261; GFX9-NEXT:    v_rndne_f32_e32 v12, v1214262; GFX9-NEXT:    v_fma_f32 v11, -v12, v10, v1114263; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1114264; GFX9-NEXT:    v_add_f32_e32 v10, v11, v1014265; GFX9-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc14266; GFX9-NEXT:    v_ldexp_f32 v9, v10, v914267; GFX9-NEXT:    s_brev_b32 s2, -214268; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v114269; GFX9-NEXT:  .LBB12_16:14270; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v2|, |v6|14271; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]14272; GFX9-NEXT:    s_cbranch_vccz .LBB12_1814273; GFX9-NEXT:  ; %bb.17: ; %frem.else1614274; GFX9-NEXT:    s_brev_b32 s2, -214275; GFX9-NEXT:    v_bfi_b32 v10, s2, 0, v214276; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v2|, |v6|14277; GFX9-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc14278; GFX9-NEXT:    s_cbranch_execz .LBB12_1914279; GFX9-NEXT:    s_branch .LBB12_2414280; GFX9-NEXT:  .LBB12_18:14281; GFX9-NEXT:    ; implicit-def: $vgpr1014282; GFX9-NEXT:  .LBB12_19: ; %frem.compute1514283; GFX9-NEXT:    v_frexp_mant_f32_e64 v11, |v6|14284; GFX9-NEXT:    v_ldexp_f32 v11, v11, 114285; GFX9-NEXT:    v_div_scale_f32 v17, s[2:3], v11, v11, 1.014286; GFX9-NEXT:    v_div_scale_f32 v14, vcc, 1.0, v11, 1.014287; GFX9-NEXT:    v_frexp_mant_f32_e64 v10, |v2|14288; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v15, v214289; GFX9-NEXT:    v_ldexp_f32 v13, v10, 1214290; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v16, v614291; GFX9-NEXT:    v_add_u32_e32 v10, -1, v1614292; GFX9-NEXT:    v_not_b32_e32 v12, v1014293; GFX9-NEXT:    v_add_u32_e32 v12, v12, v1514294; GFX9-NEXT:    v_rcp_f32_e32 v18, v1714295; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 314296; GFX9-NEXT:    v_fma_f32 v19, -v17, v18, 1.014297; GFX9-NEXT:    v_fma_f32 v18, v19, v18, v1814298; GFX9-NEXT:    v_mul_f32_e32 v19, v14, v1814299; GFX9-NEXT:    v_fma_f32 v20, -v17, v19, v1414300; GFX9-NEXT:    v_fma_f32 v19, v20, v18, v1914301; GFX9-NEXT:    v_fma_f32 v14, -v17, v19, v1414302; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 014303; GFX9-NEXT:    v_div_fmas_f32 v14, v14, v18, v1914304; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1214305; GFX9-NEXT:    v_div_fixup_f32 v14, v14, v11, 1.014306; GFX9-NEXT:    s_cbranch_vccnz .LBB12_2314307; GFX9-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader14308; GFX9-NEXT:    v_sub_u32_e32 v12, v15, v1614309; GFX9-NEXT:    v_add_u32_e32 v12, 12, v1214310; GFX9-NEXT:  .LBB12_21: ; %frem.loop_body2314311; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=114312; GFX9-NEXT:    v_mov_b32_e32 v15, v1314313; GFX9-NEXT:    v_mul_f32_e32 v13, v15, v1414314; GFX9-NEXT:    v_rndne_f32_e32 v13, v1314315; GFX9-NEXT:    v_fma_f32 v13, -v13, v11, v1514316; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1314317; GFX9-NEXT:    v_add_f32_e32 v16, v13, v1114318; GFX9-NEXT:    v_add_u32_e32 v12, -12, v1214319; GFX9-NEXT:    v_cndmask_b32_e32 v13, v13, v16, vcc14320; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1214321; GFX9-NEXT:    v_ldexp_f32 v13, v13, 1214322; GFX9-NEXT:    s_cbranch_vccnz .LBB12_2114323; GFX9-NEXT:  ; %bb.22: ; %Flow11714324; GFX9-NEXT:    v_mov_b32_e32 v13, v1514325; GFX9-NEXT:  .LBB12_23: ; %frem.loop_exit2414326; GFX9-NEXT:    v_add_u32_e32 v12, -11, v1214327; GFX9-NEXT:    v_ldexp_f32 v12, v13, v1214328; GFX9-NEXT:    v_mul_f32_e32 v13, v12, v1414329; GFX9-NEXT:    v_rndne_f32_e32 v13, v1314330; GFX9-NEXT:    v_fma_f32 v12, -v13, v11, v1214331; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1214332; GFX9-NEXT:    v_add_f32_e32 v11, v12, v1114333; GFX9-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc14334; GFX9-NEXT:    v_ldexp_f32 v10, v11, v1014335; GFX9-NEXT:    s_brev_b32 s2, -214336; GFX9-NEXT:    v_bfi_b32 v10, s2, v10, v214337; GFX9-NEXT:  .LBB12_24:14338; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], |v3|, |v7|14339; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]14340; GFX9-NEXT:    s_cbranch_vccz .LBB12_2614341; GFX9-NEXT:  ; %bb.25: ; %frem.else14342; GFX9-NEXT:    s_brev_b32 s2, -214343; GFX9-NEXT:    v_bfi_b32 v11, s2, 0, v314344; GFX9-NEXT:    v_cmp_eq_f32_e64 vcc, |v3|, |v7|14345; GFX9-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc14346; GFX9-NEXT:    s_cbranch_execz .LBB12_2714347; GFX9-NEXT:    s_branch .LBB12_3214348; GFX9-NEXT:  .LBB12_26:14349; GFX9-NEXT:    ; implicit-def: $vgpr1114350; GFX9-NEXT:  .LBB12_27: ; %frem.compute14351; GFX9-NEXT:    v_frexp_mant_f32_e64 v12, |v7|14352; GFX9-NEXT:    v_ldexp_f32 v12, v12, 114353; GFX9-NEXT:    v_div_scale_f32 v18, s[2:3], v12, v12, 1.014354; GFX9-NEXT:    v_div_scale_f32 v15, vcc, 1.0, v12, 1.014355; GFX9-NEXT:    v_frexp_mant_f32_e64 v11, |v3|14356; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v16, v314357; GFX9-NEXT:    v_ldexp_f32 v14, v11, 1214358; GFX9-NEXT:    v_frexp_exp_i32_f32_e32 v17, v714359; GFX9-NEXT:    v_add_u32_e32 v11, -1, v1714360; GFX9-NEXT:    v_not_b32_e32 v13, v1114361; GFX9-NEXT:    v_add_u32_e32 v13, v13, v1614362; GFX9-NEXT:    v_rcp_f32_e32 v19, v1814363; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 314364; GFX9-NEXT:    v_fma_f32 v20, -v18, v19, 1.014365; GFX9-NEXT:    v_fma_f32 v19, v20, v19, v1914366; GFX9-NEXT:    v_mul_f32_e32 v20, v15, v1914367; GFX9-NEXT:    v_fma_f32 v21, -v18, v20, v1514368; GFX9-NEXT:    v_fma_f32 v20, v21, v19, v2014369; GFX9-NEXT:    v_fma_f32 v15, -v18, v20, v1514370; GFX9-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_MODE, 4, 2), 014371; GFX9-NEXT:    v_div_fmas_f32 v15, v15, v19, v2014372; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 13, v1314373; GFX9-NEXT:    v_div_fixup_f32 v15, v15, v12, 1.014374; GFX9-NEXT:    s_cbranch_vccnz .LBB12_3114375; GFX9-NEXT:  ; %bb.28: ; %frem.loop_body.preheader14376; GFX9-NEXT:    v_sub_u32_e32 v13, v16, v1714377; GFX9-NEXT:    v_add_u32_e32 v13, 12, v1314378; GFX9-NEXT:  .LBB12_29: ; %frem.loop_body14379; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=114380; GFX9-NEXT:    v_mov_b32_e32 v16, v1414381; GFX9-NEXT:    v_mul_f32_e32 v14, v16, v1514382; GFX9-NEXT:    v_rndne_f32_e32 v14, v1414383; GFX9-NEXT:    v_fma_f32 v14, -v14, v12, v1614384; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1414385; GFX9-NEXT:    v_add_f32_e32 v17, v14, v1214386; GFX9-NEXT:    v_add_u32_e32 v13, -12, v1314387; GFX9-NEXT:    v_cndmask_b32_e32 v14, v14, v17, vcc14388; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 12, v1314389; GFX9-NEXT:    v_ldexp_f32 v14, v14, 1214390; GFX9-NEXT:    s_cbranch_vccnz .LBB12_2914391; GFX9-NEXT:  ; %bb.30: ; %Flow14392; GFX9-NEXT:    v_mov_b32_e32 v14, v1614393; GFX9-NEXT:  .LBB12_31: ; %frem.loop_exit14394; GFX9-NEXT:    v_add_u32_e32 v13, -11, v1314395; GFX9-NEXT:    v_ldexp_f32 v13, v14, v1314396; GFX9-NEXT:    v_mul_f32_e32 v14, v13, v1514397; GFX9-NEXT:    v_rndne_f32_e32 v14, v1414398; GFX9-NEXT:    v_fma_f32 v13, -v14, v12, v1314399; GFX9-NEXT:    v_cmp_gt_f32_e32 vcc, 0, v1314400; GFX9-NEXT:    v_add_f32_e32 v12, v13, v1214401; GFX9-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc14402; GFX9-NEXT:    v_ldexp_f32 v11, v12, v1114403; GFX9-NEXT:    s_brev_b32 s2, -214404; GFX9-NEXT:    v_bfi_b32 v11, s2, v11, v314405; GFX9-NEXT:  .LBB12_32: ; %Flow11614406; GFX9-NEXT:    s_mov_b32 s4, 0x7f80000014407; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v414408; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v0|, s414409; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc14410; GFX9-NEXT:    v_mov_b32_e32 v4, 0x7fc0000014411; GFX9-NEXT:    v_cndmask_b32_e32 v0, v4, v8, vcc14412; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v514413; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v1|, s414414; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc14415; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc14416; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v614417; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v2|, s414418; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc14419; GFX9-NEXT:    v_cndmask_b32_e32 v2, v4, v10, vcc14420; GFX9-NEXT:    v_cmp_lg_f32_e32 vcc, 0, v714421; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], |v3|, s414422; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc14423; GFX9-NEXT:    v_mov_b32_e32 v5, 014424; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc14425; GFX9-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1]14426; GFX9-NEXT:    s_endpgm14427;14428; GFX10-LABEL: frem_v4f32:14429; GFX10:       ; %bb.0:14430; GFX10-NEXT:    s_clause 0x114431; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2414432; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3414433; GFX10-NEXT:    v_mov_b32_e32 v8, 014434; GFX10-NEXT:    s_waitcnt lgkmcnt(0)14435; GFX10-NEXT:    s_clause 0x114436; GFX10-NEXT:    global_load_dwordx4 v[0:3], v8, s[2:3]14437; GFX10-NEXT:    global_load_dwordx4 v[4:7], v8, s[6:7] offset:6414438; GFX10-NEXT:    s_waitcnt vmcnt(0)14439; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v4|14440; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s214441; GFX10-NEXT:    s_cbranch_vccz .LBB12_214442; GFX10-NEXT:  ; %bb.1: ; %frem.else7814443; GFX10-NEXT:    v_bfi_b32 v8, 0x7fffffff, 0, v014444; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v4|14445; GFX10-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc_lo14446; GFX10-NEXT:    s_cbranch_execz .LBB12_314447; GFX10-NEXT:    s_branch .LBB12_814448; GFX10-NEXT:  .LBB12_2:14449; GFX10-NEXT:    ; implicit-def: $vgpr814450; GFX10-NEXT:  .LBB12_3: ; %frem.compute7714451; GFX10-NEXT:    v_frexp_mant_f32_e64 v9, |v4|14452; GFX10-NEXT:    v_frexp_mant_f32_e64 v8, |v0|14453; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v11, v014454; GFX10-NEXT:    v_ldexp_f32 v9, v9, 114455; GFX10-NEXT:    v_ldexp_f32 v10, v8, 1214456; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v8, v414457; GFX10-NEXT:    v_readfirstlane_b32 s2, v1114458; GFX10-NEXT:    v_div_scale_f32 v13, s4, v9, v9, 1.014459; GFX10-NEXT:    v_readfirstlane_b32 s3, v814460; GFX10-NEXT:    v_add_nc_u32_e32 v8, -1, v814461; GFX10-NEXT:    v_rcp_f32_e32 v14, v1314462; GFX10-NEXT:    v_not_b32_e32 v12, v814463; GFX10-NEXT:    v_add_nc_u32_e32 v12, v12, v1114464; GFX10-NEXT:    v_div_scale_f32 v11, vcc_lo, 1.0, v9, 1.014465; GFX10-NEXT:    s_denorm_mode 1514466; GFX10-NEXT:    v_fma_f32 v15, -v13, v14, 1.014467; GFX10-NEXT:    v_fmac_f32_e32 v14, v15, v1414468; GFX10-NEXT:    v_mul_f32_e32 v15, v11, v1414469; GFX10-NEXT:    v_fma_f32 v16, -v13, v15, v1114470; GFX10-NEXT:    v_fmac_f32_e32 v15, v16, v1414471; GFX10-NEXT:    v_fma_f32 v11, -v13, v15, v1114472; GFX10-NEXT:    s_denorm_mode 1214473; GFX10-NEXT:    v_div_fmas_f32 v11, v11, v14, v1514474; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1214475; GFX10-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.014476; GFX10-NEXT:    s_cbranch_vccnz .LBB12_714477; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader14478; GFX10-NEXT:    s_sub_i32 s2, s2, s314479; GFX10-NEXT:    s_add_i32 s2, s2, 1214480; GFX10-NEXT:  .LBB12_5: ; %frem.loop_body8514481; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114482; GFX10-NEXT:    v_mov_b32_e32 v13, v1014483; GFX10-NEXT:    s_add_i32 s2, s2, -1214484; GFX10-NEXT:    s_cmp_gt_i32 s2, 1214485; GFX10-NEXT:    v_mul_f32_e32 v10, v13, v1114486; GFX10-NEXT:    v_rndne_f32_e32 v10, v1014487; GFX10-NEXT:    v_fma_f32 v10, -v10, v9, v1314488; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1014489; GFX10-NEXT:    v_add_f32_e32 v12, v10, v914490; GFX10-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo14491; GFX10-NEXT:    v_ldexp_f32 v10, v10, 1214492; GFX10-NEXT:    s_cbranch_scc1 .LBB12_514493; GFX10-NEXT:  ; %bb.6: ; %Flow12514494; GFX10-NEXT:    v_mov_b32_e32 v12, s214495; GFX10-NEXT:    v_mov_b32_e32 v10, v1314496; GFX10-NEXT:  .LBB12_7: ; %frem.loop_exit8614497; GFX10-NEXT:    v_add_nc_u32_e32 v12, -11, v1214498; GFX10-NEXT:    v_ldexp_f32 v10, v10, v1214499; GFX10-NEXT:    v_mul_f32_e32 v11, v10, v1114500; GFX10-NEXT:    v_rndne_f32_e32 v11, v1114501; GFX10-NEXT:    v_fma_f32 v10, -v11, v9, v1014502; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1014503; GFX10-NEXT:    v_add_f32_e32 v9, v10, v914504; GFX10-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc_lo14505; GFX10-NEXT:    v_ldexp_f32 v8, v9, v814506; GFX10-NEXT:    v_bfi_b32 v8, 0x7fffffff, v8, v014507; GFX10-NEXT:  .LBB12_8:14508; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v5|14509; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s214510; GFX10-NEXT:    s_cbranch_vccz .LBB12_1014511; GFX10-NEXT:  ; %bb.9: ; %frem.else4714512; GFX10-NEXT:    v_bfi_b32 v9, 0x7fffffff, 0, v114513; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v5|14514; GFX10-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc_lo14515; GFX10-NEXT:    s_cbranch_execz .LBB12_1114516; GFX10-NEXT:    s_branch .LBB12_1614517; GFX10-NEXT:  .LBB12_10:14518; GFX10-NEXT:    ; implicit-def: $vgpr914519; GFX10-NEXT:  .LBB12_11: ; %frem.compute4614520; GFX10-NEXT:    v_frexp_mant_f32_e64 v10, |v5|14521; GFX10-NEXT:    v_frexp_mant_f32_e64 v9, |v1|14522; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v12, v114523; GFX10-NEXT:    v_ldexp_f32 v10, v10, 114524; GFX10-NEXT:    v_ldexp_f32 v11, v9, 1214525; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v9, v514526; GFX10-NEXT:    v_readfirstlane_b32 s2, v1214527; GFX10-NEXT:    v_div_scale_f32 v14, s4, v10, v10, 1.014528; GFX10-NEXT:    v_readfirstlane_b32 s3, v914529; GFX10-NEXT:    v_add_nc_u32_e32 v9, -1, v914530; GFX10-NEXT:    v_rcp_f32_e32 v15, v1414531; GFX10-NEXT:    v_not_b32_e32 v13, v914532; GFX10-NEXT:    v_add_nc_u32_e32 v13, v13, v1214533; GFX10-NEXT:    v_div_scale_f32 v12, vcc_lo, 1.0, v10, 1.014534; GFX10-NEXT:    s_denorm_mode 1514535; GFX10-NEXT:    v_fma_f32 v16, -v14, v15, 1.014536; GFX10-NEXT:    v_fmac_f32_e32 v15, v16, v1514537; GFX10-NEXT:    v_mul_f32_e32 v16, v12, v1514538; GFX10-NEXT:    v_fma_f32 v17, -v14, v16, v1214539; GFX10-NEXT:    v_fmac_f32_e32 v16, v17, v1514540; GFX10-NEXT:    v_fma_f32 v12, -v14, v16, v1214541; GFX10-NEXT:    s_denorm_mode 1214542; GFX10-NEXT:    v_div_fmas_f32 v12, v12, v15, v1614543; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1314544; GFX10-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.014545; GFX10-NEXT:    s_cbranch_vccnz .LBB12_1514546; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader14547; GFX10-NEXT:    s_sub_i32 s2, s2, s314548; GFX10-NEXT:    s_add_i32 s2, s2, 1214549; GFX10-NEXT:  .LBB12_13: ; %frem.loop_body5414550; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114551; GFX10-NEXT:    v_mov_b32_e32 v14, v1114552; GFX10-NEXT:    s_add_i32 s2, s2, -1214553; GFX10-NEXT:    s_cmp_gt_i32 s2, 1214554; GFX10-NEXT:    v_mul_f32_e32 v11, v14, v1214555; GFX10-NEXT:    v_rndne_f32_e32 v11, v1114556; GFX10-NEXT:    v_fma_f32 v11, -v11, v10, v1414557; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1114558; GFX10-NEXT:    v_add_f32_e32 v13, v11, v1014559; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo14560; GFX10-NEXT:    v_ldexp_f32 v11, v11, 1214561; GFX10-NEXT:    s_cbranch_scc1 .LBB12_1314562; GFX10-NEXT:  ; %bb.14: ; %Flow12114563; GFX10-NEXT:    v_mov_b32_e32 v13, s214564; GFX10-NEXT:    v_mov_b32_e32 v11, v1414565; GFX10-NEXT:  .LBB12_15: ; %frem.loop_exit5514566; GFX10-NEXT:    v_add_nc_u32_e32 v13, -11, v1314567; GFX10-NEXT:    v_ldexp_f32 v11, v11, v1314568; GFX10-NEXT:    v_mul_f32_e32 v12, v11, v1214569; GFX10-NEXT:    v_rndne_f32_e32 v12, v1214570; GFX10-NEXT:    v_fma_f32 v11, -v12, v10, v1114571; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1114572; GFX10-NEXT:    v_add_f32_e32 v10, v11, v1014573; GFX10-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc_lo14574; GFX10-NEXT:    v_ldexp_f32 v9, v10, v914575; GFX10-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v114576; GFX10-NEXT:  .LBB12_16:14577; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v2|, |v6|14578; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s214579; GFX10-NEXT:    s_cbranch_vccz .LBB12_1814580; GFX10-NEXT:  ; %bb.17: ; %frem.else1614581; GFX10-NEXT:    v_bfi_b32 v10, 0x7fffffff, 0, v214582; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v2|, |v6|14583; GFX10-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc_lo14584; GFX10-NEXT:    s_cbranch_execz .LBB12_1914585; GFX10-NEXT:    s_branch .LBB12_2414586; GFX10-NEXT:  .LBB12_18:14587; GFX10-NEXT:    ; implicit-def: $vgpr1014588; GFX10-NEXT:  .LBB12_19: ; %frem.compute1514589; GFX10-NEXT:    v_frexp_mant_f32_e64 v11, |v6|14590; GFX10-NEXT:    v_frexp_mant_f32_e64 v10, |v2|14591; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v13, v214592; GFX10-NEXT:    v_ldexp_f32 v11, v11, 114593; GFX10-NEXT:    v_ldexp_f32 v12, v10, 1214594; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v10, v614595; GFX10-NEXT:    v_readfirstlane_b32 s2, v1314596; GFX10-NEXT:    v_div_scale_f32 v15, s4, v11, v11, 1.014597; GFX10-NEXT:    v_readfirstlane_b32 s3, v1014598; GFX10-NEXT:    v_add_nc_u32_e32 v10, -1, v1014599; GFX10-NEXT:    v_rcp_f32_e32 v16, v1514600; GFX10-NEXT:    v_not_b32_e32 v14, v1014601; GFX10-NEXT:    v_add_nc_u32_e32 v14, v14, v1314602; GFX10-NEXT:    v_div_scale_f32 v13, vcc_lo, 1.0, v11, 1.014603; GFX10-NEXT:    s_denorm_mode 1514604; GFX10-NEXT:    v_fma_f32 v17, -v15, v16, 1.014605; GFX10-NEXT:    v_fmac_f32_e32 v16, v17, v1614606; GFX10-NEXT:    v_mul_f32_e32 v17, v13, v1614607; GFX10-NEXT:    v_fma_f32 v18, -v15, v17, v1314608; GFX10-NEXT:    v_fmac_f32_e32 v17, v18, v1614609; GFX10-NEXT:    v_fma_f32 v13, -v15, v17, v1314610; GFX10-NEXT:    s_denorm_mode 1214611; GFX10-NEXT:    v_div_fmas_f32 v13, v13, v16, v1714612; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1414613; GFX10-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.014614; GFX10-NEXT:    s_cbranch_vccnz .LBB12_2314615; GFX10-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader14616; GFX10-NEXT:    s_sub_i32 s2, s2, s314617; GFX10-NEXT:    s_add_i32 s2, s2, 1214618; GFX10-NEXT:  .LBB12_21: ; %frem.loop_body2314619; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114620; GFX10-NEXT:    v_mov_b32_e32 v15, v1214621; GFX10-NEXT:    s_add_i32 s2, s2, -1214622; GFX10-NEXT:    s_cmp_gt_i32 s2, 1214623; GFX10-NEXT:    v_mul_f32_e32 v12, v15, v1314624; GFX10-NEXT:    v_rndne_f32_e32 v12, v1214625; GFX10-NEXT:    v_fma_f32 v12, -v12, v11, v1514626; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1214627; GFX10-NEXT:    v_add_f32_e32 v14, v12, v1114628; GFX10-NEXT:    v_cndmask_b32_e32 v12, v12, v14, vcc_lo14629; GFX10-NEXT:    v_ldexp_f32 v12, v12, 1214630; GFX10-NEXT:    s_cbranch_scc1 .LBB12_2114631; GFX10-NEXT:  ; %bb.22: ; %Flow11714632; GFX10-NEXT:    v_mov_b32_e32 v14, s214633; GFX10-NEXT:    v_mov_b32_e32 v12, v1514634; GFX10-NEXT:  .LBB12_23: ; %frem.loop_exit2414635; GFX10-NEXT:    v_add_nc_u32_e32 v14, -11, v1414636; GFX10-NEXT:    v_ldexp_f32 v12, v12, v1414637; GFX10-NEXT:    v_mul_f32_e32 v13, v12, v1314638; GFX10-NEXT:    v_rndne_f32_e32 v13, v1314639; GFX10-NEXT:    v_fma_f32 v12, -v13, v11, v1214640; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1214641; GFX10-NEXT:    v_add_f32_e32 v11, v12, v1114642; GFX10-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc_lo14643; GFX10-NEXT:    v_ldexp_f32 v10, v11, v1014644; GFX10-NEXT:    v_bfi_b32 v10, 0x7fffffff, v10, v214645; GFX10-NEXT:  .LBB12_24:14646; GFX10-NEXT:    v_cmp_ngt_f32_e64 s2, |v3|, |v7|14647; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s214648; GFX10-NEXT:    s_cbranch_vccz .LBB12_2614649; GFX10-NEXT:  ; %bb.25: ; %frem.else14650; GFX10-NEXT:    v_bfi_b32 v11, 0x7fffffff, 0, v314651; GFX10-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v3|, |v7|14652; GFX10-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc_lo14653; GFX10-NEXT:    s_cbranch_execz .LBB12_2714654; GFX10-NEXT:    s_branch .LBB12_3214655; GFX10-NEXT:  .LBB12_26:14656; GFX10-NEXT:    ; implicit-def: $vgpr1114657; GFX10-NEXT:  .LBB12_27: ; %frem.compute14658; GFX10-NEXT:    v_frexp_mant_f32_e64 v12, |v7|14659; GFX10-NEXT:    v_frexp_mant_f32_e64 v11, |v3|14660; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v14, v314661; GFX10-NEXT:    v_ldexp_f32 v12, v12, 114662; GFX10-NEXT:    v_ldexp_f32 v13, v11, 1214663; GFX10-NEXT:    v_frexp_exp_i32_f32_e32 v11, v714664; GFX10-NEXT:    v_readfirstlane_b32 s2, v1414665; GFX10-NEXT:    v_div_scale_f32 v16, s4, v12, v12, 1.014666; GFX10-NEXT:    v_readfirstlane_b32 s3, v1114667; GFX10-NEXT:    v_add_nc_u32_e32 v11, -1, v1114668; GFX10-NEXT:    v_rcp_f32_e32 v17, v1614669; GFX10-NEXT:    v_not_b32_e32 v15, v1114670; GFX10-NEXT:    v_add_nc_u32_e32 v15, v15, v1414671; GFX10-NEXT:    v_div_scale_f32 v14, vcc_lo, 1.0, v12, 1.014672; GFX10-NEXT:    s_denorm_mode 1514673; GFX10-NEXT:    v_fma_f32 v18, -v16, v17, 1.014674; GFX10-NEXT:    v_fmac_f32_e32 v17, v18, v1714675; GFX10-NEXT:    v_mul_f32_e32 v18, v14, v1714676; GFX10-NEXT:    v_fma_f32 v19, -v16, v18, v1414677; GFX10-NEXT:    v_fmac_f32_e32 v18, v19, v1714678; GFX10-NEXT:    v_fma_f32 v14, -v16, v18, v1414679; GFX10-NEXT:    s_denorm_mode 1214680; GFX10-NEXT:    v_div_fmas_f32 v14, v14, v17, v1814681; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1514682; GFX10-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.014683; GFX10-NEXT:    s_cbranch_vccnz .LBB12_3114684; GFX10-NEXT:  ; %bb.28: ; %frem.loop_body.preheader14685; GFX10-NEXT:    s_sub_i32 s2, s2, s314686; GFX10-NEXT:    s_add_i32 s2, s2, 1214687; GFX10-NEXT:  .LBB12_29: ; %frem.loop_body14688; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=114689; GFX10-NEXT:    v_mov_b32_e32 v16, v1314690; GFX10-NEXT:    s_add_i32 s2, s2, -1214691; GFX10-NEXT:    s_cmp_gt_i32 s2, 1214692; GFX10-NEXT:    v_mul_f32_e32 v13, v16, v1414693; GFX10-NEXT:    v_rndne_f32_e32 v13, v1314694; GFX10-NEXT:    v_fma_f32 v13, -v13, v12, v1614695; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1314696; GFX10-NEXT:    v_add_f32_e32 v15, v13, v1214697; GFX10-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo14698; GFX10-NEXT:    v_ldexp_f32 v13, v13, 1214699; GFX10-NEXT:    s_cbranch_scc1 .LBB12_2914700; GFX10-NEXT:  ; %bb.30: ; %Flow14701; GFX10-NEXT:    v_mov_b32_e32 v15, s214702; GFX10-NEXT:    v_mov_b32_e32 v13, v1614703; GFX10-NEXT:  .LBB12_31: ; %frem.loop_exit14704; GFX10-NEXT:    v_add_nc_u32_e32 v15, -11, v1514705; GFX10-NEXT:    v_ldexp_f32 v13, v13, v1514706; GFX10-NEXT:    v_mul_f32_e32 v14, v13, v1414707; GFX10-NEXT:    v_rndne_f32_e32 v14, v1414708; GFX10-NEXT:    v_fma_f32 v13, -v14, v12, v1314709; GFX10-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1314710; GFX10-NEXT:    v_add_f32_e32 v12, v13, v1214711; GFX10-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc_lo14712; GFX10-NEXT:    v_ldexp_f32 v11, v12, v1114713; GFX10-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v314714; GFX10-NEXT:  .LBB12_32: ; %Flow11614715; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v414716; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|14717; GFX10-NEXT:    v_mov_b32_e32 v4, 014718; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo14719; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v1|14720; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v8, vcc_lo14721; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v514722; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo14723; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v2|14724; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7fc00000, v9, vcc_lo14725; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v614726; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo14727; GFX10-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v3|14728; GFX10-NEXT:    v_cndmask_b32_e32 v2, 0x7fc00000, v10, vcc_lo14729; GFX10-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v714730; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo14731; GFX10-NEXT:    v_cndmask_b32_e32 v3, 0x7fc00000, v11, vcc_lo14732; GFX10-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]14733; GFX10-NEXT:    s_endpgm14734;14735; GFX11-LABEL: frem_v4f32:14736; GFX11:       ; %bb.0:14737; GFX11-NEXT:    s_clause 0x114738; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2414739; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3414740; GFX11-NEXT:    v_mov_b32_e32 v4, 014741; GFX11-NEXT:    s_waitcnt lgkmcnt(0)14742; GFX11-NEXT:    s_clause 0x114743; GFX11-NEXT:    global_load_b128 v[0:3], v4, s[2:3]14744; GFX11-NEXT:    global_load_b128 v[4:7], v4, s[4:5] offset:6414745; GFX11-NEXT:    s_waitcnt vmcnt(0)14746; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v0|, |v4|14747; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s214748; GFX11-NEXT:    s_cbranch_vccz .LBB12_214749; GFX11-NEXT:  ; %bb.1: ; %frem.else7814750; GFX11-NEXT:    v_bfi_b32 v8, 0x7fffffff, 0, v014751; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v0|, |v4|14752; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14753; GFX11-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc_lo14754; GFX11-NEXT:    s_cbranch_execz .LBB12_314755; GFX11-NEXT:    s_branch .LBB12_814756; GFX11-NEXT:  .LBB12_2:14757; GFX11-NEXT:    ; implicit-def: $vgpr814758; GFX11-NEXT:  .LBB12_3: ; %frem.compute7714759; GFX11-NEXT:    v_frexp_mant_f32_e64 v9, |v4|14760; GFX11-NEXT:    v_frexp_mant_f32_e64 v8, |v0|14761; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v11, v014762; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)14763; GFX11-NEXT:    v_ldexp_f32 v9, v9, 114764; GFX11-NEXT:    v_ldexp_f32 v10, v8, 1214765; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v8, v414766; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)14767; GFX11-NEXT:    v_readfirstlane_b32 s2, v1114768; GFX11-NEXT:    v_div_scale_f32 v13, null, v9, v9, 1.014769; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)14770; GFX11-NEXT:    v_readfirstlane_b32 s3, v814771; GFX11-NEXT:    v_add_nc_u32_e32 v8, -1, v814772; GFX11-NEXT:    v_rcp_f32_e32 v14, v1314773; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14774; GFX11-NEXT:    v_not_b32_e32 v12, v814775; GFX11-NEXT:    v_add_nc_u32_e32 v12, v12, v1114776; GFX11-NEXT:    v_div_scale_f32 v11, vcc_lo, 1.0, v9, 1.014777; GFX11-NEXT:    s_denorm_mode 1514778; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)14779; GFX11-NEXT:    v_fma_f32 v15, -v13, v14, 1.014780; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14781; GFX11-NEXT:    v_fmac_f32_e32 v14, v15, v1414782; GFX11-NEXT:    v_mul_f32_e32 v15, v11, v1414783; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14784; GFX11-NEXT:    v_fma_f32 v16, -v13, v15, v1114785; GFX11-NEXT:    v_fmac_f32_e32 v15, v16, v1414786; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)14787; GFX11-NEXT:    v_fma_f32 v11, -v13, v15, v1114788; GFX11-NEXT:    s_denorm_mode 1214789; GFX11-NEXT:    v_div_fmas_f32 v11, v11, v14, v1514790; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1214791; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14792; GFX11-NEXT:    v_div_fixup_f32 v11, v11, v9, 1.014793; GFX11-NEXT:    s_cbranch_vccnz .LBB12_714794; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader14795; GFX11-NEXT:    s_sub_i32 s2, s2, s314796; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14797; GFX11-NEXT:    s_add_i32 s2, s2, 1214798; GFX11-NEXT:  .LBB12_5: ; %frem.loop_body8514799; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114800; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)14801; GFX11-NEXT:    v_mov_b32_e32 v13, v1014802; GFX11-NEXT:    s_add_i32 s2, s2, -1214803; GFX11-NEXT:    s_cmp_gt_i32 s2, 1214804; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14805; GFX11-NEXT:    v_mul_f32_e32 v10, v13, v1114806; GFX11-NEXT:    v_rndne_f32_e32 v10, v1014807; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14808; GFX11-NEXT:    v_fma_f32 v10, -v10, v9, v1314809; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1014810; GFX11-NEXT:    v_add_f32_e32 v12, v10, v914811; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14812; GFX11-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc_lo14813; GFX11-NEXT:    v_ldexp_f32 v10, v10, 1214814; GFX11-NEXT:    s_cbranch_scc1 .LBB12_514815; GFX11-NEXT:  ; %bb.6: ; %Flow12514816; GFX11-NEXT:    v_mov_b32_e32 v12, s214817; GFX11-NEXT:    v_mov_b32_e32 v10, v1314818; GFX11-NEXT:  .LBB12_7: ; %frem.loop_exit8614819; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)14820; GFX11-NEXT:    v_add_nc_u32_e32 v12, -11, v1214821; GFX11-NEXT:    v_ldexp_f32 v10, v10, v1214822; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14823; GFX11-NEXT:    v_mul_f32_e32 v11, v10, v1114824; GFX11-NEXT:    v_rndne_f32_e32 v11, v1114825; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14826; GFX11-NEXT:    v_fma_f32 v10, -v11, v9, v1014827; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1014828; GFX11-NEXT:    v_add_f32_e32 v9, v10, v914829; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14830; GFX11-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc_lo14831; GFX11-NEXT:    v_ldexp_f32 v8, v9, v814832; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14833; GFX11-NEXT:    v_bfi_b32 v8, 0x7fffffff, v8, v014834; GFX11-NEXT:  .LBB12_8:14835; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v1|, |v5|14836; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s214837; GFX11-NEXT:    s_cbranch_vccz .LBB12_1014838; GFX11-NEXT:  ; %bb.9: ; %frem.else4714839; GFX11-NEXT:    v_bfi_b32 v9, 0x7fffffff, 0, v114840; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v1|, |v5|14841; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14842; GFX11-NEXT:    v_cndmask_b32_e32 v9, v1, v9, vcc_lo14843; GFX11-NEXT:    s_cbranch_execz .LBB12_1114844; GFX11-NEXT:    s_branch .LBB12_1614845; GFX11-NEXT:  .LBB12_10:14846; GFX11-NEXT:    ; implicit-def: $vgpr914847; GFX11-NEXT:  .LBB12_11: ; %frem.compute4614848; GFX11-NEXT:    v_frexp_mant_f32_e64 v10, |v5|14849; GFX11-NEXT:    v_frexp_mant_f32_e64 v9, |v1|14850; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v12, v114851; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)14852; GFX11-NEXT:    v_ldexp_f32 v10, v10, 114853; GFX11-NEXT:    v_ldexp_f32 v11, v9, 1214854; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v9, v514855; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)14856; GFX11-NEXT:    v_readfirstlane_b32 s2, v1214857; GFX11-NEXT:    v_div_scale_f32 v14, null, v10, v10, 1.014858; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)14859; GFX11-NEXT:    v_readfirstlane_b32 s3, v914860; GFX11-NEXT:    v_add_nc_u32_e32 v9, -1, v914861; GFX11-NEXT:    v_rcp_f32_e32 v15, v1414862; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14863; GFX11-NEXT:    v_not_b32_e32 v13, v914864; GFX11-NEXT:    v_add_nc_u32_e32 v13, v13, v1214865; GFX11-NEXT:    v_div_scale_f32 v12, vcc_lo, 1.0, v10, 1.014866; GFX11-NEXT:    s_denorm_mode 1514867; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)14868; GFX11-NEXT:    v_fma_f32 v16, -v14, v15, 1.014869; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14870; GFX11-NEXT:    v_fmac_f32_e32 v15, v16, v1514871; GFX11-NEXT:    v_mul_f32_e32 v16, v12, v1514872; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14873; GFX11-NEXT:    v_fma_f32 v17, -v14, v16, v1214874; GFX11-NEXT:    v_fmac_f32_e32 v16, v17, v1514875; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)14876; GFX11-NEXT:    v_fma_f32 v12, -v14, v16, v1214877; GFX11-NEXT:    s_denorm_mode 1214878; GFX11-NEXT:    v_div_fmas_f32 v12, v12, v15, v1614879; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1314880; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14881; GFX11-NEXT:    v_div_fixup_f32 v12, v12, v10, 1.014882; GFX11-NEXT:    s_cbranch_vccnz .LBB12_1514883; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader14884; GFX11-NEXT:    s_sub_i32 s2, s2, s314885; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14886; GFX11-NEXT:    s_add_i32 s2, s2, 1214887; GFX11-NEXT:  .LBB12_13: ; %frem.loop_body5414888; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114889; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)14890; GFX11-NEXT:    v_mov_b32_e32 v14, v1114891; GFX11-NEXT:    s_add_i32 s2, s2, -1214892; GFX11-NEXT:    s_cmp_gt_i32 s2, 1214893; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14894; GFX11-NEXT:    v_mul_f32_e32 v11, v14, v1214895; GFX11-NEXT:    v_rndne_f32_e32 v11, v1114896; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14897; GFX11-NEXT:    v_fma_f32 v11, -v11, v10, v1414898; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1114899; GFX11-NEXT:    v_add_f32_e32 v13, v11, v1014900; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14901; GFX11-NEXT:    v_cndmask_b32_e32 v11, v11, v13, vcc_lo14902; GFX11-NEXT:    v_ldexp_f32 v11, v11, 1214903; GFX11-NEXT:    s_cbranch_scc1 .LBB12_1314904; GFX11-NEXT:  ; %bb.14: ; %Flow12114905; GFX11-NEXT:    v_mov_b32_e32 v13, s214906; GFX11-NEXT:    v_mov_b32_e32 v11, v1414907; GFX11-NEXT:  .LBB12_15: ; %frem.loop_exit5514908; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)14909; GFX11-NEXT:    v_add_nc_u32_e32 v13, -11, v1314910; GFX11-NEXT:    v_ldexp_f32 v11, v11, v1314911; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14912; GFX11-NEXT:    v_mul_f32_e32 v12, v11, v1214913; GFX11-NEXT:    v_rndne_f32_e32 v12, v1214914; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14915; GFX11-NEXT:    v_fma_f32 v11, -v12, v10, v1114916; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1114917; GFX11-NEXT:    v_add_f32_e32 v10, v11, v1014918; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14919; GFX11-NEXT:    v_cndmask_b32_e32 v10, v11, v10, vcc_lo14920; GFX11-NEXT:    v_ldexp_f32 v9, v10, v914921; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)14922; GFX11-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v114923; GFX11-NEXT:  .LBB12_16:14924; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v2|, |v6|14925; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s214926; GFX11-NEXT:    s_cbranch_vccz .LBB12_1814927; GFX11-NEXT:  ; %bb.17: ; %frem.else1614928; GFX11-NEXT:    v_bfi_b32 v10, 0x7fffffff, 0, v214929; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v2|, |v6|14930; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14931; GFX11-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc_lo14932; GFX11-NEXT:    s_cbranch_execz .LBB12_1914933; GFX11-NEXT:    s_branch .LBB12_2414934; GFX11-NEXT:  .LBB12_18:14935; GFX11-NEXT:    ; implicit-def: $vgpr1014936; GFX11-NEXT:  .LBB12_19: ; %frem.compute1514937; GFX11-NEXT:    v_frexp_mant_f32_e64 v11, |v6|14938; GFX11-NEXT:    v_frexp_mant_f32_e64 v10, |v2|14939; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v13, v214940; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)14941; GFX11-NEXT:    v_ldexp_f32 v11, v11, 114942; GFX11-NEXT:    v_ldexp_f32 v12, v10, 1214943; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v10, v614944; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)14945; GFX11-NEXT:    v_readfirstlane_b32 s2, v1314946; GFX11-NEXT:    v_div_scale_f32 v15, null, v11, v11, 1.014947; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)14948; GFX11-NEXT:    v_readfirstlane_b32 s3, v1014949; GFX11-NEXT:    v_add_nc_u32_e32 v10, -1, v1014950; GFX11-NEXT:    v_rcp_f32_e32 v16, v1514951; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14952; GFX11-NEXT:    v_not_b32_e32 v14, v1014953; GFX11-NEXT:    v_add_nc_u32_e32 v14, v14, v1314954; GFX11-NEXT:    v_div_scale_f32 v13, vcc_lo, 1.0, v11, 1.014955; GFX11-NEXT:    s_denorm_mode 1514956; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)14957; GFX11-NEXT:    v_fma_f32 v17, -v15, v16, 1.014958; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14959; GFX11-NEXT:    v_fmac_f32_e32 v16, v17, v1614960; GFX11-NEXT:    v_mul_f32_e32 v17, v13, v1614961; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14962; GFX11-NEXT:    v_fma_f32 v18, -v15, v17, v1314963; GFX11-NEXT:    v_fmac_f32_e32 v17, v18, v1614964; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)14965; GFX11-NEXT:    v_fma_f32 v13, -v15, v17, v1314966; GFX11-NEXT:    s_denorm_mode 1214967; GFX11-NEXT:    v_div_fmas_f32 v13, v13, v16, v1714968; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1414969; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)14970; GFX11-NEXT:    v_div_fixup_f32 v13, v13, v11, 1.014971; GFX11-NEXT:    s_cbranch_vccnz .LBB12_2314972; GFX11-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader14973; GFX11-NEXT:    s_sub_i32 s2, s2, s314974; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)14975; GFX11-NEXT:    s_add_i32 s2, s2, 1214976; GFX11-NEXT:  .LBB12_21: ; %frem.loop_body2314977; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=114978; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)14979; GFX11-NEXT:    v_mov_b32_e32 v15, v1214980; GFX11-NEXT:    s_add_i32 s2, s2, -1214981; GFX11-NEXT:    s_cmp_gt_i32 s2, 1214982; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14983; GFX11-NEXT:    v_mul_f32_e32 v12, v15, v1314984; GFX11-NEXT:    v_rndne_f32_e32 v12, v1214985; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14986; GFX11-NEXT:    v_fma_f32 v12, -v12, v11, v1514987; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1214988; GFX11-NEXT:    v_add_f32_e32 v14, v12, v1114989; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)14990; GFX11-NEXT:    v_cndmask_b32_e32 v12, v12, v14, vcc_lo14991; GFX11-NEXT:    v_ldexp_f32 v12, v12, 1214992; GFX11-NEXT:    s_cbranch_scc1 .LBB12_2114993; GFX11-NEXT:  ; %bb.22: ; %Flow11714994; GFX11-NEXT:    v_mov_b32_e32 v14, s214995; GFX11-NEXT:    v_mov_b32_e32 v12, v1514996; GFX11-NEXT:  .LBB12_23: ; %frem.loop_exit2414997; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)14998; GFX11-NEXT:    v_add_nc_u32_e32 v14, -11, v1414999; GFX11-NEXT:    v_ldexp_f32 v12, v12, v1415000; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15001; GFX11-NEXT:    v_mul_f32_e32 v13, v12, v1315002; GFX11-NEXT:    v_rndne_f32_e32 v13, v1315003; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15004; GFX11-NEXT:    v_fma_f32 v12, -v13, v11, v1215005; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1215006; GFX11-NEXT:    v_add_f32_e32 v11, v12, v1115007; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15008; GFX11-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc_lo15009; GFX11-NEXT:    v_ldexp_f32 v10, v11, v1015010; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15011; GFX11-NEXT:    v_bfi_b32 v10, 0x7fffffff, v10, v215012; GFX11-NEXT:  .LBB12_24:15013; GFX11-NEXT:    v_cmp_ngt_f32_e64 s2, |v3|, |v7|15014; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s215015; GFX11-NEXT:    s_cbranch_vccz .LBB12_2615016; GFX11-NEXT:  ; %bb.25: ; %frem.else15017; GFX11-NEXT:    v_bfi_b32 v11, 0x7fffffff, 0, v315018; GFX11-NEXT:    v_cmp_eq_f32_e64 vcc_lo, |v3|, |v7|15019; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)15020; GFX11-NEXT:    v_cndmask_b32_e32 v11, v3, v11, vcc_lo15021; GFX11-NEXT:    s_cbranch_execz .LBB12_2715022; GFX11-NEXT:    s_branch .LBB12_3215023; GFX11-NEXT:  .LBB12_26:15024; GFX11-NEXT:    ; implicit-def: $vgpr1115025; GFX11-NEXT:  .LBB12_27: ; %frem.compute15026; GFX11-NEXT:    v_frexp_mant_f32_e64 v12, |v7|15027; GFX11-NEXT:    v_frexp_mant_f32_e64 v11, |v3|15028; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v14, v315029; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15030; GFX11-NEXT:    v_ldexp_f32 v12, v12, 115031; GFX11-NEXT:    v_ldexp_f32 v13, v11, 1215032; GFX11-NEXT:    v_frexp_exp_i32_f32_e32 v11, v715033; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15034; GFX11-NEXT:    v_readfirstlane_b32 s2, v1415035; GFX11-NEXT:    v_div_scale_f32 v16, null, v12, v12, 1.015036; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15037; GFX11-NEXT:    v_readfirstlane_b32 s3, v1115038; GFX11-NEXT:    v_add_nc_u32_e32 v11, -1, v1115039; GFX11-NEXT:    v_rcp_f32_e32 v17, v1615040; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15041; GFX11-NEXT:    v_not_b32_e32 v15, v1115042; GFX11-NEXT:    v_add_nc_u32_e32 v15, v15, v1415043; GFX11-NEXT:    v_div_scale_f32 v14, vcc_lo, 1.0, v12, 1.015044; GFX11-NEXT:    s_denorm_mode 1515045; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)15046; GFX11-NEXT:    v_fma_f32 v18, -v16, v17, 1.015047; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15048; GFX11-NEXT:    v_fmac_f32_e32 v17, v18, v1715049; GFX11-NEXT:    v_mul_f32_e32 v18, v14, v1715050; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15051; GFX11-NEXT:    v_fma_f32 v19, -v16, v18, v1415052; GFX11-NEXT:    v_fmac_f32_e32 v18, v19, v1715053; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15054; GFX11-NEXT:    v_fma_f32 v14, -v16, v18, v1415055; GFX11-NEXT:    s_denorm_mode 1215056; GFX11-NEXT:    v_div_fmas_f32 v14, v14, v17, v1815057; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v1515058; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)15059; GFX11-NEXT:    v_div_fixup_f32 v14, v14, v12, 1.015060; GFX11-NEXT:    s_cbranch_vccnz .LBB12_3115061; GFX11-NEXT:  ; %bb.28: ; %frem.loop_body.preheader15062; GFX11-NEXT:    s_sub_i32 s2, s2, s315063; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15064; GFX11-NEXT:    s_add_i32 s2, s2, 1215065; GFX11-NEXT:  .LBB12_29: ; %frem.loop_body15066; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=115067; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15068; GFX11-NEXT:    v_mov_b32_e32 v16, v1315069; GFX11-NEXT:    s_add_i32 s2, s2, -1215070; GFX11-NEXT:    s_cmp_gt_i32 s2, 1215071; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15072; GFX11-NEXT:    v_mul_f32_e32 v13, v16, v1415073; GFX11-NEXT:    v_rndne_f32_e32 v13, v1315074; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15075; GFX11-NEXT:    v_fma_f32 v13, -v13, v12, v1615076; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1315077; GFX11-NEXT:    v_add_f32_e32 v15, v13, v1215078; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15079; GFX11-NEXT:    v_cndmask_b32_e32 v13, v13, v15, vcc_lo15080; GFX11-NEXT:    v_ldexp_f32 v13, v13, 1215081; GFX11-NEXT:    s_cbranch_scc1 .LBB12_2915082; GFX11-NEXT:  ; %bb.30: ; %Flow15083; GFX11-NEXT:    v_mov_b32_e32 v15, s215084; GFX11-NEXT:    v_mov_b32_e32 v13, v1615085; GFX11-NEXT:  .LBB12_31: ; %frem.loop_exit15086; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15087; GFX11-NEXT:    v_add_nc_u32_e32 v15, -11, v1515088; GFX11-NEXT:    v_ldexp_f32 v13, v13, v1515089; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15090; GFX11-NEXT:    v_mul_f32_e32 v14, v13, v1415091; GFX11-NEXT:    v_rndne_f32_e32 v14, v1415092; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15093; GFX11-NEXT:    v_fma_f32 v13, -v14, v12, v1315094; GFX11-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v1315095; GFX11-NEXT:    v_add_f32_e32 v12, v13, v1215096; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15097; GFX11-NEXT:    v_cndmask_b32_e32 v12, v13, v12, vcc_lo15098; GFX11-NEXT:    v_ldexp_f32 v11, v12, v1115099; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)15100; GFX11-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v315101; GFX11-NEXT:  .LBB12_32: ; %Flow11615102; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v415103; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v0|15104; GFX11-NEXT:    v_mov_b32_e32 v4, 015105; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo15106; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v1|15107; GFX11-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v8, vcc_lo15108; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v515109; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo15110; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v2|15111; GFX11-NEXT:    v_cndmask_b32_e32 v1, 0x7fc00000, v9, vcc_lo15112; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v615113; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo15114; GFX11-NEXT:    v_cmp_nle_f32_e64 s2, 0x7f800000, |v3|15115; GFX11-NEXT:    v_cndmask_b32_e32 v2, 0x7fc00000, v10, vcc_lo15116; GFX11-NEXT:    v_cmp_lg_f32_e32 vcc_lo, 0, v715117; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo15118; GFX11-NEXT:    v_cndmask_b32_e32 v3, 0x7fc00000, v11, vcc_lo15119; GFX11-NEXT:    global_store_b128 v4, v[0:3], s[0:1]15120; GFX11-NEXT:    s_endpgm15121;15122; GFX1150-LABEL: frem_v4f32:15123; GFX1150:       ; %bb.0:15124; GFX1150-NEXT:    s_clause 0x115125; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2415126; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3415127; GFX1150-NEXT:    v_mov_b32_e32 v4, 015128; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)15129; GFX1150-NEXT:    global_load_b128 v[0:3], v4, s[2:3]15130; GFX1150-NEXT:    s_waitcnt vmcnt(0)15131; GFX1150-NEXT:    v_readfirstlane_b32 s10, v115132; GFX1150-NEXT:    v_readfirstlane_b32 s9, v215133; GFX1150-NEXT:    v_readfirstlane_b32 s7, v315134; GFX1150-NEXT:    global_load_b128 v[1:4], v4, s[4:5] offset:6415135; GFX1150-NEXT:    v_readfirstlane_b32 s8, v015136; GFX1150-NEXT:    s_and_b32 s5, s8, 0x7fffffff15137; GFX1150-NEXT:    s_waitcnt vmcnt(0)15138; GFX1150-NEXT:    v_readfirstlane_b32 s6, v115139; GFX1150-NEXT:    v_readfirstlane_b32 s4, v215140; GFX1150-NEXT:    v_readfirstlane_b32 s3, v315141; GFX1150-NEXT:    v_readfirstlane_b32 s2, v415142; GFX1150-NEXT:    s_and_b32 s12, s6, 0x7fffffff15143; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15144; GFX1150-NEXT:    s_cmp_ngt_f32 s5, s1215145; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_215146; GFX1150-NEXT:  ; %bb.1: ; %frem.else7815147; GFX1150-NEXT:    s_cmp_eq_f32 s5, s1215148; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, 0, s815149; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 015150; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15151; GFX1150-NEXT:    v_cndmask_b32_e32 v0, s8, v0, vcc_lo15152; GFX1150-NEXT:    s_cbranch_execz .LBB12_315153; GFX1150-NEXT:    s_branch .LBB12_815154; GFX1150-NEXT:  .LBB12_2:15155; GFX1150-NEXT:    ; implicit-def: $vgpr015156; GFX1150-NEXT:  .LBB12_3: ; %frem.compute7715157; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s6|15158; GFX1150-NEXT:    v_frexp_mant_f32_e64 v0, |s8|15159; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, s815160; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15161; GFX1150-NEXT:    v_ldexp_f32 v1, v1, 115162; GFX1150-NEXT:    v_ldexp_f32 v2, v0, 1215163; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v0, s615164; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15165; GFX1150-NEXT:    v_readfirstlane_b32 s11, v315166; GFX1150-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.015167; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15168; GFX1150-NEXT:    v_readfirstlane_b32 s12, v015169; GFX1150-NEXT:    v_add_nc_u32_e32 v0, -1, v015170; GFX1150-NEXT:    v_rcp_f32_e32 v6, v515171; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15172; GFX1150-NEXT:    v_not_b32_e32 v4, v015173; GFX1150-NEXT:    v_add_nc_u32_e32 v4, v4, v315174; GFX1150-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.015175; GFX1150-NEXT:    s_denorm_mode 1515176; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15177; GFX1150-NEXT:    v_fma_f32 v7, -v5, v6, 1.015178; GFX1150-NEXT:    v_fmac_f32_e32 v6, v7, v615179; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15180; GFX1150-NEXT:    v_mul_f32_e32 v7, v3, v615181; GFX1150-NEXT:    v_fma_f32 v8, -v5, v7, v315182; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15183; GFX1150-NEXT:    v_fmac_f32_e32 v7, v8, v615184; GFX1150-NEXT:    v_fma_f32 v3, -v5, v7, v315185; GFX1150-NEXT:    s_denorm_mode 1215186; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15187; GFX1150-NEXT:    v_div_fmas_f32 v3, v3, v6, v715188; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v415189; GFX1150-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.015190; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_715191; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader15192; GFX1150-NEXT:    s_sub_i32 s11, s11, s1215193; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15194; GFX1150-NEXT:    s_add_i32 s11, s11, 1215195; GFX1150-NEXT:  .LBB12_5: ; %frem.loop_body8515196; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=115197; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15198; GFX1150-NEXT:    v_mov_b32_e32 v5, v215199; GFX1150-NEXT:    s_add_i32 s11, s11, -1215200; GFX1150-NEXT:    s_cmp_gt_i32 s11, 1215201; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15202; GFX1150-NEXT:    v_mul_f32_e32 v2, v5, v315203; GFX1150-NEXT:    v_rndne_f32_e32 v2, v215204; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15205; GFX1150-NEXT:    v_xor_b32_e32 v2, 0x80000000, v215206; GFX1150-NEXT:    v_fma_f32 v2, v2, v1, v515207; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15208; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v215209; GFX1150-NEXT:    v_add_f32_e32 v4, v2, v115210; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo15211; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15212; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 1215213; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_515214; GFX1150-NEXT:  ; %bb.6: ; %Flow12515215; GFX1150-NEXT:    v_mov_b32_e32 v4, s1115216; GFX1150-NEXT:    v_mov_b32_e32 v2, v515217; GFX1150-NEXT:  .LBB12_7: ; %frem.loop_exit8615218; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15219; GFX1150-NEXT:    v_add_nc_u32_e32 v4, -11, v415220; GFX1150-NEXT:    v_ldexp_f32 v2, v2, v415221; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15222; GFX1150-NEXT:    v_mul_f32_e32 v3, v2, v315223; GFX1150-NEXT:    v_rndne_f32_e32 v3, v315224; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15225; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v315226; GFX1150-NEXT:    v_fmac_f32_e32 v2, v3, v115227; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15228; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v215229; GFX1150-NEXT:    v_add_f32_e32 v1, v2, v115230; GFX1150-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo15231; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15232; GFX1150-NEXT:    v_ldexp_f32 v0, v1, v015233; GFX1150-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s815234; GFX1150-NEXT:  .LBB12_8:15235; GFX1150-NEXT:    s_and_b32 s8, s10, 0x7fffffff15236; GFX1150-NEXT:    s_and_b32 s12, s4, 0x7fffffff15237; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15238; GFX1150-NEXT:    s_cmp_ngt_f32 s8, s1215239; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_1015240; GFX1150-NEXT:  ; %bb.9: ; %frem.else4715241; GFX1150-NEXT:    s_cmp_eq_f32 s8, s1215242; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, 0, s1015243; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 015244; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15245; GFX1150-NEXT:    v_cndmask_b32_e32 v1, s10, v1, vcc_lo15246; GFX1150-NEXT:    s_cbranch_execz .LBB12_1115247; GFX1150-NEXT:    s_branch .LBB12_1615248; GFX1150-NEXT:  .LBB12_10:15249; GFX1150-NEXT:    ; implicit-def: $vgpr115250; GFX1150-NEXT:  .LBB12_11: ; %frem.compute4615251; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s4|15252; GFX1150-NEXT:    v_frexp_mant_f32_e64 v1, |s10|15253; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v4, s1015254; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15255; GFX1150-NEXT:    v_ldexp_f32 v2, v2, 115256; GFX1150-NEXT:    v_ldexp_f32 v3, v1, 1215257; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v1, s415258; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15259; GFX1150-NEXT:    v_readfirstlane_b32 s11, v415260; GFX1150-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.015261; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15262; GFX1150-NEXT:    v_readfirstlane_b32 s12, v115263; GFX1150-NEXT:    v_add_nc_u32_e32 v1, -1, v115264; GFX1150-NEXT:    v_rcp_f32_e32 v7, v615265; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15266; GFX1150-NEXT:    v_not_b32_e32 v5, v115267; GFX1150-NEXT:    v_add_nc_u32_e32 v5, v5, v415268; GFX1150-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.015269; GFX1150-NEXT:    s_denorm_mode 1515270; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15271; GFX1150-NEXT:    v_fma_f32 v8, -v6, v7, 1.015272; GFX1150-NEXT:    v_fmac_f32_e32 v7, v8, v715273; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15274; GFX1150-NEXT:    v_mul_f32_e32 v8, v4, v715275; GFX1150-NEXT:    v_fma_f32 v9, -v6, v8, v415276; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15277; GFX1150-NEXT:    v_fmac_f32_e32 v8, v9, v715278; GFX1150-NEXT:    v_fma_f32 v4, -v6, v8, v415279; GFX1150-NEXT:    s_denorm_mode 1215280; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15281; GFX1150-NEXT:    v_div_fmas_f32 v4, v4, v7, v815282; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v515283; GFX1150-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.015284; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_1515285; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader15286; GFX1150-NEXT:    s_sub_i32 s11, s11, s1215287; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15288; GFX1150-NEXT:    s_add_i32 s11, s11, 1215289; GFX1150-NEXT:  .LBB12_13: ; %frem.loop_body5415290; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=115291; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15292; GFX1150-NEXT:    v_mov_b32_e32 v6, v315293; GFX1150-NEXT:    s_add_i32 s11, s11, -1215294; GFX1150-NEXT:    s_cmp_gt_i32 s11, 1215295; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15296; GFX1150-NEXT:    v_mul_f32_e32 v3, v6, v415297; GFX1150-NEXT:    v_rndne_f32_e32 v3, v315298; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15299; GFX1150-NEXT:    v_xor_b32_e32 v3, 0x80000000, v315300; GFX1150-NEXT:    v_fma_f32 v3, v3, v2, v615301; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15302; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v315303; GFX1150-NEXT:    v_add_f32_e32 v5, v3, v215304; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo15305; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15306; GFX1150-NEXT:    v_ldexp_f32 v3, v3, 1215307; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_1315308; GFX1150-NEXT:  ; %bb.14: ; %Flow12115309; GFX1150-NEXT:    v_mov_b32_e32 v5, s1115310; GFX1150-NEXT:    v_mov_b32_e32 v3, v615311; GFX1150-NEXT:  .LBB12_15: ; %frem.loop_exit5515312; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15313; GFX1150-NEXT:    v_add_nc_u32_e32 v5, -11, v515314; GFX1150-NEXT:    v_ldexp_f32 v3, v3, v515315; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15316; GFX1150-NEXT:    v_mul_f32_e32 v4, v3, v415317; GFX1150-NEXT:    v_rndne_f32_e32 v4, v415318; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15319; GFX1150-NEXT:    v_xor_b32_e32 v4, 0x80000000, v415320; GFX1150-NEXT:    v_fmac_f32_e32 v3, v4, v215321; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15322; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v315323; GFX1150-NEXT:    v_add_f32_e32 v2, v3, v215324; GFX1150-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo15325; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15326; GFX1150-NEXT:    v_ldexp_f32 v1, v2, v115327; GFX1150-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s1015328; GFX1150-NEXT:  .LBB12_16:15329; GFX1150-NEXT:    s_and_b32 s10, s9, 0x7fffffff15330; GFX1150-NEXT:    s_and_b32 s12, s3, 0x7fffffff15331; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15332; GFX1150-NEXT:    s_cmp_ngt_f32 s10, s1215333; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_1815334; GFX1150-NEXT:  ; %bb.17: ; %frem.else1615335; GFX1150-NEXT:    s_cmp_eq_f32 s10, s1215336; GFX1150-NEXT:    v_bfi_b32 v2, 0x7fffffff, 0, s915337; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 015338; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15339; GFX1150-NEXT:    v_cndmask_b32_e32 v2, s9, v2, vcc_lo15340; GFX1150-NEXT:    s_cbranch_execz .LBB12_1915341; GFX1150-NEXT:    s_branch .LBB12_2415342; GFX1150-NEXT:  .LBB12_18:15343; GFX1150-NEXT:    ; implicit-def: $vgpr215344; GFX1150-NEXT:  .LBB12_19: ; %frem.compute1515345; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |s3|15346; GFX1150-NEXT:    v_frexp_mant_f32_e64 v2, |s9|15347; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v5, s915348; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15349; GFX1150-NEXT:    v_ldexp_f32 v3, v3, 115350; GFX1150-NEXT:    v_ldexp_f32 v4, v2, 1215351; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v2, s315352; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15353; GFX1150-NEXT:    v_readfirstlane_b32 s11, v515354; GFX1150-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.015355; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15356; GFX1150-NEXT:    v_readfirstlane_b32 s12, v215357; GFX1150-NEXT:    v_add_nc_u32_e32 v2, -1, v215358; GFX1150-NEXT:    v_rcp_f32_e32 v8, v715359; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15360; GFX1150-NEXT:    v_not_b32_e32 v6, v215361; GFX1150-NEXT:    v_add_nc_u32_e32 v6, v6, v515362; GFX1150-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.015363; GFX1150-NEXT:    s_denorm_mode 1515364; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15365; GFX1150-NEXT:    v_fma_f32 v9, -v7, v8, 1.015366; GFX1150-NEXT:    v_fmac_f32_e32 v8, v9, v815367; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15368; GFX1150-NEXT:    v_mul_f32_e32 v9, v5, v815369; GFX1150-NEXT:    v_fma_f32 v10, -v7, v9, v515370; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15371; GFX1150-NEXT:    v_fmac_f32_e32 v9, v10, v815372; GFX1150-NEXT:    v_fma_f32 v5, -v7, v9, v515373; GFX1150-NEXT:    s_denorm_mode 1215374; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15375; GFX1150-NEXT:    v_div_fmas_f32 v5, v5, v8, v915376; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v615377; GFX1150-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.015378; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_2315379; GFX1150-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader15380; GFX1150-NEXT:    s_sub_i32 s11, s11, s1215381; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15382; GFX1150-NEXT:    s_add_i32 s11, s11, 1215383; GFX1150-NEXT:  .LBB12_21: ; %frem.loop_body2315384; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=115385; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15386; GFX1150-NEXT:    v_mov_b32_e32 v7, v415387; GFX1150-NEXT:    s_add_i32 s11, s11, -1215388; GFX1150-NEXT:    s_cmp_gt_i32 s11, 1215389; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15390; GFX1150-NEXT:    v_mul_f32_e32 v4, v7, v515391; GFX1150-NEXT:    v_rndne_f32_e32 v4, v415392; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15393; GFX1150-NEXT:    v_xor_b32_e32 v4, 0x80000000, v415394; GFX1150-NEXT:    v_fma_f32 v4, v4, v3, v715395; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15396; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v415397; GFX1150-NEXT:    v_add_f32_e32 v6, v4, v315398; GFX1150-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo15399; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15400; GFX1150-NEXT:    v_ldexp_f32 v4, v4, 1215401; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_2115402; GFX1150-NEXT:  ; %bb.22: ; %Flow11715403; GFX1150-NEXT:    v_mov_b32_e32 v6, s1115404; GFX1150-NEXT:    v_mov_b32_e32 v4, v715405; GFX1150-NEXT:  .LBB12_23: ; %frem.loop_exit2415406; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15407; GFX1150-NEXT:    v_add_nc_u32_e32 v6, -11, v615408; GFX1150-NEXT:    v_ldexp_f32 v4, v4, v615409; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15410; GFX1150-NEXT:    v_mul_f32_e32 v5, v4, v515411; GFX1150-NEXT:    v_rndne_f32_e32 v5, v515412; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15413; GFX1150-NEXT:    v_xor_b32_e32 v5, 0x80000000, v515414; GFX1150-NEXT:    v_fmac_f32_e32 v4, v5, v315415; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15416; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v415417; GFX1150-NEXT:    v_add_f32_e32 v3, v4, v315418; GFX1150-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo15419; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15420; GFX1150-NEXT:    v_ldexp_f32 v2, v3, v215421; GFX1150-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, s915422; GFX1150-NEXT:  .LBB12_24:15423; GFX1150-NEXT:    s_and_b32 s9, s7, 0x7fffffff15424; GFX1150-NEXT:    s_and_b32 s12, s2, 0x7fffffff15425; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15426; GFX1150-NEXT:    s_cmp_ngt_f32 s9, s1215427; GFX1150-NEXT:    s_cbranch_scc0 .LBB12_2615428; GFX1150-NEXT:  ; %bb.25: ; %frem.else15429; GFX1150-NEXT:    s_cmp_eq_f32 s9, s1215430; GFX1150-NEXT:    v_bfi_b32 v3, 0x7fffffff, 0, s715431; GFX1150-NEXT:    s_cselect_b32 vcc_lo, -1, 015432; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15433; GFX1150-NEXT:    v_cndmask_b32_e32 v3, s7, v3, vcc_lo15434; GFX1150-NEXT:    s_cbranch_execz .LBB12_2715435; GFX1150-NEXT:    s_branch .LBB12_3215436; GFX1150-NEXT:  .LBB12_26:15437; GFX1150-NEXT:    ; implicit-def: $vgpr315438; GFX1150-NEXT:  .LBB12_27: ; %frem.compute15439; GFX1150-NEXT:    v_frexp_mant_f32_e64 v4, |s2|15440; GFX1150-NEXT:    v_frexp_mant_f32_e64 v3, |s7|15441; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v6, s715442; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15443; GFX1150-NEXT:    v_ldexp_f32 v4, v4, 115444; GFX1150-NEXT:    v_ldexp_f32 v5, v3, 1215445; GFX1150-NEXT:    v_frexp_exp_i32_f32_e32 v3, s215446; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15447; GFX1150-NEXT:    v_readfirstlane_b32 s11, v615448; GFX1150-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.015449; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15450; GFX1150-NEXT:    v_readfirstlane_b32 s12, v315451; GFX1150-NEXT:    v_add_nc_u32_e32 v3, -1, v315452; GFX1150-NEXT:    v_rcp_f32_e32 v9, v815453; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15454; GFX1150-NEXT:    v_not_b32_e32 v7, v315455; GFX1150-NEXT:    v_add_nc_u32_e32 v7, v7, v615456; GFX1150-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.015457; GFX1150-NEXT:    s_denorm_mode 1515458; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15459; GFX1150-NEXT:    v_fma_f32 v10, -v8, v9, 1.015460; GFX1150-NEXT:    v_fmac_f32_e32 v9, v10, v915461; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15462; GFX1150-NEXT:    v_mul_f32_e32 v10, v6, v915463; GFX1150-NEXT:    v_fma_f32 v11, -v8, v10, v615464; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15465; GFX1150-NEXT:    v_fmac_f32_e32 v10, v11, v915466; GFX1150-NEXT:    v_fma_f32 v6, -v8, v10, v615467; GFX1150-NEXT:    s_denorm_mode 1215468; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15469; GFX1150-NEXT:    v_div_fmas_f32 v6, v6, v9, v1015470; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v715471; GFX1150-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.015472; GFX1150-NEXT:    s_cbranch_vccnz .LBB12_3115473; GFX1150-NEXT:  ; %bb.28: ; %frem.loop_body.preheader15474; GFX1150-NEXT:    s_sub_i32 s11, s11, s1215475; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15476; GFX1150-NEXT:    s_add_i32 s11, s11, 1215477; GFX1150-NEXT:  .LBB12_29: ; %frem.loop_body15478; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=115479; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15480; GFX1150-NEXT:    v_mov_b32_e32 v8, v515481; GFX1150-NEXT:    s_add_i32 s11, s11, -1215482; GFX1150-NEXT:    s_cmp_gt_i32 s11, 1215483; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15484; GFX1150-NEXT:    v_mul_f32_e32 v5, v8, v615485; GFX1150-NEXT:    v_rndne_f32_e32 v5, v515486; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15487; GFX1150-NEXT:    v_xor_b32_e32 v5, 0x80000000, v515488; GFX1150-NEXT:    v_fma_f32 v5, v5, v4, v815489; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15490; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v515491; GFX1150-NEXT:    v_add_f32_e32 v7, v5, v415492; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo15493; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)15494; GFX1150-NEXT:    v_ldexp_f32 v5, v5, 1215495; GFX1150-NEXT:    s_cbranch_scc1 .LBB12_2915496; GFX1150-NEXT:  ; %bb.30: ; %Flow15497; GFX1150-NEXT:    v_mov_b32_e32 v7, s1115498; GFX1150-NEXT:    v_mov_b32_e32 v5, v815499; GFX1150-NEXT:  .LBB12_31: ; %frem.loop_exit15500; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15501; GFX1150-NEXT:    v_add_nc_u32_e32 v7, -11, v715502; GFX1150-NEXT:    v_ldexp_f32 v5, v5, v715503; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15504; GFX1150-NEXT:    v_mul_f32_e32 v6, v5, v615505; GFX1150-NEXT:    v_rndne_f32_e32 v6, v615506; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15507; GFX1150-NEXT:    v_xor_b32_e32 v6, 0x80000000, v615508; GFX1150-NEXT:    v_fmac_f32_e32 v5, v6, v415509; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)15510; GFX1150-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v515511; GFX1150-NEXT:    v_add_f32_e32 v4, v5, v415512; GFX1150-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo15513; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15514; GFX1150-NEXT:    v_ldexp_f32 v3, v4, v315515; GFX1150-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, s715516; GFX1150-NEXT:  .LBB12_32: ; %Flow11615517; GFX1150-NEXT:    s_cmp_lg_f32 s6, 015518; GFX1150-NEXT:    v_mov_b32_e32 v4, 015519; GFX1150-NEXT:    s_cselect_b32 s6, -1, 015520; GFX1150-NEXT:    s_cmp_nge_f32 s5, 0x7f80000015521; GFX1150-NEXT:    s_cselect_b32 s5, -1, 015522; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15523; GFX1150-NEXT:    s_and_b32 vcc_lo, s5, s615524; GFX1150-NEXT:    s_cmp_lg_f32 s4, 015525; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v0, vcc_lo15526; GFX1150-NEXT:    s_cselect_b32 s4, -1, 015527; GFX1150-NEXT:    s_cmp_nge_f32 s8, 0x7f80000015528; GFX1150-NEXT:    s_cselect_b32 s5, -1, 015529; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15530; GFX1150-NEXT:    s_and_b32 vcc_lo, s5, s415531; GFX1150-NEXT:    s_cmp_lg_f32 s3, 015532; GFX1150-NEXT:    v_cndmask_b32_e32 v1, 0x7fc00000, v1, vcc_lo15533; GFX1150-NEXT:    s_cselect_b32 s3, -1, 015534; GFX1150-NEXT:    s_cmp_nge_f32 s10, 0x7f80000015535; GFX1150-NEXT:    s_cselect_b32 s4, -1, 015536; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15537; GFX1150-NEXT:    s_and_b32 vcc_lo, s4, s315538; GFX1150-NEXT:    s_cmp_lg_f32 s2, 015539; GFX1150-NEXT:    v_cndmask_b32_e32 v2, 0x7fc00000, v2, vcc_lo15540; GFX1150-NEXT:    s_cselect_b32 s2, -1, 015541; GFX1150-NEXT:    s_cmp_nge_f32 s9, 0x7f80000015542; GFX1150-NEXT:    s_cselect_b32 s3, -1, 015543; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15544; GFX1150-NEXT:    s_and_b32 vcc_lo, s3, s215545; GFX1150-NEXT:    v_cndmask_b32_e32 v3, 0x7fc00000, v3, vcc_lo15546; GFX1150-NEXT:    global_store_b128 v4, v[0:3], s[0:1]15547; GFX1150-NEXT:    s_endpgm15548;15549; GFX1200-LABEL: frem_v4f32:15550; GFX1200:       ; %bb.0:15551; GFX1200-NEXT:    s_clause 0x115552; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2415553; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3415554; GFX1200-NEXT:    v_mov_b32_e32 v4, 015555; GFX1200-NEXT:    s_wait_kmcnt 0x015556; GFX1200-NEXT:    global_load_b128 v[0:3], v4, s[2:3]15557; GFX1200-NEXT:    s_wait_loadcnt 0x015558; GFX1200-NEXT:    v_readfirstlane_b32 s10, v115559; GFX1200-NEXT:    v_readfirstlane_b32 s9, v215560; GFX1200-NEXT:    v_readfirstlane_b32 s7, v315561; GFX1200-NEXT:    global_load_b128 v[1:4], v4, s[4:5] offset:6415562; GFX1200-NEXT:    v_readfirstlane_b32 s8, v015563; GFX1200-NEXT:    s_and_b32 s5, s8, 0x7fffffff15564; GFX1200-NEXT:    s_wait_loadcnt 0x015565; GFX1200-NEXT:    v_readfirstlane_b32 s6, v115566; GFX1200-NEXT:    v_readfirstlane_b32 s4, v215567; GFX1200-NEXT:    v_readfirstlane_b32 s3, v315568; GFX1200-NEXT:    v_readfirstlane_b32 s2, v415569; GFX1200-NEXT:    s_and_b32 s12, s6, 0x7fffffff15570; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15571; GFX1200-NEXT:    s_cmp_ngt_f32 s5, s1215572; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_215573; GFX1200-NEXT:  ; %bb.1: ; %frem.else7815574; GFX1200-NEXT:    s_cmp_eq_f32 s5, s1215575; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, 0, s815576; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 015577; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15578; GFX1200-NEXT:    v_cndmask_b32_e32 v0, s8, v0, vcc_lo15579; GFX1200-NEXT:    s_cbranch_execz .LBB12_315580; GFX1200-NEXT:    s_branch .LBB12_815581; GFX1200-NEXT:  .LBB12_2:15582; GFX1200-NEXT:    ; implicit-def: $vgpr015583; GFX1200-NEXT:  .LBB12_3: ; %frem.compute7715584; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s6|15585; GFX1200-NEXT:    v_frexp_mant_f32_e64 v0, |s8|15586; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, s815587; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15588; GFX1200-NEXT:    v_ldexp_f32 v1, v1, 115589; GFX1200-NEXT:    v_ldexp_f32 v2, v0, 1215590; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v0, s615591; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15592; GFX1200-NEXT:    v_readfirstlane_b32 s11, v315593; GFX1200-NEXT:    v_div_scale_f32 v5, null, v1, v1, 1.015594; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15595; GFX1200-NEXT:    v_readfirstlane_b32 s12, v015596; GFX1200-NEXT:    v_add_nc_u32_e32 v0, -1, v015597; GFX1200-NEXT:    v_rcp_f32_e32 v6, v515598; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15599; GFX1200-NEXT:    v_not_b32_e32 v4, v015600; GFX1200-NEXT:    v_add_nc_u32_e32 v4, v4, v315601; GFX1200-NEXT:    v_div_scale_f32 v3, vcc_lo, 1.0, v1, 1.015602; GFX1200-NEXT:    s_denorm_mode 1515603; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15604; GFX1200-NEXT:    v_fma_f32 v7, -v5, v6, 1.015605; GFX1200-NEXT:    v_fmac_f32_e32 v6, v7, v615606; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15607; GFX1200-NEXT:    v_mul_f32_e32 v7, v3, v615608; GFX1200-NEXT:    v_fma_f32 v8, -v5, v7, v315609; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15610; GFX1200-NEXT:    v_fmac_f32_e32 v7, v8, v615611; GFX1200-NEXT:    v_fma_f32 v3, -v5, v7, v315612; GFX1200-NEXT:    s_denorm_mode 1215613; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15614; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15615; GFX1200-NEXT:    v_div_fmas_f32 v3, v3, v6, v715616; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v415617; GFX1200-NEXT:    v_div_fixup_f32 v3, v3, v1, 1.015618; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_715619; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body85.preheader15620; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s1215621; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)15622; GFX1200-NEXT:    s_add_co_i32 s11, s11, 1215623; GFX1200-NEXT:  .LBB12_5: ; %frem.loop_body8515624; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=115625; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)15626; GFX1200-NEXT:    v_mov_b32_e32 v5, v215627; GFX1200-NEXT:    s_add_co_i32 s11, s11, -1215628; GFX1200-NEXT:    s_cmp_gt_i32 s11, 1215629; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15630; GFX1200-NEXT:    v_mul_f32_e32 v2, v5, v315631; GFX1200-NEXT:    v_rndne_f32_e32 v2, v215632; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15633; GFX1200-NEXT:    v_xor_b32_e32 v2, 0x80000000, v215634; GFX1200-NEXT:    v_fma_f32 v2, v2, v1, v515635; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)15636; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v215637; GFX1200-NEXT:    v_add_f32_e32 v4, v2, v115638; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15639; GFX1200-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc_lo15640; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15641; GFX1200-NEXT:    v_ldexp_f32 v2, v2, 1215642; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_515643; GFX1200-NEXT:  ; %bb.6: ; %Flow12515644; GFX1200-NEXT:    v_mov_b32_e32 v4, s1115645; GFX1200-NEXT:    v_mov_b32_e32 v2, v515646; GFX1200-NEXT:  .LBB12_7: ; %frem.loop_exit8615647; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15648; GFX1200-NEXT:    v_add_nc_u32_e32 v4, -11, v415649; GFX1200-NEXT:    v_ldexp_f32 v2, v2, v415650; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15651; GFX1200-NEXT:    v_mul_f32_e32 v3, v2, v315652; GFX1200-NEXT:    v_rndne_f32_e32 v3, v315653; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15654; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v315655; GFX1200-NEXT:    v_fmac_f32_e32 v2, v3, v115656; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)15657; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v215658; GFX1200-NEXT:    v_add_f32_e32 v1, v2, v115659; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15660; GFX1200-NEXT:    v_cndmask_b32_e32 v1, v2, v1, vcc_lo15661; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15662; GFX1200-NEXT:    v_ldexp_f32 v0, v1, v015663; GFX1200-NEXT:    v_bfi_b32 v0, 0x7fffffff, v0, s815664; GFX1200-NEXT:  .LBB12_8:15665; GFX1200-NEXT:    s_and_b32 s8, s10, 0x7fffffff15666; GFX1200-NEXT:    s_and_b32 s12, s4, 0x7fffffff15667; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15668; GFX1200-NEXT:    s_cmp_ngt_f32 s8, s1215669; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_1015670; GFX1200-NEXT:  ; %bb.9: ; %frem.else4715671; GFX1200-NEXT:    s_cmp_eq_f32 s8, s1215672; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, 0, s1015673; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 015674; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15675; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15676; GFX1200-NEXT:    v_cndmask_b32_e32 v1, s10, v1, vcc_lo15677; GFX1200-NEXT:    s_cbranch_execz .LBB12_1115678; GFX1200-NEXT:    s_branch .LBB12_1615679; GFX1200-NEXT:  .LBB12_10:15680; GFX1200-NEXT:    ; implicit-def: $vgpr115681; GFX1200-NEXT:  .LBB12_11: ; %frem.compute4615682; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s4|15683; GFX1200-NEXT:    v_frexp_mant_f32_e64 v1, |s10|15684; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v4, s1015685; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15686; GFX1200-NEXT:    v_ldexp_f32 v2, v2, 115687; GFX1200-NEXT:    v_ldexp_f32 v3, v1, 1215688; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v1, s415689; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15690; GFX1200-NEXT:    v_readfirstlane_b32 s11, v415691; GFX1200-NEXT:    v_div_scale_f32 v6, null, v2, v2, 1.015692; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15693; GFX1200-NEXT:    v_readfirstlane_b32 s12, v115694; GFX1200-NEXT:    v_add_nc_u32_e32 v1, -1, v115695; GFX1200-NEXT:    v_rcp_f32_e32 v7, v615696; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15697; GFX1200-NEXT:    v_not_b32_e32 v5, v115698; GFX1200-NEXT:    v_add_nc_u32_e32 v5, v5, v415699; GFX1200-NEXT:    v_div_scale_f32 v4, vcc_lo, 1.0, v2, 1.015700; GFX1200-NEXT:    s_denorm_mode 1515701; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15702; GFX1200-NEXT:    v_fma_f32 v8, -v6, v7, 1.015703; GFX1200-NEXT:    v_fmac_f32_e32 v7, v8, v715704; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15705; GFX1200-NEXT:    v_mul_f32_e32 v8, v4, v715706; GFX1200-NEXT:    v_fma_f32 v9, -v6, v8, v415707; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15708; GFX1200-NEXT:    v_fmac_f32_e32 v8, v9, v715709; GFX1200-NEXT:    v_fma_f32 v4, -v6, v8, v415710; GFX1200-NEXT:    s_denorm_mode 1215711; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15712; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15713; GFX1200-NEXT:    v_div_fmas_f32 v4, v4, v7, v815714; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v515715; GFX1200-NEXT:    v_div_fixup_f32 v4, v4, v2, 1.015716; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_1515717; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body54.preheader15718; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s1215719; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15720; GFX1200-NEXT:    s_add_co_i32 s11, s11, 1215721; GFX1200-NEXT:  .LBB12_13: ; %frem.loop_body5415722; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=115723; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15724; GFX1200-NEXT:    v_mov_b32_e32 v6, v315725; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15726; GFX1200-NEXT:    s_add_co_i32 s11, s11, -1215727; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15728; GFX1200-NEXT:    s_cmp_gt_i32 s11, 1215729; GFX1200-NEXT:    v_mul_f32_e32 v3, v6, v415730; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15731; GFX1200-NEXT:    v_rndne_f32_e32 v3, v315732; GFX1200-NEXT:    v_xor_b32_e32 v3, 0x80000000, v315733; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15734; GFX1200-NEXT:    v_fma_f32 v3, v3, v2, v615735; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v315736; GFX1200-NEXT:    v_add_f32_e32 v5, v3, v215737; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15738; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15739; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc_lo15740; GFX1200-NEXT:    v_ldexp_f32 v3, v3, 1215741; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_1315742; GFX1200-NEXT:  ; %bb.14: ; %Flow12115743; GFX1200-NEXT:    v_mov_b32_e32 v5, s1115744; GFX1200-NEXT:    v_mov_b32_e32 v3, v615745; GFX1200-NEXT:  .LBB12_15: ; %frem.loop_exit5515746; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15747; GFX1200-NEXT:    v_add_nc_u32_e32 v5, -11, v515748; GFX1200-NEXT:    v_ldexp_f32 v3, v3, v515749; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15750; GFX1200-NEXT:    v_mul_f32_e32 v4, v3, v415751; GFX1200-NEXT:    v_rndne_f32_e32 v4, v415752; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15753; GFX1200-NEXT:    v_xor_b32_e32 v4, 0x80000000, v415754; GFX1200-NEXT:    v_fmac_f32_e32 v3, v4, v215755; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)15756; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v315757; GFX1200-NEXT:    v_add_f32_e32 v2, v3, v215758; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15759; GFX1200-NEXT:    v_cndmask_b32_e32 v2, v3, v2, vcc_lo15760; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15761; GFX1200-NEXT:    v_ldexp_f32 v1, v2, v115762; GFX1200-NEXT:    v_bfi_b32 v1, 0x7fffffff, v1, s1015763; GFX1200-NEXT:  .LBB12_16:15764; GFX1200-NEXT:    s_and_b32 s10, s9, 0x7fffffff15765; GFX1200-NEXT:    s_and_b32 s12, s3, 0x7fffffff15766; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15767; GFX1200-NEXT:    s_cmp_ngt_f32 s10, s1215768; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_1815769; GFX1200-NEXT:  ; %bb.17: ; %frem.else1615770; GFX1200-NEXT:    s_cmp_eq_f32 s10, s1215771; GFX1200-NEXT:    v_bfi_b32 v2, 0x7fffffff, 0, s915772; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 015773; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15774; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15775; GFX1200-NEXT:    v_cndmask_b32_e32 v2, s9, v2, vcc_lo15776; GFX1200-NEXT:    s_cbranch_execz .LBB12_1915777; GFX1200-NEXT:    s_branch .LBB12_2415778; GFX1200-NEXT:  .LBB12_18:15779; GFX1200-NEXT:    ; implicit-def: $vgpr215780; GFX1200-NEXT:  .LBB12_19: ; %frem.compute1515781; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |s3|15782; GFX1200-NEXT:    v_frexp_mant_f32_e64 v2, |s9|15783; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v5, s915784; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15785; GFX1200-NEXT:    v_ldexp_f32 v3, v3, 115786; GFX1200-NEXT:    v_ldexp_f32 v4, v2, 1215787; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v2, s315788; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15789; GFX1200-NEXT:    v_readfirstlane_b32 s11, v515790; GFX1200-NEXT:    v_div_scale_f32 v7, null, v3, v3, 1.015791; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15792; GFX1200-NEXT:    v_readfirstlane_b32 s12, v215793; GFX1200-NEXT:    v_add_nc_u32_e32 v2, -1, v215794; GFX1200-NEXT:    v_rcp_f32_e32 v8, v715795; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15796; GFX1200-NEXT:    v_not_b32_e32 v6, v215797; GFX1200-NEXT:    v_add_nc_u32_e32 v6, v6, v515798; GFX1200-NEXT:    v_div_scale_f32 v5, vcc_lo, 1.0, v3, 1.015799; GFX1200-NEXT:    s_denorm_mode 1515800; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15801; GFX1200-NEXT:    v_fma_f32 v9, -v7, v8, 1.015802; GFX1200-NEXT:    v_fmac_f32_e32 v8, v9, v815803; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15804; GFX1200-NEXT:    v_mul_f32_e32 v9, v5, v815805; GFX1200-NEXT:    v_fma_f32 v10, -v7, v9, v515806; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15807; GFX1200-NEXT:    v_fmac_f32_e32 v9, v10, v815808; GFX1200-NEXT:    v_fma_f32 v5, -v7, v9, v515809; GFX1200-NEXT:    s_denorm_mode 1215810; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15811; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15812; GFX1200-NEXT:    v_div_fmas_f32 v5, v5, v8, v915813; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v615814; GFX1200-NEXT:    v_div_fixup_f32 v5, v5, v3, 1.015815; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_2315816; GFX1200-NEXT:  ; %bb.20: ; %frem.loop_body23.preheader15817; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s1215818; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15819; GFX1200-NEXT:    s_add_co_i32 s11, s11, 1215820; GFX1200-NEXT:  .LBB12_21: ; %frem.loop_body2315821; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=115822; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15823; GFX1200-NEXT:    v_mov_b32_e32 v7, v415824; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15825; GFX1200-NEXT:    s_add_co_i32 s11, s11, -1215826; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15827; GFX1200-NEXT:    s_cmp_gt_i32 s11, 1215828; GFX1200-NEXT:    v_mul_f32_e32 v4, v7, v515829; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15830; GFX1200-NEXT:    v_rndne_f32_e32 v4, v415831; GFX1200-NEXT:    v_xor_b32_e32 v4, 0x80000000, v415832; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15833; GFX1200-NEXT:    v_fma_f32 v4, v4, v3, v715834; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v415835; GFX1200-NEXT:    v_add_f32_e32 v6, v4, v315836; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15837; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15838; GFX1200-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo15839; GFX1200-NEXT:    v_ldexp_f32 v4, v4, 1215840; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_2115841; GFX1200-NEXT:  ; %bb.22: ; %Flow11715842; GFX1200-NEXT:    v_mov_b32_e32 v6, s1115843; GFX1200-NEXT:    v_mov_b32_e32 v4, v715844; GFX1200-NEXT:  .LBB12_23: ; %frem.loop_exit2415845; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15846; GFX1200-NEXT:    v_add_nc_u32_e32 v6, -11, v615847; GFX1200-NEXT:    v_ldexp_f32 v4, v4, v615848; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15849; GFX1200-NEXT:    v_mul_f32_e32 v5, v4, v515850; GFX1200-NEXT:    v_rndne_f32_e32 v5, v515851; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15852; GFX1200-NEXT:    v_xor_b32_e32 v5, 0x80000000, v515853; GFX1200-NEXT:    v_fmac_f32_e32 v4, v5, v315854; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)15855; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v415856; GFX1200-NEXT:    v_add_f32_e32 v3, v4, v315857; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15858; GFX1200-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc_lo15859; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15860; GFX1200-NEXT:    v_ldexp_f32 v2, v3, v215861; GFX1200-NEXT:    v_bfi_b32 v2, 0x7fffffff, v2, s915862; GFX1200-NEXT:  .LBB12_24:15863; GFX1200-NEXT:    s_and_b32 s9, s7, 0x7fffffff15864; GFX1200-NEXT:    s_and_b32 s12, s2, 0x7fffffff15865; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15866; GFX1200-NEXT:    s_cmp_ngt_f32 s9, s1215867; GFX1200-NEXT:    s_cbranch_scc0 .LBB12_2615868; GFX1200-NEXT:  ; %bb.25: ; %frem.else15869; GFX1200-NEXT:    s_cmp_eq_f32 s9, s1215870; GFX1200-NEXT:    v_bfi_b32 v3, 0x7fffffff, 0, s715871; GFX1200-NEXT:    s_cselect_b32 vcc_lo, -1, 015872; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15873; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15874; GFX1200-NEXT:    v_cndmask_b32_e32 v3, s7, v3, vcc_lo15875; GFX1200-NEXT:    s_cbranch_execz .LBB12_2715876; GFX1200-NEXT:    s_branch .LBB12_3215877; GFX1200-NEXT:  .LBB12_26:15878; GFX1200-NEXT:    ; implicit-def: $vgpr315879; GFX1200-NEXT:  .LBB12_27: ; %frem.compute15880; GFX1200-NEXT:    v_frexp_mant_f32_e64 v4, |s2|15881; GFX1200-NEXT:    v_frexp_mant_f32_e64 v3, |s7|15882; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v6, s715883; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_3)15884; GFX1200-NEXT:    v_ldexp_f32 v4, v4, 115885; GFX1200-NEXT:    v_ldexp_f32 v5, v3, 1215886; GFX1200-NEXT:    v_frexp_exp_i32_f32_e32 v3, s215887; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(NEXT) | instid1(VALU_DEP_4)15888; GFX1200-NEXT:    v_readfirstlane_b32 s11, v615889; GFX1200-NEXT:    v_div_scale_f32 v8, null, v4, v4, 1.015890; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)15891; GFX1200-NEXT:    v_readfirstlane_b32 s12, v315892; GFX1200-NEXT:    v_add_nc_u32_e32 v3, -1, v315893; GFX1200-NEXT:    v_rcp_f32_e32 v9, v815894; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15895; GFX1200-NEXT:    v_not_b32_e32 v7, v315896; GFX1200-NEXT:    v_add_nc_u32_e32 v7, v7, v615897; GFX1200-NEXT:    v_div_scale_f32 v6, vcc_lo, 1.0, v4, 1.015898; GFX1200-NEXT:    s_denorm_mode 1515899; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15900; GFX1200-NEXT:    v_fma_f32 v10, -v8, v9, 1.015901; GFX1200-NEXT:    v_fmac_f32_e32 v9, v10, v915902; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15903; GFX1200-NEXT:    v_mul_f32_e32 v10, v6, v915904; GFX1200-NEXT:    v_fma_f32 v11, -v8, v10, v615905; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15906; GFX1200-NEXT:    v_fmac_f32_e32 v10, v11, v915907; GFX1200-NEXT:    v_fma_f32 v6, -v8, v10, v615908; GFX1200-NEXT:    s_denorm_mode 1215909; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15910; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)15911; GFX1200-NEXT:    v_div_fmas_f32 v6, v6, v9, v1015912; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 13, v715913; GFX1200-NEXT:    v_div_fixup_f32 v6, v6, v4, 1.015914; GFX1200-NEXT:    s_cbranch_vccnz .LBB12_3115915; GFX1200-NEXT:  ; %bb.28: ; %frem.loop_body.preheader15916; GFX1200-NEXT:    s_sub_co_i32 s11, s11, s1215917; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15918; GFX1200-NEXT:    s_add_co_i32 s11, s11, 1215919; GFX1200-NEXT:  .LBB12_29: ; %frem.loop_body15920; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=115921; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)15922; GFX1200-NEXT:    v_mov_b32_e32 v8, v515923; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15924; GFX1200-NEXT:    s_add_co_i32 s11, s11, -1215925; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15926; GFX1200-NEXT:    s_cmp_gt_i32 s11, 1215927; GFX1200-NEXT:    v_mul_f32_e32 v5, v8, v615928; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15929; GFX1200-NEXT:    v_rndne_f32_e32 v5, v515930; GFX1200-NEXT:    v_xor_b32_e32 v5, 0x80000000, v515931; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15932; GFX1200-NEXT:    v_fma_f32 v5, v5, v4, v815933; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v515934; GFX1200-NEXT:    v_add_f32_e32 v7, v5, v415935; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15936; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15937; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo15938; GFX1200-NEXT:    v_ldexp_f32 v5, v5, 1215939; GFX1200-NEXT:    s_cbranch_scc1 .LBB12_2915940; GFX1200-NEXT:  ; %bb.30: ; %Flow15941; GFX1200-NEXT:    v_mov_b32_e32 v7, s1115942; GFX1200-NEXT:    v_mov_b32_e32 v5, v815943; GFX1200-NEXT:  .LBB12_31: ; %frem.loop_exit15944; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)15945; GFX1200-NEXT:    v_add_nc_u32_e32 v7, -11, v715946; GFX1200-NEXT:    v_ldexp_f32 v5, v5, v715947; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15948; GFX1200-NEXT:    v_mul_f32_e32 v6, v5, v615949; GFX1200-NEXT:    v_rndne_f32_e32 v6, v615950; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15951; GFX1200-NEXT:    v_xor_b32_e32 v6, 0x80000000, v615952; GFX1200-NEXT:    v_fmac_f32_e32 v5, v6, v415953; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)15954; GFX1200-NEXT:    v_cmp_gt_f32_e32 vcc_lo, 0, v515955; GFX1200-NEXT:    v_add_f32_e32 v4, v5, v415956; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)15957; GFX1200-NEXT:    v_cndmask_b32_e32 v4, v5, v4, vcc_lo15958; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)15959; GFX1200-NEXT:    v_ldexp_f32 v3, v4, v315960; GFX1200-NEXT:    v_bfi_b32 v3, 0x7fffffff, v3, s715961; GFX1200-NEXT:  .LBB12_32: ; %Flow11615962; GFX1200-NEXT:    s_cmp_lg_f32 s6, 015963; GFX1200-NEXT:    v_mov_b32_e32 v4, 015964; GFX1200-NEXT:    s_cselect_b32 s6, -1, 015965; GFX1200-NEXT:    s_cmp_nge_f32 s5, 0x7f80000015966; GFX1200-NEXT:    s_cselect_b32 s5, -1, 015967; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15968; GFX1200-NEXT:    s_and_b32 vcc_lo, s5, s615969; GFX1200-NEXT:    s_cmp_lg_f32 s4, 015970; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15971; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0x7fc00000, v0, vcc_lo15972; GFX1200-NEXT:    s_cselect_b32 s4, -1, 015973; GFX1200-NEXT:    s_cmp_nge_f32 s8, 0x7f80000015974; GFX1200-NEXT:    s_cselect_b32 s5, -1, 015975; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15976; GFX1200-NEXT:    s_and_b32 vcc_lo, s5, s415977; GFX1200-NEXT:    s_cmp_lg_f32 s3, 015978; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15979; GFX1200-NEXT:    v_cndmask_b32_e32 v1, 0x7fc00000, v1, vcc_lo15980; GFX1200-NEXT:    s_cselect_b32 s3, -1, 015981; GFX1200-NEXT:    s_cmp_nge_f32 s10, 0x7f80000015982; GFX1200-NEXT:    s_cselect_b32 s4, -1, 015983; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15984; GFX1200-NEXT:    s_and_b32 vcc_lo, s4, s315985; GFX1200-NEXT:    s_cmp_lg_f32 s2, 015986; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15987; GFX1200-NEXT:    v_cndmask_b32_e32 v2, 0x7fc00000, v2, vcc_lo15988; GFX1200-NEXT:    s_cselect_b32 s2, -1, 015989; GFX1200-NEXT:    s_cmp_nge_f32 s9, 0x7f80000015990; GFX1200-NEXT:    s_cselect_b32 s3, -1, 015991; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15992; GFX1200-NEXT:    s_and_b32 vcc_lo, s3, s215993; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)15994; GFX1200-NEXT:    v_cndmask_b32_e32 v3, 0x7fc00000, v3, vcc_lo15995; GFX1200-NEXT:    global_store_b128 v4, v[0:3], s[0:1]15996; GFX1200-NEXT:    s_endpgm15997                        ptr addrspace(1) %in2) #0 {15998   %gep2 = getelementptr <4 x float>, ptr addrspace(1) %in2, i32 415999   %r0 = load <4 x float>, ptr addrspace(1) %in1, align 1616000   %r1 = load <4 x float>, ptr addrspace(1) %gep2, align 1616001   %r2 = frem <4 x float> %r0, %r116002   store <4 x float> %r2, ptr addrspace(1) %out, align 1616003   ret void16004}16005 16006define amdgpu_kernel void @frem_v2f64(ptr addrspace(1) %out, ptr addrspace(1) %in1,16007; SI-LABEL: frem_v2f64:16008; SI:       ; %bb.0:16009; SI-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x916010; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0xd16011; SI-NEXT:    s_mov_b32 s7, 0xf00016012; SI-NEXT:    s_mov_b32 s6, -116013; SI-NEXT:    s_waitcnt lgkmcnt(0)16014; SI-NEXT:    s_mov_b32 s4, s1016015; SI-NEXT:    s_mov_b32 s5, s1116016; SI-NEXT:    s_mov_b32 s2, s616017; SI-NEXT:    s_mov_b32 s3, s716018; SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 016019; SI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[0:3], 0 offset:6416020; SI-NEXT:    s_waitcnt vmcnt(0)16021; SI-NEXT:    v_cmp_ngt_f64_e64 s[0:1], |v[0:1]|, |v[4:5]|16022; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]16023; SI-NEXT:    s_cbranch_vccz .LBB13_216024; SI-NEXT:  ; %bb.1: ; %frem.else1616025; SI-NEXT:    v_and_b32_e32 v8, 0x80000000, v116026; SI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|16027; SI-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc16028; SI-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc16029; SI-NEXT:    s_mov_b64 vcc, exec16030; SI-NEXT:    s_cbranch_execz .LBB13_316031; SI-NEXT:    s_branch .LBB13_816032; SI-NEXT:  .LBB13_2:16033; SI-NEXT:    ; implicit-def: $vgpr8_vgpr916034; SI-NEXT:    s_mov_b64 vcc, 016035; SI-NEXT:  .LBB13_3: ; %frem.compute1516036; SI-NEXT:    s_brev_b32 s5, -216037; SI-NEXT:    v_and_b32_e32 v10, 0x7fffffff, v116038; SI-NEXT:    s_mov_b32 s0, 016039; SI-NEXT:    s_mov_b32 s1, 0x7ff0000016040; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[0:1]|, s[0:1]16041; SI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16042; SI-NEXT:    v_cndmask_b32_e32 v9, v10, v9, vcc16043; SI-NEXT:    v_cndmask_b32_e32 v8, v0, v8, vcc16044; SI-NEXT:    v_frexp_exp_i32_f64_e32 v10, v[0:1]16045; SI-NEXT:    s_and_b64 s[2:3], vcc, exec16046; SI-NEXT:    v_readfirstlane_b32 s2, v1016047; SI-NEXT:    s_cselect_b32 s3, s2, 016048; SI-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616049; SI-NEXT:    v_and_b32_e32 v12, 0x7fffffff, v516050; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[4:5]|, s[0:1]16051; SI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16052; SI-NEXT:    v_cndmask_b32_e32 v9, v12, v9, vcc16053; SI-NEXT:    v_cndmask_b32_e32 v8, v4, v8, vcc16054; SI-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[4:5]16055; SI-NEXT:    s_and_b64 s[0:1], vcc, exec16056; SI-NEXT:    v_readfirstlane_b32 s0, v1216057; SI-NEXT:    s_cselect_b32 s7, s0, 016058; SI-NEXT:    s_mov_b32 s2, -116059; SI-NEXT:    s_add_i32 s4, s7, -116060; SI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116061; SI-NEXT:    s_not_b32 s0, s416062; SI-NEXT:    s_add_i32 s6, s0, s316063; SI-NEXT:    v_div_scale_f64 v[12:13], s[0:1], v[8:9], v[8:9], 1.016064; SI-NEXT:    v_rcp_f64_e32 v[14:15], v[12:13]16065; SI-NEXT:    v_fma_f64 v[16:17], -v[12:13], v[14:15], 1.016066; SI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]16067; SI-NEXT:    v_fma_f64 v[16:17], -v[12:13], v[14:15], 1.016068; SI-NEXT:    v_fma_f64 v[14:15], v[14:15], v[16:17], v[14:15]16069; SI-NEXT:    v_div_scale_f64 v[16:17], s[0:1], 1.0, v[8:9], 1.016070; SI-NEXT:    v_mul_f64 v[18:19], v[16:17], v[14:15]16071; SI-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], v[16:17]16072; SI-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v1316073; SI-NEXT:    s_mov_b32 s0, 0x3ff0000016074; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, v1716075; SI-NEXT:    s_xor_b64 vcc, s[0:1], vcc16076; SI-NEXT:    s_nop 016077; SI-NEXT:    v_div_fmas_f64 v[12:13], v[20:21], v[14:15], v[18:19]16078; SI-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.016079; SI-NEXT:    s_cmp_lt_i32 s6, 2716080; SI-NEXT:    s_cbranch_scc1 .LBB13_716081; SI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader16082; SI-NEXT:    s_sub_i32 s0, s3, s716083; SI-NEXT:    s_add_i32 s6, s0, 2616084; SI-NEXT:    s_mov_b32 s3, 0x432fffff16085; SI-NEXT:    v_mov_b32_e32 v18, 0x4330000016086; SI-NEXT:    v_mov_b32_e32 v14, 016087; SI-NEXT:  .LBB13_5: ; %frem.loop_body2316088; SI-NEXT:    ; =>This Inner Loop Header: Depth=116089; SI-NEXT:    v_mov_b32_e32 v17, v1116090; SI-NEXT:    v_mov_b32_e32 v16, v1016091; SI-NEXT:    v_mul_f64 v[10:11], v[16:17], v[12:13]16092; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[10:11]|, s[2:3]16093; SI-NEXT:    v_bfi_b32 v15, s5, v18, v1116094; SI-NEXT:    v_add_f64 v[19:20], v[10:11], v[14:15]16095; SI-NEXT:    v_add_f64 v[19:20], v[19:20], -v[14:15]16096; SI-NEXT:    v_cndmask_b32_e32 v11, v20, v11, vcc16097; SI-NEXT:    v_cndmask_b32_e32 v10, v19, v10, vcc16098; SI-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[16:17]16099; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16100; SI-NEXT:    v_add_f64 v[19:20], v[10:11], v[8:9]16101; SI-NEXT:    v_cndmask_b32_e32 v11, v11, v20, vcc16102; SI-NEXT:    v_cndmask_b32_e32 v10, v10, v19, vcc16103; SI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2616104; SI-NEXT:    s_sub_i32 s6, s6, 2616105; SI-NEXT:    s_cmp_gt_i32 s6, 2616106; SI-NEXT:    s_cbranch_scc1 .LBB13_516107; SI-NEXT:  ; %bb.6: ; %Flow5116108; SI-NEXT:    v_mov_b32_e32 v10, v1616109; SI-NEXT:    v_mov_b32_e32 v11, v1716110; SI-NEXT:  .LBB13_7: ; %frem.loop_exit2416111; SI-NEXT:    s_sub_i32 s0, s6, 2516112; SI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], s016113; SI-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]16114; SI-NEXT:    s_mov_b32 s0, -116115; SI-NEXT:    s_mov_b32 s1, 0x432fffff16116; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[12:13]|, s[0:1]16117; SI-NEXT:    s_brev_b32 s0, -216118; SI-NEXT:    v_mov_b32_e32 v14, 0x4330000016119; SI-NEXT:    v_bfi_b32 v15, s0, v14, v1316120; SI-NEXT:    v_mov_b32_e32 v14, 016121; SI-NEXT:    v_add_f64 v[16:17], v[12:13], v[14:15]16122; SI-NEXT:    v_add_f64 v[14:15], v[16:17], -v[14:15]16123; SI-NEXT:    v_cndmask_b32_e32 v13, v15, v13, vcc16124; SI-NEXT:    v_cndmask_b32_e32 v12, v14, v12, vcc16125; SI-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]16126; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16127; SI-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]16128; SI-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc16129; SI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc16130; SI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], s416131; SI-NEXT:    v_bfi_b32 v9, s0, v9, v116132; SI-NEXT:  .LBB13_8:16133; SI-NEXT:    v_cmp_ngt_f64_e64 s[0:1], |v[2:3]|, |v[6:7]|16134; SI-NEXT:    s_and_b64 vcc, exec, s[0:1]16135; SI-NEXT:    s_cbranch_vccz .LBB13_1016136; SI-NEXT:  ; %bb.9: ; %frem.else16137; SI-NEXT:    v_and_b32_e32 v10, 0x80000000, v316138; SI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|16139; SI-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc16140; SI-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc16141; SI-NEXT:    s_mov_b64 vcc, exec16142; SI-NEXT:    s_cbranch_execz .LBB13_1116143; SI-NEXT:    s_branch .LBB13_1616144; SI-NEXT:  .LBB13_10:16145; SI-NEXT:    ; implicit-def: $vgpr10_vgpr1116146; SI-NEXT:    s_mov_b64 vcc, 016147; SI-NEXT:  .LBB13_11: ; %frem.compute16148; SI-NEXT:    s_brev_b32 s5, -216149; SI-NEXT:    v_and_b32_e32 v12, 0x7fffffff, v316150; SI-NEXT:    s_mov_b32 s0, 016151; SI-NEXT:    s_mov_b32 s1, 0x7ff0000016152; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[2:3]|, s[0:1]16153; SI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|16154; SI-NEXT:    v_cndmask_b32_e32 v11, v12, v11, vcc16155; SI-NEXT:    v_cndmask_b32_e32 v10, v2, v10, vcc16156; SI-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[2:3]16157; SI-NEXT:    s_and_b64 s[2:3], vcc, exec16158; SI-NEXT:    v_readfirstlane_b32 s2, v1216159; SI-NEXT:    s_cselect_b32 s3, s2, 016160; SI-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2616161; SI-NEXT:    v_and_b32_e32 v14, 0x7fffffff, v716162; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[6:7]|, s[0:1]16163; SI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|16164; SI-NEXT:    v_cndmask_b32_e32 v11, v14, v11, vcc16165; SI-NEXT:    v_cndmask_b32_e32 v10, v6, v10, vcc16166; SI-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[6:7]16167; SI-NEXT:    s_and_b64 s[0:1], vcc, exec16168; SI-NEXT:    v_readfirstlane_b32 s0, v1416169; SI-NEXT:    s_cselect_b32 s7, s0, 016170; SI-NEXT:    s_mov_b32 s2, -116171; SI-NEXT:    s_add_i32 s4, s7, -116172; SI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 116173; SI-NEXT:    s_not_b32 s0, s416174; SI-NEXT:    s_add_i32 s6, s0, s316175; SI-NEXT:    v_div_scale_f64 v[14:15], s[0:1], v[10:11], v[10:11], 1.016176; SI-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]16177; SI-NEXT:    v_fma_f64 v[18:19], -v[14:15], v[16:17], 1.016178; SI-NEXT:    v_fma_f64 v[16:17], v[16:17], v[18:19], v[16:17]16179; SI-NEXT:    v_fma_f64 v[18:19], -v[14:15], v[16:17], 1.016180; SI-NEXT:    v_fma_f64 v[16:17], v[16:17], v[18:19], v[16:17]16181; SI-NEXT:    v_div_scale_f64 v[18:19], s[0:1], 1.0, v[10:11], 1.016182; SI-NEXT:    v_mul_f64 v[20:21], v[18:19], v[16:17]16183; SI-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], v[18:19]16184; SI-NEXT:    v_cmp_eq_u32_e32 vcc, v11, v1516185; SI-NEXT:    s_mov_b32 s0, 0x3ff0000016186; SI-NEXT:    v_cmp_eq_u32_e64 s[0:1], s0, v1916187; SI-NEXT:    s_xor_b64 vcc, s[0:1], vcc16188; SI-NEXT:    s_nop 016189; SI-NEXT:    v_div_fmas_f64 v[14:15], v[22:23], v[16:17], v[20:21]16190; SI-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.016191; SI-NEXT:    s_cmp_lt_i32 s6, 2716192; SI-NEXT:    s_cbranch_scc1 .LBB13_1516193; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader16194; SI-NEXT:    s_sub_i32 s0, s3, s716195; SI-NEXT:    s_add_i32 s6, s0, 2616196; SI-NEXT:    s_mov_b32 s3, 0x432fffff16197; SI-NEXT:    v_mov_b32_e32 v20, 0x4330000016198; SI-NEXT:    v_mov_b32_e32 v16, 016199; SI-NEXT:  .LBB13_13: ; %frem.loop_body16200; SI-NEXT:    ; =>This Inner Loop Header: Depth=116201; SI-NEXT:    v_mov_b32_e32 v19, v1316202; SI-NEXT:    v_mov_b32_e32 v18, v1216203; SI-NEXT:    v_mul_f64 v[12:13], v[18:19], v[14:15]16204; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[12:13]|, s[2:3]16205; SI-NEXT:    v_bfi_b32 v17, s5, v20, v1316206; SI-NEXT:    v_add_f64 v[21:22], v[12:13], v[16:17]16207; SI-NEXT:    v_add_f64 v[21:22], v[21:22], -v[16:17]16208; SI-NEXT:    v_cndmask_b32_e32 v13, v22, v13, vcc16209; SI-NEXT:    v_cndmask_b32_e32 v12, v21, v12, vcc16210; SI-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[18:19]16211; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16212; SI-NEXT:    v_add_f64 v[21:22], v[12:13], v[10:11]16213; SI-NEXT:    v_cndmask_b32_e32 v13, v13, v22, vcc16214; SI-NEXT:    v_cndmask_b32_e32 v12, v12, v21, vcc16215; SI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2616216; SI-NEXT:    s_sub_i32 s6, s6, 2616217; SI-NEXT:    s_cmp_gt_i32 s6, 2616218; SI-NEXT:    s_cbranch_scc1 .LBB13_1316219; SI-NEXT:  ; %bb.14: ; %Flow16220; SI-NEXT:    v_mov_b32_e32 v12, v1816221; SI-NEXT:    v_mov_b32_e32 v13, v1916222; SI-NEXT:  .LBB13_15: ; %frem.loop_exit16223; SI-NEXT:    s_sub_i32 s0, s6, 2516224; SI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], s016225; SI-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]16226; SI-NEXT:    s_mov_b32 s0, -116227; SI-NEXT:    s_mov_b32 s1, 0x432fffff16228; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[14:15]|, s[0:1]16229; SI-NEXT:    s_brev_b32 s0, -216230; SI-NEXT:    v_mov_b32_e32 v16, 0x4330000016231; SI-NEXT:    v_bfi_b32 v17, s0, v16, v1516232; SI-NEXT:    v_mov_b32_e32 v16, 016233; SI-NEXT:    v_add_f64 v[18:19], v[14:15], v[16:17]16234; SI-NEXT:    v_add_f64 v[16:17], v[18:19], -v[16:17]16235; SI-NEXT:    v_cndmask_b32_e32 v15, v17, v15, vcc16236; SI-NEXT:    v_cndmask_b32_e32 v14, v16, v14, vcc16237; SI-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]16238; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16239; SI-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]16240; SI-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc16241; SI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc16242; SI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], s416243; SI-NEXT:    v_bfi_b32 v11, s0, v11, v316244; SI-NEXT:  .LBB13_16: ; %Flow5016245; SI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]16246; SI-NEXT:    s_mov_b32 s0, 016247; SI-NEXT:    s_mov_b32 s1, 0x7ff0000016248; SI-NEXT:    v_cmp_nge_f64_e64 s[2:3], |v[0:1]|, s[0:1]16249; SI-NEXT:    s_and_b64 vcc, s[2:3], vcc16250; SI-NEXT:    v_mov_b32_e32 v4, 0x7ff8000016251; SI-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc16252; SI-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc16253; SI-NEXT:    s_mov_b32 s11, 0xf00016254; SI-NEXT:    s_mov_b32 s10, -116255; SI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[6:7]16256; SI-NEXT:    v_cmp_nge_f64_e64 s[0:1], |v[2:3]|, s[0:1]16257; SI-NEXT:    s_and_b64 vcc, s[0:1], vcc16258; SI-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc16259; SI-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc16260; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[8:11], 016261; SI-NEXT:    s_endpgm16262;16263; CI-LABEL: frem_v2f64:16264; CI:       ; %bb.0:16265; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x916266; CI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd16267; CI-NEXT:    s_mov_b32 s11, 0xf00016268; CI-NEXT:    s_mov_b32 s10, -116269; CI-NEXT:    s_mov_b32 s6, s1016270; CI-NEXT:    s_waitcnt lgkmcnt(0)16271; CI-NEXT:    s_mov_b32 s8, s216272; CI-NEXT:    s_mov_b32 s9, s316273; CI-NEXT:    s_mov_b32 s7, s1116274; CI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[8:11], 016275; CI-NEXT:    buffer_load_dwordx4 v[4:7], off, s[4:7], 0 offset:6416276; CI-NEXT:    s_waitcnt vmcnt(0)16277; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[4:5]|16278; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]16279; CI-NEXT:    s_cbranch_vccz .LBB13_216280; CI-NEXT:  ; %bb.1: ; %frem.else1616281; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|16282; CI-NEXT:    v_and_b32_e32 v8, 0x80000000, v116283; CI-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc16284; CI-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc16285; CI-NEXT:    s_cbranch_execz .LBB13_316286; CI-NEXT:    s_branch .LBB13_816287; CI-NEXT:  .LBB13_2:16288; CI-NEXT:    ; implicit-def: $vgpr8_vgpr916289; CI-NEXT:  .LBB13_3: ; %frem.compute1516290; CI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16291; CI-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]16292; CI-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]16293; CI-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616294; CI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16295; CI-NEXT:    v_add_i32_e32 v16, vcc, -1, v1516296; CI-NEXT:    v_not_b32_e32 v12, v1616297; CI-NEXT:    v_add_i32_e32 v17, vcc, v12, v1416298; CI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116299; CI-NEXT:    v_div_scale_f64 v[12:13], s[2:3], v[8:9], v[8:9], 1.016300; CI-NEXT:    v_rcp_f64_e32 v[18:19], v[12:13]16301; CI-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016302; CI-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16303; CI-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016304; CI-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16305; CI-NEXT:    v_div_scale_f64 v[20:21], vcc, 1.0, v[8:9], 1.016306; CI-NEXT:    v_mul_f64 v[22:23], v[20:21], v[18:19]16307; CI-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[22:23], v[20:21]16308; CI-NEXT:    s_nop 116309; CI-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]16310; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1716311; CI-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.016312; CI-NEXT:    s_cbranch_vccnz .LBB13_716313; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader16314; CI-NEXT:    v_sub_i32_e32 v14, vcc, v14, v1516315; CI-NEXT:    v_add_i32_e32 v17, vcc, 26, v1416316; CI-NEXT:  .LBB13_5: ; %frem.loop_body2316317; CI-NEXT:    ; =>This Inner Loop Header: Depth=116318; CI-NEXT:    v_mov_b32_e32 v15, v1116319; CI-NEXT:    v_mov_b32_e32 v14, v1016320; CI-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]16321; CI-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]16322; CI-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]16323; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16324; CI-NEXT:    v_add_f64 v[18:19], v[10:11], v[8:9]16325; CI-NEXT:    v_cndmask_b32_e32 v11, v11, v19, vcc16326; CI-NEXT:    v_cndmask_b32_e32 v10, v10, v18, vcc16327; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2616328; CI-NEXT:    v_subrev_i32_e32 v17, vcc, 26, v1716329; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1716330; CI-NEXT:    s_cbranch_vccnz .LBB13_516331; CI-NEXT:  ; %bb.6: ; %Flow5116332; CI-NEXT:    v_mov_b32_e32 v10, v1416333; CI-NEXT:    v_mov_b32_e32 v11, v1516334; CI-NEXT:  .LBB13_7: ; %frem.loop_exit2416335; CI-NEXT:    v_subrev_i32_e32 v14, vcc, 25, v1716336; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1416337; CI-NEXT:    s_brev_b32 s2, -216338; CI-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]16339; CI-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16340; CI-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]16341; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16342; CI-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]16343; CI-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc16344; CI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc16345; CI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1616346; CI-NEXT:    v_bfi_b32 v9, s2, v9, v116347; CI-NEXT:  .LBB13_8:16348; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|16349; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]16350; CI-NEXT:    s_cbranch_vccz .LBB13_1016351; CI-NEXT:  ; %bb.9: ; %frem.else16352; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|16353; CI-NEXT:    v_and_b32_e32 v10, 0x80000000, v316354; CI-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc16355; CI-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc16356; CI-NEXT:    s_cbranch_execz .LBB13_1116357; CI-NEXT:    s_branch .LBB13_1616358; CI-NEXT:  .LBB13_10:16359; CI-NEXT:    ; implicit-def: $vgpr10_vgpr1116360; CI-NEXT:  .LBB13_11: ; %frem.compute16361; CI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|16362; CI-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]16363; CI-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]16364; CI-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2616365; CI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|16366; CI-NEXT:    v_add_i32_e32 v18, vcc, -1, v1716367; CI-NEXT:    v_not_b32_e32 v14, v1816368; CI-NEXT:    v_add_i32_e32 v19, vcc, v14, v1616369; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 116370; CI-NEXT:    v_div_scale_f64 v[14:15], s[2:3], v[10:11], v[10:11], 1.016371; CI-NEXT:    v_rcp_f64_e32 v[20:21], v[14:15]16372; CI-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016373; CI-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16374; CI-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016375; CI-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16376; CI-NEXT:    v_div_scale_f64 v[22:23], vcc, 1.0, v[10:11], 1.016377; CI-NEXT:    v_mul_f64 v[24:25], v[22:23], v[20:21]16378; CI-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[24:25], v[22:23]16379; CI-NEXT:    s_nop 116380; CI-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]16381; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1916382; CI-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.016383; CI-NEXT:    s_cbranch_vccnz .LBB13_1516384; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader16385; CI-NEXT:    v_sub_i32_e32 v16, vcc, v16, v1716386; CI-NEXT:    v_add_i32_e32 v19, vcc, 26, v1616387; CI-NEXT:  .LBB13_13: ; %frem.loop_body16388; CI-NEXT:    ; =>This Inner Loop Header: Depth=116389; CI-NEXT:    v_mov_b32_e32 v17, v1316390; CI-NEXT:    v_mov_b32_e32 v16, v1216391; CI-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]16392; CI-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16393; CI-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]16394; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16395; CI-NEXT:    v_add_f64 v[20:21], v[12:13], v[10:11]16396; CI-NEXT:    v_cndmask_b32_e32 v13, v13, v21, vcc16397; CI-NEXT:    v_cndmask_b32_e32 v12, v12, v20, vcc16398; CI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2616399; CI-NEXT:    v_subrev_i32_e32 v19, vcc, 26, v1916400; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1916401; CI-NEXT:    s_cbranch_vccnz .LBB13_1316402; CI-NEXT:  ; %bb.14: ; %Flow16403; CI-NEXT:    v_mov_b32_e32 v12, v1616404; CI-NEXT:    v_mov_b32_e32 v13, v1716405; CI-NEXT:  .LBB13_15: ; %frem.loop_exit16406; CI-NEXT:    v_subrev_i32_e32 v16, vcc, 25, v1916407; CI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1616408; CI-NEXT:    s_brev_b32 s2, -216409; CI-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]16410; CI-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]16411; CI-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]16412; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16413; CI-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]16414; CI-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc16415; CI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc16416; CI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1816417; CI-NEXT:    v_bfi_b32 v11, s2, v11, v316418; CI-NEXT:  .LBB13_16: ; %Flow5016419; CI-NEXT:    s_mov_b32 s4, 016420; CI-NEXT:    s_mov_b32 s5, 0x7ff0000016421; CI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]16422; CI-NEXT:    v_cmp_nge_f64_e64 s[2:3], |v[0:1]|, s[4:5]16423; CI-NEXT:    v_mov_b32_e32 v4, 0x7ff8000016424; CI-NEXT:    v_cmp_nge_f64_e64 s[4:5], |v[2:3]|, s[4:5]16425; CI-NEXT:    s_and_b64 vcc, s[2:3], vcc16426; CI-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc16427; CI-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc16428; CI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[6:7]16429; CI-NEXT:    s_mov_b32 s3, 0xf00016430; CI-NEXT:    s_mov_b32 s2, -116431; CI-NEXT:    s_and_b64 vcc, s[4:5], vcc16432; CI-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc16433; CI-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc16434; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 016435; CI-NEXT:    s_endpgm16436;16437; VI-LABEL: frem_v2f64:16438; VI:       ; %bb.0:16439; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2416440; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x3416441; VI-NEXT:    s_waitcnt lgkmcnt(0)16442; VI-NEXT:    v_mov_b32_e32 v0, s216443; VI-NEXT:    s_add_u32 s2, s4, 6416444; VI-NEXT:    v_mov_b32_e32 v1, s316445; VI-NEXT:    s_addc_u32 s3, s5, 016446; VI-NEXT:    v_mov_b32_e32 v5, s316447; VI-NEXT:    v_mov_b32_e32 v4, s216448; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]16449; VI-NEXT:    flat_load_dwordx4 v[4:7], v[4:5]16450; VI-NEXT:    s_waitcnt vmcnt(0)16451; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[4:5]|16452; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]16453; VI-NEXT:    s_cbranch_vccz .LBB13_216454; VI-NEXT:  ; %bb.1: ; %frem.else1616455; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|16456; VI-NEXT:    v_and_b32_e32 v8, 0x80000000, v116457; VI-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc16458; VI-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc16459; VI-NEXT:    s_cbranch_execz .LBB13_316460; VI-NEXT:    s_branch .LBB13_816461; VI-NEXT:  .LBB13_2:16462; VI-NEXT:    ; implicit-def: $vgpr8_vgpr916463; VI-NEXT:  .LBB13_3: ; %frem.compute1516464; VI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16465; VI-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]16466; VI-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]16467; VI-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616468; VI-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16469; VI-NEXT:    v_add_u32_e32 v16, vcc, -1, v1516470; VI-NEXT:    v_not_b32_e32 v12, v1616471; VI-NEXT:    v_add_u32_e32 v17, vcc, v12, v1416472; VI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116473; VI-NEXT:    v_div_scale_f64 v[12:13], s[2:3], v[8:9], v[8:9], 1.016474; VI-NEXT:    v_rcp_f64_e32 v[18:19], v[12:13]16475; VI-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016476; VI-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16477; VI-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016478; VI-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16479; VI-NEXT:    v_div_scale_f64 v[20:21], vcc, 1.0, v[8:9], 1.016480; VI-NEXT:    v_mul_f64 v[22:23], v[20:21], v[18:19]16481; VI-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[22:23], v[20:21]16482; VI-NEXT:    s_nop 116483; VI-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]16484; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1716485; VI-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.016486; VI-NEXT:    s_cbranch_vccnz .LBB13_716487; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader16488; VI-NEXT:    v_sub_u32_e32 v14, vcc, v14, v1516489; VI-NEXT:    v_add_u32_e32 v17, vcc, 26, v1416490; VI-NEXT:  .LBB13_5: ; %frem.loop_body2316491; VI-NEXT:    ; =>This Inner Loop Header: Depth=116492; VI-NEXT:    v_mov_b32_e32 v15, v1116493; VI-NEXT:    v_mov_b32_e32 v14, v1016494; VI-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]16495; VI-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]16496; VI-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]16497; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16498; VI-NEXT:    v_add_f64 v[18:19], v[10:11], v[8:9]16499; VI-NEXT:    v_cndmask_b32_e32 v11, v11, v19, vcc16500; VI-NEXT:    v_cndmask_b32_e32 v10, v10, v18, vcc16501; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2616502; VI-NEXT:    v_subrev_u32_e32 v17, vcc, 26, v1716503; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1716504; VI-NEXT:    s_cbranch_vccnz .LBB13_516505; VI-NEXT:  ; %bb.6: ; %Flow5116506; VI-NEXT:    v_mov_b32_e32 v10, v1416507; VI-NEXT:    v_mov_b32_e32 v11, v1516508; VI-NEXT:  .LBB13_7: ; %frem.loop_exit2416509; VI-NEXT:    v_subrev_u32_e32 v14, vcc, 25, v1716510; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1416511; VI-NEXT:    s_brev_b32 s2, -216512; VI-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]16513; VI-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16514; VI-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]16515; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16516; VI-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]16517; VI-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc16518; VI-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc16519; VI-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1616520; VI-NEXT:    v_bfi_b32 v9, s2, v9, v116521; VI-NEXT:  .LBB13_8:16522; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|16523; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]16524; VI-NEXT:    s_cbranch_vccz .LBB13_1016525; VI-NEXT:  ; %bb.9: ; %frem.else16526; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|16527; VI-NEXT:    v_and_b32_e32 v10, 0x80000000, v316528; VI-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc16529; VI-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc16530; VI-NEXT:    s_cbranch_execz .LBB13_1116531; VI-NEXT:    s_branch .LBB13_1616532; VI-NEXT:  .LBB13_10:16533; VI-NEXT:    ; implicit-def: $vgpr10_vgpr1116534; VI-NEXT:  .LBB13_11: ; %frem.compute16535; VI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|16536; VI-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]16537; VI-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]16538; VI-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2616539; VI-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|16540; VI-NEXT:    v_add_u32_e32 v18, vcc, -1, v1716541; VI-NEXT:    v_not_b32_e32 v14, v1816542; VI-NEXT:    v_add_u32_e32 v19, vcc, v14, v1616543; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 116544; VI-NEXT:    v_div_scale_f64 v[14:15], s[2:3], v[10:11], v[10:11], 1.016545; VI-NEXT:    v_rcp_f64_e32 v[20:21], v[14:15]16546; VI-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016547; VI-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16548; VI-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016549; VI-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16550; VI-NEXT:    v_div_scale_f64 v[22:23], vcc, 1.0, v[10:11], 1.016551; VI-NEXT:    v_mul_f64 v[24:25], v[22:23], v[20:21]16552; VI-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[24:25], v[22:23]16553; VI-NEXT:    s_nop 116554; VI-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]16555; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1916556; VI-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.016557; VI-NEXT:    s_cbranch_vccnz .LBB13_1516558; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader16559; VI-NEXT:    v_sub_u32_e32 v16, vcc, v16, v1716560; VI-NEXT:    v_add_u32_e32 v19, vcc, 26, v1616561; VI-NEXT:  .LBB13_13: ; %frem.loop_body16562; VI-NEXT:    ; =>This Inner Loop Header: Depth=116563; VI-NEXT:    v_mov_b32_e32 v17, v1316564; VI-NEXT:    v_mov_b32_e32 v16, v1216565; VI-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]16566; VI-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16567; VI-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]16568; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16569; VI-NEXT:    v_add_f64 v[20:21], v[12:13], v[10:11]16570; VI-NEXT:    v_cndmask_b32_e32 v13, v13, v21, vcc16571; VI-NEXT:    v_cndmask_b32_e32 v12, v12, v20, vcc16572; VI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2616573; VI-NEXT:    v_subrev_u32_e32 v19, vcc, 26, v1916574; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1916575; VI-NEXT:    s_cbranch_vccnz .LBB13_1316576; VI-NEXT:  ; %bb.14: ; %Flow16577; VI-NEXT:    v_mov_b32_e32 v12, v1616578; VI-NEXT:    v_mov_b32_e32 v13, v1716579; VI-NEXT:  .LBB13_15: ; %frem.loop_exit16580; VI-NEXT:    v_subrev_u32_e32 v16, vcc, 25, v1916581; VI-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1616582; VI-NEXT:    s_brev_b32 s2, -216583; VI-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]16584; VI-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]16585; VI-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]16586; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16587; VI-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]16588; VI-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc16589; VI-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc16590; VI-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1816591; VI-NEXT:    v_bfi_b32 v11, s2, v11, v316592; VI-NEXT:  .LBB13_16: ; %Flow5016593; VI-NEXT:    s_mov_b32 s2, 016594; VI-NEXT:    s_mov_b32 s3, 0x7ff0000016595; VI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]16596; VI-NEXT:    v_cmp_nge_f64_e64 s[4:5], |v[0:1]|, s[2:3]16597; VI-NEXT:    v_mov_b32_e32 v12, 0x7ff8000016598; VI-NEXT:    v_mov_b32_e32 v4, s016599; VI-NEXT:    v_mov_b32_e32 v5, s116600; VI-NEXT:    v_cmp_nge_f64_e64 s[0:1], |v[2:3]|, s[2:3]16601; VI-NEXT:    s_and_b64 vcc, s[4:5], vcc16602; VI-NEXT:    v_cndmask_b32_e32 v1, v12, v9, vcc16603; VI-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc16604; VI-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[6:7]16605; VI-NEXT:    s_and_b64 vcc, s[0:1], vcc16606; VI-NEXT:    v_cndmask_b32_e32 v3, v12, v11, vcc16607; VI-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc16608; VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]16609; VI-NEXT:    s_endpgm16610;16611; GFX9-LABEL: frem_v2f64:16612; GFX9:       ; %bb.0:16613; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2416614; GFX9-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3416615; GFX9-NEXT:    v_mov_b32_e32 v8, 016616; GFX9-NEXT:    s_waitcnt lgkmcnt(0)16617; GFX9-NEXT:    global_load_dwordx4 v[0:3], v8, s[2:3]16618; GFX9-NEXT:    global_load_dwordx4 v[4:7], v8, s[6:7] offset:6416619; GFX9-NEXT:    s_waitcnt vmcnt(0)16620; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, |v[4:5]|16621; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]16622; GFX9-NEXT:    s_cbranch_vccz .LBB13_216623; GFX9-NEXT:  ; %bb.1: ; %frem.else1616624; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, |v[4:5]|16625; GFX9-NEXT:    v_and_b32_e32 v8, 0x80000000, v116626; GFX9-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc16627; GFX9-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc16628; GFX9-NEXT:    s_cbranch_execz .LBB13_316629; GFX9-NEXT:    s_branch .LBB13_816630; GFX9-NEXT:  .LBB13_2:16631; GFX9-NEXT:    ; implicit-def: $vgpr8_vgpr916632; GFX9-NEXT:  .LBB13_3: ; %frem.compute1516633; GFX9-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16634; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[4:5]16635; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[0:1]16636; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616637; GFX9-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16638; GFX9-NEXT:    v_add_u32_e32 v16, -1, v1516639; GFX9-NEXT:    v_not_b32_e32 v12, v1616640; GFX9-NEXT:    v_add_u32_e32 v17, v12, v1416641; GFX9-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116642; GFX9-NEXT:    v_div_scale_f64 v[12:13], s[2:3], v[8:9], v[8:9], 1.016643; GFX9-NEXT:    v_rcp_f64_e32 v[18:19], v[12:13]16644; GFX9-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016645; GFX9-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16646; GFX9-NEXT:    v_fma_f64 v[20:21], -v[12:13], v[18:19], 1.016647; GFX9-NEXT:    v_fma_f64 v[18:19], v[18:19], v[20:21], v[18:19]16648; GFX9-NEXT:    v_div_scale_f64 v[20:21], vcc, 1.0, v[8:9], 1.016649; GFX9-NEXT:    v_mul_f64 v[22:23], v[20:21], v[18:19]16650; GFX9-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[22:23], v[20:21]16651; GFX9-NEXT:    s_nop 116652; GFX9-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[18:19], v[22:23]16653; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1716654; GFX9-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.016655; GFX9-NEXT:    s_cbranch_vccnz .LBB13_716656; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader16657; GFX9-NEXT:    v_sub_u32_e32 v14, v14, v1516658; GFX9-NEXT:    v_add_u32_e32 v17, 26, v1416659; GFX9-NEXT:  .LBB13_5: ; %frem.loop_body2316660; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=116661; GFX9-NEXT:    v_mov_b32_e32 v15, v1116662; GFX9-NEXT:    v_mov_b32_e32 v14, v1016663; GFX9-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]16664; GFX9-NEXT:    v_subrev_u32_e32 v17, 26, v1716665; GFX9-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]16666; GFX9-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]16667; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16668; GFX9-NEXT:    v_add_f64 v[18:19], v[10:11], v[8:9]16669; GFX9-NEXT:    v_cndmask_b32_e32 v11, v11, v19, vcc16670; GFX9-NEXT:    v_cndmask_b32_e32 v10, v10, v18, vcc16671; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2616672; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1716673; GFX9-NEXT:    s_cbranch_vccnz .LBB13_516674; GFX9-NEXT:  ; %bb.6: ; %Flow5116675; GFX9-NEXT:    v_mov_b32_e32 v10, v1416676; GFX9-NEXT:    v_mov_b32_e32 v11, v1516677; GFX9-NEXT:  .LBB13_7: ; %frem.loop_exit2416678; GFX9-NEXT:    v_subrev_u32_e32 v14, 25, v1716679; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1416680; GFX9-NEXT:    s_brev_b32 s2, -216681; GFX9-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]16682; GFX9-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16683; GFX9-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]16684; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[10:11]16685; GFX9-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]16686; GFX9-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc16687; GFX9-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc16688; GFX9-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1616689; GFX9-NEXT:    v_bfi_b32 v9, s2, v9, v116690; GFX9-NEXT:  .LBB13_8:16691; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, |v[6:7]|16692; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]16693; GFX9-NEXT:    s_cbranch_vccz .LBB13_1016694; GFX9-NEXT:  ; %bb.9: ; %frem.else16695; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, |v[6:7]|16696; GFX9-NEXT:    v_and_b32_e32 v10, 0x80000000, v316697; GFX9-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc16698; GFX9-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc16699; GFX9-NEXT:    s_cbranch_execz .LBB13_1116700; GFX9-NEXT:    s_branch .LBB13_1616701; GFX9-NEXT:  .LBB13_10:16702; GFX9-NEXT:    ; implicit-def: $vgpr10_vgpr1116703; GFX9-NEXT:  .LBB13_11: ; %frem.compute16704; GFX9-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|16705; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v17, v[6:7]16706; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v16, v[2:3]16707; GFX9-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2616708; GFX9-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|16709; GFX9-NEXT:    v_add_u32_e32 v18, -1, v1716710; GFX9-NEXT:    v_not_b32_e32 v14, v1816711; GFX9-NEXT:    v_add_u32_e32 v19, v14, v1616712; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 116713; GFX9-NEXT:    v_div_scale_f64 v[14:15], s[2:3], v[10:11], v[10:11], 1.016714; GFX9-NEXT:    v_rcp_f64_e32 v[20:21], v[14:15]16715; GFX9-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016716; GFX9-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16717; GFX9-NEXT:    v_fma_f64 v[22:23], -v[14:15], v[20:21], 1.016718; GFX9-NEXT:    v_fma_f64 v[20:21], v[20:21], v[22:23], v[20:21]16719; GFX9-NEXT:    v_div_scale_f64 v[22:23], vcc, 1.0, v[10:11], 1.016720; GFX9-NEXT:    v_mul_f64 v[24:25], v[22:23], v[20:21]16721; GFX9-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[24:25], v[22:23]16722; GFX9-NEXT:    s_nop 116723; GFX9-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[20:21], v[24:25]16724; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1916725; GFX9-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.016726; GFX9-NEXT:    s_cbranch_vccnz .LBB13_1516727; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader16728; GFX9-NEXT:    v_sub_u32_e32 v16, v16, v1716729; GFX9-NEXT:    v_add_u32_e32 v19, 26, v1616730; GFX9-NEXT:  .LBB13_13: ; %frem.loop_body16731; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=116732; GFX9-NEXT:    v_mov_b32_e32 v17, v1316733; GFX9-NEXT:    v_mov_b32_e32 v16, v1216734; GFX9-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]16735; GFX9-NEXT:    v_subrev_u32_e32 v19, 26, v1916736; GFX9-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16737; GFX9-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]16738; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16739; GFX9-NEXT:    v_add_f64 v[20:21], v[12:13], v[10:11]16740; GFX9-NEXT:    v_cndmask_b32_e32 v13, v13, v21, vcc16741; GFX9-NEXT:    v_cndmask_b32_e32 v12, v12, v20, vcc16742; GFX9-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2616743; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1916744; GFX9-NEXT:    s_cbranch_vccnz .LBB13_1316745; GFX9-NEXT:  ; %bb.14: ; %Flow16746; GFX9-NEXT:    v_mov_b32_e32 v12, v1616747; GFX9-NEXT:    v_mov_b32_e32 v13, v1716748; GFX9-NEXT:  .LBB13_15: ; %frem.loop_exit16749; GFX9-NEXT:    v_subrev_u32_e32 v16, 25, v1916750; GFX9-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1616751; GFX9-NEXT:    s_brev_b32 s2, -216752; GFX9-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]16753; GFX9-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]16754; GFX9-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]16755; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[12:13]16756; GFX9-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]16757; GFX9-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc16758; GFX9-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc16759; GFX9-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1816760; GFX9-NEXT:    v_bfi_b32 v11, s2, v11, v316761; GFX9-NEXT:  .LBB13_16: ; %Flow5016762; GFX9-NEXT:    s_mov_b32 s2, 016763; GFX9-NEXT:    s_mov_b32 s3, 0x7ff0000016764; GFX9-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[4:5]16765; GFX9-NEXT:    v_cmp_nge_f64_e64 s[4:5], |v[0:1]|, s[2:3]16766; GFX9-NEXT:    v_mov_b32_e32 v4, 0x7ff8000016767; GFX9-NEXT:    v_cmp_nge_f64_e64 s[2:3], |v[2:3]|, s[2:3]16768; GFX9-NEXT:    v_mov_b32_e32 v5, 016769; GFX9-NEXT:    s_and_b64 vcc, s[4:5], vcc16770; GFX9-NEXT:    v_cndmask_b32_e32 v1, v4, v9, vcc16771; GFX9-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc16772; GFX9-NEXT:    v_cmp_lg_f64_e32 vcc, 0, v[6:7]16773; GFX9-NEXT:    s_and_b64 vcc, s[2:3], vcc16774; GFX9-NEXT:    v_cndmask_b32_e32 v3, v4, v11, vcc16775; GFX9-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc16776; GFX9-NEXT:    global_store_dwordx4 v5, v[0:3], s[0:1]16777; GFX9-NEXT:    s_endpgm16778;16779; GFX10-LABEL: frem_v2f64:16780; GFX10:       ; %bb.0:16781; GFX10-NEXT:    s_clause 0x116782; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2416783; GFX10-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x3416784; GFX10-NEXT:    v_mov_b32_e32 v8, 016785; GFX10-NEXT:    s_waitcnt lgkmcnt(0)16786; GFX10-NEXT:    s_clause 0x116787; GFX10-NEXT:    global_load_dwordx4 v[0:3], v8, s[2:3]16788; GFX10-NEXT:    global_load_dwordx4 v[4:7], v8, s[6:7] offset:6416789; GFX10-NEXT:    s_waitcnt vmcnt(0)16790; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[4:5]|16791; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s216792; GFX10-NEXT:    s_cbranch_vccz .LBB13_216793; GFX10-NEXT:  ; %bb.1: ; %frem.else1616794; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|16795; GFX10-NEXT:    v_and_b32_e32 v8, 0x80000000, v116796; GFX10-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo16797; GFX10-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo16798; GFX10-NEXT:    s_cbranch_execz .LBB13_316799; GFX10-NEXT:    s_branch .LBB13_816800; GFX10-NEXT:  .LBB13_2:16801; GFX10-NEXT:    ; implicit-def: $vgpr8_vgpr916802; GFX10-NEXT:  .LBB13_3: ; %frem.compute1516803; GFX10-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16804; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]16805; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]16806; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616807; GFX10-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16808; GFX10-NEXT:    v_add_nc_u32_e32 v16, -1, v1316809; GFX10-NEXT:    v_readfirstlane_b32 s3, v1316810; GFX10-NEXT:    v_readfirstlane_b32 s2, v1216811; GFX10-NEXT:    v_not_b32_e32 v13, v1616812; GFX10-NEXT:    v_add_nc_u32_e32 v17, v13, v1216813; GFX10-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116814; GFX10-NEXT:    v_div_scale_f64 v[12:13], s4, v[8:9], v[8:9], 1.016815; GFX10-NEXT:    v_rcp_f64_e32 v[14:15], v[12:13]16816; GFX10-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.016817; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]16818; GFX10-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.016819; GFX10-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]16820; GFX10-NEXT:    v_div_scale_f64 v[18:19], vcc_lo, 1.0, v[8:9], 1.016821; GFX10-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]16822; GFX10-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[20:21], v[18:19]16823; GFX10-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]16824; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1716825; GFX10-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.016826; GFX10-NEXT:    s_cbranch_vccnz .LBB13_716827; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader16828; GFX10-NEXT:    s_sub_i32 s2, s2, s316829; GFX10-NEXT:    s_add_i32 s2, s2, 2616830; GFX10-NEXT:  .LBB13_5: ; %frem.loop_body2316831; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116832; GFX10-NEXT:    v_mov_b32_e32 v15, v1116833; GFX10-NEXT:    v_mov_b32_e32 v14, v1016834; GFX10-NEXT:    s_sub_i32 s2, s2, 2616835; GFX10-NEXT:    s_cmp_gt_i32 s2, 2616836; GFX10-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]16837; GFX10-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]16838; GFX10-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]16839; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]16840; GFX10-NEXT:    v_add_f64 v[17:18], v[10:11], v[8:9]16841; GFX10-NEXT:    v_cndmask_b32_e32 v11, v11, v18, vcc_lo16842; GFX10-NEXT:    v_cndmask_b32_e32 v10, v10, v17, vcc_lo16843; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2616844; GFX10-NEXT:    s_cbranch_scc1 .LBB13_516845; GFX10-NEXT:  ; %bb.6: ; %Flow5116846; GFX10-NEXT:    v_mov_b32_e32 v10, v1416847; GFX10-NEXT:    v_mov_b32_e32 v17, s216848; GFX10-NEXT:    v_mov_b32_e32 v11, v1516849; GFX10-NEXT:  .LBB13_7: ; %frem.loop_exit2416850; GFX10-NEXT:    v_subrev_nc_u32_e32 v14, 25, v1716851; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1416852; GFX10-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]16853; GFX10-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16854; GFX10-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]16855; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]16856; GFX10-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]16857; GFX10-NEXT:    v_cndmask_b32_e32 v9, v11, v9, vcc_lo16858; GFX10-NEXT:    v_cndmask_b32_e32 v8, v10, v8, vcc_lo16859; GFX10-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1616860; GFX10-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v116861; GFX10-NEXT:  .LBB13_8:16862; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|16863; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s216864; GFX10-NEXT:    s_cbranch_vccz .LBB13_1016865; GFX10-NEXT:  ; %bb.9: ; %frem.else16866; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|16867; GFX10-NEXT:    v_and_b32_e32 v10, 0x80000000, v316868; GFX10-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo16869; GFX10-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo16870; GFX10-NEXT:    s_cbranch_execz .LBB13_1116871; GFX10-NEXT:    s_branch .LBB13_1616872; GFX10-NEXT:  .LBB13_10:16873; GFX10-NEXT:    ; implicit-def: $vgpr10_vgpr1116874; GFX10-NEXT:  .LBB13_11: ; %frem.compute16875; GFX10-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|16876; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]16877; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]16878; GFX10-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2616879; GFX10-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|16880; GFX10-NEXT:    v_add_nc_u32_e32 v18, -1, v1516881; GFX10-NEXT:    v_readfirstlane_b32 s3, v1516882; GFX10-NEXT:    v_readfirstlane_b32 s2, v1416883; GFX10-NEXT:    v_not_b32_e32 v15, v1816884; GFX10-NEXT:    v_add_nc_u32_e32 v19, v15, v1416885; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 116886; GFX10-NEXT:    v_div_scale_f64 v[14:15], s4, v[10:11], v[10:11], 1.016887; GFX10-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]16888; GFX10-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.016889; GFX10-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]16890; GFX10-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.016891; GFX10-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]16892; GFX10-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, 1.0, v[10:11], 1.016893; GFX10-NEXT:    v_mul_f64 v[22:23], v[20:21], v[16:17]16894; GFX10-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[22:23], v[20:21]16895; GFX10-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]16896; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1916897; GFX10-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.016898; GFX10-NEXT:    s_cbranch_vccnz .LBB13_1516899; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader16900; GFX10-NEXT:    s_sub_i32 s2, s2, s316901; GFX10-NEXT:    s_add_i32 s2, s2, 2616902; GFX10-NEXT:  .LBB13_13: ; %frem.loop_body16903; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=116904; GFX10-NEXT:    v_mov_b32_e32 v17, v1316905; GFX10-NEXT:    v_mov_b32_e32 v16, v1216906; GFX10-NEXT:    s_sub_i32 s2, s2, 2616907; GFX10-NEXT:    s_cmp_gt_i32 s2, 2616908; GFX10-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]16909; GFX10-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]16910; GFX10-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]16911; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]16912; GFX10-NEXT:    v_add_f64 v[19:20], v[12:13], v[10:11]16913; GFX10-NEXT:    v_cndmask_b32_e32 v13, v13, v20, vcc_lo16914; GFX10-NEXT:    v_cndmask_b32_e32 v12, v12, v19, vcc_lo16915; GFX10-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2616916; GFX10-NEXT:    s_cbranch_scc1 .LBB13_1316917; GFX10-NEXT:  ; %bb.14: ; %Flow16918; GFX10-NEXT:    v_mov_b32_e32 v12, v1616919; GFX10-NEXT:    v_mov_b32_e32 v19, s216920; GFX10-NEXT:    v_mov_b32_e32 v13, v1716921; GFX10-NEXT:  .LBB13_15: ; %frem.loop_exit16922; GFX10-NEXT:    v_subrev_nc_u32_e32 v16, 25, v1916923; GFX10-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1616924; GFX10-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]16925; GFX10-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]16926; GFX10-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]16927; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]16928; GFX10-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]16929; GFX10-NEXT:    v_cndmask_b32_e32 v11, v13, v11, vcc_lo16930; GFX10-NEXT:    v_cndmask_b32_e32 v10, v12, v10, vcc_lo16931; GFX10-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1816932; GFX10-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v316933; GFX10-NEXT:  .LBB13_16: ; %Flow5016934; GFX10-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]16935; GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|16936; GFX10-NEXT:    v_mov_b32_e32 v4, 016937; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo16938; GFX10-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[2:3]|16939; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v9, vcc_lo16940; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc_lo16941; GFX10-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[6:7]16942; GFX10-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo16943; GFX10-NEXT:    v_cndmask_b32_e32 v3, 0x7ff80000, v11, vcc_lo16944; GFX10-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc_lo16945; GFX10-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]16946; GFX10-NEXT:    s_endpgm16947;16948; GFX11-LABEL: frem_v2f64:16949; GFX11:       ; %bb.0:16950; GFX11-NEXT:    s_clause 0x116951; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2416952; GFX11-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3416953; GFX11-NEXT:    v_mov_b32_e32 v4, 016954; GFX11-NEXT:    s_waitcnt lgkmcnt(0)16955; GFX11-NEXT:    s_clause 0x116956; GFX11-NEXT:    global_load_b128 v[0:3], v4, s[2:3]16957; GFX11-NEXT:    global_load_b128 v[4:7], v4, s[4:5] offset:6416958; GFX11-NEXT:    s_waitcnt vmcnt(0)16959; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[4:5]|16960; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s216961; GFX11-NEXT:    s_cbranch_vccz .LBB13_216962; GFX11-NEXT:  ; %bb.1: ; %frem.else1616963; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|16964; GFX11-NEXT:    v_and_b32_e32 v8, 0x80000000, v116965; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)16966; GFX11-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo16967; GFX11-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo16968; GFX11-NEXT:    s_cbranch_execz .LBB13_316969; GFX11-NEXT:    s_branch .LBB13_816970; GFX11-NEXT:  .LBB13_2:16971; GFX11-NEXT:    ; implicit-def: $vgpr8_vgpr916972; GFX11-NEXT:  .LBB13_3: ; %frem.compute1516973; GFX11-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|16974; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]16975; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]16976; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)16977; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2616978; GFX11-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|16979; GFX11-NEXT:    v_add_nc_u32_e32 v16, -1, v1316980; GFX11-NEXT:    v_readfirstlane_b32 s3, v1316981; GFX11-NEXT:    v_readfirstlane_b32 s2, v1216982; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)16983; GFX11-NEXT:    v_not_b32_e32 v13, v1616984; GFX11-NEXT:    v_add_nc_u32_e32 v17, v13, v1216985; GFX11-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 116986; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16987; GFX11-NEXT:    v_div_scale_f64 v[12:13], null, v[8:9], v[8:9], 1.016988; GFX11-NEXT:    v_rcp_f64_e32 v[14:15], v[12:13]16989; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)16990; GFX11-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.016991; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16992; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]16993; GFX11-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.016994; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)16995; GFX11-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]16996; GFX11-NEXT:    v_div_scale_f64 v[18:19], vcc_lo, 1.0, v[8:9], 1.016997; GFX11-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]16998; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)16999; GFX11-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[20:21], v[18:19]17000; GFX11-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]17001; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1717002; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)17003; GFX11-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.017004; GFX11-NEXT:    s_cbranch_vccnz .LBB13_717005; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader17006; GFX11-NEXT:    s_sub_i32 s2, s2, s317007; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17008; GFX11-NEXT:    s_add_i32 s2, s2, 2617009; GFX11-NEXT:    .p2align 617010; GFX11-NEXT:  .LBB13_5: ; %frem.loop_body2317011; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=117012; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)17013; GFX11-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v1017014; GFX11-NEXT:    s_sub_i32 s2, s2, 2617015; GFX11-NEXT:    s_cmp_gt_i32 s2, 2617016; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17017; GFX11-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]17018; GFX11-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]17019; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17020; GFX11-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]17021; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17022; GFX11-NEXT:    v_add_f64 v[17:18], v[10:11], v[8:9]17023; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17024; GFX11-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v1717025; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2617026; GFX11-NEXT:    s_cbranch_scc1 .LBB13_517027; GFX11-NEXT:  ; %bb.6: ; %Flow5117028; GFX11-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v1417029; GFX11-NEXT:    v_mov_b32_e32 v11, v1517030; GFX11-NEXT:  .LBB13_7: ; %frem.loop_exit2417031; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17032; GFX11-NEXT:    v_subrev_nc_u32_e32 v14, 25, v1717033; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1417034; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17035; GFX11-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]17036; GFX11-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17037; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17038; GFX11-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]17039; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17040; GFX11-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]17041; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17042; GFX11-NEXT:    v_dual_cndmask_b32 v9, v11, v9 :: v_dual_cndmask_b32 v8, v10, v817043; GFX11-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1617044; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)17045; GFX11-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v117046; GFX11-NEXT:  .LBB13_8:17047; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|17048; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s217049; GFX11-NEXT:    s_cbranch_vccz .LBB13_1017050; GFX11-NEXT:  ; %bb.9: ; %frem.else17051; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|17052; GFX11-NEXT:    v_and_b32_e32 v10, 0x80000000, v317053; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)17054; GFX11-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo17055; GFX11-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo17056; GFX11-NEXT:    s_cbranch_execz .LBB13_1117057; GFX11-NEXT:    s_branch .LBB13_1617058; GFX11-NEXT:  .LBB13_10:17059; GFX11-NEXT:    ; implicit-def: $vgpr10_vgpr1117060; GFX11-NEXT:  .LBB13_11: ; %frem.compute17061; GFX11-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|17062; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]17063; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]17064; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)17065; GFX11-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2617066; GFX11-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|17067; GFX11-NEXT:    v_add_nc_u32_e32 v18, -1, v1517068; GFX11-NEXT:    v_readfirstlane_b32 s3, v1517069; GFX11-NEXT:    v_readfirstlane_b32 s2, v1417070; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17071; GFX11-NEXT:    v_not_b32_e32 v15, v1817072; GFX11-NEXT:    v_add_nc_u32_e32 v19, v15, v1417073; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 117074; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17075; GFX11-NEXT:    v_div_scale_f64 v[14:15], null, v[10:11], v[10:11], 1.017076; GFX11-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]17077; GFX11-NEXT:    s_waitcnt_depctr depctr_va_vdst(0)17078; GFX11-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017079; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17080; GFX11-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17081; GFX11-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017082; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)17083; GFX11-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17084; GFX11-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, 1.0, v[10:11], 1.017085; GFX11-NEXT:    v_mul_f64 v[22:23], v[20:21], v[16:17]17086; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17087; GFX11-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[22:23], v[20:21]17088; GFX11-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]17089; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1917090; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)17091; GFX11-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.017092; GFX11-NEXT:    s_cbranch_vccnz .LBB13_1517093; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader17094; GFX11-NEXT:    s_sub_i32 s2, s2, s317095; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17096; GFX11-NEXT:    s_add_i32 s2, s2, 2617097; GFX11-NEXT:    .p2align 617098; GFX11-NEXT:  .LBB13_13: ; %frem.loop_body17099; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=117100; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)17101; GFX11-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v1217102; GFX11-NEXT:    s_sub_i32 s2, s2, 2617103; GFX11-NEXT:    s_cmp_gt_i32 s2, 2617104; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17105; GFX11-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]17106; GFX11-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17107; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17108; GFX11-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]17109; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17110; GFX11-NEXT:    v_add_f64 v[19:20], v[12:13], v[10:11]17111; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17112; GFX11-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v1917113; GFX11-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2617114; GFX11-NEXT:    s_cbranch_scc1 .LBB13_1317115; GFX11-NEXT:  ; %bb.14: ; %Flow17116; GFX11-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v1617117; GFX11-NEXT:    v_mov_b32_e32 v13, v1717118; GFX11-NEXT:  .LBB13_15: ; %frem.loop_exit17119; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17120; GFX11-NEXT:    v_subrev_nc_u32_e32 v16, 25, v1917121; GFX11-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1617122; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17123; GFX11-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]17124; GFX11-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]17125; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17126; GFX11-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]17127; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17128; GFX11-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]17129; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17130; GFX11-NEXT:    v_dual_cndmask_b32 v11, v13, v11 :: v_dual_cndmask_b32 v10, v12, v1017131; GFX11-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1817132; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)17133; GFX11-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v317134; GFX11-NEXT:  .LBB13_16: ; %Flow5017135; GFX11-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]17136; GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|17137; GFX11-NEXT:    v_mov_b32_e32 v4, 017138; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17139; GFX11-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[2:3]|17140; GFX11-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v9, vcc_lo17141; GFX11-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc_lo17142; GFX11-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[6:7]17143; GFX11-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17144; GFX11-NEXT:    v_cndmask_b32_e32 v3, 0x7ff80000, v11, vcc_lo17145; GFX11-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc_lo17146; GFX11-NEXT:    global_store_b128 v4, v[0:3], s[0:1]17147; GFX11-NEXT:    s_endpgm17148;17149; GFX1150-LABEL: frem_v2f64:17150; GFX1150:       ; %bb.0:17151; GFX1150-NEXT:    s_clause 0x117152; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2417153; GFX1150-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3417154; GFX1150-NEXT:    v_mov_b32_e32 v4, 017155; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)17156; GFX1150-NEXT:    s_clause 0x117157; GFX1150-NEXT:    global_load_b128 v[0:3], v4, s[2:3]17158; GFX1150-NEXT:    global_load_b128 v[4:7], v4, s[4:5] offset:6417159; GFX1150-NEXT:    s_waitcnt vmcnt(0)17160; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[4:5]|17161; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s217162; GFX1150-NEXT:    s_cbranch_vccz .LBB13_217163; GFX1150-NEXT:  ; %bb.1: ; %frem.else1617164; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|17165; GFX1150-NEXT:    v_and_b32_e32 v8, 0x80000000, v117166; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)17167; GFX1150-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo17168; GFX1150-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo17169; GFX1150-NEXT:    s_cbranch_execz .LBB13_317170; GFX1150-NEXT:    s_branch .LBB13_817171; GFX1150-NEXT:  .LBB13_2:17172; GFX1150-NEXT:    ; implicit-def: $vgpr8_vgpr917173; GFX1150-NEXT:  .LBB13_3: ; %frem.compute1517174; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|17175; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]17176; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]17177; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)17178; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2617179; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|17180; GFX1150-NEXT:    v_add_nc_u32_e32 v16, -1, v1317181; GFX1150-NEXT:    v_readfirstlane_b32 s3, v1317182; GFX1150-NEXT:    v_readfirstlane_b32 s2, v1217183; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17184; GFX1150-NEXT:    v_not_b32_e32 v13, v1617185; GFX1150-NEXT:    v_add_nc_u32_e32 v17, v13, v1217186; GFX1150-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 117187; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17188; GFX1150-NEXT:    v_div_scale_f64 v[12:13], null, v[8:9], v[8:9], 1.017189; GFX1150-NEXT:    v_rcp_f64_e32 v[14:15], v[12:13]17190; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17191; GFX1150-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.017192; GFX1150-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]17193; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17194; GFX1150-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.017195; GFX1150-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]17196; GFX1150-NEXT:    v_div_scale_f64 v[18:19], vcc_lo, 1.0, v[8:9], 1.017197; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17198; GFX1150-NEXT:    v_mul_f64 v[20:21], v[18:19], v[14:15]17199; GFX1150-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[20:21], v[18:19]17200; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)17201; GFX1150-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]17202; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1717203; GFX1150-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.017204; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_717205; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader17206; GFX1150-NEXT:    s_sub_i32 s2, s2, s317207; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17208; GFX1150-NEXT:    s_add_i32 s2, s2, 2617209; GFX1150-NEXT:    .p2align 617210; GFX1150-NEXT:  .LBB13_5: ; %frem.loop_body2317211; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=117212; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)17213; GFX1150-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v1017214; GFX1150-NEXT:    s_sub_i32 s2, s2, 2617215; GFX1150-NEXT:    s_cmp_gt_i32 s2, 2617216; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17217; GFX1150-NEXT:    v_mul_f64 v[10:11], v[14:15], v[12:13]17218; GFX1150-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]17219; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17220; GFX1150-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]17221; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17222; GFX1150-NEXT:    v_add_f64 v[17:18], v[10:11], v[8:9]17223; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17224; GFX1150-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v1717225; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2617226; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_517227; GFX1150-NEXT:  ; %bb.6: ; %Flow5117228; GFX1150-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v1417229; GFX1150-NEXT:    v_mov_b32_e32 v11, v1517230; GFX1150-NEXT:  .LBB13_7: ; %frem.loop_exit2417231; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17232; GFX1150-NEXT:    v_subrev_nc_u32_e32 v14, 25, v1717233; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1417234; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17235; GFX1150-NEXT:    v_mul_f64 v[12:13], v[10:11], v[12:13]17236; GFX1150-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17237; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17238; GFX1150-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]17239; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17240; GFX1150-NEXT:    v_add_f64 v[8:9], v[10:11], v[8:9]17241; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17242; GFX1150-NEXT:    v_dual_cndmask_b32 v9, v11, v9 :: v_dual_cndmask_b32 v8, v10, v817243; GFX1150-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1617244; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)17245; GFX1150-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v117246; GFX1150-NEXT:  .LBB13_8:17247; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|17248; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s217249; GFX1150-NEXT:    s_cbranch_vccz .LBB13_1017250; GFX1150-NEXT:  ; %bb.9: ; %frem.else17251; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|17252; GFX1150-NEXT:    v_and_b32_e32 v10, 0x80000000, v317253; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)17254; GFX1150-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo17255; GFX1150-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo17256; GFX1150-NEXT:    s_cbranch_execz .LBB13_1117257; GFX1150-NEXT:    s_branch .LBB13_1617258; GFX1150-NEXT:  .LBB13_10:17259; GFX1150-NEXT:    ; implicit-def: $vgpr10_vgpr1117260; GFX1150-NEXT:  .LBB13_11: ; %frem.compute17261; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|17262; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]17263; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]17264; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)17265; GFX1150-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2617266; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|17267; GFX1150-NEXT:    v_add_nc_u32_e32 v18, -1, v1517268; GFX1150-NEXT:    v_readfirstlane_b32 s3, v1517269; GFX1150-NEXT:    v_readfirstlane_b32 s2, v1417270; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17271; GFX1150-NEXT:    v_not_b32_e32 v15, v1817272; GFX1150-NEXT:    v_add_nc_u32_e32 v19, v15, v1417273; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 117274; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17275; GFX1150-NEXT:    v_div_scale_f64 v[14:15], null, v[10:11], v[10:11], 1.017276; GFX1150-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]17277; GFX1150-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17278; GFX1150-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017279; GFX1150-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17280; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17281; GFX1150-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017282; GFX1150-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17283; GFX1150-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, 1.0, v[10:11], 1.017284; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17285; GFX1150-NEXT:    v_mul_f64 v[22:23], v[20:21], v[16:17]17286; GFX1150-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[22:23], v[20:21]17287; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)17288; GFX1150-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]17289; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1917290; GFX1150-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.017291; GFX1150-NEXT:    s_cbranch_vccnz .LBB13_1517292; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader17293; GFX1150-NEXT:    s_sub_i32 s2, s2, s317294; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17295; GFX1150-NEXT:    s_add_i32 s2, s2, 2617296; GFX1150-NEXT:    .p2align 617297; GFX1150-NEXT:  .LBB13_13: ; %frem.loop_body17298; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=117299; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)17300; GFX1150-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v1217301; GFX1150-NEXT:    s_sub_i32 s2, s2, 2617302; GFX1150-NEXT:    s_cmp_gt_i32 s2, 2617303; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17304; GFX1150-NEXT:    v_mul_f64 v[12:13], v[16:17], v[14:15]17305; GFX1150-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17306; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17307; GFX1150-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]17308; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17309; GFX1150-NEXT:    v_add_f64 v[19:20], v[12:13], v[10:11]17310; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17311; GFX1150-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v1917312; GFX1150-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2617313; GFX1150-NEXT:    s_cbranch_scc1 .LBB13_1317314; GFX1150-NEXT:  ; %bb.14: ; %Flow17315; GFX1150-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v1617316; GFX1150-NEXT:    v_mov_b32_e32 v13, v1717317; GFX1150-NEXT:  .LBB13_15: ; %frem.loop_exit17318; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17319; GFX1150-NEXT:    v_subrev_nc_u32_e32 v16, 25, v1917320; GFX1150-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1617321; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17322; GFX1150-NEXT:    v_mul_f64 v[14:15], v[12:13], v[14:15]17323; GFX1150-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]17324; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17325; GFX1150-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]17326; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17327; GFX1150-NEXT:    v_add_f64 v[10:11], v[12:13], v[10:11]17328; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17329; GFX1150-NEXT:    v_dual_cndmask_b32 v11, v13, v11 :: v_dual_cndmask_b32 v10, v12, v1017330; GFX1150-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1817331; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)17332; GFX1150-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v317333; GFX1150-NEXT:  .LBB13_16: ; %Flow5017334; GFX1150-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]17335; GFX1150-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|17336; GFX1150-NEXT:    v_mov_b32_e32 v4, 017337; GFX1150-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17338; GFX1150-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[2:3]|17339; GFX1150-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v9, vcc_lo17340; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc_lo17341; GFX1150-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[6:7]17342; GFX1150-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17343; GFX1150-NEXT:    v_cndmask_b32_e32 v3, 0x7ff80000, v11, vcc_lo17344; GFX1150-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc_lo17345; GFX1150-NEXT:    global_store_b128 v4, v[0:3], s[0:1]17346; GFX1150-NEXT:    s_endpgm17347;17348; GFX1200-LABEL: frem_v2f64:17349; GFX1200:       ; %bb.0:17350; GFX1200-NEXT:    s_clause 0x117351; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2417352; GFX1200-NEXT:    s_load_b64 s[4:5], s[4:5], 0x3417353; GFX1200-NEXT:    v_mov_b32_e32 v4, 017354; GFX1200-NEXT:    s_wait_kmcnt 0x017355; GFX1200-NEXT:    s_clause 0x117356; GFX1200-NEXT:    global_load_b128 v[0:3], v4, s[2:3]17357; GFX1200-NEXT:    global_load_b128 v[4:7], v4, s[4:5] offset:6417358; GFX1200-NEXT:    s_wait_loadcnt 0x017359; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, |v[4:5]|17360; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s217361; GFX1200-NEXT:    s_cbranch_vccz .LBB13_217362; GFX1200-NEXT:  ; %bb.1: ; %frem.else1617363; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, |v[4:5]|17364; GFX1200-NEXT:    v_and_b32_e32 v8, 0x80000000, v117365; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)17366; GFX1200-NEXT:    v_cndmask_b32_e32 v9, v1, v8, vcc_lo17367; GFX1200-NEXT:    v_cndmask_b32_e64 v8, v0, 0, vcc_lo17368; GFX1200-NEXT:    s_cbranch_execz .LBB13_317369; GFX1200-NEXT:    s_branch .LBB13_817370; GFX1200-NEXT:  .LBB13_2:17371; GFX1200-NEXT:    ; implicit-def: $vgpr8_vgpr917372; GFX1200-NEXT:  .LBB13_3: ; %frem.compute1517373; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[0:1]|17374; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v13, v[4:5]17375; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v12, v[0:1]17376; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)17377; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[8:9], 2617378; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[8:9], |v[4:5]|17379; GFX1200-NEXT:    v_add_nc_u32_e32 v16, -1, v1317380; GFX1200-NEXT:    v_readfirstlane_b32 s3, v1317381; GFX1200-NEXT:    v_readfirstlane_b32 s2, v1217382; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17383; GFX1200-NEXT:    v_not_b32_e32 v13, v1617384; GFX1200-NEXT:    v_add_nc_u32_e32 v17, v13, v1217385; GFX1200-NEXT:    v_ldexp_f64 v[8:9], v[8:9], 117386; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17387; GFX1200-NEXT:    v_div_scale_f64 v[12:13], null, v[8:9], v[8:9], 1.017388; GFX1200-NEXT:    v_rcp_f64_e32 v[14:15], v[12:13]17389; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17390; GFX1200-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.017391; GFX1200-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]17392; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17393; GFX1200-NEXT:    v_fma_f64 v[18:19], -v[12:13], v[14:15], 1.017394; GFX1200-NEXT:    v_fma_f64 v[14:15], v[14:15], v[18:19], v[14:15]17395; GFX1200-NEXT:    v_div_scale_f64 v[18:19], vcc_lo, 1.0, v[8:9], 1.017396; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17397; GFX1200-NEXT:    v_mul_f64_e32 v[20:21], v[18:19], v[14:15]17398; GFX1200-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[20:21], v[18:19]17399; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17400; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)17401; GFX1200-NEXT:    v_div_fmas_f64 v[12:13], v[12:13], v[14:15], v[20:21]17402; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1717403; GFX1200-NEXT:    v_div_fixup_f64 v[12:13], v[12:13], v[8:9], 1.017404; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_717405; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader17406; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s317407; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17408; GFX1200-NEXT:    s_add_co_i32 s2, s2, 2617409; GFX1200-NEXT:  .LBB13_5: ; %frem.loop_body2317410; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=117411; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)17412; GFX1200-NEXT:    v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v1017413; GFX1200-NEXT:    s_sub_co_i32 s2, s2, 2617414; GFX1200-NEXT:    s_cmp_gt_i32 s2, 2617415; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17416; GFX1200-NEXT:    v_mul_f64_e32 v[10:11], v[14:15], v[12:13]17417; GFX1200-NEXT:    v_rndne_f64_e32 v[10:11], v[10:11]17418; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17419; GFX1200-NEXT:    v_fma_f64 v[10:11], -v[10:11], v[8:9], v[14:15]17420; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17421; GFX1200-NEXT:    v_add_f64_e32 v[17:18], v[10:11], v[8:9]17422; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17423; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17424; GFX1200-NEXT:    v_dual_cndmask_b32 v11, v11, v18 :: v_dual_cndmask_b32 v10, v10, v1717425; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 2617426; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_517427; GFX1200-NEXT:  ; %bb.6: ; %Flow5117428; GFX1200-NEXT:    v_dual_mov_b32 v17, s2 :: v_dual_mov_b32 v10, v1417429; GFX1200-NEXT:    v_mov_b32_e32 v11, v1517430; GFX1200-NEXT:  .LBB13_7: ; %frem.loop_exit2417431; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17432; GFX1200-NEXT:    v_subrev_nc_u32_e32 v14, 25, v1717433; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1417434; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17435; GFX1200-NEXT:    v_mul_f64_e32 v[12:13], v[10:11], v[12:13]17436; GFX1200-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17437; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17438; GFX1200-NEXT:    v_fma_f64 v[10:11], -v[12:13], v[8:9], v[10:11]17439; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[10:11]17440; GFX1200-NEXT:    v_add_f64_e32 v[8:9], v[10:11], v[8:9]17441; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17442; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17443; GFX1200-NEXT:    v_dual_cndmask_b32 v9, v11, v9 :: v_dual_cndmask_b32 v8, v10, v817444; GFX1200-NEXT:    v_ldexp_f64 v[8:9], v[8:9], v1617445; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)17446; GFX1200-NEXT:    v_bfi_b32 v9, 0x7fffffff, v9, v117447; GFX1200-NEXT:  .LBB13_8:17448; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, |v[6:7]|17449; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s217450; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17451; GFX1200-NEXT:    s_cbranch_vccz .LBB13_1017452; GFX1200-NEXT:  ; %bb.9: ; %frem.else17453; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, |v[6:7]|17454; GFX1200-NEXT:    v_and_b32_e32 v10, 0x80000000, v317455; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17456; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)17457; GFX1200-NEXT:    v_cndmask_b32_e32 v11, v3, v10, vcc_lo17458; GFX1200-NEXT:    v_cndmask_b32_e64 v10, v2, 0, vcc_lo17459; GFX1200-NEXT:    s_cbranch_execz .LBB13_1117460; GFX1200-NEXT:    s_branch .LBB13_1617461; GFX1200-NEXT:  .LBB13_10:17462; GFX1200-NEXT:    ; implicit-def: $vgpr10_vgpr1117463; GFX1200-NEXT:  .LBB13_11: ; %frem.compute17464; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[2:3]|17465; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v15, v[6:7]17466; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v14, v[2:3]17467; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_4)17468; GFX1200-NEXT:    v_ldexp_f64 v[12:13], v[10:11], 2617469; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[10:11], |v[6:7]|17470; GFX1200-NEXT:    v_add_nc_u32_e32 v18, -1, v1517471; GFX1200-NEXT:    v_readfirstlane_b32 s3, v1517472; GFX1200-NEXT:    v_readfirstlane_b32 s2, v1417473; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_1)17474; GFX1200-NEXT:    v_not_b32_e32 v15, v1817475; GFX1200-NEXT:    v_add_nc_u32_e32 v19, v15, v1417476; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], 117477; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17478; GFX1200-NEXT:    v_div_scale_f64 v[14:15], null, v[10:11], v[10:11], 1.017479; GFX1200-NEXT:    v_rcp_f64_e32 v[16:17], v[14:15]17480; GFX1200-NEXT:    s_delay_alu instid0(TRANS32_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17481; GFX1200-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017482; GFX1200-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17483; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17484; GFX1200-NEXT:    v_fma_f64 v[20:21], -v[14:15], v[16:17], 1.017485; GFX1200-NEXT:    v_fma_f64 v[16:17], v[16:17], v[20:21], v[16:17]17486; GFX1200-NEXT:    v_div_scale_f64 v[20:21], vcc_lo, 1.0, v[10:11], 1.017487; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17488; GFX1200-NEXT:    v_mul_f64_e32 v[22:23], v[20:21], v[16:17]17489; GFX1200-NEXT:    v_fma_f64 v[14:15], -v[14:15], v[22:23], v[20:21]17490; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17491; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)17492; GFX1200-NEXT:    v_div_fmas_f64 v[14:15], v[14:15], v[16:17], v[22:23]17493; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1917494; GFX1200-NEXT:    v_div_fixup_f64 v[14:15], v[14:15], v[10:11], 1.017495; GFX1200-NEXT:    s_cbranch_vccnz .LBB13_1517496; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body.preheader17497; GFX1200-NEXT:    s_sub_co_i32 s2, s2, s317498; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17499; GFX1200-NEXT:    s_add_co_i32 s2, s2, 2617500; GFX1200-NEXT:  .LBB13_13: ; %frem.loop_body17501; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=117502; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_4) | instid1(VALU_DEP_2)17503; GFX1200-NEXT:    v_dual_mov_b32 v17, v13 :: v_dual_mov_b32 v16, v1217504; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17505; GFX1200-NEXT:    s_sub_co_i32 s2, s2, 2617506; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17507; GFX1200-NEXT:    s_cmp_gt_i32 s2, 2617508; GFX1200-NEXT:    v_mul_f64_e32 v[12:13], v[16:17], v[14:15]17509; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17510; GFX1200-NEXT:    v_rndne_f64_e32 v[12:13], v[12:13]17511; GFX1200-NEXT:    v_fma_f64 v[12:13], -v[12:13], v[10:11], v[16:17]17512; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)17513; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17514; GFX1200-NEXT:    v_add_f64_e32 v[19:20], v[12:13], v[10:11]17515; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17516; GFX1200-NEXT:    v_dual_cndmask_b32 v13, v13, v20 :: v_dual_cndmask_b32 v12, v12, v1917517; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)17518; GFX1200-NEXT:    v_ldexp_f64 v[12:13], v[12:13], 2617519; GFX1200-NEXT:    s_cbranch_scc1 .LBB13_1317520; GFX1200-NEXT:  ; %bb.14: ; %Flow17521; GFX1200-NEXT:    v_dual_mov_b32 v19, s2 :: v_dual_mov_b32 v12, v1617522; GFX1200-NEXT:    v_mov_b32_e32 v13, v1717523; GFX1200-NEXT:  .LBB13_15: ; %frem.loop_exit17524; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)17525; GFX1200-NEXT:    v_subrev_nc_u32_e32 v16, 25, v1917526; GFX1200-NEXT:    v_ldexp_f64 v[12:13], v[12:13], v1617527; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17528; GFX1200-NEXT:    v_mul_f64_e32 v[14:15], v[12:13], v[14:15]17529; GFX1200-NEXT:    v_rndne_f64_e32 v[14:15], v[14:15]17530; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17531; GFX1200-NEXT:    v_fma_f64 v[12:13], -v[14:15], v[10:11], v[12:13]17532; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[12:13]17533; GFX1200-NEXT:    v_add_f64_e32 v[10:11], v[12:13], v[10:11]17534; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)17535; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)17536; GFX1200-NEXT:    v_dual_cndmask_b32 v11, v13, v11 :: v_dual_cndmask_b32 v10, v12, v1017537; GFX1200-NEXT:    v_ldexp_f64 v[10:11], v[10:11], v1817538; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)17539; GFX1200-NEXT:    v_bfi_b32 v11, 0x7fffffff, v11, v317540; GFX1200-NEXT:  .LBB13_16: ; %Flow5017541; GFX1200-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[4:5]17542; GFX1200-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[0:1]|17543; GFX1200-NEXT:    v_mov_b32_e32 v4, 017544; GFX1200-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17545; GFX1200-NEXT:    v_cmp_nle_f64_e64 s2, 0x7ff00000, |v[2:3]|17546; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17547; GFX1200-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v9, vcc_lo17548; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0, v8, vcc_lo17549; GFX1200-NEXT:    v_cmp_lg_f64_e32 vcc_lo, 0, v[6:7]17550; GFX1200-NEXT:    s_and_b32 vcc_lo, s2, vcc_lo17551; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17552; GFX1200-NEXT:    v_cndmask_b32_e32 v3, 0x7ff80000, v11, vcc_lo17553; GFX1200-NEXT:    v_cndmask_b32_e32 v2, 0, v10, vcc_lo17554; GFX1200-NEXT:    global_store_b128 v4, v[0:3], s[0:1]17555; GFX1200-NEXT:    s_endpgm17556                        ptr addrspace(1) %in2) #0 {17557   %gep2 = getelementptr <2 x double>, ptr addrspace(1) %in2, i32 417558   %r0 = load <2 x double>, ptr addrspace(1) %in1, align 1617559   %r1 = load <2 x double>, ptr addrspace(1) %gep2, align 1617560   %r2 = frem <2 x double> %r0, %r117561   store <2 x double> %r2, ptr addrspace(1) %out, align 1617562   ret void17563}17564 17565 17566define amdgpu_kernel void @frem_v2f64_const_zero_num(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {17567; SI-LABEL: frem_v2f64_const_zero_num:17568; SI:       ; %bb.0:17569; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x917570; SI-NEXT:    s_mov_b32 s7, 0xf00017571; SI-NEXT:    s_mov_b32 s6, -117572; SI-NEXT:    s_waitcnt lgkmcnt(0)17573; SI-NEXT:    s_mov_b32 s4, s217574; SI-NEXT:    s_mov_b32 s5, s317575; SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 017576; SI-NEXT:    s_waitcnt vmcnt(0)17577; SI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[0:1]17578; SI-NEXT:    s_and_b64 s[2:3], vcc, exec17579; SI-NEXT:    s_cselect_b32 s8, 0x7ff80000, 017580; SI-NEXT:    s_mov_b32 s2, s617581; SI-NEXT:    s_mov_b32 s3, s717582; SI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[2:3]17583; SI-NEXT:    s_and_b64 s[4:5], vcc, exec17584; SI-NEXT:    s_cselect_b32 s4, 0x7ff80000, 017585; SI-NEXT:    v_mov_b32_e32 v0, 017586; SI-NEXT:    v_mov_b32_e32 v1, s817587; SI-NEXT:    v_mov_b32_e32 v3, s417588; SI-NEXT:    v_mov_b32_e32 v2, v017589; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 017590; SI-NEXT:    s_endpgm17591;17592; CI-LABEL: frem_v2f64_const_zero_num:17593; CI:       ; %bb.0:17594; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x917595; CI-NEXT:    s_mov_b32 s7, 0xf00017596; CI-NEXT:    s_mov_b32 s6, -117597; CI-NEXT:    s_waitcnt lgkmcnt(0)17598; CI-NEXT:    s_mov_b32 s4, s217599; CI-NEXT:    s_mov_b32 s5, s317600; CI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 017601; CI-NEXT:    s_waitcnt vmcnt(0)17602; CI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[0:1]17603; CI-NEXT:    v_mov_b32_e32 v0, 017604; CI-NEXT:    s_and_b64 s[2:3], vcc, exec17605; CI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[2:3]17606; CI-NEXT:    s_cselect_b32 s8, 0x7ff80000, 017607; CI-NEXT:    s_mov_b32 s2, s617608; CI-NEXT:    s_mov_b32 s3, s717609; CI-NEXT:    v_mov_b32_e32 v1, s817610; CI-NEXT:    v_mov_b32_e32 v2, v017611; CI-NEXT:    s_and_b64 s[4:5], vcc, exec17612; CI-NEXT:    s_cselect_b32 s4, 0x7ff80000, 017613; CI-NEXT:    v_mov_b32_e32 v3, s417614; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 017615; CI-NEXT:    s_endpgm17616;17617; VI-LABEL: frem_v2f64_const_zero_num:17618; VI:       ; %bb.0:17619; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2417620; VI-NEXT:    s_waitcnt lgkmcnt(0)17621; VI-NEXT:    v_mov_b32_e32 v0, s217622; VI-NEXT:    v_mov_b32_e32 v1, s317623; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]17624; VI-NEXT:    v_mov_b32_e32 v4, s017625; VI-NEXT:    v_mov_b32_e32 v5, s117626; VI-NEXT:    s_waitcnt vmcnt(0)17627; VI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[0:1]17628; VI-NEXT:    v_mov_b32_e32 v0, 017629; VI-NEXT:    s_and_b64 s[2:3], vcc, exec17630; VI-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[2:3]17631; VI-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017632; VI-NEXT:    v_mov_b32_e32 v1, s217633; VI-NEXT:    v_mov_b32_e32 v2, v017634; VI-NEXT:    s_and_b64 s[0:1], vcc, exec17635; VI-NEXT:    s_cselect_b32 s0, 0x7ff80000, 017636; VI-NEXT:    v_mov_b32_e32 v3, s017637; VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]17638; VI-NEXT:    s_endpgm17639;17640; GFX9-LABEL: frem_v2f64_const_zero_num:17641; GFX9:       ; %bb.0:17642; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2417643; GFX9-NEXT:    v_mov_b32_e32 v0, 017644; GFX9-NEXT:    s_waitcnt lgkmcnt(0)17645; GFX9-NEXT:    global_load_dwordx4 v[1:4], v0, s[2:3]17646; GFX9-NEXT:    s_waitcnt vmcnt(0)17647; GFX9-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[1:2]17648; GFX9-NEXT:    v_mov_b32_e32 v2, v017649; GFX9-NEXT:    s_and_b64 s[2:3], vcc, exec17650; GFX9-NEXT:    v_cmp_nlg_f64_e32 vcc, 0, v[3:4]17651; GFX9-NEXT:    s_cselect_b32 s4, 0x7ff80000, 017652; GFX9-NEXT:    v_mov_b32_e32 v1, s417653; GFX9-NEXT:    s_and_b64 s[2:3], vcc, exec17654; GFX9-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017655; GFX9-NEXT:    v_mov_b32_e32 v3, s217656; GFX9-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]17657; GFX9-NEXT:    s_endpgm17658;17659; GFX10-LABEL: frem_v2f64_const_zero_num:17660; GFX10:       ; %bb.0:17661; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2417662; GFX10-NEXT:    v_mov_b32_e32 v0, 017663; GFX10-NEXT:    s_waitcnt lgkmcnt(0)17664; GFX10-NEXT:    global_load_dwordx4 v[1:4], v0, s[2:3]17665; GFX10-NEXT:    s_waitcnt vmcnt(0)17666; GFX10-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[1:2]17667; GFX10-NEXT:    v_mov_b32_e32 v2, v017668; GFX10-NEXT:    s_and_b32 s2, vcc_lo, exec_lo17669; GFX10-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[3:4]17670; GFX10-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017671; GFX10-NEXT:    v_mov_b32_e32 v1, s217672; GFX10-NEXT:    s_and_b32 s3, vcc_lo, exec_lo17673; GFX10-NEXT:    s_cselect_b32 s3, 0x7ff80000, 017674; GFX10-NEXT:    v_mov_b32_e32 v3, s317675; GFX10-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]17676; GFX10-NEXT:    s_endpgm17677;17678; GFX11-LABEL: frem_v2f64_const_zero_num:17679; GFX11:       ; %bb.0:17680; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2417681; GFX11-NEXT:    v_mov_b32_e32 v0, 017682; GFX11-NEXT:    s_waitcnt lgkmcnt(0)17683; GFX11-NEXT:    global_load_b128 v[1:4], v0, s[2:3]17684; GFX11-NEXT:    s_waitcnt vmcnt(0)17685; GFX11-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[1:2]17686; GFX11-NEXT:    s_and_b32 s2, vcc_lo, exec_lo17687; GFX11-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[3:4]17688; GFX11-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017689; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)17690; GFX11-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v2, v017691; GFX11-NEXT:    s_and_b32 s3, vcc_lo, exec_lo17692; GFX11-NEXT:    s_cselect_b32 s3, 0x7ff80000, 017693; GFX11-NEXT:    v_mov_b32_e32 v3, s317694; GFX11-NEXT:    global_store_b128 v0, v[0:3], s[0:1]17695; GFX11-NEXT:    s_endpgm17696;17697; GFX1150-LABEL: frem_v2f64_const_zero_num:17698; GFX1150:       ; %bb.0:17699; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2417700; GFX1150-NEXT:    v_mov_b32_e32 v0, 017701; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)17702; GFX1150-NEXT:    global_load_b128 v[1:4], v0, s[2:3]17703; GFX1150-NEXT:    s_waitcnt vmcnt(0)17704; GFX1150-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[1:2]17705; GFX1150-NEXT:    s_and_b32 s2, vcc_lo, exec_lo17706; GFX1150-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[3:4]17707; GFX1150-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017708; GFX1150-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_2) | instid1(SALU_CYCLE_1)17709; GFX1150-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v2, v017710; GFX1150-NEXT:    s_and_b32 s3, vcc_lo, exec_lo17711; GFX1150-NEXT:    s_cselect_b32 s3, 0x7ff80000, 017712; GFX1150-NEXT:    v_mov_b32_e32 v3, s317713; GFX1150-NEXT:    global_store_b128 v0, v[0:3], s[0:1]17714; GFX1150-NEXT:    s_endpgm17715;17716; GFX1200-LABEL: frem_v2f64_const_zero_num:17717; GFX1200:       ; %bb.0:17718; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2417719; GFX1200-NEXT:    v_mov_b32_e32 v0, 017720; GFX1200-NEXT:    s_wait_kmcnt 0x017721; GFX1200-NEXT:    global_load_b128 v[1:4], v0, s[2:3]17722; GFX1200-NEXT:    s_wait_loadcnt 0x017723; GFX1200-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[1:2]17724; GFX1200-NEXT:    s_and_b32 s2, vcc_lo, exec_lo17725; GFX1200-NEXT:    v_cmp_nlg_f64_e32 vcc_lo, 0, v[3:4]17726; GFX1200-NEXT:    s_cselect_b32 s2, 0x7ff80000, 017727; GFX1200-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)17728; GFX1200-NEXT:    v_dual_mov_b32 v1, s2 :: v_dual_mov_b32 v2, v017729; GFX1200-NEXT:    s_and_b32 s3, vcc_lo, exec_lo17730; GFX1200-NEXT:    s_cselect_b32 s3, 0x7ff80000, 017731; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)17732; GFX1200-NEXT:    v_mov_b32_e32 v3, s317733; GFX1200-NEXT:    global_store_b128 v0, v[0:3], s[0:1]17734; GFX1200-NEXT:    s_endpgm17735   %r0 = load <2 x double>, ptr addrspace(1) %in, align 1617736   %r1 = frem  <2 x double> <double 0.0, double 0.0>, %r017737   store <2 x double> %r1, ptr addrspace(1) %out, align 1617738   ret void17739}17740 17741define amdgpu_kernel void @frem_v2f64_const_one_denum(ptr addrspace(1) %out, ptr addrspace(1) %in) #0 {17742; SI-LABEL: frem_v2f64_const_one_denum:17743; SI:       ; %bb.0:17744; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x917745; SI-NEXT:    s_mov_b32 s7, 0xf00017746; SI-NEXT:    s_mov_b32 s6, -117747; SI-NEXT:    s_waitcnt lgkmcnt(0)17748; SI-NEXT:    s_mov_b32 s4, s217749; SI-NEXT:    s_mov_b32 s5, s317750; SI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 017751; SI-NEXT:    s_waitcnt vmcnt(0)17752; SI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, 1.017753; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]17754; SI-NEXT:    s_cbranch_vccz .LBB15_217755; SI-NEXT:  ; %bb.1: ; %frem.else1617756; SI-NEXT:    v_and_b32_e32 v4, 0x80000000, v117757; SI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.017758; SI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc17759; SI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc17760; SI-NEXT:    s_mov_b64 vcc, exec17761; SI-NEXT:    s_cbranch_execz .LBB15_317762; SI-NEXT:    s_branch .LBB15_817763; SI-NEXT:  .LBB15_2:17764; SI-NEXT:    ; implicit-def: $vgpr4_vgpr517765; SI-NEXT:    s_mov_b64 vcc, 017766; SI-NEXT:  .LBB15_3: ; %frem.compute1517767; SI-NEXT:    s_brev_b32 s4, -217768; SI-NEXT:    v_and_b32_e32 v6, 0x7fffffff, v117769; SI-NEXT:    s_mov_b32 s2, 017770; SI-NEXT:    s_mov_b32 s3, 0x7ff0000017771; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[0:1]|, s[2:3]17772; SI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|17773; SI-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc17774; SI-NEXT:    v_cndmask_b32_e32 v4, v0, v4, vcc17775; SI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]17776; SI-NEXT:    s_and_b64 s[2:3], vcc, exec17777; SI-NEXT:    v_readfirstlane_b32 s2, v617778; SI-NEXT:    s_cselect_b32 s3, s2, 017779; SI-NEXT:    s_mov_b32 s2, -117780; SI-NEXT:    s_add_i32 s5, s3, -117781; SI-NEXT:    v_ldexp_f64 v[5:6], v[4:5], 2617782; SI-NEXT:    s_cmp_lt_i32 s5, 2717783; SI-NEXT:    s_cbranch_scc1 .LBB15_717784; SI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader17785; SI-NEXT:    s_add_i32 s5, s3, 2517786; SI-NEXT:    v_mov_b32_e32 v9, 0x4330000017787; SI-NEXT:    v_mov_b32_e32 v4, 017788; SI-NEXT:    s_mov_b32 s3, 0x432fffff17789; SI-NEXT:  .LBB15_5: ; %frem.loop_body2317790; SI-NEXT:    ; =>This Inner Loop Header: Depth=117791; SI-NEXT:    v_mov_b32_e32 v8, v617792; SI-NEXT:    v_mov_b32_e32 v7, v517793; SI-NEXT:    v_bfi_b32 v5, s4, v9, v817794; SI-NEXT:    v_add_f64 v[10:11], v[7:8], v[4:5]17795; SI-NEXT:    v_add_f64 v[5:6], v[10:11], -v[4:5]17796; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[7:8]|, s[2:3]17797; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc17798; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc17799; SI-NEXT:    v_add_f64 v[5:6], v[7:8], -v[5:6]17800; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[5:6]17801; SI-NEXT:    v_add_f64 v[10:11], v[5:6], 1.017802; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v11, vcc17803; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc17804; SI-NEXT:    v_ldexp_f64 v[5:6], v[5:6], 2617805; SI-NEXT:    s_sub_i32 s5, s5, 2617806; SI-NEXT:    s_cmp_gt_i32 s5, 2617807; SI-NEXT:    s_cbranch_scc1 .LBB15_517808; SI-NEXT:  ; %bb.6: ; %Flow5017809; SI-NEXT:    v_mov_b32_e32 v5, v717810; SI-NEXT:    v_mov_b32_e32 v6, v817811; SI-NEXT:  .LBB15_7: ; %frem.loop_exit2417812; SI-NEXT:    s_sub_i32 s2, s5, 2517813; SI-NEXT:    v_ldexp_f64 v[4:5], v[5:6], s217814; SI-NEXT:    s_mov_b32 s2, -117815; SI-NEXT:    s_mov_b32 s3, 0x432fffff17816; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[4:5]|, s[2:3]17817; SI-NEXT:    s_brev_b32 s2, -217818; SI-NEXT:    v_mov_b32_e32 v6, 0x4330000017819; SI-NEXT:    v_bfi_b32 v7, s2, v6, v517820; SI-NEXT:    v_mov_b32_e32 v6, 017821; SI-NEXT:    v_add_f64 v[8:9], v[4:5], v[6:7]17822; SI-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]17823; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v5, vcc17824; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v4, vcc17825; SI-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]17826; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]17827; SI-NEXT:    v_add_f64 v[6:7], v[4:5], 1.017828; SI-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc17829; SI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc17830; SI-NEXT:    v_bfi_b32 v5, s2, v5, v117831; SI-NEXT:  .LBB15_8:17832; SI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.017833; SI-NEXT:    s_and_b64 vcc, exec, s[2:3]17834; SI-NEXT:    s_cbranch_vccz .LBB15_1017835; SI-NEXT:  ; %bb.9: ; %frem.else17836; SI-NEXT:    v_and_b32_e32 v6, 0x80000000, v317837; SI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.017838; SI-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc17839; SI-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc17840; SI-NEXT:    s_mov_b64 vcc, exec17841; SI-NEXT:    s_cbranch_execz .LBB15_1117842; SI-NEXT:    s_branch .LBB15_1617843; SI-NEXT:  .LBB15_10:17844; SI-NEXT:    ; implicit-def: $vgpr6_vgpr717845; SI-NEXT:    s_mov_b64 vcc, 017846; SI-NEXT:  .LBB15_11: ; %frem.compute17847; SI-NEXT:    s_brev_b32 s4, -217848; SI-NEXT:    v_and_b32_e32 v8, 0x7fffffff, v317849; SI-NEXT:    s_mov_b32 s2, 017850; SI-NEXT:    s_mov_b32 s3, 0x7ff0000017851; SI-NEXT:    v_cmp_lt_f64_e64 vcc, |v[2:3]|, s[2:3]17852; SI-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|17853; SI-NEXT:    v_cndmask_b32_e32 v7, v8, v7, vcc17854; SI-NEXT:    v_cndmask_b32_e32 v6, v2, v6, vcc17855; SI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]17856; SI-NEXT:    s_and_b64 s[2:3], vcc, exec17857; SI-NEXT:    v_readfirstlane_b32 s2, v817858; SI-NEXT:    s_cselect_b32 s3, s2, 017859; SI-NEXT:    s_mov_b32 s2, -117860; SI-NEXT:    s_add_i32 s5, s3, -117861; SI-NEXT:    v_ldexp_f64 v[7:8], v[6:7], 2617862; SI-NEXT:    s_cmp_lt_i32 s5, 2717863; SI-NEXT:    s_cbranch_scc1 .LBB15_1517864; SI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader17865; SI-NEXT:    s_add_i32 s5, s3, 2517866; SI-NEXT:    v_mov_b32_e32 v11, 0x4330000017867; SI-NEXT:    v_mov_b32_e32 v6, 017868; SI-NEXT:    s_mov_b32 s3, 0x432fffff17869; SI-NEXT:  .LBB15_13: ; %frem.loop_body17870; SI-NEXT:    ; =>This Inner Loop Header: Depth=117871; SI-NEXT:    v_mov_b32_e32 v10, v817872; SI-NEXT:    v_mov_b32_e32 v9, v717873; SI-NEXT:    v_bfi_b32 v7, s4, v11, v1017874; SI-NEXT:    v_add_f64 v[12:13], v[9:10], v[6:7]17875; SI-NEXT:    v_add_f64 v[7:8], v[12:13], -v[6:7]17876; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[9:10]|, s[2:3]17877; SI-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc17878; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc17879; SI-NEXT:    v_add_f64 v[7:8], v[9:10], -v[7:8]17880; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[7:8]17881; SI-NEXT:    v_add_f64 v[12:13], v[7:8], 1.017882; SI-NEXT:    v_cndmask_b32_e32 v8, v8, v13, vcc17883; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v12, vcc17884; SI-NEXT:    v_ldexp_f64 v[7:8], v[7:8], 2617885; SI-NEXT:    s_sub_i32 s5, s5, 2617886; SI-NEXT:    s_cmp_gt_i32 s5, 2617887; SI-NEXT:    s_cbranch_scc1 .LBB15_1317888; SI-NEXT:  ; %bb.14: ; %Flow17889; SI-NEXT:    v_mov_b32_e32 v7, v917890; SI-NEXT:    v_mov_b32_e32 v8, v1017891; SI-NEXT:  .LBB15_15: ; %frem.loop_exit17892; SI-NEXT:    s_sub_i32 s2, s5, 2517893; SI-NEXT:    v_ldexp_f64 v[6:7], v[7:8], s217894; SI-NEXT:    s_mov_b32 s2, -117895; SI-NEXT:    s_mov_b32 s3, 0x432fffff17896; SI-NEXT:    v_cmp_gt_f64_e64 vcc, |v[6:7]|, s[2:3]17897; SI-NEXT:    s_brev_b32 s2, -217898; SI-NEXT:    v_mov_b32_e32 v8, 0x4330000017899; SI-NEXT:    v_bfi_b32 v9, s2, v8, v717900; SI-NEXT:    v_mov_b32_e32 v8, 017901; SI-NEXT:    v_add_f64 v[10:11], v[6:7], v[8:9]17902; SI-NEXT:    v_add_f64 v[8:9], v[10:11], -v[8:9]17903; SI-NEXT:    v_cndmask_b32_e32 v9, v9, v7, vcc17904; SI-NEXT:    v_cndmask_b32_e32 v8, v8, v6, vcc17905; SI-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]17906; SI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]17907; SI-NEXT:    v_add_f64 v[8:9], v[6:7], 1.017908; SI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc17909; SI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc17910; SI-NEXT:    v_bfi_b32 v7, s2, v7, v317911; SI-NEXT:  .LBB15_16: ; %Flow4917912; SI-NEXT:    s_mov_b32 s4, 017913; SI-NEXT:    s_mov_b32 s5, 0x7ff0000017914; SI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[4:5]17915; SI-NEXT:    v_mov_b32_e32 v8, 0x7ff8000017916; SI-NEXT:    v_cndmask_b32_e32 v1, v8, v5, vcc17917; SI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc17918; SI-NEXT:    s_mov_b32 s3, 0xf00017919; SI-NEXT:    s_mov_b32 s2, -117920; SI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[2:3]|, s[4:5]17921; SI-NEXT:    v_cndmask_b32_e32 v3, v8, v7, vcc17922; SI-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc17923; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 017924; SI-NEXT:    s_endpgm17925;17926; CI-LABEL: frem_v2f64_const_one_denum:17927; CI:       ; %bb.0:17928; CI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x917929; CI-NEXT:    s_mov_b32 s7, 0xf00017930; CI-NEXT:    s_mov_b32 s6, -117931; CI-NEXT:    s_waitcnt lgkmcnt(0)17932; CI-NEXT:    s_mov_b32 s4, s217933; CI-NEXT:    s_mov_b32 s5, s317934; CI-NEXT:    buffer_load_dwordx4 v[0:3], off, s[4:7], 017935; CI-NEXT:    s_waitcnt vmcnt(0)17936; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, 1.017937; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]17938; CI-NEXT:    s_cbranch_vccz .LBB15_217939; CI-NEXT:  ; %bb.1: ; %frem.else1617940; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.017941; CI-NEXT:    v_and_b32_e32 v4, 0x80000000, v117942; CI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc17943; CI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc17944; CI-NEXT:    s_cbranch_execz .LBB15_317945; CI-NEXT:    s_branch .LBB15_817946; CI-NEXT:  .LBB15_2:17947; CI-NEXT:    ; implicit-def: $vgpr4_vgpr517948; CI-NEXT:  .LBB15_3: ; %frem.compute1517949; CI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|17950; CI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]17951; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2617952; CI-NEXT:    v_add_i32_e32 v8, vcc, -1, v617953; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v817954; CI-NEXT:    s_cbranch_vccnz .LBB15_717955; CI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader17956; CI-NEXT:    v_add_i32_e32 v8, vcc, 25, v617957; CI-NEXT:  .LBB15_5: ; %frem.loop_body2317958; CI-NEXT:    ; =>This Inner Loop Header: Depth=117959; CI-NEXT:    v_mov_b32_e32 v7, v517960; CI-NEXT:    v_mov_b32_e32 v6, v417961; CI-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]17962; CI-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]17963; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]17964; CI-NEXT:    v_add_f64 v[9:10], v[4:5], 1.017965; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc17966; CI-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc17967; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2617968; CI-NEXT:    v_subrev_i32_e32 v8, vcc, 26, v817969; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v817970; CI-NEXT:    s_cbranch_vccnz .LBB15_517971; CI-NEXT:  ; %bb.6: ; %Flow5017972; CI-NEXT:    v_mov_b32_e32 v4, v617973; CI-NEXT:    v_mov_b32_e32 v5, v717974; CI-NEXT:  .LBB15_7: ; %frem.loop_exit2417975; CI-NEXT:    v_subrev_i32_e32 v6, vcc, 25, v817976; CI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v617977; CI-NEXT:    s_brev_b32 s2, -217978; CI-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]17979; CI-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]17980; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]17981; CI-NEXT:    v_add_f64 v[6:7], v[4:5], 1.017982; CI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc17983; CI-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc17984; CI-NEXT:    v_bfi_b32 v5, s2, v5, v117985; CI-NEXT:  .LBB15_8:17986; CI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.017987; CI-NEXT:    s_and_b64 vcc, exec, s[2:3]17988; CI-NEXT:    s_cbranch_vccz .LBB15_1017989; CI-NEXT:  ; %bb.9: ; %frem.else17990; CI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.017991; CI-NEXT:    v_and_b32_e32 v6, 0x80000000, v317992; CI-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc17993; CI-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc17994; CI-NEXT:    s_cbranch_execz .LBB15_1117995; CI-NEXT:    s_branch .LBB15_1617996; CI-NEXT:  .LBB15_10:17997; CI-NEXT:    ; implicit-def: $vgpr6_vgpr717998; CI-NEXT:  .LBB15_11: ; %frem.compute17999; CI-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18000; CI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18001; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618002; CI-NEXT:    v_add_i32_e32 v10, vcc, -1, v818003; CI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1018004; CI-NEXT:    s_cbranch_vccnz .LBB15_1518005; CI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18006; CI-NEXT:    v_add_i32_e32 v10, vcc, 25, v818007; CI-NEXT:  .LBB15_13: ; %frem.loop_body18008; CI-NEXT:    ; =>This Inner Loop Header: Depth=118009; CI-NEXT:    v_mov_b32_e32 v9, v718010; CI-NEXT:    v_mov_b32_e32 v8, v618011; CI-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18012; CI-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18013; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18014; CI-NEXT:    v_add_f64 v[11:12], v[6:7], 1.018015; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v12, vcc18016; CI-NEXT:    v_cndmask_b32_e32 v6, v6, v11, vcc18017; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618018; CI-NEXT:    v_subrev_i32_e32 v10, vcc, 26, v1018019; CI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1018020; CI-NEXT:    s_cbranch_vccnz .LBB15_1318021; CI-NEXT:  ; %bb.14: ; %Flow18022; CI-NEXT:    v_mov_b32_e32 v6, v818023; CI-NEXT:    v_mov_b32_e32 v7, v918024; CI-NEXT:  .LBB15_15: ; %frem.loop_exit18025; CI-NEXT:    v_subrev_i32_e32 v8, vcc, 25, v1018026; CI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818027; CI-NEXT:    s_brev_b32 s2, -218028; CI-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18029; CI-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18030; CI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18031; CI-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018032; CI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc18033; CI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc18034; CI-NEXT:    v_bfi_b32 v7, s2, v7, v318035; CI-NEXT:  .LBB15_16: ; %Flow4918036; CI-NEXT:    s_mov_b32 s4, 018037; CI-NEXT:    s_mov_b32 s5, 0x7ff0000018038; CI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[4:5]18039; CI-NEXT:    v_mov_b32_e32 v8, 0x7ff8000018040; CI-NEXT:    s_mov_b32 s3, 0xf00018041; CI-NEXT:    s_mov_b32 s2, -118042; CI-NEXT:    v_cndmask_b32_e32 v1, v8, v5, vcc18043; CI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc18044; CI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[2:3]|, s[4:5]18045; CI-NEXT:    v_cndmask_b32_e32 v3, v8, v7, vcc18046; CI-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc18047; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 018048; CI-NEXT:    s_endpgm18049;18050; VI-LABEL: frem_v2f64_const_one_denum:18051; VI:       ; %bb.0:18052; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2418053; VI-NEXT:    s_waitcnt lgkmcnt(0)18054; VI-NEXT:    v_mov_b32_e32 v0, s218055; VI-NEXT:    v_mov_b32_e32 v1, s318056; VI-NEXT:    flat_load_dwordx4 v[0:3], v[0:1]18057; VI-NEXT:    s_waitcnt vmcnt(0)18058; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, 1.018059; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]18060; VI-NEXT:    s_cbranch_vccz .LBB15_218061; VI-NEXT:  ; %bb.1: ; %frem.else1618062; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.018063; VI-NEXT:    v_and_b32_e32 v4, 0x80000000, v118064; VI-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc18065; VI-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc18066; VI-NEXT:    s_cbranch_execz .LBB15_318067; VI-NEXT:    s_branch .LBB15_818068; VI-NEXT:  .LBB15_2:18069; VI-NEXT:    ; implicit-def: $vgpr4_vgpr518070; VI-NEXT:  .LBB15_3: ; %frem.compute1518071; VI-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18072; VI-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18073; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618074; VI-NEXT:    v_add_u32_e32 v8, vcc, -1, v618075; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v818076; VI-NEXT:    s_cbranch_vccnz .LBB15_718077; VI-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18078; VI-NEXT:    v_add_u32_e32 v8, vcc, 25, v618079; VI-NEXT:  .LBB15_5: ; %frem.loop_body2318080; VI-NEXT:    ; =>This Inner Loop Header: Depth=118081; VI-NEXT:    v_mov_b32_e32 v7, v518082; VI-NEXT:    v_mov_b32_e32 v6, v418083; VI-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18084; VI-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]18085; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]18086; VI-NEXT:    v_add_f64 v[9:10], v[4:5], 1.018087; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc18088; VI-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc18089; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618090; VI-NEXT:    v_subrev_u32_e32 v8, vcc, 26, v818091; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v818092; VI-NEXT:    s_cbranch_vccnz .LBB15_518093; VI-NEXT:  ; %bb.6: ; %Flow5018094; VI-NEXT:    v_mov_b32_e32 v4, v618095; VI-NEXT:    v_mov_b32_e32 v5, v718096; VI-NEXT:  .LBB15_7: ; %frem.loop_exit2418097; VI-NEXT:    v_subrev_u32_e32 v6, vcc, 25, v818098; VI-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618099; VI-NEXT:    s_brev_b32 s2, -218100; VI-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18101; VI-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]18102; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]18103; VI-NEXT:    v_add_f64 v[6:7], v[4:5], 1.018104; VI-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc18105; VI-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc18106; VI-NEXT:    v_bfi_b32 v5, s2, v5, v118107; VI-NEXT:  .LBB15_8:18108; VI-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.018109; VI-NEXT:    s_and_b64 vcc, exec, s[2:3]18110; VI-NEXT:    s_cbranch_vccz .LBB15_1018111; VI-NEXT:  ; %bb.9: ; %frem.else18112; VI-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.018113; VI-NEXT:    v_and_b32_e32 v6, 0x80000000, v318114; VI-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc18115; VI-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc18116; VI-NEXT:    s_cbranch_execz .LBB15_1118117; VI-NEXT:    s_branch .LBB15_1618118; VI-NEXT:  .LBB15_10:18119; VI-NEXT:    ; implicit-def: $vgpr6_vgpr718120; VI-NEXT:  .LBB15_11: ; %frem.compute18121; VI-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18122; VI-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18123; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618124; VI-NEXT:    v_add_u32_e32 v10, vcc, -1, v818125; VI-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1018126; VI-NEXT:    s_cbranch_vccnz .LBB15_1518127; VI-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18128; VI-NEXT:    v_add_u32_e32 v10, vcc, 25, v818129; VI-NEXT:  .LBB15_13: ; %frem.loop_body18130; VI-NEXT:    ; =>This Inner Loop Header: Depth=118131; VI-NEXT:    v_mov_b32_e32 v9, v718132; VI-NEXT:    v_mov_b32_e32 v8, v618133; VI-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18134; VI-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18135; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18136; VI-NEXT:    v_add_f64 v[11:12], v[6:7], 1.018137; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v12, vcc18138; VI-NEXT:    v_cndmask_b32_e32 v6, v6, v11, vcc18139; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618140; VI-NEXT:    v_subrev_u32_e32 v10, vcc, 26, v1018141; VI-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1018142; VI-NEXT:    s_cbranch_vccnz .LBB15_1318143; VI-NEXT:  ; %bb.14: ; %Flow18144; VI-NEXT:    v_mov_b32_e32 v6, v818145; VI-NEXT:    v_mov_b32_e32 v7, v918146; VI-NEXT:  .LBB15_15: ; %frem.loop_exit18147; VI-NEXT:    v_subrev_u32_e32 v8, vcc, 25, v1018148; VI-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818149; VI-NEXT:    s_brev_b32 s2, -218150; VI-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18151; VI-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18152; VI-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18153; VI-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018154; VI-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc18155; VI-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc18156; VI-NEXT:    v_bfi_b32 v7, s2, v7, v318157; VI-NEXT:  .LBB15_16: ; %Flow4918158; VI-NEXT:    s_mov_b32 s2, 018159; VI-NEXT:    s_mov_b32 s3, 0x7ff0000018160; VI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[2:3]18161; VI-NEXT:    v_mov_b32_e32 v8, 0x7ff8000018162; VI-NEXT:    v_cndmask_b32_e32 v1, v8, v5, vcc18163; VI-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc18164; VI-NEXT:    v_cmp_nge_f64_e64 vcc, |v[2:3]|, s[2:3]18165; VI-NEXT:    v_mov_b32_e32 v4, s018166; VI-NEXT:    v_mov_b32_e32 v5, s118167; VI-NEXT:    v_cndmask_b32_e32 v3, v8, v7, vcc18168; VI-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc18169; VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]18170; VI-NEXT:    s_endpgm18171;18172; GFX9-LABEL: frem_v2f64_const_one_denum:18173; GFX9:       ; %bb.0:18174; GFX9-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2418175; GFX9-NEXT:    v_mov_b32_e32 v0, 018176; GFX9-NEXT:    s_waitcnt lgkmcnt(0)18177; GFX9-NEXT:    global_load_dwordx4 v[0:3], v0, s[2:3]18178; GFX9-NEXT:    s_waitcnt vmcnt(0)18179; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[0:1]|, 1.018180; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]18181; GFX9-NEXT:    s_cbranch_vccz .LBB15_218182; GFX9-NEXT:  ; %bb.1: ; %frem.else1618183; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[0:1]|, 1.018184; GFX9-NEXT:    v_and_b32_e32 v4, 0x80000000, v118185; GFX9-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc18186; GFX9-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc18187; GFX9-NEXT:    s_cbranch_execz .LBB15_318188; GFX9-NEXT:    s_branch .LBB15_818189; GFX9-NEXT:  .LBB15_2:18190; GFX9-NEXT:    ; implicit-def: $vgpr4_vgpr518191; GFX9-NEXT:  .LBB15_3: ; %frem.compute1518192; GFX9-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18193; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18194; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618195; GFX9-NEXT:    v_add_u32_e32 v8, -1, v618196; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v818197; GFX9-NEXT:    s_cbranch_vccnz .LBB15_718198; GFX9-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18199; GFX9-NEXT:    v_add_u32_e32 v8, 25, v618200; GFX9-NEXT:  .LBB15_5: ; %frem.loop_body2318201; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=118202; GFX9-NEXT:    v_mov_b32_e32 v7, v518203; GFX9-NEXT:    v_mov_b32_e32 v6, v418204; GFX9-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18205; GFX9-NEXT:    v_subrev_u32_e32 v8, 26, v818206; GFX9-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]18207; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]18208; GFX9-NEXT:    v_add_f64 v[9:10], v[4:5], 1.018209; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc18210; GFX9-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc18211; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618212; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v818213; GFX9-NEXT:    s_cbranch_vccnz .LBB15_518214; GFX9-NEXT:  ; %bb.6: ; %Flow5018215; GFX9-NEXT:    v_mov_b32_e32 v4, v618216; GFX9-NEXT:    v_mov_b32_e32 v5, v718217; GFX9-NEXT:  .LBB15_7: ; %frem.loop_exit2418218; GFX9-NEXT:    v_subrev_u32_e32 v6, 25, v818219; GFX9-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618220; GFX9-NEXT:    s_brev_b32 s2, -218221; GFX9-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18222; GFX9-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]18223; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[4:5]18224; GFX9-NEXT:    v_add_f64 v[6:7], v[4:5], 1.018225; GFX9-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc18226; GFX9-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc18227; GFX9-NEXT:    v_bfi_b32 v5, s2, v5, v118228; GFX9-NEXT:  .LBB15_8:18229; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[2:3], |v[2:3]|, 1.018230; GFX9-NEXT:    s_and_b64 vcc, exec, s[2:3]18231; GFX9-NEXT:    s_cbranch_vccz .LBB15_1018232; GFX9-NEXT:  ; %bb.9: ; %frem.else18233; GFX9-NEXT:    v_cmp_eq_f64_e64 vcc, |v[2:3]|, 1.018234; GFX9-NEXT:    v_and_b32_e32 v6, 0x80000000, v318235; GFX9-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc18236; GFX9-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc18237; GFX9-NEXT:    s_cbranch_execz .LBB15_1118238; GFX9-NEXT:    s_branch .LBB15_1618239; GFX9-NEXT:  .LBB15_10:18240; GFX9-NEXT:    ; implicit-def: $vgpr6_vgpr718241; GFX9-NEXT:  .LBB15_11: ; %frem.compute18242; GFX9-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18243; GFX9-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18244; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618245; GFX9-NEXT:    v_add_u32_e32 v10, -1, v818246; GFX9-NEXT:    v_cmp_gt_i32_e32 vcc, 27, v1018247; GFX9-NEXT:    s_cbranch_vccnz .LBB15_1518248; GFX9-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18249; GFX9-NEXT:    v_add_u32_e32 v10, 25, v818250; GFX9-NEXT:  .LBB15_13: ; %frem.loop_body18251; GFX9-NEXT:    ; =>This Inner Loop Header: Depth=118252; GFX9-NEXT:    v_mov_b32_e32 v9, v718253; GFX9-NEXT:    v_mov_b32_e32 v8, v618254; GFX9-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18255; GFX9-NEXT:    v_subrev_u32_e32 v10, 26, v1018256; GFX9-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18257; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18258; GFX9-NEXT:    v_add_f64 v[11:12], v[6:7], 1.018259; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v12, vcc18260; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v11, vcc18261; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618262; GFX9-NEXT:    v_cmp_lt_i32_e32 vcc, 26, v1018263; GFX9-NEXT:    s_cbranch_vccnz .LBB15_1318264; GFX9-NEXT:  ; %bb.14: ; %Flow18265; GFX9-NEXT:    v_mov_b32_e32 v6, v818266; GFX9-NEXT:    v_mov_b32_e32 v7, v918267; GFX9-NEXT:  .LBB15_15: ; %frem.loop_exit18268; GFX9-NEXT:    v_subrev_u32_e32 v8, 25, v1018269; GFX9-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818270; GFX9-NEXT:    s_brev_b32 s2, -218271; GFX9-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18272; GFX9-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18273; GFX9-NEXT:    v_cmp_gt_f64_e32 vcc, 0, v[6:7]18274; GFX9-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018275; GFX9-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc18276; GFX9-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc18277; GFX9-NEXT:    v_bfi_b32 v7, s2, v7, v318278; GFX9-NEXT:  .LBB15_16: ; %Flow4918279; GFX9-NEXT:    s_mov_b32 s2, 018280; GFX9-NEXT:    s_mov_b32 s3, 0x7ff0000018281; GFX9-NEXT:    v_cmp_nge_f64_e64 vcc, |v[0:1]|, s[2:3]18282; GFX9-NEXT:    v_mov_b32_e32 v8, 0x7ff8000018283; GFX9-NEXT:    v_cndmask_b32_e32 v1, v8, v5, vcc18284; GFX9-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc18285; GFX9-NEXT:    v_cmp_nge_f64_e64 vcc, |v[2:3]|, s[2:3]18286; GFX9-NEXT:    v_mov_b32_e32 v4, 018287; GFX9-NEXT:    v_cndmask_b32_e32 v3, v8, v7, vcc18288; GFX9-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc18289; GFX9-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]18290; GFX9-NEXT:    s_endpgm18291;18292; GFX10-LABEL: frem_v2f64_const_one_denum:18293; GFX10:       ; %bb.0:18294; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2418295; GFX10-NEXT:    v_mov_b32_e32 v0, 018296; GFX10-NEXT:    s_waitcnt lgkmcnt(0)18297; GFX10-NEXT:    global_load_dwordx4 v[0:3], v0, s[2:3]18298; GFX10-NEXT:    s_waitcnt vmcnt(0)18299; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, 1.018300; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s218301; GFX10-NEXT:    s_cbranch_vccz .LBB15_218302; GFX10-NEXT:  ; %bb.1: ; %frem.else1618303; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.018304; GFX10-NEXT:    v_and_b32_e32 v4, 0x80000000, v118305; GFX10-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo18306; GFX10-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo18307; GFX10-NEXT:    s_cbranch_execz .LBB15_318308; GFX10-NEXT:    s_branch .LBB15_818309; GFX10-NEXT:  .LBB15_2:18310; GFX10-NEXT:    ; implicit-def: $vgpr4_vgpr518311; GFX10-NEXT:  .LBB15_3: ; %frem.compute1518312; GFX10-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18313; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18314; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618315; GFX10-NEXT:    v_add_nc_u32_e32 v8, -1, v618316; GFX10-NEXT:    v_readfirstlane_b32 s2, v618317; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v818318; GFX10-NEXT:    s_cbranch_vccnz .LBB15_718319; GFX10-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18320; GFX10-NEXT:    s_add_i32 s2, s2, 2518321; GFX10-NEXT:  .LBB15_5: ; %frem.loop_body2318322; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118323; GFX10-NEXT:    v_mov_b32_e32 v7, v518324; GFX10-NEXT:    v_mov_b32_e32 v6, v418325; GFX10-NEXT:    s_sub_i32 s2, s2, 2618326; GFX10-NEXT:    s_cmp_gt_i32 s2, 2618327; GFX10-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18328; GFX10-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]18329; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18330; GFX10-NEXT:    v_add_f64 v[8:9], v[4:5], 1.018331; GFX10-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc_lo18332; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v8, vcc_lo18333; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618334; GFX10-NEXT:    s_cbranch_scc1 .LBB15_518335; GFX10-NEXT:  ; %bb.6: ; %Flow5018336; GFX10-NEXT:    v_mov_b32_e32 v4, v618337; GFX10-NEXT:    v_mov_b32_e32 v8, s218338; GFX10-NEXT:    v_mov_b32_e32 v5, v718339; GFX10-NEXT:  .LBB15_7: ; %frem.loop_exit2418340; GFX10-NEXT:    v_subrev_nc_u32_e32 v6, 25, v818341; GFX10-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618342; GFX10-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18343; GFX10-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]18344; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18345; GFX10-NEXT:    v_add_f64 v[6:7], v[4:5], 1.018346; GFX10-NEXT:    v_cndmask_b32_e32 v5, v5, v7, vcc_lo18347; GFX10-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc_lo18348; GFX10-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v118349; GFX10-NEXT:  .LBB15_8:18350; GFX10-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.018351; GFX10-NEXT:    s_and_b32 vcc_lo, exec_lo, s218352; GFX10-NEXT:    s_cbranch_vccz .LBB15_1018353; GFX10-NEXT:  ; %bb.9: ; %frem.else18354; GFX10-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.018355; GFX10-NEXT:    v_and_b32_e32 v6, 0x80000000, v318356; GFX10-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo18357; GFX10-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo18358; GFX10-NEXT:    s_cbranch_execz .LBB15_1118359; GFX10-NEXT:    s_branch .LBB15_1618360; GFX10-NEXT:  .LBB15_10:18361; GFX10-NEXT:    ; implicit-def: $vgpr6_vgpr718362; GFX10-NEXT:  .LBB15_11: ; %frem.compute18363; GFX10-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18364; GFX10-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18365; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618366; GFX10-NEXT:    v_add_nc_u32_e32 v10, -1, v818367; GFX10-NEXT:    v_readfirstlane_b32 s2, v818368; GFX10-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1018369; GFX10-NEXT:    s_cbranch_vccnz .LBB15_1518370; GFX10-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18371; GFX10-NEXT:    s_add_i32 s2, s2, 2518372; GFX10-NEXT:  .LBB15_13: ; %frem.loop_body18373; GFX10-NEXT:    ; =>This Inner Loop Header: Depth=118374; GFX10-NEXT:    v_mov_b32_e32 v9, v718375; GFX10-NEXT:    v_mov_b32_e32 v8, v618376; GFX10-NEXT:    s_sub_i32 s2, s2, 2618377; GFX10-NEXT:    s_cmp_gt_i32 s2, 2618378; GFX10-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18379; GFX10-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18380; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18381; GFX10-NEXT:    v_add_f64 v[10:11], v[6:7], 1.018382; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v11, vcc_lo18383; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v10, vcc_lo18384; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618385; GFX10-NEXT:    s_cbranch_scc1 .LBB15_1318386; GFX10-NEXT:  ; %bb.14: ; %Flow18387; GFX10-NEXT:    v_mov_b32_e32 v6, v818388; GFX10-NEXT:    v_mov_b32_e32 v10, s218389; GFX10-NEXT:    v_mov_b32_e32 v7, v918390; GFX10-NEXT:  .LBB15_15: ; %frem.loop_exit18391; GFX10-NEXT:    v_subrev_nc_u32_e32 v8, 25, v1018392; GFX10-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818393; GFX10-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18394; GFX10-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18395; GFX10-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18396; GFX10-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018397; GFX10-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc_lo18398; GFX10-NEXT:    v_cndmask_b32_e32 v6, v6, v8, vcc_lo18399; GFX10-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v318400; GFX10-NEXT:  .LBB15_16: ; %Flow4918401; GFX10-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|18402; GFX10-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo18403; GFX10-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo18404; GFX10-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|18405; GFX10-NEXT:    v_mov_b32_e32 v4, 018406; GFX10-NEXT:    v_cndmask_b32_e32 v3, 0x7ff80000, v7, vcc_lo18407; GFX10-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc_lo18408; GFX10-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]18409; GFX10-NEXT:    s_endpgm18410;18411; GFX11-LABEL: frem_v2f64_const_one_denum:18412; GFX11:       ; %bb.0:18413; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2418414; GFX11-NEXT:    v_mov_b32_e32 v0, 018415; GFX11-NEXT:    s_waitcnt lgkmcnt(0)18416; GFX11-NEXT:    global_load_b128 v[0:3], v0, s[2:3]18417; GFX11-NEXT:    s_waitcnt vmcnt(0)18418; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, 1.018419; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s218420; GFX11-NEXT:    s_cbranch_vccz .LBB15_218421; GFX11-NEXT:  ; %bb.1: ; %frem.else1618422; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.018423; GFX11-NEXT:    v_and_b32_e32 v4, 0x80000000, v118424; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18425; GFX11-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo18426; GFX11-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo18427; GFX11-NEXT:    s_cbranch_execz .LBB15_318428; GFX11-NEXT:    s_branch .LBB15_818429; GFX11-NEXT:  .LBB15_2:18430; GFX11-NEXT:    ; implicit-def: $vgpr4_vgpr518431; GFX11-NEXT:  .LBB15_3: ; %frem.compute1518432; GFX11-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18433; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18434; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18435; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618436; GFX11-NEXT:    v_add_nc_u32_e32 v8, -1, v618437; GFX11-NEXT:    v_readfirstlane_b32 s2, v618438; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)18439; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v818440; GFX11-NEXT:    s_cbranch_vccnz .LBB15_718441; GFX11-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18442; GFX11-NEXT:    s_add_i32 s2, s2, 2518443; GFX11-NEXT:  .LBB15_5: ; %frem.loop_body2318444; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=118445; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)18446; GFX11-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v418447; GFX11-NEXT:    s_sub_i32 s2, s2, 2618448; GFX11-NEXT:    s_cmp_gt_i32 s2, 2618449; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18450; GFX11-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18451; GFX11-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]18452; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18453; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18454; GFX11-NEXT:    v_add_f64 v[8:9], v[4:5], 1.018455; GFX11-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v818456; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)18457; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618458; GFX11-NEXT:    s_cbranch_scc1 .LBB15_518459; GFX11-NEXT:  ; %bb.6: ; %Flow5018460; GFX11-NEXT:    v_mov_b32_e32 v4, v618461; GFX11-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v718462; GFX11-NEXT:  .LBB15_7: ; %frem.loop_exit2418463; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18464; GFX11-NEXT:    v_subrev_nc_u32_e32 v6, 25, v818465; GFX11-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618466; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18467; GFX11-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18468; GFX11-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]18469; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18470; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18471; GFX11-NEXT:    v_add_f64 v[6:7], v[4:5], 1.018472; GFX11-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v718473; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)18474; GFX11-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v118475; GFX11-NEXT:  .LBB15_8:18476; GFX11-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.018477; GFX11-NEXT:    s_and_b32 vcc_lo, exec_lo, s218478; GFX11-NEXT:    s_cbranch_vccz .LBB15_1018479; GFX11-NEXT:  ; %bb.9: ; %frem.else18480; GFX11-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.018481; GFX11-NEXT:    v_and_b32_e32 v6, 0x80000000, v318482; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18483; GFX11-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo18484; GFX11-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo18485; GFX11-NEXT:    s_cbranch_execz .LBB15_1118486; GFX11-NEXT:    s_branch .LBB15_1618487; GFX11-NEXT:  .LBB15_10:18488; GFX11-NEXT:    ; implicit-def: $vgpr6_vgpr718489; GFX11-NEXT:  .LBB15_11: ; %frem.compute18490; GFX11-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18491; GFX11-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18492; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18493; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618494; GFX11-NEXT:    v_add_nc_u32_e32 v10, -1, v818495; GFX11-NEXT:    v_readfirstlane_b32 s2, v818496; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)18497; GFX11-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1018498; GFX11-NEXT:    s_cbranch_vccnz .LBB15_1518499; GFX11-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18500; GFX11-NEXT:    s_add_i32 s2, s2, 2518501; GFX11-NEXT:  .LBB15_13: ; %frem.loop_body18502; GFX11-NEXT:    ; =>This Inner Loop Header: Depth=118503; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)18504; GFX11-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v618505; GFX11-NEXT:    s_sub_i32 s2, s2, 2618506; GFX11-NEXT:    s_cmp_gt_i32 s2, 2618507; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18508; GFX11-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18509; GFX11-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18510; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18511; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18512; GFX11-NEXT:    v_add_f64 v[10:11], v[6:7], 1.018513; GFX11-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v1018514; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)18515; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618516; GFX11-NEXT:    s_cbranch_scc1 .LBB15_1318517; GFX11-NEXT:  ; %bb.14: ; %Flow18518; GFX11-NEXT:    v_mov_b32_e32 v6, v818519; GFX11-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v918520; GFX11-NEXT:  .LBB15_15: ; %frem.loop_exit18521; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18522; GFX11-NEXT:    v_subrev_nc_u32_e32 v8, 25, v1018523; GFX11-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818524; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18525; GFX11-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18526; GFX11-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18527; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18528; GFX11-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18529; GFX11-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018530; GFX11-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v918531; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)18532; GFX11-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v318533; GFX11-NEXT:  .LBB15_16: ; %Flow4918534; GFX11-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|18535; GFX11-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo18536; GFX11-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo18537; GFX11-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|18538; GFX11-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_cndmask_b32 v3, 0x7ff80000, v718539; GFX11-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc_lo18540; GFX11-NEXT:    global_store_b128 v4, v[0:3], s[0:1]18541; GFX11-NEXT:    s_endpgm18542;18543; GFX1150-LABEL: frem_v2f64_const_one_denum:18544; GFX1150:       ; %bb.0:18545; GFX1150-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2418546; GFX1150-NEXT:    v_mov_b32_e32 v0, 018547; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)18548; GFX1150-NEXT:    global_load_b128 v[0:3], v0, s[2:3]18549; GFX1150-NEXT:    s_waitcnt vmcnt(0)18550; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, 1.018551; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s218552; GFX1150-NEXT:    s_cbranch_vccz .LBB15_218553; GFX1150-NEXT:  ; %bb.1: ; %frem.else1618554; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.018555; GFX1150-NEXT:    v_and_b32_e32 v4, 0x80000000, v118556; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18557; GFX1150-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo18558; GFX1150-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo18559; GFX1150-NEXT:    s_cbranch_execz .LBB15_318560; GFX1150-NEXT:    s_branch .LBB15_818561; GFX1150-NEXT:  .LBB15_2:18562; GFX1150-NEXT:    ; implicit-def: $vgpr4_vgpr518563; GFX1150-NEXT:  .LBB15_3: ; %frem.compute1518564; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18565; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18566; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18567; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618568; GFX1150-NEXT:    v_add_nc_u32_e32 v8, -1, v618569; GFX1150-NEXT:    v_readfirstlane_b32 s2, v618570; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)18571; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v818572; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_718573; GFX1150-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18574; GFX1150-NEXT:    s_add_i32 s2, s2, 2518575; GFX1150-NEXT:  .LBB15_5: ; %frem.loop_body2318576; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=118577; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)18578; GFX1150-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v418579; GFX1150-NEXT:    s_sub_i32 s2, s2, 2618580; GFX1150-NEXT:    s_cmp_gt_i32 s2, 2618581; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18582; GFX1150-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18583; GFX1150-NEXT:    v_add_f64 v[4:5], v[6:7], -v[4:5]18584; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18585; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18586; GFX1150-NEXT:    v_add_f64 v[8:9], v[4:5], 1.018587; GFX1150-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v818588; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)18589; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618590; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_518591; GFX1150-NEXT:  ; %bb.6: ; %Flow5018592; GFX1150-NEXT:    v_mov_b32_e32 v4, v618593; GFX1150-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v718594; GFX1150-NEXT:  .LBB15_7: ; %frem.loop_exit2418595; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18596; GFX1150-NEXT:    v_subrev_nc_u32_e32 v6, 25, v818597; GFX1150-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618598; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18599; GFX1150-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18600; GFX1150-NEXT:    v_add_f64 v[4:5], v[4:5], -v[6:7]18601; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18602; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18603; GFX1150-NEXT:    v_add_f64 v[6:7], v[4:5], 1.018604; GFX1150-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v718605; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)18606; GFX1150-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v118607; GFX1150-NEXT:  .LBB15_8:18608; GFX1150-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.018609; GFX1150-NEXT:    s_and_b32 vcc_lo, exec_lo, s218610; GFX1150-NEXT:    s_cbranch_vccz .LBB15_1018611; GFX1150-NEXT:  ; %bb.9: ; %frem.else18612; GFX1150-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.018613; GFX1150-NEXT:    v_and_b32_e32 v6, 0x80000000, v318614; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18615; GFX1150-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo18616; GFX1150-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo18617; GFX1150-NEXT:    s_cbranch_execz .LBB15_1118618; GFX1150-NEXT:    s_branch .LBB15_1618619; GFX1150-NEXT:  .LBB15_10:18620; GFX1150-NEXT:    ; implicit-def: $vgpr6_vgpr718621; GFX1150-NEXT:  .LBB15_11: ; %frem.compute18622; GFX1150-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18623; GFX1150-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18624; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18625; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618626; GFX1150-NEXT:    v_add_nc_u32_e32 v10, -1, v818627; GFX1150-NEXT:    v_readfirstlane_b32 s2, v818628; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_2)18629; GFX1150-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1018630; GFX1150-NEXT:    s_cbranch_vccnz .LBB15_1518631; GFX1150-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18632; GFX1150-NEXT:    s_add_i32 s2, s2, 2518633; GFX1150-NEXT:  .LBB15_13: ; %frem.loop_body18634; GFX1150-NEXT:    ; =>This Inner Loop Header: Depth=118635; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)18636; GFX1150-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v618637; GFX1150-NEXT:    s_sub_i32 s2, s2, 2618638; GFX1150-NEXT:    s_cmp_gt_i32 s2, 2618639; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18640; GFX1150-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18641; GFX1150-NEXT:    v_add_f64 v[6:7], v[8:9], -v[6:7]18642; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18643; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18644; GFX1150-NEXT:    v_add_f64 v[10:11], v[6:7], 1.018645; GFX1150-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v1018646; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)18647; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618648; GFX1150-NEXT:    s_cbranch_scc1 .LBB15_1318649; GFX1150-NEXT:  ; %bb.14: ; %Flow18650; GFX1150-NEXT:    v_mov_b32_e32 v6, v818651; GFX1150-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v918652; GFX1150-NEXT:  .LBB15_15: ; %frem.loop_exit18653; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18654; GFX1150-NEXT:    v_subrev_nc_u32_e32 v8, 25, v1018655; GFX1150-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818656; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18657; GFX1150-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18658; GFX1150-NEXT:    v_add_f64 v[6:7], v[6:7], -v[8:9]18659; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)18660; GFX1150-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18661; GFX1150-NEXT:    v_add_f64 v[8:9], v[6:7], 1.018662; GFX1150-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v918663; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)18664; GFX1150-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v318665; GFX1150-NEXT:  .LBB15_16: ; %Flow4918666; GFX1150-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|18667; GFX1150-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo18668; GFX1150-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo18669; GFX1150-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|18670; GFX1150-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_cndmask_b32 v3, 0x7ff80000, v718671; GFX1150-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc_lo18672; GFX1150-NEXT:    global_store_b128 v4, v[0:3], s[0:1]18673; GFX1150-NEXT:    s_endpgm18674;18675; GFX1200-LABEL: frem_v2f64_const_one_denum:18676; GFX1200:       ; %bb.0:18677; GFX1200-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2418678; GFX1200-NEXT:    v_mov_b32_e32 v0, 018679; GFX1200-NEXT:    s_wait_kmcnt 0x018680; GFX1200-NEXT:    global_load_b128 v[0:3], v0, s[2:3]18681; GFX1200-NEXT:    s_wait_loadcnt 0x018682; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[0:1]|, 1.018683; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s218684; GFX1200-NEXT:    s_cbranch_vccz .LBB15_218685; GFX1200-NEXT:  ; %bb.1: ; %frem.else1618686; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[0:1]|, 1.018687; GFX1200-NEXT:    v_and_b32_e32 v4, 0x80000000, v118688; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18689; GFX1200-NEXT:    v_cndmask_b32_e32 v5, v1, v4, vcc_lo18690; GFX1200-NEXT:    v_cndmask_b32_e64 v4, v0, 0, vcc_lo18691; GFX1200-NEXT:    s_cbranch_execz .LBB15_318692; GFX1200-NEXT:    s_branch .LBB15_818693; GFX1200-NEXT:  .LBB15_2:18694; GFX1200-NEXT:    ; implicit-def: $vgpr4_vgpr518695; GFX1200-NEXT:  .LBB15_3: ; %frem.compute1518696; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[4:5], |v[0:1]|18697; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v6, v[0:1]18698; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18699; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618700; GFX1200-NEXT:    v_add_nc_u32_e32 v8, -1, v618701; GFX1200-NEXT:    v_readfirstlane_b32 s2, v618702; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)18703; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v818704; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_718705; GFX1200-NEXT:  ; %bb.4: ; %frem.loop_body23.preheader18706; GFX1200-NEXT:    s_add_co_i32 s2, s2, 2518707; GFX1200-NEXT:  .LBB15_5: ; %frem.loop_body2318708; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=118709; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)18710; GFX1200-NEXT:    v_dual_mov_b32 v7, v5 :: v_dual_mov_b32 v6, v418711; GFX1200-NEXT:    s_sub_co_i32 s2, s2, 2618712; GFX1200-NEXT:    s_cmp_gt_i32 s2, 2618713; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18714; GFX1200-NEXT:    v_rndne_f64_e32 v[4:5], v[6:7]18715; GFX1200-NEXT:    v_add_f64_e64 v[4:5], v[6:7], -v[4:5]18716; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)18717; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18718; GFX1200-NEXT:    v_add_f64_e32 v[8:9], 1.0, v[4:5]18719; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18720; GFX1200-NEXT:    v_dual_cndmask_b32 v5, v5, v9 :: v_dual_cndmask_b32 v4, v4, v818721; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)18722; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], 2618723; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_518724; GFX1200-NEXT:  ; %bb.6: ; %Flow5018725; GFX1200-NEXT:    v_mov_b32_e32 v4, v618726; GFX1200-NEXT:    v_dual_mov_b32 v8, s2 :: v_dual_mov_b32 v5, v718727; GFX1200-NEXT:  .LBB15_7: ; %frem.loop_exit2418728; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18729; GFX1200-NEXT:    v_subrev_nc_u32_e32 v6, 25, v818730; GFX1200-NEXT:    v_ldexp_f64 v[4:5], v[4:5], v618731; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18732; GFX1200-NEXT:    v_rndne_f64_e32 v[6:7], v[4:5]18733; GFX1200-NEXT:    v_add_f64_e64 v[4:5], v[4:5], -v[6:7]18734; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)18735; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[4:5]18736; GFX1200-NEXT:    v_add_f64_e32 v[6:7], 1.0, v[4:5]18737; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18738; GFX1200-NEXT:    v_dual_cndmask_b32 v4, v4, v6 :: v_dual_cndmask_b32 v5, v5, v718739; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)18740; GFX1200-NEXT:    v_bfi_b32 v5, 0x7fffffff, v5, v118741; GFX1200-NEXT:  .LBB15_8:18742; GFX1200-NEXT:    v_cmp_ngt_f64_e64 s2, |v[2:3]|, 1.018743; GFX1200-NEXT:    s_and_b32 vcc_lo, exec_lo, s218744; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)18745; GFX1200-NEXT:    s_cbranch_vccz .LBB15_1018746; GFX1200-NEXT:  ; %bb.9: ; %frem.else18747; GFX1200-NEXT:    v_cmp_eq_f64_e64 vcc_lo, |v[2:3]|, 1.018748; GFX1200-NEXT:    v_and_b32_e32 v6, 0x80000000, v318749; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18750; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)18751; GFX1200-NEXT:    v_cndmask_b32_e32 v7, v3, v6, vcc_lo18752; GFX1200-NEXT:    v_cndmask_b32_e64 v6, v2, 0, vcc_lo18753; GFX1200-NEXT:    s_cbranch_execz .LBB15_1118754; GFX1200-NEXT:    s_branch .LBB15_1618755; GFX1200-NEXT:  .LBB15_10:18756; GFX1200-NEXT:    ; implicit-def: $vgpr6_vgpr718757; GFX1200-NEXT:  .LBB15_11: ; %frem.compute18758; GFX1200-NEXT:    v_frexp_mant_f64_e64 v[6:7], |v[2:3]|18759; GFX1200-NEXT:    v_frexp_exp_i32_f64_e32 v8, v[2:3]18760; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)18761; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618762; GFX1200-NEXT:    v_add_nc_u32_e32 v10, -1, v818763; GFX1200-NEXT:    v_readfirstlane_b32 s2, v818764; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_2)18765; GFX1200-NEXT:    v_cmp_gt_i32_e32 vcc_lo, 27, v1018766; GFX1200-NEXT:    s_cbranch_vccnz .LBB15_1518767; GFX1200-NEXT:  ; %bb.12: ; %frem.loop_body.preheader18768; GFX1200-NEXT:    s_add_co_i32 s2, s2, 2518769; GFX1200-NEXT:  .LBB15_13: ; %frem.loop_body18770; GFX1200-NEXT:    ; =>This Inner Loop Header: Depth=118771; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)18772; GFX1200-NEXT:    v_dual_mov_b32 v9, v7 :: v_dual_mov_b32 v8, v618773; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)18774; GFX1200-NEXT:    s_sub_co_i32 s2, s2, 2618775; GFX1200-NEXT:    s_wait_alu depctr_sa_sdst(0)18776; GFX1200-NEXT:    s_cmp_gt_i32 s2, 2618777; GFX1200-NEXT:    v_rndne_f64_e32 v[6:7], v[8:9]18778; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18779; GFX1200-NEXT:    v_add_f64_e64 v[6:7], v[8:9], -v[6:7]18780; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18781; GFX1200-NEXT:    v_add_f64_e32 v[10:11], 1.0, v[6:7]18782; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18783; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18784; GFX1200-NEXT:    v_dual_cndmask_b32 v7, v7, v11 :: v_dual_cndmask_b32 v6, v6, v1018785; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], 2618786; GFX1200-NEXT:    s_cbranch_scc1 .LBB15_1318787; GFX1200-NEXT:  ; %bb.14: ; %Flow18788; GFX1200-NEXT:    v_mov_b32_e32 v6, v818789; GFX1200-NEXT:    v_dual_mov_b32 v10, s2 :: v_dual_mov_b32 v7, v918790; GFX1200-NEXT:  .LBB15_15: ; %frem.loop_exit18791; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18792; GFX1200-NEXT:    v_subrev_nc_u32_e32 v8, 25, v1018793; GFX1200-NEXT:    v_ldexp_f64 v[6:7], v[6:7], v818794; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)18795; GFX1200-NEXT:    v_rndne_f64_e32 v[8:9], v[6:7]18796; GFX1200-NEXT:    v_add_f64_e64 v[6:7], v[6:7], -v[8:9]18797; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_2) | instid1(VALU_DEP_1)18798; GFX1200-NEXT:    v_cmp_gt_f64_e32 vcc_lo, 0, v[6:7]18799; GFX1200-NEXT:    v_add_f64_e32 v[8:9], 1.0, v[6:7]18800; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18801; GFX1200-NEXT:    v_dual_cndmask_b32 v6, v6, v8 :: v_dual_cndmask_b32 v7, v7, v918802; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)18803; GFX1200-NEXT:    v_bfi_b32 v7, 0x7fffffff, v7, v318804; GFX1200-NEXT:  .LBB15_16: ; %Flow4918805; GFX1200-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[0:1]|18806; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18807; GFX1200-NEXT:    v_cndmask_b32_e32 v1, 0x7ff80000, v5, vcc_lo18808; GFX1200-NEXT:    v_cndmask_b32_e32 v0, 0, v4, vcc_lo18809; GFX1200-NEXT:    v_cmp_nle_f64_e64 vcc_lo, 0x7ff00000, |v[2:3]|18810; GFX1200-NEXT:    s_wait_alu depctr_va_vcc(0)18811; GFX1200-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_cndmask_b32 v3, 0x7ff80000, v718812; GFX1200-NEXT:    v_cndmask_b32_e32 v2, 0, v6, vcc_lo18813; GFX1200-NEXT:    global_store_b128 v4, v[0:3], s[0:1]18814; GFX1200-NEXT:    s_endpgm18815   %r0 = load <2 x double>, ptr addrspace(1) %in, align 1618816   %r1 = frem  <2 x double> %r0, <double 1.0, double 1.0>18817   store <2 x double> %r1, ptr addrspace(1) %out, align 1618818   ret void18819}18820 18821define amdgpu_kernel void @frem_v2f64_const(ptr addrspace(1) %out) #0 {18822; SI-LABEL: frem_v2f64_const:18823; SI:       ; %bb.0:18824; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x918825; SI-NEXT:    s_mov_b32 s3, 0xf00018826; SI-NEXT:    s_mov_b32 s2, -118827; SI-NEXT:    v_mov_b32_e32 v0, 018828; SI-NEXT:    v_mov_b32_e32 v1, 0x3ff0000018829; SI-NEXT:    v_mov_b32_e32 v2, v018830; SI-NEXT:    v_mov_b32_e32 v3, v018831; SI-NEXT:    s_waitcnt lgkmcnt(0)18832; SI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 018833; SI-NEXT:    s_endpgm18834;18835; CI-LABEL: frem_v2f64_const:18836; CI:       ; %bb.0:18837; CI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x918838; CI-NEXT:    v_mov_b32_e32 v0, 018839; CI-NEXT:    s_mov_b32 s3, 0xf00018840; CI-NEXT:    s_mov_b32 s2, -118841; CI-NEXT:    v_mov_b32_e32 v1, 0x3ff0000018842; CI-NEXT:    v_mov_b32_e32 v2, v018843; CI-NEXT:    v_mov_b32_e32 v3, v018844; CI-NEXT:    s_waitcnt lgkmcnt(0)18845; CI-NEXT:    buffer_store_dwordx4 v[0:3], off, s[0:3], 018846; CI-NEXT:    s_endpgm18847;18848; VI-LABEL: frem_v2f64_const:18849; VI:       ; %bb.0:18850; VI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2418851; VI-NEXT:    v_mov_b32_e32 v0, 018852; VI-NEXT:    v_mov_b32_e32 v1, 0x3ff0000018853; VI-NEXT:    v_mov_b32_e32 v2, v018854; VI-NEXT:    v_mov_b32_e32 v3, v018855; VI-NEXT:    s_waitcnt lgkmcnt(0)18856; VI-NEXT:    v_mov_b32_e32 v5, s118857; VI-NEXT:    v_mov_b32_e32 v4, s018858; VI-NEXT:    flat_store_dwordx4 v[4:5], v[0:3]18859; VI-NEXT:    s_endpgm18860;18861; GFX9-LABEL: frem_v2f64_const:18862; GFX9:       ; %bb.0:18863; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2418864; GFX9-NEXT:    v_mov_b32_e32 v0, 018865; GFX9-NEXT:    v_mov_b32_e32 v1, 0x3ff0000018866; GFX9-NEXT:    v_mov_b32_e32 v2, v018867; GFX9-NEXT:    v_mov_b32_e32 v3, v018868; GFX9-NEXT:    s_waitcnt lgkmcnt(0)18869; GFX9-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]18870; GFX9-NEXT:    s_endpgm18871;18872; GFX10-LABEL: frem_v2f64_const:18873; GFX10:       ; %bb.0:18874; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x2418875; GFX10-NEXT:    v_mov_b32_e32 v0, 018876; GFX10-NEXT:    v_mov_b32_e32 v1, 0x3ff0000018877; GFX10-NEXT:    v_mov_b32_e32 v2, v018878; GFX10-NEXT:    v_mov_b32_e32 v3, v018879; GFX10-NEXT:    s_waitcnt lgkmcnt(0)18880; GFX10-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]18881; GFX10-NEXT:    s_endpgm18882;18883; GFX11-LABEL: frem_v2f64_const:18884; GFX11:       ; %bb.0:18885; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2418886; GFX11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0x3ff0000018887; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)18888; GFX11-NEXT:    v_mov_b32_e32 v2, v018889; GFX11-NEXT:    v_mov_b32_e32 v3, v018890; GFX11-NEXT:    s_waitcnt lgkmcnt(0)18891; GFX11-NEXT:    global_store_b128 v0, v[0:3], s[0:1]18892; GFX11-NEXT:    s_endpgm18893;18894; GFX1150-LABEL: frem_v2f64_const:18895; GFX1150:       ; %bb.0:18896; GFX1150-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2418897; GFX1150-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0x3ff0000018898; GFX1150-NEXT:    s_delay_alu instid0(VALU_DEP_1)18899; GFX1150-NEXT:    v_mov_b32_e32 v2, v018900; GFX1150-NEXT:    v_mov_b32_e32 v3, v018901; GFX1150-NEXT:    s_waitcnt lgkmcnt(0)18902; GFX1150-NEXT:    global_store_b128 v0, v[0:3], s[0:1]18903; GFX1150-NEXT:    s_endpgm18904;18905; GFX1200-LABEL: frem_v2f64_const:18906; GFX1200:       ; %bb.0:18907; GFX1200-NEXT:    s_load_b64 s[0:1], s[4:5], 0x2418908; GFX1200-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0x3ff0000018909; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)18910; GFX1200-NEXT:    v_dual_mov_b32 v2, v0 :: v_dual_mov_b32 v3, v018911; GFX1200-NEXT:    s_wait_kmcnt 0x018912; GFX1200-NEXT:    global_store_b128 v0, v[0:3], s[0:1]18913; GFX1200-NEXT:    s_endpgm18914   %r0 = frem  <2 x double> <double 1.0, double 1.0>, <double 2.0, double 1.0>18915   store <2 x double> %r0, ptr addrspace(1) %out, align 1618916   ret void18917}18918 18919 18920 18921attributes #0 = { nounwind "denormal-fp-math-f32"="preserve-sign,preserve-sign" }18922