2802 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -amdgpu-codegenprepare-disable-idiv-expansion=1 -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii -denormal-fp-math-f32=preserve-sign < %s | FileCheck -check-prefixes=CHECK,GISEL %s3; RUN: llc -global-isel -amdgpu-codegenprepare-disable-idiv-expansion=0 -mtriple=amdgcn-mesa-mesa3d -mcpu=hawaii -denormal-fp-math-f32=preserve-sign < %s | FileCheck -check-prefixes=CHECK,CGP %s4 5; The same 32-bit expansion is implemented in the legalizer and in AMDGPUCodeGenPrepare.6 7define i64 @v_sdiv_i64(i64 %num, i64 %den) {8; CHECK-LABEL: v_sdiv_i64:9; CHECK: ; %bb.0:10; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; CHECK-NEXT: v_mov_b32_e32 v5, v112; CHECK-NEXT: v_mov_b32_e32 v4, v013; CHECK-NEXT: v_or_b32_e32 v1, v5, v314; CHECK-NEXT: v_mov_b32_e32 v0, 015; CHECK-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]16; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr117; CHECK-NEXT: s_and_saveexec_b64 s[4:5], vcc18; CHECK-NEXT: s_xor_b64 s[6:7], exec, s[4:5]19; CHECK-NEXT: s_cbranch_execnz .LBB0_320; CHECK-NEXT: ; %bb.1: ; %Flow21; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]22; CHECK-NEXT: s_cbranch_execnz .LBB0_423; CHECK-NEXT: .LBB0_2:24; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]25; CHECK-NEXT: s_setpc_b64 s[30:31]26; CHECK-NEXT: .LBB0_3:27; CHECK-NEXT: v_ashrrev_i32_e32 v0, 31, v328; CHECK-NEXT: v_add_i32_e32 v1, vcc, v2, v029; CHECK-NEXT: v_addc_u32_e32 v3, vcc, v3, v0, vcc30; CHECK-NEXT: v_xor_b32_e32 v2, v1, v031; CHECK-NEXT: v_xor_b32_e32 v1, v3, v032; CHECK-NEXT: v_cvt_f32_u32_e32 v3, v233; CHECK-NEXT: v_cvt_f32_u32_e32 v6, v134; CHECK-NEXT: v_sub_i32_e32 v13, vcc, 0, v235; CHECK-NEXT: v_subb_u32_e32 v14, vcc, 0, v1, vcc36; CHECK-NEXT: v_mac_f32_e32 v3, 0x4f800000, v637; CHECK-NEXT: v_rcp_iflag_f32_e32 v3, v338; CHECK-NEXT: v_mul_f32_e32 v3, 0x5f7ffffc, v339; CHECK-NEXT: v_mul_f32_e32 v6, 0x2f800000, v340; CHECK-NEXT: v_trunc_f32_e32 v6, v641; CHECK-NEXT: v_mac_f32_e32 v3, 0xcf800000, v642; CHECK-NEXT: v_cvt_u32_f32_e32 v3, v343; CHECK-NEXT: v_cvt_u32_f32_e32 v12, v644; CHECK-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v13, v3, 045; CHECK-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v13, v12, v[7:8]46; CHECK-NEXT: v_mul_lo_u32 v7, v12, v647; CHECK-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v14, v3, v[8:9]48; CHECK-NEXT: v_mul_hi_u32 v8, v3, v649; CHECK-NEXT: v_mul_hi_u32 v6, v12, v650; CHECK-NEXT: v_mul_lo_u32 v9, v3, v1051; CHECK-NEXT: v_mul_lo_u32 v11, v12, v1052; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v953; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc54; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v855; CHECK-NEXT: v_mul_hi_u32 v8, v3, v1056; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc57; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v758; CHECK-NEXT: v_add_i32_e32 v6, vcc, v11, v659; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc60; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v861; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc62; CHECK-NEXT: v_add_i32_e32 v8, vcc, v9, v863; CHECK-NEXT: v_mul_hi_u32 v9, v12, v1064; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v765; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc66; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v767; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v768; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v669; CHECK-NEXT: v_addc_u32_e32 v12, vcc, v12, v7, vcc70; CHECK-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v13, v3, 071; CHECK-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v13, v12, v[7:8]72; CHECK-NEXT: v_ashrrev_i32_e32 v13, 31, v573; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v1374; CHECK-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v14, v3, v[8:9]75; CHECK-NEXT: v_addc_u32_e32 v5, vcc, v5, v13, vcc76; CHECK-NEXT: v_xor_b32_e32 v9, v4, v1377; CHECK-NEXT: v_mul_lo_u32 v4, v12, v678; CHECK-NEXT: v_mul_lo_u32 v7, v3, v1079; CHECK-NEXT: v_xor_b32_e32 v11, v5, v1380; CHECK-NEXT: v_mul_hi_u32 v5, v3, v681; CHECK-NEXT: v_mul_hi_u32 v6, v12, v682; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v783; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc84; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v585; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc86; CHECK-NEXT: v_mul_lo_u32 v5, v12, v1087; CHECK-NEXT: v_add_i32_e32 v4, vcc, v7, v488; CHECK-NEXT: v_mul_hi_u32 v7, v3, v1089; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v690; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc91; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v792; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc93; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v794; CHECK-NEXT: v_mul_hi_u32 v7, v12, v1095; CHECK-NEXT: v_add_i32_e32 v4, vcc, v5, v496; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc97; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v598; CHECK-NEXT: v_add_i32_e32 v5, vcc, v7, v599; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v4100; CHECK-NEXT: v_addc_u32_e32 v4, vcc, v12, v5, vcc101; CHECK-NEXT: v_mul_lo_u32 v5, v11, v3102; CHECK-NEXT: v_mul_lo_u32 v6, v9, v4103; CHECK-NEXT: v_mul_hi_u32 v7, v9, v3104; CHECK-NEXT: v_mul_hi_u32 v3, v11, v3105; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v6106; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc107; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v7108; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc109; CHECK-NEXT: v_mul_lo_u32 v7, v11, v4110; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v5111; CHECK-NEXT: v_mul_hi_u32 v6, v9, v4112; CHECK-NEXT: v_add_i32_e32 v3, vcc, v7, v3113; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc114; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v6115; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc116; CHECK-NEXT: v_add_i32_e32 v6, vcc, v7, v6117; CHECK-NEXT: v_add_i32_e32 v10, vcc, v3, v5118; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc119; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v3120; CHECK-NEXT: v_mul_hi_u32 v6, v11, v4121; CHECK-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v2, v10, 0122; CHECK-NEXT: v_add_i32_e32 v12, vcc, v6, v5123; CHECK-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v2, v12, v[4:5]124; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v9, v3125; CHECK-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v1, v10, v[5:6]126; CHECK-NEXT: v_subb_u32_e64 v4, s[4:5], v11, v7, vcc127; CHECK-NEXT: v_sub_i32_e64 v5, s[4:5], v11, v7128; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v4, v1129; CHECK-NEXT: v_subb_u32_e32 v5, vcc, v5, v1, vcc130; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]131; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v2132; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v3, v2133; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]134; CHECK-NEXT: v_cmp_eq_u32_e64 s[4:5], v4, v1135; CHECK-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc136; CHECK-NEXT: v_cndmask_b32_e64 v4, v6, v7, s[4:5]137; CHECK-NEXT: v_add_i32_e32 v6, vcc, 1, v10138; CHECK-NEXT: v_addc_u32_e32 v7, vcc, 0, v12, vcc139; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v5, v1140; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, -1, vcc141; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2142; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc143; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v5, v1144; CHECK-NEXT: v_cndmask_b32_e32 v1, v8, v2, vcc145; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v6146; CHECK-NEXT: v_addc_u32_e32 v3, vcc, 0, v7, vcc147; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v1148; CHECK-NEXT: v_cndmask_b32_e32 v1, v6, v2, vcc149; CHECK-NEXT: v_cndmask_b32_e32 v2, v7, v3, vcc150; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v4151; CHECK-NEXT: v_cndmask_b32_e32 v1, v10, v1, vcc152; CHECK-NEXT: v_xor_b32_e32 v3, v13, v0153; CHECK-NEXT: v_cndmask_b32_e32 v2, v12, v2, vcc154; CHECK-NEXT: v_xor_b32_e32 v0, v1, v3155; CHECK-NEXT: v_xor_b32_e32 v1, v2, v3156; CHECK-NEXT: v_sub_i32_e32 v0, vcc, v0, v3157; CHECK-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc158; CHECK-NEXT: ; implicit-def: $vgpr2159; CHECK-NEXT: ; implicit-def: $vgpr4160; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]161; CHECK-NEXT: s_cbranch_execz .LBB0_2162; CHECK-NEXT: .LBB0_4:163; CHECK-NEXT: v_cvt_f32_u32_e32 v0, v2164; CHECK-NEXT: v_sub_i32_e32 v1, vcc, 0, v2165; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v0166; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0167; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0168; CHECK-NEXT: v_mul_lo_u32 v1, v1, v0169; CHECK-NEXT: v_mul_hi_u32 v1, v0, v1170; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v1171; CHECK-NEXT: v_mul_hi_u32 v0, v4, v0172; CHECK-NEXT: v_mov_b32_e32 v1, 0173; CHECK-NEXT: v_mul_lo_u32 v3, v0, v2174; CHECK-NEXT: v_add_i32_e32 v5, vcc, 1, v0175; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v4, v3176; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2177; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v5, vcc178; CHECK-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v2179; CHECK-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc180; CHECK-NEXT: v_add_i32_e32 v4, vcc, 1, v0181; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2182; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc183; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]184; CHECK-NEXT: s_setpc_b64 s[30:31]185 %result = sdiv i64 %num, %den186 ret i64 %result187}188 189; FIXME: This is a workaround for not handling uniform VGPR case.190declare i32 @llvm.amdgcn.readfirstlane(i32)191 192define amdgpu_ps i64 @s_sdiv_i64(i64 inreg %num, i64 inreg %den) {193; CHECK-LABEL: s_sdiv_i64:194; CHECK: ; %bb.0:195; CHECK-NEXT: s_or_b64 s[0:1], s[2:3], s[4:5]196; CHECK-NEXT: s_mov_b32 s0, 0197; CHECK-NEXT: v_cmp_ne_u64_e64 vcc, s[0:1], 0198; CHECK-NEXT: s_mov_b32 s0, 1199; CHECK-NEXT: s_cbranch_vccz .LBB1_2200; CHECK-NEXT: ; %bb.1:201; CHECK-NEXT: s_ashr_i32 s6, s3, 31202; CHECK-NEXT: s_ashr_i32 s8, s5, 31203; CHECK-NEXT: s_add_u32 s0, s2, s6204; CHECK-NEXT: s_addc_u32 s1, s3, s6205; CHECK-NEXT: s_add_u32 s10, s4, s8206; CHECK-NEXT: s_mov_b32 s9, s8207; CHECK-NEXT: s_addc_u32 s11, s5, s8208; CHECK-NEXT: s_xor_b64 s[10:11], s[10:11], s[8:9]209; CHECK-NEXT: v_cvt_f32_u32_e32 v0, s10210; CHECK-NEXT: v_cvt_f32_u32_e32 v1, s11211; CHECK-NEXT: s_mov_b32 s7, s6212; CHECK-NEXT: s_xor_b64 s[12:13], s[0:1], s[6:7]213; CHECK-NEXT: s_sub_u32 s3, 0, s10214; CHECK-NEXT: v_mac_f32_e32 v0, 0x4f800000, v1215; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v0216; CHECK-NEXT: s_subb_u32 s5, 0, s11217; CHECK-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v0218; CHECK-NEXT: v_mul_f32_e32 v1, 0x2f800000, v0219; CHECK-NEXT: v_trunc_f32_e32 v1, v1220; CHECK-NEXT: v_mac_f32_e32 v0, 0xcf800000, v1221; CHECK-NEXT: v_cvt_u32_f32_e32 v6, v0222; CHECK-NEXT: v_cvt_u32_f32_e32 v7, v1223; CHECK-NEXT: v_mad_u64_u32 v[0:1], s[0:1], s3, v6, 0224; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[0:1], s3, v7, v[1:2]225; CHECK-NEXT: v_mul_lo_u32 v1, v7, v0226; CHECK-NEXT: v_mad_u64_u32 v[4:5], s[0:1], s5, v6, v[2:3]227; CHECK-NEXT: v_mul_hi_u32 v2, v6, v0228; CHECK-NEXT: v_mul_hi_u32 v0, v7, v0229; CHECK-NEXT: v_mul_lo_u32 v3, v6, v4230; CHECK-NEXT: v_mul_lo_u32 v5, v7, v4231; CHECK-NEXT: v_mul_hi_u32 v8, v6, v4232; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v3233; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc234; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v2235; CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc236; CHECK-NEXT: v_add_i32_e32 v1, vcc, v3, v1237; CHECK-NEXT: v_add_i32_e32 v0, vcc, v5, v0238; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc239; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v8240; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc241; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v3242; CHECK-NEXT: v_mul_hi_u32 v3, v7, v4243; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v1244; CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc245; CHECK-NEXT: v_add_i32_e32 v1, vcc, v2, v1246; CHECK-NEXT: v_add_i32_e32 v1, vcc, v3, v1247; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v0248; CHECK-NEXT: v_addc_u32_e32 v7, vcc, v7, v1, vcc249; CHECK-NEXT: v_mad_u64_u32 v[0:1], s[0:1], s3, v6, 0250; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[0:1], s3, v7, v[1:2]251; CHECK-NEXT: v_mul_lo_u32 v1, v7, v0252; CHECK-NEXT: v_mad_u64_u32 v[4:5], s[0:1], s5, v6, v[2:3]253; CHECK-NEXT: v_mul_hi_u32 v3, v6, v0254; CHECK-NEXT: v_mul_hi_u32 v0, v7, v0255; CHECK-NEXT: v_mul_lo_u32 v2, v6, v4256; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v2257; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc258; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v3259; CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc260; CHECK-NEXT: v_mul_lo_u32 v3, v7, v4261; CHECK-NEXT: v_add_i32_e32 v1, vcc, v2, v1262; CHECK-NEXT: v_mul_hi_u32 v2, v6, v4263; CHECK-NEXT: v_add_i32_e32 v0, vcc, v3, v0264; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc265; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v2266; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc267; CHECK-NEXT: v_add_i32_e32 v2, vcc, v3, v2268; CHECK-NEXT: v_mul_hi_u32 v3, v7, v4269; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v1270; CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc271; CHECK-NEXT: v_add_i32_e32 v1, vcc, v2, v1272; CHECK-NEXT: v_add_i32_e32 v1, vcc, v3, v1273; CHECK-NEXT: v_add_i32_e32 v0, vcc, v6, v0274; CHECK-NEXT: v_addc_u32_e32 v1, vcc, v7, v1, vcc275; CHECK-NEXT: v_mul_lo_u32 v2, s13, v0276; CHECK-NEXT: v_mul_lo_u32 v3, s12, v1277; CHECK-NEXT: v_mul_hi_u32 v4, s12, v0278; CHECK-NEXT: v_mul_hi_u32 v0, s13, v0279; CHECK-NEXT: v_mov_b32_e32 v7, s13280; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v3281; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc282; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v4283; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc284; CHECK-NEXT: v_mul_lo_u32 v4, s13, v1285; CHECK-NEXT: v_add_i32_e32 v2, vcc, v3, v2286; CHECK-NEXT: v_mul_hi_u32 v3, s12, v1287; CHECK-NEXT: v_add_i32_e32 v0, vcc, v4, v0288; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc289; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v3290; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc291; CHECK-NEXT: v_add_i32_e32 v3, vcc, v4, v3292; CHECK-NEXT: v_add_i32_e32 v6, vcc, v0, v2293; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc294; CHECK-NEXT: v_add_i32_e32 v2, vcc, v3, v0295; CHECK-NEXT: v_mul_hi_u32 v3, s13, v1296; CHECK-NEXT: v_mad_u64_u32 v[0:1], s[0:1], s10, v6, 0297; CHECK-NEXT: v_add_i32_e32 v4, vcc, v3, v2298; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[0:1], s10, v4, v[1:2]299; CHECK-NEXT: v_sub_i32_e32 v0, vcc, s12, v0300; CHECK-NEXT: v_mad_u64_u32 v[4:5], s[0:1], s11, v6, v[2:3]301; CHECK-NEXT: v_mov_b32_e32 v1, s11302; CHECK-NEXT: v_subb_u32_e64 v2, s[0:1], v7, v4, vcc303; CHECK-NEXT: v_sub_i32_e64 v3, s[0:1], s13, v4304; CHECK-NEXT: v_cmp_le_u32_e64 s[0:1], s11, v2305; CHECK-NEXT: v_subb_u32_e32 v1, vcc, v3, v1, vcc306; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, -1, s[0:1]307; CHECK-NEXT: v_cmp_le_u32_e64 s[0:1], s10, v0308; CHECK-NEXT: v_subrev_i32_e32 v0, vcc, s10, v0309; CHECK-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v1, vcc310; CHECK-NEXT: v_add_i32_e32 v3, vcc, 1, v6311; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, -1, s[0:1]312; CHECK-NEXT: v_cmp_eq_u32_e64 s[0:1], s11, v2313; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s11, v1314; CHECK-NEXT: v_cndmask_b32_e64 v2, v4, v5, s[0:1]315; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc316; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s10, v0317; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc318; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, s11, v1319; CHECK-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc320; CHECK-NEXT: v_add_i32_e32 v1, vcc, 1, v3321; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0322; CHECK-NEXT: v_cndmask_b32_e32 v0, v3, v1, vcc323; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2324; CHECK-NEXT: v_cndmask_b32_e32 v0, v6, v0, vcc325; CHECK-NEXT: s_xor_b64 s[0:1], s[6:7], s[8:9]326; CHECK-NEXT: v_xor_b32_e32 v0, s0, v0327; CHECK-NEXT: v_subrev_i32_e32 v0, vcc, s0, v0328; CHECK-NEXT: s_mov_b32 s0, 0329; CHECK-NEXT: s_branch .LBB1_3330; CHECK-NEXT: .LBB1_2:331; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr1332; CHECK-NEXT: .LBB1_3: ; %Flow333; CHECK-NEXT: s_xor_b32 s0, s0, 1334; CHECK-NEXT: s_cmp_lg_u32 s0, 0335; CHECK-NEXT: s_cbranch_scc1 .LBB1_5336; CHECK-NEXT: ; %bb.4:337; CHECK-NEXT: v_cvt_f32_u32_e32 v0, s4338; CHECK-NEXT: s_sub_i32 s0, 0, s4339; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v0340; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0341; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0342; CHECK-NEXT: v_mul_lo_u32 v1, s0, v0343; CHECK-NEXT: v_mul_hi_u32 v1, v0, v1344; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v1345; CHECK-NEXT: v_mul_hi_u32 v0, s2, v0346; CHECK-NEXT: v_mul_lo_u32 v1, v0, s4347; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v0348; CHECK-NEXT: v_sub_i32_e32 v1, vcc, s2, v1349; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s4, v1350; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc351; CHECK-NEXT: v_subrev_i32_e64 v2, s[0:1], s4, v1352; CHECK-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc353; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v0354; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s4, v1355; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc356; CHECK-NEXT: .LBB1_5:357; CHECK-NEXT: v_readfirstlane_b32 s0, v0358; CHECK-NEXT: s_mov_b32 s1, s0359; CHECK-NEXT: ; return to shader part epilog360 %result = sdiv i64 %num, %den361 %cast = bitcast i64 %result to <2 x i32>362 %elt.0 = extractelement <2 x i32> %cast, i32 0363 %elt.1 = extractelement <2 x i32> %cast, i32 1364 %res.0 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.0)365 %res.1 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.1)366 %ins.0 = insertelement <2 x i32> poison, i32 %res.0, i32 0367 %ins.1 = insertelement <2 x i32> %ins.0, i32 %res.0, i32 1368 %cast.back = bitcast <2 x i32> %ins.1 to i64369 ret i64 %cast.back370}371 372define <2 x i64> @v_sdiv_v2i64(<2 x i64> %num, <2 x i64> %den) {373; GISEL-LABEL: v_sdiv_v2i64:374; GISEL: ; %bb.0:375; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)376; GISEL-NEXT: v_ashrrev_i32_e32 v8, 31, v5377; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v8378; GISEL-NEXT: v_addc_u32_e32 v5, vcc, v5, v8, vcc379; GISEL-NEXT: v_xor_b32_e32 v10, v4, v8380; GISEL-NEXT: v_xor_b32_e32 v9, v5, v8381; GISEL-NEXT: v_cvt_f32_u32_e32 v4, v10382; GISEL-NEXT: v_cvt_f32_u32_e32 v5, v9383; GISEL-NEXT: v_sub_i32_e32 v17, vcc, 0, v10384; GISEL-NEXT: v_subb_u32_e32 v18, vcc, 0, v9, vcc385; GISEL-NEXT: v_mac_f32_e32 v4, 0x4f800000, v5386; GISEL-NEXT: v_rcp_iflag_f32_e32 v4, v4387; GISEL-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v4388; GISEL-NEXT: v_mul_f32_e32 v5, 0x2f800000, v4389; GISEL-NEXT: v_trunc_f32_e32 v5, v5390; GISEL-NEXT: v_mac_f32_e32 v4, 0xcf800000, v5391; GISEL-NEXT: v_cvt_u32_f32_e32 v15, v4392; GISEL-NEXT: v_cvt_u32_f32_e32 v16, v5393; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v17, v15, 0394; GISEL-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v17, v16, v[5:6]395; GISEL-NEXT: v_mul_lo_u32 v5, v16, v4396; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v18, v15, v[11:12]397; GISEL-NEXT: v_mul_lo_u32 v11, v15, v13398; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v11399; GISEL-NEXT: v_mul_hi_u32 v11, v15, v4400; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc401; GISEL-NEXT: v_mul_hi_u32 v4, v16, v4402; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v11403; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc404; GISEL-NEXT: v_mul_lo_u32 v11, v16, v13405; GISEL-NEXT: v_add_i32_e32 v5, vcc, v12, v5406; GISEL-NEXT: v_mul_hi_u32 v12, v15, v13407; GISEL-NEXT: v_add_i32_e32 v4, vcc, v11, v4408; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc409; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v12410; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc411; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12412; GISEL-NEXT: v_mul_hi_u32 v12, v16, v13413; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v5414; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc415; GISEL-NEXT: v_add_i32_e32 v5, vcc, v11, v5416; GISEL-NEXT: v_add_i32_e32 v5, vcc, v12, v5417; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v4418; GISEL-NEXT: v_addc_u32_e32 v16, vcc, v16, v5, vcc419; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v17, v15, 0420; GISEL-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v17, v16, v[5:6]421; GISEL-NEXT: v_ashrrev_i32_e32 v5, 31, v1422; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v5423; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v18, v15, v[11:12]424; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v1, v5, vcc425; GISEL-NEXT: v_xor_b32_e32 v17, v0, v5426; GISEL-NEXT: v_mul_lo_u32 v0, v16, v4427; GISEL-NEXT: v_mul_lo_u32 v11, v15, v13428; GISEL-NEXT: v_xor_b32_e32 v18, v1, v5429; GISEL-NEXT: v_mul_hi_u32 v1, v15, v4430; GISEL-NEXT: v_mul_hi_u32 v4, v16, v4431; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v11432; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc433; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v1434; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc435; GISEL-NEXT: v_mul_lo_u32 v1, v16, v13436; GISEL-NEXT: v_add_i32_e32 v0, vcc, v11, v0437; GISEL-NEXT: v_mul_hi_u32 v11, v15, v13438; GISEL-NEXT: v_add_i32_e32 v1, vcc, v1, v4439; GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc440; GISEL-NEXT: v_add_i32_e32 v1, vcc, v1, v11441; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc442; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v11443; GISEL-NEXT: v_mul_hi_u32 v11, v16, v13444; GISEL-NEXT: v_add_i32_e32 v0, vcc, v1, v0445; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc446; GISEL-NEXT: v_add_i32_e32 v1, vcc, v4, v1447; GISEL-NEXT: v_add_i32_e32 v1, vcc, v11, v1448; GISEL-NEXT: v_add_i32_e32 v0, vcc, v15, v0449; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v16, v1, vcc450; GISEL-NEXT: v_mul_lo_u32 v4, v18, v0451; GISEL-NEXT: v_mul_lo_u32 v11, v17, v1452; GISEL-NEXT: v_mul_hi_u32 v12, v17, v0453; GISEL-NEXT: v_mul_hi_u32 v0, v18, v0454; GISEL-NEXT: v_xor_b32_e32 v5, v5, v8455; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v11456; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc457; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v12458; GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc459; GISEL-NEXT: v_mul_lo_u32 v12, v18, v1460; GISEL-NEXT: v_add_i32_e32 v4, vcc, v11, v4461; GISEL-NEXT: v_mul_hi_u32 v11, v17, v1462; GISEL-NEXT: v_add_i32_e32 v0, vcc, v12, v0463; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc464; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v11465; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc466; GISEL-NEXT: v_add_i32_e32 v11, vcc, v12, v11467; GISEL-NEXT: v_add_i32_e32 v15, vcc, v0, v4468; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc469; GISEL-NEXT: v_add_i32_e32 v4, vcc, v11, v0470; GISEL-NEXT: v_mul_hi_u32 v11, v18, v1471; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v10, v15, 0472; GISEL-NEXT: v_add_i32_e32 v16, vcc, v11, v4473; GISEL-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v10, v16, v[1:2]474; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v17, v0475; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v9, v15, v[11:12]476; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], v18, v13, vcc477; GISEL-NEXT: v_sub_i32_e64 v4, s[4:5], v18, v13478; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v1, v9479; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]480; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v10481; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, -1, s[4:5]482; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v1, v9483; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v4, v9, vcc484; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v10485; GISEL-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v1, vcc486; GISEL-NEXT: v_cndmask_b32_e64 v11, v11, v12, s[4:5]487; GISEL-NEXT: v_add_i32_e32 v12, vcc, 1, v15488; GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v16, vcc489; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v1, v9490; GISEL-NEXT: v_ashrrev_i32_e32 v4, 31, v7491; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, -1, vcc492; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v4493; GISEL-NEXT: v_addc_u32_e32 v17, vcc, v7, v4, vcc494; GISEL-NEXT: v_xor_b32_e32 v7, v6, v4495; GISEL-NEXT: v_xor_b32_e32 v6, v17, v4496; GISEL-NEXT: v_cvt_f32_u32_e32 v17, v7497; GISEL-NEXT: v_cvt_f32_u32_e32 v18, v6498; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v10499; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc500; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v1, v9501; GISEL-NEXT: v_mac_f32_e32 v17, 0x4f800000, v18502; GISEL-NEXT: v_rcp_iflag_f32_e32 v1, v17503; GISEL-NEXT: v_cndmask_b32_e32 v0, v14, v0, vcc504; GISEL-NEXT: v_add_i32_e32 v9, vcc, 1, v12505; GISEL-NEXT: v_addc_u32_e32 v14, vcc, 0, v13, vcc506; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0507; GISEL-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v1508; GISEL-NEXT: v_mul_f32_e32 v1, 0x2f800000, v0509; GISEL-NEXT: v_trunc_f32_e32 v1, v1510; GISEL-NEXT: v_mac_f32_e32 v0, 0xcf800000, v1511; GISEL-NEXT: v_cvt_u32_f32_e32 v17, v0512; GISEL-NEXT: v_sub_i32_e64 v19, s[4:5], 0, v7513; GISEL-NEXT: v_cvt_u32_f32_e32 v18, v1514; GISEL-NEXT: v_subb_u32_e64 v20, s[4:5], 0, v6, s[4:5]515; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v19, v17, 0516; GISEL-NEXT: v_cndmask_b32_e32 v12, v12, v9, vcc517; GISEL-NEXT: v_cndmask_b32_e32 v13, v13, v14, vcc518; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v19, v18, v[1:2]519; GISEL-NEXT: v_mul_lo_u32 v21, v18, v0520; GISEL-NEXT: v_mul_hi_u32 v22, v17, v0521; GISEL-NEXT: v_mul_hi_u32 v23, v18, v0522; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v20, v17, v[9:10]523; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v11524; GISEL-NEXT: v_cndmask_b32_e32 v10, v15, v12, vcc525; GISEL-NEXT: v_mul_lo_u32 v1, v17, v0526; GISEL-NEXT: v_mul_lo_u32 v11, v18, v0527; GISEL-NEXT: v_ashrrev_i32_e32 v15, 31, v3528; GISEL-NEXT: v_cndmask_b32_e32 v13, v16, v13, vcc529; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v21, v1530; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5]531; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v1, v22532; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]533; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v9, v1534; GISEL-NEXT: v_mul_hi_u32 v9, v17, v0535; GISEL-NEXT: v_add_i32_e64 v11, s[4:5], v11, v23536; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, s[4:5]537; GISEL-NEXT: v_add_i32_e64 v9, s[4:5], v11, v9538; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, s[4:5]539; GISEL-NEXT: v_add_i32_e64 v11, s[4:5], v12, v11540; GISEL-NEXT: v_mul_hi_u32 v0, v18, v0541; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v9, v1542; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5]543; GISEL-NEXT: v_add_i32_e64 v9, s[4:5], v11, v9544; GISEL-NEXT: v_add_i32_e64 v0, s[4:5], v0, v9545; GISEL-NEXT: v_add_i32_e64 v12, s[4:5], v17, v1546; GISEL-NEXT: v_addc_u32_e64 v14, s[4:5], v18, v0, s[4:5]547; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v19, v12, 0548; GISEL-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v19, v14, v[1:2]549; GISEL-NEXT: v_xor_b32_e32 v1, v10, v5550; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v15551; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v20, v12, v[8:9]552; GISEL-NEXT: v_addc_u32_e32 v3, vcc, v3, v15, vcc553; GISEL-NEXT: v_xor_b32_e32 v16, v2, v15554; GISEL-NEXT: v_mul_lo_u32 v2, v14, v0555; GISEL-NEXT: v_mul_lo_u32 v8, v12, v10556; GISEL-NEXT: v_xor_b32_e32 v17, v3, v15557; GISEL-NEXT: v_mul_hi_u32 v3, v12, v0558; GISEL-NEXT: v_mul_hi_u32 v0, v14, v0559; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v8560; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc561; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v3562; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc563; GISEL-NEXT: v_mul_lo_u32 v3, v14, v10564; GISEL-NEXT: v_add_i32_e32 v2, vcc, v8, v2565; GISEL-NEXT: v_mul_hi_u32 v8, v12, v10566; GISEL-NEXT: v_add_i32_e32 v0, vcc, v3, v0567; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc568; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v8569; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc570; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v8571; GISEL-NEXT: v_mul_hi_u32 v8, v14, v10572; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v2573; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc574; GISEL-NEXT: v_add_i32_e32 v2, vcc, v3, v2575; GISEL-NEXT: v_add_i32_e32 v2, vcc, v8, v2576; GISEL-NEXT: v_add_i32_e32 v0, vcc, v12, v0577; GISEL-NEXT: v_addc_u32_e32 v2, vcc, v14, v2, vcc578; GISEL-NEXT: v_mul_lo_u32 v3, v17, v0579; GISEL-NEXT: v_mul_lo_u32 v8, v16, v2580; GISEL-NEXT: v_mul_hi_u32 v9, v16, v0581; GISEL-NEXT: v_mul_hi_u32 v0, v17, v0582; GISEL-NEXT: v_xor_b32_e32 v10, v13, v5583; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v8584; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc585; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v9586; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc587; GISEL-NEXT: v_mul_lo_u32 v9, v17, v2588; GISEL-NEXT: v_add_i32_e32 v3, vcc, v8, v3589; GISEL-NEXT: v_mul_hi_u32 v8, v16, v2590; GISEL-NEXT: v_add_i32_e32 v0, vcc, v9, v0591; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc592; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v8593; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc594; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v8595; GISEL-NEXT: v_add_i32_e32 v12, vcc, v0, v3596; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc597; GISEL-NEXT: v_add_i32_e32 v0, vcc, v8, v0598; GISEL-NEXT: v_mul_hi_u32 v8, v17, v2599; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v7, v12, 0600; GISEL-NEXT: v_add_i32_e32 v13, vcc, v8, v0601; GISEL-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v7, v13, v[3:4]602; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v1, v5603; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v10, v5, vcc604; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v6, v12, v[8:9]605; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v16, v2606; GISEL-NEXT: v_subb_u32_e64 v3, s[4:5], v17, v10, vcc607; GISEL-NEXT: v_sub_i32_e64 v5, s[4:5], v17, v10608; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v6609; GISEL-NEXT: v_subb_u32_e32 v5, vcc, v5, v6, vcc610; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]611; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v7612; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v7613; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]614; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v3, v6615; GISEL-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc616; GISEL-NEXT: v_cndmask_b32_e64 v3, v8, v9, s[4:5]617; GISEL-NEXT: v_add_i32_e32 v8, vcc, 1, v12618; GISEL-NEXT: v_addc_u32_e32 v9, vcc, 0, v13, vcc619; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v5, v6620; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, -1, vcc621; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v7622; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc623; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v5, v6624; GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc625; GISEL-NEXT: v_add_i32_e32 v5, vcc, 1, v8626; GISEL-NEXT: v_addc_u32_e32 v6, vcc, 0, v9, vcc627; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2628; GISEL-NEXT: v_cndmask_b32_e32 v2, v8, v5, vcc629; GISEL-NEXT: v_cndmask_b32_e32 v5, v9, v6, vcc630; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3631; GISEL-NEXT: v_cndmask_b32_e32 v2, v12, v2, vcc632; GISEL-NEXT: v_xor_b32_e32 v4, v15, v4633; GISEL-NEXT: v_cndmask_b32_e32 v3, v13, v5, vcc634; GISEL-NEXT: v_xor_b32_e32 v2, v2, v4635; GISEL-NEXT: v_xor_b32_e32 v3, v3, v4636; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v4637; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v4, vcc638; GISEL-NEXT: s_setpc_b64 s[30:31]639;640; CGP-LABEL: v_sdiv_v2i64:641; CGP: ; %bb.0:642; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)643; CGP-NEXT: v_mov_b32_e32 v11, v1644; CGP-NEXT: v_mov_b32_e32 v10, v0645; CGP-NEXT: v_or_b32_e32 v1, v11, v5646; CGP-NEXT: v_mov_b32_e32 v0, 0647; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]648; CGP-NEXT: v_mov_b32_e32 v8, v2649; CGP-NEXT: v_mov_b32_e32 v9, v3650; CGP-NEXT: ; implicit-def: $vgpr0_vgpr1651; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc652; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]653; CGP-NEXT: s_cbranch_execz .LBB2_2654; CGP-NEXT: ; %bb.1:655; CGP-NEXT: v_ashrrev_i32_e32 v0, 31, v5656; CGP-NEXT: v_add_i32_e32 v1, vcc, v4, v0657; CGP-NEXT: v_addc_u32_e32 v3, vcc, v5, v0, vcc658; CGP-NEXT: v_xor_b32_e32 v2, v1, v0659; CGP-NEXT: v_xor_b32_e32 v1, v3, v0660; CGP-NEXT: v_cvt_f32_u32_e32 v3, v2661; CGP-NEXT: v_cvt_f32_u32_e32 v4, v1662; CGP-NEXT: v_sub_i32_e32 v16, vcc, 0, v2663; CGP-NEXT: v_subb_u32_e32 v17, vcc, 0, v1, vcc664; CGP-NEXT: v_mac_f32_e32 v3, 0x4f800000, v4665; CGP-NEXT: v_rcp_iflag_f32_e32 v3, v3666; CGP-NEXT: v_mul_f32_e32 v3, 0x5f7ffffc, v3667; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v3668; CGP-NEXT: v_trunc_f32_e32 v4, v4669; CGP-NEXT: v_mac_f32_e32 v3, 0xcf800000, v4670; CGP-NEXT: v_cvt_u32_f32_e32 v15, v3671; CGP-NEXT: v_cvt_u32_f32_e32 v14, v4672; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v16, v15, 0673; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v16, v14, v[4:5]674; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v17, v15, v[12:13]675; CGP-NEXT: v_mul_lo_u32 v5, v14, v3676; CGP-NEXT: v_mul_hi_u32 v12, v15, v3677; CGP-NEXT: v_mul_lo_u32 v13, v15, v4678; CGP-NEXT: v_mul_hi_u32 v3, v14, v3679; CGP-NEXT: v_mul_lo_u32 v18, v14, v4680; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v13681; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc682; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v12683; CGP-NEXT: v_mul_hi_u32 v12, v15, v4684; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc685; CGP-NEXT: v_add_i32_e32 v5, vcc, v13, v5686; CGP-NEXT: v_add_i32_e32 v3, vcc, v18, v3687; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc688; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v12689; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc690; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v12691; CGP-NEXT: v_mul_hi_u32 v4, v14, v4692; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v5693; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc694; CGP-NEXT: v_add_i32_e32 v5, vcc, v12, v5695; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5696; CGP-NEXT: v_add_i32_e32 v15, vcc, v15, v3697; CGP-NEXT: v_addc_u32_e32 v14, vcc, v14, v4, vcc698; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v16, v15, 0699; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v16, v14, v[4:5]700; CGP-NEXT: v_ashrrev_i32_e32 v16, 31, v11701; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v17, v15, v[12:13]702; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v16703; CGP-NEXT: v_addc_u32_e32 v10, vcc, v11, v16, vcc704; CGP-NEXT: v_xor_b32_e32 v12, v5, v16705; CGP-NEXT: v_mul_lo_u32 v5, v14, v3706; CGP-NEXT: v_mul_lo_u32 v11, v15, v4707; CGP-NEXT: v_xor_b32_e32 v13, v10, v16708; CGP-NEXT: v_mul_hi_u32 v10, v15, v3709; CGP-NEXT: v_mul_hi_u32 v3, v14, v3710; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v11711; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc712; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v10713; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc714; CGP-NEXT: v_mul_lo_u32 v10, v14, v4715; CGP-NEXT: v_add_i32_e32 v5, vcc, v11, v5716; CGP-NEXT: v_mul_hi_u32 v11, v15, v4717; CGP-NEXT: v_add_i32_e32 v3, vcc, v10, v3718; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc719; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v11720; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc721; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v11722; CGP-NEXT: v_mul_hi_u32 v4, v14, v4723; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v5724; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc725; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v5726; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5727; CGP-NEXT: v_add_i32_e32 v3, vcc, v15, v3728; CGP-NEXT: v_addc_u32_e32 v4, vcc, v14, v4, vcc729; CGP-NEXT: v_mul_lo_u32 v5, v13, v3730; CGP-NEXT: v_mul_lo_u32 v10, v12, v4731; CGP-NEXT: v_mul_hi_u32 v11, v12, v3732; CGP-NEXT: v_mul_hi_u32 v3, v13, v3733; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v10734; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc735; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v11736; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc737; CGP-NEXT: v_mul_lo_u32 v11, v13, v4738; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v5739; CGP-NEXT: v_mul_hi_u32 v10, v12, v4740; CGP-NEXT: v_add_i32_e32 v3, vcc, v11, v3741; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc742; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v10743; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc744; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v10745; CGP-NEXT: v_add_i32_e32 v14, vcc, v3, v5746; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc747; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v3748; CGP-NEXT: v_mul_hi_u32 v10, v13, v4749; CGP-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v2, v14, 0750; CGP-NEXT: v_add_i32_e32 v15, vcc, v10, v5751; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v2, v15, v[4:5]752; CGP-NEXT: v_sub_i32_e32 v3, vcc, v12, v3753; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v1, v14, v[10:11]754; CGP-NEXT: v_subb_u32_e64 v5, s[4:5], v13, v4, vcc755; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v13, v4756; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v1757; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v1, vcc758; CGP-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]759; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v2760; CGP-NEXT: v_sub_i32_e32 v3, vcc, v3, v2761; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]762; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v5, v1763; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc764; CGP-NEXT: v_cndmask_b32_e64 v5, v10, v11, s[4:5]765; CGP-NEXT: v_add_i32_e32 v10, vcc, 1, v14766; CGP-NEXT: v_addc_u32_e32 v11, vcc, 0, v15, vcc767; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v1768; CGP-NEXT: v_cndmask_b32_e64 v12, 0, -1, vcc769; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2770; CGP-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc771; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v1772; CGP-NEXT: v_cndmask_b32_e32 v1, v12, v2, vcc773; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v10774; CGP-NEXT: v_addc_u32_e32 v3, vcc, 0, v11, vcc775; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v1776; CGP-NEXT: v_cndmask_b32_e32 v1, v10, v2, vcc777; CGP-NEXT: v_cndmask_b32_e32 v2, v11, v3, vcc778; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v5779; CGP-NEXT: v_cndmask_b32_e32 v1, v14, v1, vcc780; CGP-NEXT: v_xor_b32_e32 v3, v16, v0781; CGP-NEXT: v_cndmask_b32_e32 v2, v15, v2, vcc782; CGP-NEXT: v_xor_b32_e32 v0, v1, v3783; CGP-NEXT: v_xor_b32_e32 v1, v2, v3784; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v3785; CGP-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc786; CGP-NEXT: ; implicit-def: $vgpr4787; CGP-NEXT: ; implicit-def: $vgpr10788; CGP-NEXT: .LBB2_2: ; %Flow1789; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]790; CGP-NEXT: s_cbranch_execz .LBB2_4791; CGP-NEXT: ; %bb.3:792; CGP-NEXT: v_cvt_f32_u32_e32 v0, v4793; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v4794; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v0795; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0796; CGP-NEXT: v_cvt_u32_f32_e32 v0, v0797; CGP-NEXT: v_mul_lo_u32 v1, v1, v0798; CGP-NEXT: v_mul_hi_u32 v1, v0, v1799; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v1800; CGP-NEXT: v_mul_hi_u32 v0, v10, v0801; CGP-NEXT: v_mov_b32_e32 v1, 0802; CGP-NEXT: v_mul_lo_u32 v2, v0, v4803; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0804; CGP-NEXT: v_sub_i32_e32 v2, vcc, v10, v2805; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v4806; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc807; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v2, v4808; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc809; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0810; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v4811; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc812; CGP-NEXT: .LBB2_4:813; CGP-NEXT: s_or_b64 exec, exec, s[6:7]814; CGP-NEXT: v_or_b32_e32 v3, v9, v7815; CGP-NEXT: v_mov_b32_e32 v2, 0816; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]817; CGP-NEXT: ; implicit-def: $vgpr2_vgpr3818; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc819; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]820; CGP-NEXT: s_cbranch_execnz .LBB2_7821; CGP-NEXT: ; %bb.5: ; %Flow822; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]823; CGP-NEXT: s_cbranch_execnz .LBB2_8824; CGP-NEXT: .LBB2_6:825; CGP-NEXT: s_or_b64 exec, exec, s[6:7]826; CGP-NEXT: s_setpc_b64 s[30:31]827; CGP-NEXT: .LBB2_7:828; CGP-NEXT: v_ashrrev_i32_e32 v2, 31, v7829; CGP-NEXT: v_add_i32_e32 v3, vcc, v6, v2830; CGP-NEXT: v_addc_u32_e32 v5, vcc, v7, v2, vcc831; CGP-NEXT: v_xor_b32_e32 v4, v3, v2832; CGP-NEXT: v_xor_b32_e32 v3, v5, v2833; CGP-NEXT: v_cvt_f32_u32_e32 v5, v4834; CGP-NEXT: v_cvt_f32_u32_e32 v6, v3835; CGP-NEXT: v_sub_i32_e32 v14, vcc, 0, v4836; CGP-NEXT: v_subb_u32_e32 v15, vcc, 0, v3, vcc837; CGP-NEXT: v_mac_f32_e32 v5, 0x4f800000, v6838; CGP-NEXT: v_rcp_iflag_f32_e32 v5, v5839; CGP-NEXT: v_mul_f32_e32 v5, 0x5f7ffffc, v5840; CGP-NEXT: v_mul_f32_e32 v6, 0x2f800000, v5841; CGP-NEXT: v_trunc_f32_e32 v6, v6842; CGP-NEXT: v_mac_f32_e32 v5, 0xcf800000, v6843; CGP-NEXT: v_cvt_u32_f32_e32 v13, v5844; CGP-NEXT: v_cvt_u32_f32_e32 v12, v6845; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v14, v13, 0846; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v14, v12, v[6:7]847; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v15, v13, v[10:11]848; CGP-NEXT: v_mul_lo_u32 v7, v12, v5849; CGP-NEXT: v_mul_hi_u32 v10, v13, v5850; CGP-NEXT: v_mul_lo_u32 v11, v13, v6851; CGP-NEXT: v_mul_hi_u32 v5, v12, v5852; CGP-NEXT: v_mul_lo_u32 v16, v12, v6853; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v11854; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc855; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v10856; CGP-NEXT: v_mul_hi_u32 v10, v13, v6857; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc858; CGP-NEXT: v_add_i32_e32 v7, vcc, v11, v7859; CGP-NEXT: v_add_i32_e32 v5, vcc, v16, v5860; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc861; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v10862; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc863; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v10864; CGP-NEXT: v_mul_hi_u32 v6, v12, v6865; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7866; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc867; CGP-NEXT: v_add_i32_e32 v7, vcc, v10, v7868; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v7869; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v5870; CGP-NEXT: v_addc_u32_e32 v12, vcc, v12, v6, vcc871; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v14, v13, 0872; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v14, v12, v[6:7]873; CGP-NEXT: v_ashrrev_i32_e32 v14, 31, v9874; CGP-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v15, v13, v[10:11]875; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v14876; CGP-NEXT: v_addc_u32_e32 v8, vcc, v9, v14, vcc877; CGP-NEXT: v_xor_b32_e32 v11, v7, v14878; CGP-NEXT: v_mul_lo_u32 v7, v12, v5879; CGP-NEXT: v_mul_lo_u32 v9, v13, v6880; CGP-NEXT: v_xor_b32_e32 v15, v8, v14881; CGP-NEXT: v_mul_hi_u32 v8, v13, v5882; CGP-NEXT: v_mul_hi_u32 v5, v12, v5883; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v9884; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc885; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v8886; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc887; CGP-NEXT: v_mul_lo_u32 v8, v12, v6888; CGP-NEXT: v_add_i32_e32 v7, vcc, v9, v7889; CGP-NEXT: v_mul_hi_u32 v9, v13, v6890; CGP-NEXT: v_add_i32_e32 v5, vcc, v8, v5891; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc892; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v9893; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc894; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v9895; CGP-NEXT: v_mul_hi_u32 v6, v12, v6896; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v7897; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc898; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v7899; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v7900; CGP-NEXT: v_add_i32_e32 v5, vcc, v13, v5901; CGP-NEXT: v_addc_u32_e32 v6, vcc, v12, v6, vcc902; CGP-NEXT: v_mul_lo_u32 v7, v15, v5903; CGP-NEXT: v_mul_lo_u32 v8, v11, v6904; CGP-NEXT: v_mul_hi_u32 v9, v11, v5905; CGP-NEXT: v_mul_hi_u32 v5, v15, v5906; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v8907; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc908; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v9909; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc910; CGP-NEXT: v_mul_lo_u32 v9, v15, v6911; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v7912; CGP-NEXT: v_mul_hi_u32 v8, v11, v6913; CGP-NEXT: v_add_i32_e32 v5, vcc, v9, v5914; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc915; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v8916; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc917; CGP-NEXT: v_add_i32_e32 v8, vcc, v9, v8918; CGP-NEXT: v_add_i32_e32 v12, vcc, v5, v7919; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc920; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v5921; CGP-NEXT: v_mul_hi_u32 v8, v15, v6922; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v4, v12, 0923; CGP-NEXT: v_add_i32_e32 v13, vcc, v8, v7924; CGP-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v4, v13, v[6:7]925; CGP-NEXT: v_sub_i32_e32 v5, vcc, v11, v5926; CGP-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v3, v12, v[7:8]927; CGP-NEXT: v_subb_u32_e64 v6, s[4:5], v15, v9, vcc928; CGP-NEXT: v_sub_i32_e64 v7, s[4:5], v15, v9929; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v6, v3930; CGP-NEXT: v_subb_u32_e32 v7, vcc, v7, v3, vcc931; CGP-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]932; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v4933; CGP-NEXT: v_sub_i32_e32 v5, vcc, v5, v4934; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]935; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v6, v3936; CGP-NEXT: v_subbrev_u32_e32 v7, vcc, 0, v7, vcc937; CGP-NEXT: v_cndmask_b32_e64 v6, v8, v9, s[4:5]938; CGP-NEXT: v_add_i32_e32 v8, vcc, 1, v12939; CGP-NEXT: v_addc_u32_e32 v9, vcc, 0, v13, vcc940; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v7, v3941; CGP-NEXT: v_cndmask_b32_e64 v10, 0, -1, vcc942; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v5, v4943; CGP-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc944; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v7, v3945; CGP-NEXT: v_cndmask_b32_e32 v3, v10, v4, vcc946; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v8947; CGP-NEXT: v_addc_u32_e32 v5, vcc, 0, v9, vcc948; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3949; CGP-NEXT: v_cndmask_b32_e32 v3, v8, v4, vcc950; CGP-NEXT: v_cndmask_b32_e32 v4, v9, v5, vcc951; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v6952; CGP-NEXT: v_cndmask_b32_e32 v3, v12, v3, vcc953; CGP-NEXT: v_xor_b32_e32 v5, v14, v2954; CGP-NEXT: v_cndmask_b32_e32 v4, v13, v4, vcc955; CGP-NEXT: v_xor_b32_e32 v2, v3, v5956; CGP-NEXT: v_xor_b32_e32 v3, v4, v5957; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v5958; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v5, vcc959; CGP-NEXT: ; implicit-def: $vgpr6960; CGP-NEXT: ; implicit-def: $vgpr8961; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]962; CGP-NEXT: s_cbranch_execz .LBB2_6963; CGP-NEXT: .LBB2_8:964; CGP-NEXT: v_cvt_f32_u32_e32 v2, v6965; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v6966; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v2967; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2968; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2969; CGP-NEXT: v_mul_lo_u32 v3, v3, v2970; CGP-NEXT: v_mul_hi_u32 v3, v2, v3971; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3972; CGP-NEXT: v_mul_hi_u32 v2, v8, v2973; CGP-NEXT: v_mov_b32_e32 v3, 0974; CGP-NEXT: v_mul_lo_u32 v4, v2, v6975; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v2976; CGP-NEXT: v_sub_i32_e32 v4, vcc, v8, v4977; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v6978; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc979; CGP-NEXT: v_sub_i32_e64 v5, s[4:5], v4, v6980; CGP-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc981; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v2982; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v6983; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc984; CGP-NEXT: s_or_b64 exec, exec, s[6:7]985; CGP-NEXT: s_setpc_b64 s[30:31]986 %result = sdiv <2 x i64> %num, %den987 ret <2 x i64> %result988}989 990define i64 @v_sdiv_i64_pow2k_denom(i64 %num) {991; CHECK-LABEL: v_sdiv_i64_pow2k_denom:992; CHECK: ; %bb.0:993; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)994; CHECK-NEXT: v_ashrrev_i32_e32 v2, 31, v1995; CHECK-NEXT: v_lshrrev_b32_e32 v2, 20, v2996; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v2997; CHECK-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc998; CHECK-NEXT: v_ashr_i64 v[0:1], v[0:1], 12999; CHECK-NEXT: s_setpc_b64 s[30:31]1000 %result = sdiv i64 %num, 40961001 ret i64 %result1002}1003 1004define <2 x i64> @v_sdiv_v2i64_pow2k_denom(<2 x i64> %num) {1005; GISEL-LABEL: v_sdiv_v2i64_pow2k_denom:1006; GISEL: ; %bb.0:1007; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1008; GISEL-NEXT: v_ashrrev_i32_e32 v4, 31, v11009; GISEL-NEXT: v_lshrrev_b32_e32 v4, 20, v41010; GISEL-NEXT: v_ashrrev_i32_e32 v5, 31, v31011; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v41012; GISEL-NEXT: v_lshrrev_b32_e32 v5, 20, v51013; GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1014; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v51015; GISEL-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc1016; GISEL-NEXT: v_ashr_i64 v[0:1], v[0:1], 121017; GISEL-NEXT: v_ashr_i64 v[2:3], v[2:3], 121018; GISEL-NEXT: s_setpc_b64 s[30:31]1019;1020; CGP-LABEL: v_sdiv_v2i64_pow2k_denom:1021; CGP: ; %bb.0:1022; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1023; CGP-NEXT: v_ashrrev_i32_e32 v4, 31, v11024; CGP-NEXT: v_lshrrev_b32_e32 v4, 20, v41025; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v41026; CGP-NEXT: v_ashrrev_i32_e32 v4, 31, v31027; CGP-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc1028; CGP-NEXT: v_lshrrev_b32_e32 v4, 20, v41029; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v41030; CGP-NEXT: v_addc_u32_e32 v3, vcc, 0, v3, vcc1031; CGP-NEXT: v_ashr_i64 v[0:1], v[0:1], 121032; CGP-NEXT: v_ashr_i64 v[2:3], v[2:3], 121033; CGP-NEXT: s_setpc_b64 s[30:31]1034 %result = sdiv <2 x i64> %num, <i64 4096, i64 4096>1035 ret <2 x i64> %result1036}1037 1038define i64 @v_sdiv_i64_oddk_denom(i64 %num) {1039; CHECK-LABEL: v_sdiv_i64_oddk_denom:1040; CHECK: ; %bb.0:1041; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1042; CHECK-NEXT: v_cvt_f32_u32_e32 v2, 0x12d8fb1043; CHECK-NEXT: v_cvt_f32_ubyte0_e32 v3, 01044; CHECK-NEXT: v_mov_b32_e32 v9, 0xffed27051045; CHECK-NEXT: v_mac_f32_e32 v2, 0x4f800000, v31046; CHECK-NEXT: v_rcp_iflag_f32_e32 v2, v21047; CHECK-NEXT: v_mul_f32_e32 v2, 0x5f7ffffc, v21048; CHECK-NEXT: v_mul_f32_e32 v3, 0x2f800000, v21049; CHECK-NEXT: v_trunc_f32_e32 v3, v31050; CHECK-NEXT: v_mac_f32_e32 v2, 0xcf800000, v31051; CHECK-NEXT: v_cvt_u32_f32_e32 v8, v21052; CHECK-NEXT: v_cvt_u32_f32_e32 v10, v31053; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 01054; CHECK-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]1055; CHECK-NEXT: v_mul_lo_u32 v3, v10, v21056; CHECK-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]1057; CHECK-NEXT: v_mul_hi_u32 v4, v8, v21058; CHECK-NEXT: v_mul_hi_u32 v2, v10, v21059; CHECK-NEXT: v_mul_lo_u32 v5, v8, v61060; CHECK-NEXT: v_mul_lo_u32 v7, v10, v61061; CHECK-NEXT: v_mul_hi_u32 v11, v8, v61062; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v51063; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1064; CHECK-NEXT: v_add_i32_e32 v2, vcc, v7, v21065; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1066; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v41067; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1068; CHECK-NEXT: v_add_i32_e32 v3, vcc, v5, v31069; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v111070; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1071; CHECK-NEXT: v_add_i32_e32 v4, vcc, v7, v41072; CHECK-NEXT: v_mul_hi_u32 v5, v10, v61073; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v31074; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1075; CHECK-NEXT: v_add_i32_e32 v3, vcc, v4, v31076; CHECK-NEXT: v_add_i32_e32 v3, vcc, v5, v31077; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v21078; CHECK-NEXT: v_addc_u32_e32 v10, vcc, v10, v3, vcc1079; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 01080; CHECK-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]1081; CHECK-NEXT: v_ashrrev_i32_e32 v9, 31, v11082; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v91083; CHECK-NEXT: v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]1084; CHECK-NEXT: v_addc_u32_e32 v1, vcc, v1, v9, vcc1085; CHECK-NEXT: v_xor_b32_e32 v4, v0, v91086; CHECK-NEXT: v_mul_lo_u32 v0, v10, v21087; CHECK-NEXT: v_mul_lo_u32 v3, v8, v61088; CHECK-NEXT: v_xor_b32_e32 v5, v1, v91089; CHECK-NEXT: v_mul_hi_u32 v1, v8, v21090; CHECK-NEXT: v_mul_hi_u32 v2, v10, v21091; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v31092; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1093; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v11094; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1095; CHECK-NEXT: v_mul_lo_u32 v1, v10, v61096; CHECK-NEXT: v_add_i32_e32 v0, vcc, v3, v01097; CHECK-NEXT: v_mul_hi_u32 v3, v8, v61098; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v21099; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1100; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v31101; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1102; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v31103; CHECK-NEXT: v_mul_hi_u32 v3, v10, v61104; CHECK-NEXT: v_add_i32_e32 v0, vcc, v1, v01105; CHECK-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1106; CHECK-NEXT: v_add_i32_e32 v1, vcc, v2, v11107; CHECK-NEXT: v_add_i32_e32 v1, vcc, v3, v11108; CHECK-NEXT: v_add_i32_e32 v0, vcc, v8, v01109; CHECK-NEXT: v_addc_u32_e32 v1, vcc, v10, v1, vcc1110; CHECK-NEXT: v_mul_lo_u32 v2, v5, v01111; CHECK-NEXT: v_mul_lo_u32 v3, v4, v11112; CHECK-NEXT: v_mul_hi_u32 v7, v4, v01113; CHECK-NEXT: v_mul_hi_u32 v0, v5, v01114; CHECK-NEXT: v_mov_b32_e32 v6, 0x12d8fb1115; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v31116; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1117; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v71118; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1119; CHECK-NEXT: v_mul_lo_u32 v7, v5, v11120; CHECK-NEXT: v_add_i32_e32 v2, vcc, v3, v21121; CHECK-NEXT: v_mul_hi_u32 v3, v4, v11122; CHECK-NEXT: v_add_i32_e32 v0, vcc, v7, v01123; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1124; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v31125; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1126; CHECK-NEXT: v_add_i32_e32 v3, vcc, v7, v31127; CHECK-NEXT: v_add_i32_e32 v7, vcc, v0, v21128; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1129; CHECK-NEXT: v_add_i32_e32 v2, vcc, v3, v01130; CHECK-NEXT: v_mul_hi_u32 v3, v5, v11131; CHECK-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v7, 01132; CHECK-NEXT: v_add_i32_e32 v8, vcc, v3, v21133; CHECK-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v6, v8, v[1:2]1134; CHECK-NEXT: v_sub_i32_e32 v0, vcc, v4, v01135; CHECK-NEXT: v_subb_u32_e64 v1, s[4:5], v5, v2, vcc1136; CHECK-NEXT: v_sub_i32_e64 v2, s[4:5], v5, v21137; CHECK-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1138; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v61139; CHECK-NEXT: v_sub_i32_e32 v0, vcc, v0, v61140; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, -1, s[4:5]1141; CHECK-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v11142; CHECK-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1143; CHECK-NEXT: v_cndmask_b32_e64 v1, -1, v3, s[4:5]1144; CHECK-NEXT: v_add_i32_e32 v3, vcc, 1, v71145; CHECK-NEXT: v_addc_u32_e32 v4, vcc, 0, v8, vcc1146; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v0, v61147; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc1148; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21149; CHECK-NEXT: v_cndmask_b32_e32 v0, -1, v0, vcc1150; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v31151; CHECK-NEXT: v_addc_u32_e32 v5, vcc, 0, v4, vcc1152; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01153; CHECK-NEXT: v_cndmask_b32_e32 v0, v3, v2, vcc1154; CHECK-NEXT: v_cndmask_b32_e32 v2, v4, v5, vcc1155; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v11156; CHECK-NEXT: v_cndmask_b32_e32 v0, v7, v0, vcc1157; CHECK-NEXT: v_cndmask_b32_e32 v1, v8, v2, vcc1158; CHECK-NEXT: v_xor_b32_e32 v0, v0, v91159; CHECK-NEXT: v_xor_b32_e32 v1, v1, v91160; CHECK-NEXT: v_sub_i32_e32 v0, vcc, v0, v91161; CHECK-NEXT: v_subb_u32_e32 v1, vcc, v1, v9, vcc1162; CHECK-NEXT: s_setpc_b64 s[30:31]1163 %result = sdiv i64 %num, 12351951164 ret i64 %result1165}1166 1167define <2 x i64> @v_sdiv_v2i64_oddk_denom(<2 x i64> %num) {1168; GISEL-LABEL: v_sdiv_v2i64_oddk_denom:1169; GISEL: ; %bb.0:1170; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1171; GISEL-NEXT: v_cvt_f32_u32_e32 v4, 0x12d8fb1172; GISEL-NEXT: v_cvt_f32_ubyte0_e32 v5, 01173; GISEL-NEXT: v_mov_b32_e32 v6, 0xffed27051174; GISEL-NEXT: s_mov_b32 s6, 11175; GISEL-NEXT: v_mac_f32_e32 v4, 0x4f800000, v51176; GISEL-NEXT: v_rcp_iflag_f32_e32 v4, v41177; GISEL-NEXT: s_cmp_lg_u32 s6, 01178; GISEL-NEXT: s_subb_u32 s6, 0, 01179; GISEL-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v41180; GISEL-NEXT: v_mul_f32_e32 v5, 0x2f800000, v41181; GISEL-NEXT: v_trunc_f32_e32 v5, v51182; GISEL-NEXT: v_mac_f32_e32 v4, 0xcf800000, v51183; GISEL-NEXT: v_cvt_u32_f32_e32 v7, v41184; GISEL-NEXT: v_cvt_u32_f32_e32 v8, v51185; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01186; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1187; GISEL-NEXT: v_mul_hi_u32 v11, v7, v41188; GISEL-NEXT: v_mul_hi_u32 v12, v8, v41189; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[9:10]1190; GISEL-NEXT: v_mul_lo_u32 v10, v8, v41191; GISEL-NEXT: v_mul_lo_u32 v9, v7, v131192; GISEL-NEXT: v_mul_lo_u32 v4, v8, v131193; GISEL-NEXT: v_add_i32_e32 v9, vcc, v10, v91194; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1195; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v111196; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1197; GISEL-NEXT: v_add_i32_e32 v9, vcc, v14, v91198; GISEL-NEXT: v_mul_hi_u32 v14, v7, v131199; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v121200; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1201; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v141202; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1203; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141204; GISEL-NEXT: v_mul_hi_u32 v13, v8, v131205; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v91206; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1207; GISEL-NEXT: v_add_i32_e32 v9, vcc, v14, v91208; GISEL-NEXT: v_add_i32_e32 v9, vcc, v13, v91209; GISEL-NEXT: v_add_i32_e32 v4, vcc, v7, v41210; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v6, v4, 01211; GISEL-NEXT: v_addc_u32_e32 v17, vcc, v8, v9, vcc1212; GISEL-NEXT: v_mad_u64_u32 v[15:16], s[4:5], v6, v17, v[14:15]1213; GISEL-NEXT: v_mul_lo_u32 v9, v17, v131214; GISEL-NEXT: v_mul_hi_u32 v18, v4, v131215; GISEL-NEXT: v_mul_hi_u32 v19, v17, v131216; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], s6, v4, v[15:16]1217; GISEL-NEXT: s_mov_b32 s6, 11218; GISEL-NEXT: s_cmp_lg_u32 s6, 01219; GISEL-NEXT: v_mul_lo_u32 v14, v4, v131220; GISEL-NEXT: v_mul_hi_u32 v15, v4, v131221; GISEL-NEXT: s_subb_u32 s6, 0, 01222; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v141223; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1224; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v181225; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1226; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v91227; GISEL-NEXT: v_mul_lo_u32 v9, v17, v131228; GISEL-NEXT: v_mul_hi_u32 v13, v17, v131229; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v191230; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc1231; GISEL-NEXT: v_add_i32_e32 v15, vcc, v9, v151232; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1233; GISEL-NEXT: v_add_i32_e32 v16, vcc, v16, v91234; GISEL-NEXT: v_ashrrev_i32_e32 v9, 31, v11235; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v91236; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v1, v9, vcc1237; GISEL-NEXT: v_xor_b32_e32 v18, v0, v91238; GISEL-NEXT: v_add_i32_e32 v0, vcc, v15, v141239; GISEL-NEXT: v_xor_b32_e32 v19, v1, v91240; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1241; GISEL-NEXT: v_add_i32_e32 v1, vcc, v16, v11242; GISEL-NEXT: v_add_i32_e32 v1, vcc, v13, v11243; GISEL-NEXT: v_add_i32_e32 v0, vcc, v4, v01244; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v17, v1, vcc1245; GISEL-NEXT: v_mul_lo_u32 v13, v19, v01246; GISEL-NEXT: v_mul_lo_u32 v14, v18, v11247; GISEL-NEXT: v_mul_hi_u32 v15, v18, v01248; GISEL-NEXT: v_mul_hi_u32 v0, v19, v01249; GISEL-NEXT: v_mov_b32_e32 v4, 0x12d8fb1250; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v141251; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1252; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v151253; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1254; GISEL-NEXT: v_mul_lo_u32 v15, v19, v11255; GISEL-NEXT: v_add_i32_e32 v13, vcc, v14, v131256; GISEL-NEXT: v_mul_hi_u32 v14, v18, v11257; GISEL-NEXT: v_add_i32_e32 v0, vcc, v15, v01258; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1259; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v141260; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1261; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141262; GISEL-NEXT: v_mul_hi_u32 v1, v19, v11263; GISEL-NEXT: v_add_i32_e32 v17, vcc, v0, v131264; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1265; GISEL-NEXT: v_add_i32_e32 v0, vcc, v14, v01266; GISEL-NEXT: v_add_i32_e32 v20, vcc, v1, v01267; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v4, v17, 01268; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v4, v20, v[1:2]1269; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v18, v01270; GISEL-NEXT: v_mad_u64_u32 v[15:16], s[4:5], 0, v17, v[13:14]1271; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], v19, v15, vcc1272; GISEL-NEXT: v_sub_i32_e64 v13, s[4:5], v19, v151273; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v41274; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, -1, s[4:5]1275; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v11276; GISEL-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v13, vcc1277; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v41278; GISEL-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v1, vcc1279; GISEL-NEXT: v_add_i32_e32 v16, vcc, 1, v171280; GISEL-NEXT: v_addc_u32_e32 v18, vcc, 0, v20, vcc1281; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v41282; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc1283; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v11284; GISEL-NEXT: v_cndmask_b32_e64 v15, -1, v14, s[4:5]1285; GISEL-NEXT: v_cndmask_b32_e32 v19, -1, v0, vcc1286; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]1287; GISEL-NEXT: v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[0:1]1288; GISEL-NEXT: v_add_i32_e32 v0, vcc, 1, v161289; GISEL-NEXT: v_mul_lo_u32 v5, v7, v131290; GISEL-NEXT: v_addc_u32_e32 v1, vcc, 0, v18, vcc1291; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v191292; GISEL-NEXT: v_cndmask_b32_e32 v14, v16, v0, vcc1293; GISEL-NEXT: v_cndmask_b32_e32 v16, v18, v1, vcc1294; GISEL-NEXT: v_add_i32_e32 v0, vcc, v10, v51295; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1296; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v111297; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1298; GISEL-NEXT: v_mul_lo_u32 v5, v8, v131299; GISEL-NEXT: v_add_i32_e32 v0, vcc, v1, v01300; GISEL-NEXT: v_mul_hi_u32 v1, v7, v131301; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v121302; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1303; GISEL-NEXT: v_add_i32_e32 v1, vcc, v5, v11304; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1305; GISEL-NEXT: v_add_i32_e32 v5, vcc, v10, v51306; GISEL-NEXT: v_mul_hi_u32 v10, v8, v131307; GISEL-NEXT: v_add_i32_e32 v0, vcc, v1, v01308; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1309; GISEL-NEXT: v_add_i32_e32 v1, vcc, v5, v11310; GISEL-NEXT: v_add_i32_e32 v1, vcc, v10, v11311; GISEL-NEXT: v_add_i32_e32 v10, vcc, v7, v01312; GISEL-NEXT: v_addc_u32_e32 v11, vcc, v8, v1, vcc1313; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v10, 01314; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v151315; GISEL-NEXT: v_cndmask_b32_e32 v5, v17, v14, vcc1316; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v6, v11, v[1:2]1317; GISEL-NEXT: v_xor_b32_e32 v1, v5, v91318; GISEL-NEXT: v_ashrrev_i32_e32 v13, 31, v31319; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], s6, v10, v[7:8]1320; GISEL-NEXT: v_cndmask_b32_e32 v12, v20, v16, vcc1321; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v131322; GISEL-NEXT: v_addc_u32_e32 v3, vcc, v3, v13, vcc1323; GISEL-NEXT: v_xor_b32_e32 v14, v2, v131324; GISEL-NEXT: v_mul_lo_u32 v2, v11, v01325; GISEL-NEXT: v_mul_lo_u32 v6, v10, v51326; GISEL-NEXT: v_xor_b32_e32 v15, v3, v131327; GISEL-NEXT: v_mul_hi_u32 v3, v10, v01328; GISEL-NEXT: v_mul_hi_u32 v0, v11, v01329; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v61330; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1331; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v31332; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1333; GISEL-NEXT: v_mul_lo_u32 v3, v11, v51334; GISEL-NEXT: v_add_i32_e32 v2, vcc, v6, v21335; GISEL-NEXT: v_mul_hi_u32 v6, v10, v51336; GISEL-NEXT: v_add_i32_e32 v0, vcc, v3, v01337; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1338; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v61339; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1340; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v61341; GISEL-NEXT: v_mul_hi_u32 v5, v11, v51342; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v21343; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1344; GISEL-NEXT: v_add_i32_e32 v2, vcc, v3, v21345; GISEL-NEXT: v_add_i32_e32 v2, vcc, v5, v21346; GISEL-NEXT: v_add_i32_e32 v0, vcc, v10, v01347; GISEL-NEXT: v_addc_u32_e32 v2, vcc, v11, v2, vcc1348; GISEL-NEXT: v_mul_lo_u32 v3, v15, v01349; GISEL-NEXT: v_mul_lo_u32 v5, v14, v21350; GISEL-NEXT: v_mul_hi_u32 v6, v14, v01351; GISEL-NEXT: v_mul_hi_u32 v0, v15, v01352; GISEL-NEXT: v_xor_b32_e32 v7, v12, v91353; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v51354; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1355; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v61356; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1357; GISEL-NEXT: v_mul_lo_u32 v6, v15, v21358; GISEL-NEXT: v_add_i32_e32 v3, vcc, v5, v31359; GISEL-NEXT: v_mul_hi_u32 v5, v14, v21360; GISEL-NEXT: v_add_i32_e32 v0, vcc, v6, v01361; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1362; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v51363; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1364; GISEL-NEXT: v_add_i32_e32 v5, vcc, v6, v51365; GISEL-NEXT: v_add_i32_e32 v10, vcc, v0, v31366; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1367; GISEL-NEXT: v_add_i32_e32 v0, vcc, v5, v01368; GISEL-NEXT: v_mul_hi_u32 v5, v15, v21369; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v4, v10, 01370; GISEL-NEXT: v_add_i32_e32 v11, vcc, v5, v01371; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v4, v11, v[3:4]1372; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v1, v91373; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v7, v9, vcc1374; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], 0, v10, v[5:6]1375; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v14, v21376; GISEL-NEXT: v_sub_i32_e64 v5, s[4:5], v15, v71377; GISEL-NEXT: v_subb_u32_e64 v3, s[4:5], v15, v7, vcc1378; GISEL-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1379; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v41380; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v41381; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]1382; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v31383; GISEL-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1384; GISEL-NEXT: v_cndmask_b32_e64 v3, -1, v6, s[4:5]1385; GISEL-NEXT: v_add_i32_e32 v6, vcc, 1, v101386; GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v11, vcc1387; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v41388; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc1389; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v51390; GISEL-NEXT: v_cndmask_b32_e32 v2, -1, v2, vcc1391; GISEL-NEXT: v_add_i32_e32 v4, vcc, 1, v61392; GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v7, vcc1393; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v21394; GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v4, vcc1395; GISEL-NEXT: v_cndmask_b32_e32 v4, v7, v5, vcc1396; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v31397; GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc1398; GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v4, vcc1399; GISEL-NEXT: v_xor_b32_e32 v2, v2, v131400; GISEL-NEXT: v_xor_b32_e32 v3, v3, v131401; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v131402; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v13, vcc1403; GISEL-NEXT: s_setpc_b64 s[30:31]1404;1405; CGP-LABEL: v_sdiv_v2i64_oddk_denom:1406; CGP: ; %bb.0:1407; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; CGP-NEXT: v_cvt_f32_u32_e32 v4, 0x12d8fb1409; CGP-NEXT: v_cvt_f32_ubyte0_e32 v5, 01410; CGP-NEXT: v_mov_b32_e32 v6, 0xffed27051411; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v51412; CGP-NEXT: v_rcp_iflag_f32_e32 v4, v41413; CGP-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v41414; CGP-NEXT: v_mul_f32_e32 v5, 0x2f800000, v41415; CGP-NEXT: v_trunc_f32_e32 v5, v51416; CGP-NEXT: v_mac_f32_e32 v4, 0xcf800000, v51417; CGP-NEXT: v_cvt_u32_f32_e32 v7, v41418; CGP-NEXT: v_cvt_u32_f32_e32 v8, v51419; CGP-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01420; CGP-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1421; CGP-NEXT: v_mul_hi_u32 v11, v8, v41422; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], -1, v7, v[9:10]1423; CGP-NEXT: v_mul_lo_u32 v9, v8, v41424; CGP-NEXT: v_mul_hi_u32 v10, v7, v41425; CGP-NEXT: v_mul_lo_u32 v4, v7, v121426; CGP-NEXT: v_mul_lo_u32 v13, v8, v121427; CGP-NEXT: v_mul_hi_u32 v14, v7, v121428; CGP-NEXT: v_mul_hi_u32 v12, v8, v121429; CGP-NEXT: v_add_i32_e32 v4, vcc, v9, v41430; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1431; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v101432; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1433; CGP-NEXT: v_add_i32_e32 v4, vcc, v15, v41434; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v111435; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1436; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v141437; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1438; CGP-NEXT: v_add_i32_e32 v14, vcc, v15, v141439; CGP-NEXT: v_add_i32_e32 v4, vcc, v13, v41440; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1441; CGP-NEXT: v_add_i32_e32 v13, vcc, v14, v131442; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v131443; CGP-NEXT: v_add_i32_e32 v4, vcc, v7, v41444; CGP-NEXT: v_addc_u32_e32 v16, vcc, v8, v12, vcc1445; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v6, v4, 01446; CGP-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v6, v16, v[13:14]1447; CGP-NEXT: v_mul_lo_u32 v17, v16, v121448; CGP-NEXT: v_mul_hi_u32 v18, v4, v121449; CGP-NEXT: v_mul_hi_u32 v19, v16, v121450; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], -1, v4, v[14:15]1451; CGP-NEXT: v_mul_lo_u32 v13, v4, v121452; CGP-NEXT: v_mul_hi_u32 v15, v4, v121453; CGP-NEXT: v_add_i32_e32 v13, vcc, v17, v131454; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1455; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v181456; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1457; CGP-NEXT: v_add_i32_e32 v13, vcc, v14, v131458; CGP-NEXT: v_mul_lo_u32 v14, v16, v121459; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v191460; CGP-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc1461; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v151462; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1463; CGP-NEXT: v_add_i32_e32 v15, vcc, v17, v151464; CGP-NEXT: v_mul_hi_u32 v17, v16, v121465; CGP-NEXT: v_ashrrev_i32_e32 v12, 31, v11466; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v121467; CGP-NEXT: v_addc_u32_e32 v1, vcc, v1, v12, vcc1468; CGP-NEXT: v_xor_b32_e32 v18, v0, v121469; CGP-NEXT: v_add_i32_e32 v0, vcc, v14, v131470; CGP-NEXT: v_xor_b32_e32 v19, v1, v121471; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1472; CGP-NEXT: v_add_i32_e32 v1, vcc, v15, v11473; CGP-NEXT: v_add_i32_e32 v1, vcc, v17, v11474; CGP-NEXT: v_add_i32_e32 v0, vcc, v4, v01475; CGP-NEXT: v_addc_u32_e32 v1, vcc, v16, v1, vcc1476; CGP-NEXT: v_mul_lo_u32 v13, v19, v01477; CGP-NEXT: v_mul_lo_u32 v14, v18, v11478; CGP-NEXT: v_mul_hi_u32 v15, v18, v01479; CGP-NEXT: v_mul_hi_u32 v0, v19, v01480; CGP-NEXT: v_mov_b32_e32 v4, 0x12d8fb1481; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v141482; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1483; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v151484; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1485; CGP-NEXT: v_mul_lo_u32 v15, v19, v11486; CGP-NEXT: v_add_i32_e32 v13, vcc, v14, v131487; CGP-NEXT: v_mul_hi_u32 v14, v18, v11488; CGP-NEXT: v_add_i32_e32 v0, vcc, v15, v01489; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1490; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v141491; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1492; CGP-NEXT: v_add_i32_e32 v14, vcc, v15, v141493; CGP-NEXT: v_mul_hi_u32 v1, v19, v11494; CGP-NEXT: v_add_i32_e32 v15, vcc, v0, v131495; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1496; CGP-NEXT: v_add_i32_e32 v0, vcc, v14, v01497; CGP-NEXT: v_add_i32_e32 v16, vcc, v1, v01498; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v4, v15, 01499; CGP-NEXT: v_mad_u64_u32 v[13:14], s[4:5], v4, v16, v[1:2]1500; CGP-NEXT: v_sub_i32_e32 v0, vcc, v18, v01501; CGP-NEXT: v_subb_u32_e64 v1, s[4:5], v19, v13, vcc1502; CGP-NEXT: v_sub_i32_e64 v13, s[4:5], v19, v131503; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v41504; CGP-NEXT: v_cndmask_b32_e64 v14, 0, -1, s[4:5]1505; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v11506; CGP-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v13, vcc1507; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v41508; CGP-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v1, vcc1509; CGP-NEXT: v_add_i32_e32 v18, vcc, 1, v151510; CGP-NEXT: v_addc_u32_e32 v19, vcc, 0, v16, vcc1511; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v41512; CGP-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc1513; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v11514; CGP-NEXT: v_cndmask_b32_e64 v17, -1, v14, s[4:5]1515; CGP-NEXT: v_cndmask_b32_e32 v20, -1, v0, vcc1516; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]1517; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v181518; CGP-NEXT: v_mad_u64_u32 v[13:14], s[4:5], -1, v7, v[0:1]1519; CGP-NEXT: v_addc_u32_e32 v21, vcc, 0, v19, vcc1520; CGP-NEXT: v_mul_lo_u32 v1, v7, v131521; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v201522; CGP-NEXT: v_cndmask_b32_e32 v0, v18, v5, vcc1523; CGP-NEXT: v_cndmask_b32_e32 v5, v19, v21, vcc1524; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v171525; CGP-NEXT: v_cndmask_b32_e32 v14, v15, v0, vcc1526; CGP-NEXT: v_add_i32_e64 v0, s[4:5], v9, v11527; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]1528; CGP-NEXT: v_add_i32_e64 v0, s[4:5], v0, v101529; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]1530; CGP-NEXT: v_mul_lo_u32 v9, v8, v131531; CGP-NEXT: v_add_i32_e64 v0, s[4:5], v1, v01532; CGP-NEXT: v_mul_hi_u32 v1, v7, v131533; CGP-NEXT: v_add_i32_e64 v9, s[4:5], v9, v111534; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, s[4:5]1535; CGP-NEXT: v_add_i32_e64 v1, s[4:5], v9, v11536; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5]1537; CGP-NEXT: v_add_i32_e64 v9, s[4:5], v10, v91538; CGP-NEXT: v_mul_hi_u32 v10, v8, v131539; CGP-NEXT: v_add_i32_e64 v0, s[4:5], v1, v01540; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]1541; CGP-NEXT: v_add_i32_e64 v1, s[4:5], v9, v11542; CGP-NEXT: v_add_i32_e64 v1, s[4:5], v10, v11543; CGP-NEXT: v_add_i32_e64 v9, s[4:5], v7, v01544; CGP-NEXT: v_addc_u32_e64 v10, s[4:5], v8, v1, s[4:5]1545; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v9, 01546; CGP-NEXT: v_cndmask_b32_e32 v5, v16, v5, vcc1547; CGP-NEXT: v_ashrrev_i32_e32 v13, 31, v31548; CGP-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v6, v10, v[1:2]1549; CGP-NEXT: v_xor_b32_e32 v1, v5, v121550; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v131551; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], -1, v9, v[7:8]1552; CGP-NEXT: v_addc_u32_e32 v3, vcc, v3, v13, vcc1553; CGP-NEXT: v_xor_b32_e32 v7, v2, v131554; CGP-NEXT: v_mul_lo_u32 v2, v10, v01555; CGP-NEXT: v_mul_lo_u32 v6, v9, v51556; CGP-NEXT: v_xor_b32_e32 v8, v3, v131557; CGP-NEXT: v_mul_hi_u32 v3, v9, v01558; CGP-NEXT: v_mul_hi_u32 v0, v10, v01559; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v61560; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1561; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v31562; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1563; CGP-NEXT: v_mul_lo_u32 v3, v10, v51564; CGP-NEXT: v_add_i32_e32 v2, vcc, v6, v21565; CGP-NEXT: v_mul_hi_u32 v6, v9, v51566; CGP-NEXT: v_add_i32_e32 v0, vcc, v3, v01567; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1568; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v61569; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1570; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v61571; CGP-NEXT: v_mul_hi_u32 v5, v10, v51572; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v21573; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1574; CGP-NEXT: v_add_i32_e32 v2, vcc, v3, v21575; CGP-NEXT: v_add_i32_e32 v2, vcc, v5, v21576; CGP-NEXT: v_add_i32_e32 v3, vcc, v9, v01577; CGP-NEXT: v_addc_u32_e32 v2, vcc, v10, v2, vcc1578; CGP-NEXT: v_mul_lo_u32 v5, v8, v31579; CGP-NEXT: v_mul_lo_u32 v6, v7, v21580; CGP-NEXT: v_xor_b32_e32 v11, v14, v121581; CGP-NEXT: v_mul_hi_u32 v9, v7, v31582; CGP-NEXT: v_sub_i32_e32 v0, vcc, v11, v121583; CGP-NEXT: v_subb_u32_e32 v1, vcc, v1, v12, vcc1584; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v61585; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1586; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v91587; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1588; CGP-NEXT: v_mul_lo_u32 v9, v8, v21589; CGP-NEXT: v_mul_hi_u32 v3, v8, v31590; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v51591; CGP-NEXT: v_mul_hi_u32 v6, v7, v21592; CGP-NEXT: v_add_i32_e32 v3, vcc, v9, v31593; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1594; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v61595; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1596; CGP-NEXT: v_add_i32_e32 v6, vcc, v9, v61597; CGP-NEXT: v_add_i32_e32 v9, vcc, v3, v51598; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1599; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v31600; CGP-NEXT: v_mul_hi_u32 v6, v8, v21601; CGP-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v4, v9, 01602; CGP-NEXT: v_add_i32_e32 v10, vcc, v6, v51603; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v4, v10, v[3:4]1604; CGP-NEXT: v_sub_i32_e32 v2, vcc, v7, v21605; CGP-NEXT: v_subb_u32_e64 v3, s[4:5], v8, v5, vcc1606; CGP-NEXT: v_sub_i32_e64 v5, s[4:5], v8, v51607; CGP-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1608; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v41609; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v41610; CGP-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]1611; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v31612; CGP-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1613; CGP-NEXT: v_cndmask_b32_e64 v3, -1, v6, s[4:5]1614; CGP-NEXT: v_add_i32_e32 v6, vcc, 1, v91615; CGP-NEXT: v_addc_u32_e32 v7, vcc, 0, v10, vcc1616; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v41617; CGP-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc1618; CGP-NEXT: v_cmp_eq_u32_e32 vcc, 0, v51619; CGP-NEXT: v_cndmask_b32_e32 v2, -1, v2, vcc1620; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v61621; CGP-NEXT: v_addc_u32_e32 v5, vcc, 0, v7, vcc1622; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v21623; CGP-NEXT: v_cndmask_b32_e32 v2, v6, v4, vcc1624; CGP-NEXT: v_cndmask_b32_e32 v4, v7, v5, vcc1625; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v31626; CGP-NEXT: v_cndmask_b32_e32 v2, v9, v2, vcc1627; CGP-NEXT: v_cndmask_b32_e32 v3, v10, v4, vcc1628; CGP-NEXT: v_xor_b32_e32 v2, v2, v131629; CGP-NEXT: v_xor_b32_e32 v3, v3, v131630; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v131631; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v13, vcc1632; CGP-NEXT: s_setpc_b64 s[30:31]1633 %result = sdiv <2 x i64> %num, <i64 1235195, i64 1235195>1634 ret <2 x i64> %result1635}1636 1637define i64 @v_sdiv_i64_pow2_shl_denom(i64 %x, i64 %y) {1638; CHECK-LABEL: v_sdiv_i64_pow2_shl_denom:1639; CHECK: ; %bb.0:1640; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1641; CHECK-NEXT: v_mov_b32_e32 v3, v01642; CHECK-NEXT: v_mov_b32_e32 v4, v11643; CHECK-NEXT: v_mov_b32_e32 v0, 0x10001644; CHECK-NEXT: v_mov_b32_e32 v1, 01645; CHECK-NEXT: v_lshl_b64 v[5:6], v[0:1], v21646; CHECK-NEXT: v_mov_b32_e32 v0, 01647; CHECK-NEXT: v_or_b32_e32 v1, v4, v61648; CHECK-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]1649; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr11650; CHECK-NEXT: s_and_saveexec_b64 s[4:5], vcc1651; CHECK-NEXT: s_xor_b64 s[6:7], exec, s[4:5]1652; CHECK-NEXT: s_cbranch_execnz .LBB7_31653; CHECK-NEXT: ; %bb.1: ; %Flow1654; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1655; CHECK-NEXT: s_cbranch_execnz .LBB7_41656; CHECK-NEXT: .LBB7_2:1657; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]1658; CHECK-NEXT: s_setpc_b64 s[30:31]1659; CHECK-NEXT: .LBB7_3:1660; CHECK-NEXT: v_ashrrev_i32_e32 v0, 31, v61661; CHECK-NEXT: v_add_i32_e32 v1, vcc, v5, v01662; CHECK-NEXT: v_addc_u32_e32 v5, vcc, v6, v0, vcc1663; CHECK-NEXT: v_xor_b32_e32 v2, v1, v01664; CHECK-NEXT: v_xor_b32_e32 v1, v5, v01665; CHECK-NEXT: v_cvt_f32_u32_e32 v5, v21666; CHECK-NEXT: v_cvt_f32_u32_e32 v6, v11667; CHECK-NEXT: v_sub_i32_e32 v13, vcc, 0, v21668; CHECK-NEXT: v_subb_u32_e32 v14, vcc, 0, v1, vcc1669; CHECK-NEXT: v_mac_f32_e32 v5, 0x4f800000, v61670; CHECK-NEXT: v_rcp_iflag_f32_e32 v5, v51671; CHECK-NEXT: v_mul_f32_e32 v5, 0x5f7ffffc, v51672; CHECK-NEXT: v_mul_f32_e32 v6, 0x2f800000, v51673; CHECK-NEXT: v_trunc_f32_e32 v6, v61674; CHECK-NEXT: v_mac_f32_e32 v5, 0xcf800000, v61675; CHECK-NEXT: v_cvt_u32_f32_e32 v12, v51676; CHECK-NEXT: v_cvt_u32_f32_e32 v11, v61677; CHECK-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v13, v12, 01678; CHECK-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v13, v11, v[6:7]1679; CHECK-NEXT: v_mul_lo_u32 v6, v11, v51680; CHECK-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v14, v12, v[7:8]1681; CHECK-NEXT: v_mul_hi_u32 v7, v12, v51682; CHECK-NEXT: v_mul_hi_u32 v5, v11, v51683; CHECK-NEXT: v_mul_lo_u32 v8, v12, v91684; CHECK-NEXT: v_mul_lo_u32 v10, v11, v91685; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v81686; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1687; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v71688; CHECK-NEXT: v_mul_hi_u32 v7, v12, v91689; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1690; CHECK-NEXT: v_add_i32_e32 v6, vcc, v8, v61691; CHECK-NEXT: v_add_i32_e32 v5, vcc, v10, v51692; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1693; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v71694; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1695; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v71696; CHECK-NEXT: v_mul_hi_u32 v8, v11, v91697; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v61698; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1699; CHECK-NEXT: v_add_i32_e32 v6, vcc, v7, v61700; CHECK-NEXT: v_add_i32_e32 v6, vcc, v8, v61701; CHECK-NEXT: v_add_i32_e32 v12, vcc, v12, v51702; CHECK-NEXT: v_addc_u32_e32 v11, vcc, v11, v6, vcc1703; CHECK-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v13, v12, 01704; CHECK-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v13, v11, v[6:7]1705; CHECK-NEXT: v_ashrrev_i32_e32 v13, 31, v41706; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v131707; CHECK-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v14, v12, v[7:8]1708; CHECK-NEXT: v_addc_u32_e32 v4, vcc, v4, v13, vcc1709; CHECK-NEXT: v_xor_b32_e32 v10, v3, v131710; CHECK-NEXT: v_mul_lo_u32 v3, v11, v51711; CHECK-NEXT: v_mul_lo_u32 v6, v12, v91712; CHECK-NEXT: v_xor_b32_e32 v14, v4, v131713; CHECK-NEXT: v_mul_hi_u32 v4, v12, v51714; CHECK-NEXT: v_mul_hi_u32 v5, v11, v51715; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v61716; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1717; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v41718; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1719; CHECK-NEXT: v_mul_lo_u32 v4, v11, v91720; CHECK-NEXT: v_add_i32_e32 v3, vcc, v6, v31721; CHECK-NEXT: v_mul_hi_u32 v6, v12, v91722; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v51723; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1724; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v61725; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1726; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v61727; CHECK-NEXT: v_mul_hi_u32 v6, v11, v91728; CHECK-NEXT: v_add_i32_e32 v3, vcc, v4, v31729; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1730; CHECK-NEXT: v_add_i32_e32 v4, vcc, v5, v41731; CHECK-NEXT: v_add_i32_e32 v4, vcc, v6, v41732; CHECK-NEXT: v_add_i32_e32 v3, vcc, v12, v31733; CHECK-NEXT: v_addc_u32_e32 v4, vcc, v11, v4, vcc1734; CHECK-NEXT: v_mul_lo_u32 v5, v14, v31735; CHECK-NEXT: v_mul_lo_u32 v6, v10, v41736; CHECK-NEXT: v_mul_hi_u32 v7, v10, v31737; CHECK-NEXT: v_mul_hi_u32 v3, v14, v31738; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v61739; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1740; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v71741; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1742; CHECK-NEXT: v_mul_lo_u32 v7, v14, v41743; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v51744; CHECK-NEXT: v_mul_hi_u32 v6, v10, v41745; CHECK-NEXT: v_add_i32_e32 v3, vcc, v7, v31746; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1747; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v61748; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1749; CHECK-NEXT: v_add_i32_e32 v6, vcc, v7, v61750; CHECK-NEXT: v_add_i32_e32 v9, vcc, v3, v51751; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc1752; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v31753; CHECK-NEXT: v_mul_hi_u32 v6, v14, v41754; CHECK-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v2, v9, 01755; CHECK-NEXT: v_add_i32_e32 v11, vcc, v6, v51756; CHECK-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v2, v11, v[4:5]1757; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v10, v31758; CHECK-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v1, v9, v[5:6]1759; CHECK-NEXT: v_subb_u32_e64 v4, s[4:5], v14, v7, vcc1760; CHECK-NEXT: v_sub_i32_e64 v5, s[4:5], v14, v71761; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v4, v11762; CHECK-NEXT: v_subb_u32_e32 v5, vcc, v5, v1, vcc1763; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]1764; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v21765; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v3, v21766; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]1767; CHECK-NEXT: v_cmp_eq_u32_e64 s[4:5], v4, v11768; CHECK-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1769; CHECK-NEXT: v_cndmask_b32_e64 v4, v6, v7, s[4:5]1770; CHECK-NEXT: v_add_i32_e32 v6, vcc, 1, v91771; CHECK-NEXT: v_addc_u32_e32 v7, vcc, 0, v11, vcc1772; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v5, v11773; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, -1, vcc1774; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v21775; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc1776; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v5, v11777; CHECK-NEXT: v_cndmask_b32_e32 v1, v8, v2, vcc1778; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v61779; CHECK-NEXT: v_addc_u32_e32 v3, vcc, 0, v7, vcc1780; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v11781; CHECK-NEXT: v_cndmask_b32_e32 v1, v6, v2, vcc1782; CHECK-NEXT: v_cndmask_b32_e32 v2, v7, v3, vcc1783; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v41784; CHECK-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc1785; CHECK-NEXT: v_xor_b32_e32 v3, v13, v01786; CHECK-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc1787; CHECK-NEXT: v_xor_b32_e32 v0, v1, v31788; CHECK-NEXT: v_xor_b32_e32 v1, v2, v31789; CHECK-NEXT: v_sub_i32_e32 v0, vcc, v0, v31790; CHECK-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc1791; CHECK-NEXT: ; implicit-def: $vgpr5_vgpr61792; CHECK-NEXT: ; implicit-def: $vgpr31793; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1794; CHECK-NEXT: s_cbranch_execz .LBB7_21795; CHECK-NEXT: .LBB7_4:1796; CHECK-NEXT: v_cvt_f32_u32_e32 v0, v51797; CHECK-NEXT: v_sub_i32_e32 v1, vcc, 0, v51798; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v01799; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v01800; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v01801; CHECK-NEXT: v_mul_lo_u32 v1, v1, v01802; CHECK-NEXT: v_mul_hi_u32 v1, v0, v11803; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v11804; CHECK-NEXT: v_mul_hi_u32 v0, v3, v01805; CHECK-NEXT: v_mov_b32_e32 v1, 01806; CHECK-NEXT: v_mul_lo_u32 v2, v0, v51807; CHECK-NEXT: v_add_i32_e32 v4, vcc, 1, v01808; CHECK-NEXT: v_sub_i32_e32 v2, vcc, v3, v21809; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v2, v51810; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc1811; CHECK-NEXT: v_sub_i32_e64 v3, s[4:5], v2, v51812; CHECK-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc1813; CHECK-NEXT: v_add_i32_e32 v3, vcc, 1, v01814; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v2, v51815; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc1816; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]1817; CHECK-NEXT: s_setpc_b64 s[30:31]1818 %shl.y = shl i64 4096, %y1819 %r = sdiv i64 %x, %shl.y1820 ret i64 %r1821}1822 1823define <2 x i64> @v_sdiv_v2i64_pow2_shl_denom(<2 x i64> %x, <2 x i64> %y) {1824; GISEL-LABEL: v_sdiv_v2i64_pow2_shl_denom:1825; GISEL: ; %bb.0:1826; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1827; GISEL-NEXT: v_mov_b32_e32 v12, 0x10001828; GISEL-NEXT: v_mov_b32_e32 v13, 01829; GISEL-NEXT: v_lshl_b64 v[7:8], v[12:13], v41830; GISEL-NEXT: v_ashrrev_i32_e32 v4, 31, v81831; GISEL-NEXT: v_add_i32_e32 v5, vcc, v7, v41832; GISEL-NEXT: v_addc_u32_e32 v7, vcc, v8, v4, vcc1833; GISEL-NEXT: v_xor_b32_e32 v8, v5, v41834; GISEL-NEXT: v_xor_b32_e32 v7, v7, v41835; GISEL-NEXT: v_cvt_f32_u32_e32 v5, v81836; GISEL-NEXT: v_cvt_f32_u32_e32 v9, v71837; GISEL-NEXT: v_sub_i32_e32 v16, vcc, 0, v81838; GISEL-NEXT: v_subb_u32_e32 v18, vcc, 0, v7, vcc1839; GISEL-NEXT: v_mac_f32_e32 v5, 0x4f800000, v91840; GISEL-NEXT: v_rcp_iflag_f32_e32 v5, v51841; GISEL-NEXT: v_mul_f32_e32 v5, 0x5f7ffffc, v51842; GISEL-NEXT: v_mul_f32_e32 v9, 0x2f800000, v51843; GISEL-NEXT: v_trunc_f32_e32 v9, v91844; GISEL-NEXT: v_mac_f32_e32 v5, 0xcf800000, v91845; GISEL-NEXT: v_cvt_u32_f32_e32 v5, v51846; GISEL-NEXT: v_cvt_u32_f32_e32 v11, v91847; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v16, v5, 01848; GISEL-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v16, v11, v[10:11]1849; GISEL-NEXT: v_mul_lo_u32 v17, v11, v91850; GISEL-NEXT: v_mul_hi_u32 v19, v5, v91851; GISEL-NEXT: v_mul_hi_u32 v20, v11, v91852; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v18, v5, v[14:15]1853; GISEL-NEXT: v_mul_lo_u32 v10, v5, v91854; GISEL-NEXT: v_mul_lo_u32 v15, v11, v91855; GISEL-NEXT: v_add_i32_e32 v10, vcc, v17, v101856; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1857; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v191858; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1859; GISEL-NEXT: v_add_i32_e32 v10, vcc, v14, v101860; GISEL-NEXT: v_mul_hi_u32 v14, v5, v91861; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v201862; GISEL-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc1863; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141864; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1865; GISEL-NEXT: v_add_i32_e32 v15, vcc, v17, v151866; GISEL-NEXT: v_mul_hi_u32 v9, v11, v91867; GISEL-NEXT: v_add_i32_e32 v10, vcc, v14, v101868; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1869; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141870; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v141871; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v101872; GISEL-NEXT: v_addc_u32_e32 v19, vcc, v11, v9, vcc1873; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v16, v5, 01874; GISEL-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v16, v19, v[11:12]1875; GISEL-NEXT: v_mul_lo_u32 v9, v19, v101876; GISEL-NEXT: v_lshl_b64 v[12:13], v[12:13], v61877; GISEL-NEXT: v_mad_u64_u32 v[16:17], s[4:5], v18, v5, v[14:15]1878; GISEL-NEXT: v_mul_hi_u32 v14, v5, v101879; GISEL-NEXT: v_mul_lo_u32 v11, v5, v161880; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v111881; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1882; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v141883; GISEL-NEXT: v_ashrrev_i32_e32 v9, 31, v11884; GISEL-NEXT: v_add_i32_e64 v0, s[4:5], v0, v91885; GISEL-NEXT: v_addc_u32_e64 v1, s[4:5], v1, v9, s[4:5]1886; GISEL-NEXT: v_xor_b32_e32 v14, v0, v91887; GISEL-NEXT: v_xor_b32_e32 v15, v1, v91888; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1889; GISEL-NEXT: v_mul_hi_u32 v1, v19, v101890; GISEL-NEXT: v_mul_lo_u32 v10, v19, v161891; GISEL-NEXT: v_add_i32_e32 v0, vcc, v11, v01892; GISEL-NEXT: v_mul_hi_u32 v11, v5, v161893; GISEL-NEXT: v_add_i32_e32 v1, vcc, v10, v11894; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1895; GISEL-NEXT: v_add_i32_e32 v1, vcc, v1, v111896; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1897; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v111898; GISEL-NEXT: v_mul_hi_u32 v11, v19, v161899; GISEL-NEXT: v_add_i32_e32 v0, vcc, v1, v01900; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1901; GISEL-NEXT: v_add_i32_e32 v1, vcc, v10, v11902; GISEL-NEXT: v_add_i32_e32 v1, vcc, v11, v11903; GISEL-NEXT: v_add_i32_e32 v0, vcc, v5, v01904; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v19, v1, vcc1905; GISEL-NEXT: v_mul_lo_u32 v5, v15, v01906; GISEL-NEXT: v_mul_lo_u32 v10, v14, v11907; GISEL-NEXT: v_mul_hi_u32 v11, v14, v01908; GISEL-NEXT: v_mul_hi_u32 v0, v15, v01909; GISEL-NEXT: v_xor_b32_e32 v4, v9, v41910; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v101911; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1912; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v111913; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1914; GISEL-NEXT: v_mul_lo_u32 v11, v15, v11915; GISEL-NEXT: v_add_i32_e32 v5, vcc, v10, v51916; GISEL-NEXT: v_mul_hi_u32 v10, v14, v11917; GISEL-NEXT: v_add_i32_e32 v0, vcc, v11, v01918; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1919; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v101920; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1921; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101922; GISEL-NEXT: v_add_i32_e32 v16, vcc, v0, v51923; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1924; GISEL-NEXT: v_add_i32_e32 v5, vcc, v10, v01925; GISEL-NEXT: v_mul_hi_u32 v10, v15, v11926; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v8, v16, 01927; GISEL-NEXT: v_ashrrev_i32_e32 v9, 31, v31928; GISEL-NEXT: v_add_i32_e32 v17, vcc, v10, v51929; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v8, v17, v[1:2]1930; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v14, v01931; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v7, v16, v[10:11]1932; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], v15, v5, vcc1933; GISEL-NEXT: v_sub_i32_e64 v5, s[4:5], v15, v51934; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v1, v71935; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]1936; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v81937; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]1938; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v1, v71939; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v5, v7, vcc1940; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v81941; GISEL-NEXT: v_subbrev_u32_e32 v1, vcc, 0, v1, vcc1942; GISEL-NEXT: v_add_i32_e32 v14, vcc, 1, v161943; GISEL-NEXT: v_addc_u32_e32 v15, vcc, 0, v17, vcc1944; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v1, v71945; GISEL-NEXT: v_ashrrev_i32_e32 v5, 31, v131946; GISEL-NEXT: v_cndmask_b32_e64 v11, v6, v10, s[4:5]1947; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, -1, vcc1948; GISEL-NEXT: v_add_i32_e32 v6, vcc, v12, v51949; GISEL-NEXT: v_addc_u32_e32 v12, vcc, v13, v5, vcc1950; GISEL-NEXT: v_xor_b32_e32 v10, v6, v51951; GISEL-NEXT: v_xor_b32_e32 v6, v12, v51952; GISEL-NEXT: v_cvt_f32_u32_e32 v12, v101953; GISEL-NEXT: v_cvt_f32_u32_e32 v13, v61954; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v81955; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc1956; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v1, v71957; GISEL-NEXT: v_mac_f32_e32 v12, 0x4f800000, v131958; GISEL-NEXT: v_rcp_iflag_f32_e32 v1, v121959; GISEL-NEXT: v_cndmask_b32_e32 v0, v18, v0, vcc1960; GISEL-NEXT: v_add_i32_e32 v7, vcc, 1, v141961; GISEL-NEXT: v_addc_u32_e32 v12, vcc, 0, v15, vcc1962; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01963; GISEL-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v11964; GISEL-NEXT: v_mul_f32_e32 v1, 0x2f800000, v01965; GISEL-NEXT: v_trunc_f32_e32 v1, v11966; GISEL-NEXT: v_mac_f32_e32 v0, 0xcf800000, v11967; GISEL-NEXT: v_cndmask_b32_e32 v13, v14, v7, vcc1968; GISEL-NEXT: v_cvt_u32_f32_e32 v14, v01969; GISEL-NEXT: v_sub_i32_e64 v19, s[4:5], 0, v101970; GISEL-NEXT: v_cvt_u32_f32_e32 v18, v11971; GISEL-NEXT: v_subb_u32_e64 v20, s[4:5], 0, v6, s[4:5]1972; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v19, v14, 01973; GISEL-NEXT: v_cndmask_b32_e32 v12, v15, v12, vcc1974; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v111975; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v19, v18, v[1:2]1976; GISEL-NEXT: v_mul_lo_u32 v21, v18, v01977; GISEL-NEXT: v_mul_hi_u32 v22, v14, v01978; GISEL-NEXT: v_mul_hi_u32 v23, v18, v01979; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v20, v14, v[7:8]1980; GISEL-NEXT: v_cndmask_b32_e32 v11, v16, v13, vcc1981; GISEL-NEXT: v_cndmask_b32_e32 v15, v17, v12, vcc1982; GISEL-NEXT: v_mul_lo_u32 v1, v14, v01983; GISEL-NEXT: v_mul_lo_u32 v8, v18, v01984; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v21, v11985; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5]1986; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v1, v221987; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]1988; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v7, v11989; GISEL-NEXT: v_mul_hi_u32 v7, v14, v01990; GISEL-NEXT: v_add_i32_e64 v8, s[4:5], v8, v231991; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, s[4:5]1992; GISEL-NEXT: v_add_i32_e64 v7, s[4:5], v8, v71993; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, s[4:5]1994; GISEL-NEXT: v_add_i32_e64 v8, s[4:5], v13, v81995; GISEL-NEXT: v_mul_hi_u32 v0, v18, v01996; GISEL-NEXT: v_add_i32_e64 v1, s[4:5], v7, v11997; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, s[4:5]1998; GISEL-NEXT: v_add_i32_e64 v7, s[4:5], v8, v71999; GISEL-NEXT: v_add_i32_e64 v0, s[4:5], v0, v72000; GISEL-NEXT: v_add_i32_e64 v13, s[4:5], v14, v12001; GISEL-NEXT: v_addc_u32_e64 v14, s[4:5], v18, v0, s[4:5]2002; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v19, v13, 02003; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v19, v14, v[1:2]2004; GISEL-NEXT: v_xor_b32_e32 v1, v11, v42005; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v92006; GISEL-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v20, v13, v[7:8]2007; GISEL-NEXT: v_addc_u32_e32 v3, vcc, v3, v9, vcc2008; GISEL-NEXT: v_xor_b32_e32 v12, v2, v92009; GISEL-NEXT: v_mul_lo_u32 v2, v14, v02010; GISEL-NEXT: v_mul_lo_u32 v7, v13, v112011; GISEL-NEXT: v_xor_b32_e32 v16, v3, v92012; GISEL-NEXT: v_mul_hi_u32 v3, v13, v02013; GISEL-NEXT: v_mul_hi_u32 v0, v14, v02014; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v72015; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2016; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v32017; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc2018; GISEL-NEXT: v_mul_lo_u32 v3, v14, v112019; GISEL-NEXT: v_add_i32_e32 v2, vcc, v7, v22020; GISEL-NEXT: v_mul_hi_u32 v7, v13, v112021; GISEL-NEXT: v_add_i32_e32 v0, vcc, v3, v02022; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc2023; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v72024; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2025; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v72026; GISEL-NEXT: v_mul_hi_u32 v7, v14, v112027; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v22028; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc2029; GISEL-NEXT: v_add_i32_e32 v2, vcc, v3, v22030; GISEL-NEXT: v_add_i32_e32 v2, vcc, v7, v22031; GISEL-NEXT: v_add_i32_e32 v0, vcc, v13, v02032; GISEL-NEXT: v_addc_u32_e32 v2, vcc, v14, v2, vcc2033; GISEL-NEXT: v_mul_lo_u32 v3, v16, v02034; GISEL-NEXT: v_mul_lo_u32 v7, v12, v22035; GISEL-NEXT: v_mul_hi_u32 v8, v12, v02036; GISEL-NEXT: v_mul_hi_u32 v0, v16, v02037; GISEL-NEXT: v_xor_b32_e32 v11, v15, v42038; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v72039; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2040; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v82041; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc2042; GISEL-NEXT: v_mul_lo_u32 v8, v16, v22043; GISEL-NEXT: v_add_i32_e32 v3, vcc, v7, v32044; GISEL-NEXT: v_mul_hi_u32 v7, v12, v22045; GISEL-NEXT: v_add_i32_e32 v0, vcc, v8, v02046; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2047; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v72048; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2049; GISEL-NEXT: v_add_i32_e32 v7, vcc, v8, v72050; GISEL-NEXT: v_add_i32_e32 v13, vcc, v0, v32051; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc2052; GISEL-NEXT: v_add_i32_e32 v0, vcc, v7, v02053; GISEL-NEXT: v_mul_hi_u32 v7, v16, v22054; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v10, v13, 02055; GISEL-NEXT: v_add_i32_e32 v14, vcc, v7, v02056; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v10, v14, v[3:4]2057; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v1, v42058; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v11, v4, vcc2059; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v6, v13, v[7:8]2060; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v12, v22061; GISEL-NEXT: v_subb_u32_e64 v4, s[4:5], v16, v3, vcc2062; GISEL-NEXT: v_sub_i32_e64 v3, s[4:5], v16, v32063; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v4, v62064; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v6, vcc2065; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]2066; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v102067; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v102068; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]2069; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v4, v62070; GISEL-NEXT: v_subbrev_u32_e32 v3, vcc, 0, v3, vcc2071; GISEL-NEXT: v_cndmask_b32_e64 v4, v7, v8, s[4:5]2072; GISEL-NEXT: v_add_i32_e32 v7, vcc, 1, v132073; GISEL-NEXT: v_addc_u32_e32 v8, vcc, 0, v14, vcc2074; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v3, v62075; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, vcc2076; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v102077; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc2078; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v3, v62079; GISEL-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc2080; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v72081; GISEL-NEXT: v_addc_u32_e32 v6, vcc, 0, v8, vcc2082; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v22083; GISEL-NEXT: v_cndmask_b32_e32 v2, v7, v3, vcc2084; GISEL-NEXT: v_cndmask_b32_e32 v3, v8, v6, vcc2085; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v42086; GISEL-NEXT: v_cndmask_b32_e32 v2, v13, v2, vcc2087; GISEL-NEXT: v_xor_b32_e32 v4, v9, v52088; GISEL-NEXT: v_cndmask_b32_e32 v3, v14, v3, vcc2089; GISEL-NEXT: v_xor_b32_e32 v2, v2, v42090; GISEL-NEXT: v_xor_b32_e32 v3, v3, v42091; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v42092; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v4, vcc2093; GISEL-NEXT: s_setpc_b64 s[30:31]2094;2095; CGP-LABEL: v_sdiv_v2i64_pow2_shl_denom:2096; CGP: ; %bb.0:2097; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2098; CGP-NEXT: v_mov_b32_e32 v5, v22099; CGP-NEXT: v_mov_b32_e32 v7, v32100; CGP-NEXT: v_mov_b32_e32 v2, 0x10002101; CGP-NEXT: v_mov_b32_e32 v3, 02102; CGP-NEXT: v_lshl_b64 v[11:12], v[2:3], v42103; CGP-NEXT: v_mov_b32_e32 v9, v12104; CGP-NEXT: v_mov_b32_e32 v8, v02105; CGP-NEXT: v_or_b32_e32 v1, v9, v122106; CGP-NEXT: v_mov_b32_e32 v0, 02107; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]2108; CGP-NEXT: ; implicit-def: $vgpr0_vgpr12109; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc2110; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]2111; CGP-NEXT: s_cbranch_execz .LBB8_22112; CGP-NEXT: ; %bb.1:2113; CGP-NEXT: v_ashrrev_i32_e32 v0, 31, v122114; CGP-NEXT: v_add_i32_e32 v1, vcc, v11, v02115; CGP-NEXT: v_addc_u32_e32 v10, vcc, v12, v0, vcc2116; CGP-NEXT: v_xor_b32_e32 v4, v1, v02117; CGP-NEXT: v_xor_b32_e32 v1, v10, v02118; CGP-NEXT: v_cvt_f32_u32_e32 v10, v42119; CGP-NEXT: v_cvt_f32_u32_e32 v11, v12120; CGP-NEXT: v_sub_i32_e32 v18, vcc, 0, v42121; CGP-NEXT: v_subb_u32_e32 v19, vcc, 0, v1, vcc2122; CGP-NEXT: v_mac_f32_e32 v10, 0x4f800000, v112123; CGP-NEXT: v_rcp_iflag_f32_e32 v10, v102124; CGP-NEXT: v_mul_f32_e32 v10, 0x5f7ffffc, v102125; CGP-NEXT: v_mul_f32_e32 v11, 0x2f800000, v102126; CGP-NEXT: v_trunc_f32_e32 v11, v112127; CGP-NEXT: v_mac_f32_e32 v10, 0xcf800000, v112128; CGP-NEXT: v_cvt_u32_f32_e32 v17, v102129; CGP-NEXT: v_cvt_u32_f32_e32 v16, v112130; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v18, v17, 02131; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v18, v16, v[11:12]2132; CGP-NEXT: v_mul_lo_u32 v11, v16, v102133; CGP-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v19, v17, v[12:13]2134; CGP-NEXT: v_mul_hi_u32 v12, v17, v102135; CGP-NEXT: v_mul_hi_u32 v10, v16, v102136; CGP-NEXT: v_mul_lo_u32 v13, v17, v142137; CGP-NEXT: v_mul_lo_u32 v15, v16, v142138; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v132139; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc2140; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v122141; CGP-NEXT: v_mul_hi_u32 v12, v17, v142142; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2143; CGP-NEXT: v_add_i32_e32 v11, vcc, v13, v112144; CGP-NEXT: v_add_i32_e32 v10, vcc, v15, v102145; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc2146; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v122147; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc2148; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v122149; CGP-NEXT: v_mul_hi_u32 v13, v16, v142150; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v112151; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2152; CGP-NEXT: v_add_i32_e32 v11, vcc, v12, v112153; CGP-NEXT: v_add_i32_e32 v11, vcc, v13, v112154; CGP-NEXT: v_add_i32_e32 v17, vcc, v17, v102155; CGP-NEXT: v_addc_u32_e32 v16, vcc, v16, v11, vcc2156; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v18, v17, 02157; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v18, v16, v[11:12]2158; CGP-NEXT: v_ashrrev_i32_e32 v18, 31, v92159; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v182160; CGP-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v19, v17, v[12:13]2161; CGP-NEXT: v_addc_u32_e32 v9, vcc, v9, v18, vcc2162; CGP-NEXT: v_xor_b32_e32 v15, v8, v182163; CGP-NEXT: v_mul_lo_u32 v8, v16, v102164; CGP-NEXT: v_mul_lo_u32 v11, v17, v142165; CGP-NEXT: v_xor_b32_e32 v19, v9, v182166; CGP-NEXT: v_mul_hi_u32 v9, v17, v102167; CGP-NEXT: v_mul_hi_u32 v10, v16, v102168; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v112169; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2170; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v92171; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2172; CGP-NEXT: v_mul_lo_u32 v9, v16, v142173; CGP-NEXT: v_add_i32_e32 v8, vcc, v11, v82174; CGP-NEXT: v_mul_hi_u32 v11, v17, v142175; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v102176; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc2177; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v112178; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2179; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v112180; CGP-NEXT: v_mul_hi_u32 v11, v16, v142181; CGP-NEXT: v_add_i32_e32 v8, vcc, v9, v82182; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2183; CGP-NEXT: v_add_i32_e32 v9, vcc, v10, v92184; CGP-NEXT: v_add_i32_e32 v9, vcc, v11, v92185; CGP-NEXT: v_add_i32_e32 v8, vcc, v17, v82186; CGP-NEXT: v_addc_u32_e32 v9, vcc, v16, v9, vcc2187; CGP-NEXT: v_mul_lo_u32 v10, v19, v82188; CGP-NEXT: v_mul_lo_u32 v11, v15, v92189; CGP-NEXT: v_mul_hi_u32 v12, v15, v82190; CGP-NEXT: v_mul_hi_u32 v8, v19, v82191; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v112192; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2193; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v122194; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc2195; CGP-NEXT: v_mul_lo_u32 v12, v19, v92196; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v102197; CGP-NEXT: v_mul_hi_u32 v11, v15, v92198; CGP-NEXT: v_add_i32_e32 v8, vcc, v12, v82199; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc2200; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v112201; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2202; CGP-NEXT: v_add_i32_e32 v11, vcc, v12, v112203; CGP-NEXT: v_add_i32_e32 v14, vcc, v8, v102204; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2205; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v82206; CGP-NEXT: v_mul_hi_u32 v11, v19, v92207; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v4, v14, 02208; CGP-NEXT: v_add_i32_e32 v16, vcc, v11, v102209; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v4, v16, v[9:10]2210; CGP-NEXT: v_sub_i32_e32 v8, vcc, v15, v82211; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v1, v14, v[10:11]2212; CGP-NEXT: v_subb_u32_e64 v9, s[4:5], v19, v12, vcc2213; CGP-NEXT: v_sub_i32_e64 v10, s[4:5], v19, v122214; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v9, v12215; CGP-NEXT: v_subb_u32_e32 v10, vcc, v10, v1, vcc2216; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]2217; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v8, v42218; CGP-NEXT: v_sub_i32_e32 v8, vcc, v8, v42219; CGP-NEXT: v_cndmask_b32_e64 v12, 0, -1, s[4:5]2220; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v9, v12221; CGP-NEXT: v_subbrev_u32_e32 v10, vcc, 0, v10, vcc2222; CGP-NEXT: v_cndmask_b32_e64 v9, v11, v12, s[4:5]2223; CGP-NEXT: v_add_i32_e32 v11, vcc, 1, v142224; CGP-NEXT: v_addc_u32_e32 v12, vcc, 0, v16, vcc2225; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v10, v12226; CGP-NEXT: v_cndmask_b32_e64 v13, 0, -1, vcc2227; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v8, v42228; CGP-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc2229; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v10, v12230; CGP-NEXT: v_cndmask_b32_e32 v1, v13, v4, vcc2231; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v112232; CGP-NEXT: v_addc_u32_e32 v8, vcc, 0, v12, vcc2233; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v12234; CGP-NEXT: v_cndmask_b32_e32 v1, v11, v4, vcc2235; CGP-NEXT: v_cndmask_b32_e32 v4, v12, v8, vcc2236; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v92237; CGP-NEXT: v_cndmask_b32_e32 v1, v14, v1, vcc2238; CGP-NEXT: v_xor_b32_e32 v8, v18, v02239; CGP-NEXT: v_cndmask_b32_e32 v4, v16, v4, vcc2240; CGP-NEXT: v_xor_b32_e32 v0, v1, v82241; CGP-NEXT: v_xor_b32_e32 v1, v4, v82242; CGP-NEXT: v_sub_i32_e32 v0, vcc, v0, v82243; CGP-NEXT: v_subb_u32_e32 v1, vcc, v1, v8, vcc2244; CGP-NEXT: ; implicit-def: $vgpr11_vgpr122245; CGP-NEXT: ; implicit-def: $vgpr82246; CGP-NEXT: .LBB8_2: ; %Flow12247; CGP-NEXT: s_or_saveexec_b64 s[6:7], s[6:7]2248; CGP-NEXT: v_lshl_b64 v[9:10], v[2:3], v62249; CGP-NEXT: s_xor_b64 exec, exec, s[6:7]2250; CGP-NEXT: s_cbranch_execz .LBB8_42251; CGP-NEXT: ; %bb.3:2252; CGP-NEXT: v_cvt_f32_u32_e32 v0, v112253; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v112254; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v02255; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v02256; CGP-NEXT: v_cvt_u32_f32_e32 v0, v02257; CGP-NEXT: v_mul_lo_u32 v1, v1, v02258; CGP-NEXT: v_mul_hi_u32 v1, v0, v12259; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v12260; CGP-NEXT: v_mul_hi_u32 v0, v8, v02261; CGP-NEXT: v_mov_b32_e32 v1, 02262; CGP-NEXT: v_mul_lo_u32 v2, v0, v112263; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v02264; CGP-NEXT: v_sub_i32_e32 v2, vcc, v8, v22265; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v112266; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc2267; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v2, v112268; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc2269; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v02270; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v112271; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc2272; CGP-NEXT: .LBB8_4:2273; CGP-NEXT: s_or_b64 exec, exec, s[6:7]2274; CGP-NEXT: v_or_b32_e32 v3, v7, v102275; CGP-NEXT: v_mov_b32_e32 v2, 02276; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]2277; CGP-NEXT: ; implicit-def: $vgpr2_vgpr32278; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc2279; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]2280; CGP-NEXT: s_cbranch_execnz .LBB8_72281; CGP-NEXT: ; %bb.5: ; %Flow2282; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]2283; CGP-NEXT: s_cbranch_execnz .LBB8_82284; CGP-NEXT: .LBB8_6:2285; CGP-NEXT: s_or_b64 exec, exec, s[6:7]2286; CGP-NEXT: s_setpc_b64 s[30:31]2287; CGP-NEXT: .LBB8_7:2288; CGP-NEXT: v_ashrrev_i32_e32 v2, 31, v102289; CGP-NEXT: v_add_i32_e32 v3, vcc, v9, v22290; CGP-NEXT: v_addc_u32_e32 v6, vcc, v10, v2, vcc2291; CGP-NEXT: v_xor_b32_e32 v4, v3, v22292; CGP-NEXT: v_xor_b32_e32 v3, v6, v22293; CGP-NEXT: v_cvt_f32_u32_e32 v6, v42294; CGP-NEXT: v_cvt_f32_u32_e32 v8, v32295; CGP-NEXT: v_sub_i32_e32 v15, vcc, 0, v42296; CGP-NEXT: v_subb_u32_e32 v16, vcc, 0, v3, vcc2297; CGP-NEXT: v_mac_f32_e32 v6, 0x4f800000, v82298; CGP-NEXT: v_rcp_iflag_f32_e32 v6, v62299; CGP-NEXT: v_mul_f32_e32 v6, 0x5f7ffffc, v62300; CGP-NEXT: v_mul_f32_e32 v8, 0x2f800000, v62301; CGP-NEXT: v_trunc_f32_e32 v8, v82302; CGP-NEXT: v_mac_f32_e32 v6, 0xcf800000, v82303; CGP-NEXT: v_cvt_u32_f32_e32 v6, v62304; CGP-NEXT: v_cvt_u32_f32_e32 v14, v82305; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v15, v6, 02306; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v15, v14, v[9:10]2307; CGP-NEXT: v_mul_lo_u32 v9, v14, v82308; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v16, v6, v[10:11]2309; CGP-NEXT: v_mul_hi_u32 v10, v6, v82310; CGP-NEXT: v_mul_hi_u32 v8, v14, v82311; CGP-NEXT: v_mul_lo_u32 v11, v6, v122312; CGP-NEXT: v_mul_lo_u32 v13, v14, v122313; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v112314; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2315; CGP-NEXT: v_add_i32_e32 v9, vcc, v9, v102316; CGP-NEXT: v_mul_hi_u32 v10, v6, v122317; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2318; CGP-NEXT: v_add_i32_e32 v9, vcc, v11, v92319; CGP-NEXT: v_add_i32_e32 v8, vcc, v13, v82320; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc2321; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v102322; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc2323; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v102324; CGP-NEXT: v_mul_hi_u32 v11, v14, v122325; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v92326; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2327; CGP-NEXT: v_add_i32_e32 v9, vcc, v10, v92328; CGP-NEXT: v_add_i32_e32 v9, vcc, v11, v92329; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v82330; CGP-NEXT: v_addc_u32_e32 v14, vcc, v14, v9, vcc2331; CGP-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v15, v6, 02332; CGP-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v15, v14, v[9:10]2333; CGP-NEXT: v_ashrrev_i32_e32 v15, 31, v72334; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v152335; CGP-NEXT: v_mad_u64_u32 v[12:13], s[4:5], v16, v6, v[10:11]2336; CGP-NEXT: v_addc_u32_e32 v7, vcc, v7, v15, vcc2337; CGP-NEXT: v_xor_b32_e32 v11, v5, v152338; CGP-NEXT: v_mul_lo_u32 v5, v14, v82339; CGP-NEXT: v_mul_lo_u32 v9, v6, v122340; CGP-NEXT: v_xor_b32_e32 v13, v7, v152341; CGP-NEXT: v_mul_hi_u32 v7, v6, v82342; CGP-NEXT: v_mul_hi_u32 v8, v14, v82343; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v92344; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2345; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v72346; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc2347; CGP-NEXT: v_mul_lo_u32 v7, v14, v122348; CGP-NEXT: v_add_i32_e32 v5, vcc, v9, v52349; CGP-NEXT: v_mul_hi_u32 v9, v6, v122350; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v82351; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2352; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v92353; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2354; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v92355; CGP-NEXT: v_mul_hi_u32 v9, v14, v122356; CGP-NEXT: v_add_i32_e32 v5, vcc, v7, v52357; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2358; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v72359; CGP-NEXT: v_add_i32_e32 v7, vcc, v9, v72360; CGP-NEXT: v_add_i32_e32 v5, vcc, v6, v52361; CGP-NEXT: v_addc_u32_e32 v6, vcc, v14, v7, vcc2362; CGP-NEXT: v_mul_lo_u32 v7, v13, v52363; CGP-NEXT: v_mul_lo_u32 v8, v11, v62364; CGP-NEXT: v_mul_hi_u32 v9, v11, v52365; CGP-NEXT: v_mul_hi_u32 v5, v13, v52366; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v82367; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2368; CGP-NEXT: v_add_i32_e32 v7, vcc, v7, v92369; CGP-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2370; CGP-NEXT: v_mul_lo_u32 v9, v13, v62371; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v72372; CGP-NEXT: v_mul_hi_u32 v8, v11, v62373; CGP-NEXT: v_add_i32_e32 v5, vcc, v9, v52374; CGP-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2375; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v82376; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2377; CGP-NEXT: v_add_i32_e32 v8, vcc, v9, v82378; CGP-NEXT: v_add_i32_e32 v12, vcc, v5, v72379; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc2380; CGP-NEXT: v_add_i32_e32 v7, vcc, v8, v52381; CGP-NEXT: v_mul_hi_u32 v8, v13, v62382; CGP-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v4, v12, 02383; CGP-NEXT: v_add_i32_e32 v14, vcc, v8, v72384; CGP-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v4, v14, v[6:7]2385; CGP-NEXT: v_sub_i32_e32 v5, vcc, v11, v52386; CGP-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v3, v12, v[7:8]2387; CGP-NEXT: v_subb_u32_e64 v6, s[4:5], v13, v9, vcc2388; CGP-NEXT: v_sub_i32_e64 v7, s[4:5], v13, v92389; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v6, v32390; CGP-NEXT: v_subb_u32_e32 v7, vcc, v7, v3, vcc2391; CGP-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]2392; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v42393; CGP-NEXT: v_sub_i32_e32 v5, vcc, v5, v42394; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]2395; CGP-NEXT: v_cmp_eq_u32_e64 s[4:5], v6, v32396; CGP-NEXT: v_subbrev_u32_e32 v7, vcc, 0, v7, vcc2397; CGP-NEXT: v_cndmask_b32_e64 v6, v8, v9, s[4:5]2398; CGP-NEXT: v_add_i32_e32 v8, vcc, 1, v122399; CGP-NEXT: v_addc_u32_e32 v9, vcc, 0, v14, vcc2400; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v7, v32401; CGP-NEXT: v_cndmask_b32_e64 v10, 0, -1, vcc2402; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v5, v42403; CGP-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc2404; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v7, v32405; CGP-NEXT: v_cndmask_b32_e32 v3, v10, v4, vcc2406; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v82407; CGP-NEXT: v_addc_u32_e32 v5, vcc, 0, v9, vcc2408; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v32409; CGP-NEXT: v_cndmask_b32_e32 v3, v8, v4, vcc2410; CGP-NEXT: v_cndmask_b32_e32 v4, v9, v5, vcc2411; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v62412; CGP-NEXT: v_cndmask_b32_e32 v3, v12, v3, vcc2413; CGP-NEXT: v_xor_b32_e32 v5, v15, v22414; CGP-NEXT: v_cndmask_b32_e32 v4, v14, v4, vcc2415; CGP-NEXT: v_xor_b32_e32 v2, v3, v52416; CGP-NEXT: v_xor_b32_e32 v3, v4, v52417; CGP-NEXT: v_sub_i32_e32 v2, vcc, v2, v52418; CGP-NEXT: v_subb_u32_e32 v3, vcc, v3, v5, vcc2419; CGP-NEXT: ; implicit-def: $vgpr9_vgpr102420; CGP-NEXT: ; implicit-def: $vgpr52421; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]2422; CGP-NEXT: s_cbranch_execz .LBB8_62423; CGP-NEXT: .LBB8_8:2424; CGP-NEXT: v_cvt_f32_u32_e32 v2, v92425; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v92426; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v22427; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v22428; CGP-NEXT: v_cvt_u32_f32_e32 v2, v22429; CGP-NEXT: v_mul_lo_u32 v3, v3, v22430; CGP-NEXT: v_mul_hi_u32 v3, v2, v32431; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v32432; CGP-NEXT: v_mul_hi_u32 v2, v5, v22433; CGP-NEXT: v_mov_b32_e32 v3, 02434; CGP-NEXT: v_mul_lo_u32 v4, v2, v92435; CGP-NEXT: v_add_i32_e32 v6, vcc, 1, v22436; CGP-NEXT: v_sub_i32_e32 v4, vcc, v5, v42437; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v92438; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v6, vcc2439; CGP-NEXT: v_sub_i32_e64 v5, s[4:5], v4, v92440; CGP-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc2441; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v22442; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v92443; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc2444; CGP-NEXT: s_or_b64 exec, exec, s[6:7]2445; CGP-NEXT: s_setpc_b64 s[30:31]2446 %shl.y = shl <2 x i64> <i64 4096, i64 4096>, %y2447 %r = sdiv <2 x i64> %x, %shl.y2448 ret <2 x i64> %r2449}2450 2451define i64 @v_sdiv_i64_24bit(i64 %num, i64 %den) {2452; GISEL-LABEL: v_sdiv_i64_24bit:2453; GISEL: ; %bb.0:2454; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2455; GISEL-NEXT: v_and_b32_e32 v1, 0xffffff, v22456; GISEL-NEXT: v_cvt_f32_u32_e32 v2, v12457; GISEL-NEXT: v_sub_i32_e32 v3, vcc, 0, v12458; GISEL-NEXT: v_and_b32_e32 v0, 0xffffff, v02459; GISEL-NEXT: v_rcp_iflag_f32_e32 v2, v22460; GISEL-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v22461; GISEL-NEXT: v_cvt_u32_f32_e32 v2, v22462; GISEL-NEXT: v_mul_lo_u32 v3, v3, v22463; GISEL-NEXT: v_mul_hi_u32 v3, v2, v32464; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v32465; GISEL-NEXT: v_mul_hi_u32 v2, v0, v22466; GISEL-NEXT: v_mul_lo_u32 v3, v2, v12467; GISEL-NEXT: v_add_i32_e32 v4, vcc, 1, v22468; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v32469; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v12470; GISEL-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc2471; GISEL-NEXT: v_sub_i32_e64 v3, s[4:5], v0, v12472; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc2473; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v22474; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v12475; GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v3, vcc2476; GISEL-NEXT: v_mov_b32_e32 v1, 02477; GISEL-NEXT: s_setpc_b64 s[30:31]2478;2479; CGP-LABEL: v_sdiv_i64_24bit:2480; CGP: ; %bb.0:2481; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2482; CGP-NEXT: v_and_b32_e32 v3, 0xffffff, v22483; CGP-NEXT: v_cvt_f32_u32_e32 v1, v32484; CGP-NEXT: v_rcp_f32_e32 v1, v12485; CGP-NEXT: v_mul_f32_e32 v1, 0x4f7ffffe, v12486; CGP-NEXT: v_cvt_u32_f32_e32 v4, v12487; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v32488; CGP-NEXT: v_mul_lo_u32 v5, v1, v42489; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v4, v5, 02490; CGP-NEXT: v_and_b32_e32 v5, 0xffffff, v02491; CGP-NEXT: v_add_i32_e32 v2, vcc, v4, v22492; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v5, v2, 02493; CGP-NEXT: v_mul_lo_u32 v0, v1, v32494; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v12495; CGP-NEXT: v_sub_i32_e32 v0, vcc, v5, v02496; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v32497; CGP-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc2498; CGP-NEXT: v_sub_i32_e64 v2, s[4:5], v0, v32499; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc2500; CGP-NEXT: v_add_i32_e32 v2, vcc, 1, v12501; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v32502; CGP-NEXT: v_cndmask_b32_e32 v0, v1, v2, vcc2503; CGP-NEXT: v_ashrrev_i32_e32 v1, 31, v02504; CGP-NEXT: s_setpc_b64 s[30:31]2505 %num.mask = and i64 %num, 167772152506 %den.mask = and i64 %den, 167772152507 %result = sdiv i64 %num.mask, %den.mask2508 ret i64 %result2509}2510 2511define <2 x i64> @v_sdiv_v2i64_24bit(<2 x i64> %num, <2 x i64> %den) {2512; GISEL-LABEL: v_sdiv_v2i64_24bit:2513; GISEL: ; %bb.0:2514; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2515; GISEL-NEXT: v_and_b32_e32 v1, 0xffffff, v42516; GISEL-NEXT: v_cvt_f32_u32_e32 v3, v12517; GISEL-NEXT: v_cvt_f32_ubyte0_e32 v10, 02518; GISEL-NEXT: v_sub_i32_e32 v12, vcc, 0, v12519; GISEL-NEXT: v_mac_f32_e32 v3, 0x4f800000, v102520; GISEL-NEXT: v_rcp_iflag_f32_e32 v3, v32521; GISEL-NEXT: v_subb_u32_e64 v13, s[4:5], 0, 0, vcc2522; GISEL-NEXT: v_and_b32_e32 v2, 0xffffff, v22523; GISEL-NEXT: v_mul_f32_e32 v3, 0x5f7ffffc, v32524; GISEL-NEXT: v_mul_f32_e32 v4, 0x2f800000, v32525; GISEL-NEXT: v_trunc_f32_e32 v4, v42526; GISEL-NEXT: v_mac_f32_e32 v3, 0xcf800000, v42527; GISEL-NEXT: v_cvt_u32_f32_e32 v11, v32528; GISEL-NEXT: v_cvt_u32_f32_e32 v9, v42529; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 02530; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v12, v9, v[4:5]2531; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v13, v11, v[7:8]2532; GISEL-NEXT: v_mul_lo_u32 v5, v9, v32533; GISEL-NEXT: v_mul_hi_u32 v7, v11, v32534; GISEL-NEXT: v_mul_lo_u32 v8, v11, v42535; GISEL-NEXT: v_mul_hi_u32 v3, v9, v32536; GISEL-NEXT: v_mul_lo_u32 v14, v9, v42537; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v82538; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2539; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v72540; GISEL-NEXT: v_mul_hi_u32 v7, v11, v42541; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc2542; GISEL-NEXT: v_add_i32_e32 v5, vcc, v8, v52543; GISEL-NEXT: v_add_i32_e32 v3, vcc, v14, v32544; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2545; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v72546; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2547; GISEL-NEXT: v_add_i32_e32 v7, vcc, v8, v72548; GISEL-NEXT: v_mul_hi_u32 v4, v9, v42549; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v52550; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc2551; GISEL-NEXT: v_add_i32_e32 v5, vcc, v7, v52552; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v52553; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v32554; GISEL-NEXT: v_addc_u32_e32 v9, vcc, v9, v4, vcc2555; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 02556; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v12, v9, v[4:5]2557; GISEL-NEXT: v_and_b32_e32 v12, 0xffffff, v02558; GISEL-NEXT: v_mul_hi_u32 v0, v11, v32559; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v13, v11, v[7:8]2560; GISEL-NEXT: v_mul_lo_u32 v5, v9, v32561; GISEL-NEXT: v_mul_hi_u32 v3, v9, v32562; GISEL-NEXT: v_mul_lo_u32 v7, v11, v42563; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v72564; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2565; GISEL-NEXT: v_add_i32_e32 v0, vcc, v5, v02566; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc2567; GISEL-NEXT: v_mul_lo_u32 v5, v9, v42568; GISEL-NEXT: v_add_i32_e32 v0, vcc, v7, v02569; GISEL-NEXT: v_mul_hi_u32 v7, v11, v42570; GISEL-NEXT: v_add_i32_e32 v3, vcc, v5, v32571; GISEL-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc2572; GISEL-NEXT: v_add_i32_e32 v3, vcc, v3, v72573; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2574; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v72575; GISEL-NEXT: v_mul_hi_u32 v4, v9, v42576; GISEL-NEXT: v_add_i32_e32 v0, vcc, v3, v02577; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc2578; GISEL-NEXT: v_add_i32_e32 v3, vcc, v5, v32579; GISEL-NEXT: v_add_i32_e32 v3, vcc, v4, v32580; GISEL-NEXT: v_add_i32_e32 v0, vcc, v11, v02581; GISEL-NEXT: v_addc_u32_e32 v3, vcc, v9, v3, vcc2582; GISEL-NEXT: v_mul_lo_u32 v4, 0, v02583; GISEL-NEXT: v_mul_lo_u32 v5, v12, v32584; GISEL-NEXT: v_mul_hi_u32 v7, v12, v02585; GISEL-NEXT: v_mul_hi_u32 v0, 0, v02586; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v52587; GISEL-NEXT: v_mul_lo_u32 v5, 0, v32588; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v72589; GISEL-NEXT: v_mul_hi_u32 v7, v12, v32590; GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc2591; GISEL-NEXT: v_add_i32_e32 v0, vcc, v5, v02592; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v72593; GISEL-NEXT: v_add_i32_e32 v0, vcc, v0, v42594; GISEL-NEXT: v_mul_hi_u32 v4, 0, v32595; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v1, v0, 02596; GISEL-NEXT: v_and_b32_e32 v3, 0xffffff, v62597; GISEL-NEXT: v_cvt_f32_u32_e32 v11, v32598; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v1, v4, v[8:9]2599; GISEL-NEXT: v_mac_f32_e32 v11, 0x4f800000, v102600; GISEL-NEXT: v_mad_u64_u32 v[8:9], s[4:5], 0, v0, v[5:6]2601; GISEL-NEXT: v_rcp_iflag_f32_e32 v5, v112602; GISEL-NEXT: v_sub_i32_e32 v11, vcc, v12, v72603; GISEL-NEXT: v_subb_u32_e64 v12, s[4:5], 0, v8, vcc2604; GISEL-NEXT: v_mul_f32_e32 v5, 0x5f7ffffc, v52605; GISEL-NEXT: v_mul_f32_e32 v6, 0x2f800000, v52606; GISEL-NEXT: v_trunc_f32_e32 v6, v62607; GISEL-NEXT: v_mac_f32_e32 v5, 0xcf800000, v62608; GISEL-NEXT: v_cvt_u32_f32_e32 v13, v52609; GISEL-NEXT: v_sub_i32_e64 v15, s[4:5], 0, v32610; GISEL-NEXT: v_cvt_u32_f32_e32 v14, v62611; GISEL-NEXT: v_subb_u32_e64 v16, s[4:5], 0, 0, s[4:5]2612; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v15, v13, 02613; GISEL-NEXT: v_sub_i32_e64 v17, s[4:5], 0, v82614; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v15, v14, v[6:7]2615; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v11, v12616; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]2617; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v16, v13, v[7:8]2618; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v122619; GISEL-NEXT: v_cndmask_b32_e64 v12, -1, v6, s[4:5]2620; GISEL-NEXT: v_mul_lo_u32 v6, v14, v52621; GISEL-NEXT: v_mul_lo_u32 v7, v13, v92622; GISEL-NEXT: v_mul_hi_u32 v10, v13, v52623; GISEL-NEXT: v_subbrev_u32_e32 v8, vcc, 0, v17, vcc2624; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v72625; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2626; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v102627; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc2628; GISEL-NEXT: v_mul_lo_u32 v10, v14, v92629; GISEL-NEXT: v_mul_hi_u32 v5, v14, v52630; GISEL-NEXT: v_add_i32_e32 v6, vcc, v7, v62631; GISEL-NEXT: v_mul_hi_u32 v7, v13, v92632; GISEL-NEXT: v_add_i32_e32 v5, vcc, v10, v52633; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc2634; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v72635; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2636; GISEL-NEXT: v_add_i32_e32 v7, vcc, v10, v72637; GISEL-NEXT: v_mul_hi_u32 v9, v14, v92638; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v62639; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc2640; GISEL-NEXT: v_add_i32_e32 v6, vcc, v7, v62641; GISEL-NEXT: v_add_i32_e32 v6, vcc, v9, v62642; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v52643; GISEL-NEXT: v_addc_u32_e32 v14, vcc, v14, v6, vcc2644; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v15, v13, 02645; GISEL-NEXT: v_sub_i32_e32 v11, vcc, v11, v12646; GISEL-NEXT: v_subbrev_u32_e32 v17, vcc, 0, v8, vcc2647; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v15, v14, v[6:7]2648; GISEL-NEXT: v_add_i32_e32 v15, vcc, 1, v02649; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], v16, v13, v[7:8]2650; GISEL-NEXT: v_mul_lo_u32 v6, v14, v52651; GISEL-NEXT: v_addc_u32_e32 v18, vcc, 0, v4, vcc2652; GISEL-NEXT: v_mul_lo_u32 v7, v13, v92653; GISEL-NEXT: v_mul_hi_u32 v8, v13, v52654; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v11, v12655; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc2656; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v172657; GISEL-NEXT: v_cndmask_b32_e32 v1, -1, v1, vcc2658; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v72659; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2660; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v82661; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc2662; GISEL-NEXT: v_mul_lo_u32 v8, v14, v92663; GISEL-NEXT: v_mul_hi_u32 v5, v14, v52664; GISEL-NEXT: v_add_i32_e32 v6, vcc, v7, v62665; GISEL-NEXT: v_mul_hi_u32 v7, v13, v92666; GISEL-NEXT: v_add_i32_e32 v5, vcc, v8, v52667; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc2668; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v72669; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2670; GISEL-NEXT: v_add_i32_e32 v7, vcc, v8, v72671; GISEL-NEXT: v_mul_hi_u32 v8, v14, v92672; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v62673; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc2674; GISEL-NEXT: v_add_i32_e32 v6, vcc, v7, v62675; GISEL-NEXT: v_add_i32_e32 v6, vcc, v8, v62676; GISEL-NEXT: v_add_i32_e32 v5, vcc, v13, v52677; GISEL-NEXT: v_addc_u32_e32 v6, vcc, v14, v6, vcc2678; GISEL-NEXT: v_mul_lo_u32 v7, 0, v52679; GISEL-NEXT: v_mul_lo_u32 v8, v2, v62680; GISEL-NEXT: v_mul_hi_u32 v11, v2, v52681; GISEL-NEXT: v_add_i32_e32 v9, vcc, 1, v152682; GISEL-NEXT: v_addc_u32_e32 v10, vcc, 0, v18, vcc2683; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v82684; GISEL-NEXT: v_mul_lo_u32 v8, 0, v62685; GISEL-NEXT: v_mul_hi_u32 v5, 0, v52686; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v112687; GISEL-NEXT: v_mul_hi_u32 v11, v2, v62688; GISEL-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc2689; GISEL-NEXT: v_add_i32_e32 v5, vcc, v8, v52690; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v112691; GISEL-NEXT: v_add_i32_e32 v11, vcc, v5, v72692; GISEL-NEXT: v_mul_hi_u32 v13, 0, v62693; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v3, v11, 02694; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v12695; GISEL-NEXT: v_cndmask_b32_e32 v1, v15, v9, vcc2696; GISEL-NEXT: v_mad_u64_u32 v[7:8], s[4:5], v3, v13, v[6:7]2697; GISEL-NEXT: v_cndmask_b32_e32 v9, v18, v10, vcc2698; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v122699; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v1, vcc2700; GISEL-NEXT: v_cndmask_b32_e32 v1, v4, v9, vcc2701; GISEL-NEXT: v_mad_u64_u32 v[9:10], s[4:5], 0, v11, v[7:8]2702; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v52703; GISEL-NEXT: v_sub_i32_e64 v5, s[4:5], 0, v92704; GISEL-NEXT: v_subb_u32_e64 v4, s[4:5], 0, v9, vcc2705; GISEL-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc2706; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v32707; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v32708; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]2709; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v42710; GISEL-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc2711; GISEL-NEXT: v_cndmask_b32_e64 v4, -1, v6, s[4:5]2712; GISEL-NEXT: v_add_i32_e32 v6, vcc, 1, v112713; GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v13, vcc2714; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v32715; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc2716; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v52717; GISEL-NEXT: v_cndmask_b32_e32 v2, -1, v2, vcc2718; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v62719; GISEL-NEXT: v_addc_u32_e32 v5, vcc, 0, v7, vcc2720; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v22721; GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v3, vcc2722; GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v5, vcc2723; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v42724; GISEL-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc2725; GISEL-NEXT: v_cndmask_b32_e32 v3, v13, v3, vcc2726; GISEL-NEXT: s_setpc_b64 s[30:31]2727;2728; CGP-LABEL: v_sdiv_v2i64_24bit:2729; CGP: ; %bb.0:2730; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; CGP-NEXT: v_and_b32_e32 v3, 0xffffff, v42732; CGP-NEXT: v_cvt_f32_u32_e32 v1, v32733; CGP-NEXT: v_and_b32_e32 v4, 0xffffff, v02734; CGP-NEXT: v_and_b32_e32 v5, 0xffffff, v62735; CGP-NEXT: v_and_b32_e32 v9, 0xffffff, v22736; CGP-NEXT: v_rcp_f32_e32 v1, v12737; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v12738; CGP-NEXT: v_cvt_u32_f32_e32 v6, v02739; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v32740; CGP-NEXT: v_cvt_f32_u32_e32 v0, v52741; CGP-NEXT: v_mul_lo_u32 v7, v1, v62742; CGP-NEXT: v_rcp_f32_e32 v8, v02743; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v7, 02744; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v82745; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v12746; CGP-NEXT: v_cvt_u32_f32_e32 v2, v02747; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v4, v6, 02748; CGP-NEXT: v_sub_i32_e32 v0, vcc, 0, v52749; CGP-NEXT: v_mul_lo_u32 v6, v0, v22750; CGP-NEXT: v_mul_lo_u32 v0, v1, v32751; CGP-NEXT: v_add_i32_e32 v7, vcc, 1, v12752; CGP-NEXT: v_sub_i32_e32 v4, vcc, v4, v02753; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v32754; CGP-NEXT: v_cndmask_b32_e32 v7, v1, v7, vcc2755; CGP-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v2, v6, 02756; CGP-NEXT: v_sub_i32_e64 v0, s[4:5], v4, v32757; CGP-NEXT: v_add_i32_e64 v6, s[4:5], v2, v12758; CGP-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v9, v6, 02759; CGP-NEXT: v_cndmask_b32_e32 v0, v4, v0, vcc2760; CGP-NEXT: v_add_i32_e32 v1, vcc, 1, v72761; CGP-NEXT: v_mul_lo_u32 v4, v2, v52762; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v0, v32763; CGP-NEXT: v_cndmask_b32_e32 v0, v7, v1, vcc2764; CGP-NEXT: v_ashrrev_i32_e32 v1, 31, v02765; CGP-NEXT: v_sub_i32_e32 v3, vcc, v9, v42766; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v22767; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v52768; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc2769; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v52770; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc2771; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v22772; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v52773; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc2774; CGP-NEXT: v_ashrrev_i32_e32 v3, 31, v22775; CGP-NEXT: s_setpc_b64 s[30:31]2776 %num.mask = and <2 x i64> %num, <i64 16777215, i64 16777215>2777 %den.mask = and <2 x i64> %den, <i64 16777215, i64 16777215>2778 %result = sdiv <2 x i64> %num.mask, %den.mask2779 ret <2 x i64> %result2780}2781 2782define i64 @v_sdiv_i64_exact(i64 %num) {2783; CHECK-LABEL: v_sdiv_i64_exact:2784; CHECK: ; %bb.0:2785; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2786; CHECK-NEXT: v_ashr_i64 v[0:1], v[0:1], 122787; CHECK-NEXT: s_setpc_b64 s[30:31]2788 %result = sdiv exact i64 %num, 40962789 ret i64 %result2790}2791 2792define <2 x i64> @v_sdiv_v2i64_exact(<2 x i64> %num) {2793; CHECK-LABEL: v_sdiv_v2i64_exact:2794; CHECK: ; %bb.0:2795; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2796; CHECK-NEXT: v_ashr_i64 v[0:1], v[0:1], 122797; CHECK-NEXT: v_ashr_i64 v[2:3], v[2:3], 102798; CHECK-NEXT: s_setpc_b64 s[30:31]2799 %result = sdiv exact <2 x i64> %num, <i64 4096, i64 1024>2800 ret <2 x i64> %result2801}2802