brintos

brintos / llvm-project-archived public Read only

0
0
Text · 148.4 KiB · 39cf7b0 Raw
3264 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_srem_i64(i64 %num, i64 %den) {8; CHECK-LABEL: v_srem_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[4:5], s[6:7]22; CHECK-NEXT:    s_cbranch_execnz .LBB0_423; CHECK-NEXT:  .LBB0_2:24; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]25; CHECK-NEXT:    s_setpc_b64 s[30:31]26; CHECK-NEXT:  .LBB0_3:27; CHECK-NEXT:    v_ashrrev_i32_e32 v1, 31, v328; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v2, v129; CHECK-NEXT:    v_addc_u32_e32 v2, vcc, v3, v1, vcc30; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v131; CHECK-NEXT:    v_xor_b32_e32 v1, v2, v132; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, v033; CHECK-NEXT:    v_cvt_f32_u32_e32 v3, v134; CHECK-NEXT:    v_sub_i32_e32 v12, vcc, 0, v035; CHECK-NEXT:    v_subb_u32_e32 v13, vcc, 0, v1, vcc36; CHECK-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v337; CHECK-NEXT:    v_rcp_iflag_f32_e32 v2, v238; CHECK-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v239; CHECK-NEXT:    v_mul_f32_e32 v3, 0x2f800000, v240; CHECK-NEXT:    v_trunc_f32_e32 v3, v341; CHECK-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v342; CHECK-NEXT:    v_cvt_u32_f32_e32 v11, v243; CHECK-NEXT:    v_cvt_u32_f32_e32 v10, v344; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v12, v11, 045; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v12, v10, v[3:4]46; CHECK-NEXT:    v_mul_lo_u32 v3, v10, v247; CHECK-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v13, v11, v[6:7]48; CHECK-NEXT:    v_mul_hi_u32 v6, v11, v249; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v250; CHECK-NEXT:    v_mul_lo_u32 v7, v11, v851; CHECK-NEXT:    v_mul_lo_u32 v9, v10, v852; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v753; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc54; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v655; CHECK-NEXT:    v_mul_hi_u32 v6, v11, v856; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc57; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v7, v358; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v9, v259; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc60; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v661; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc62; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v7, v663; CHECK-NEXT:    v_mul_hi_u32 v7, v10, v864; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v365; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc66; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v6, v367; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v7, v368; CHECK-NEXT:    v_add_i32_e32 v11, vcc, v11, v269; CHECK-NEXT:    v_addc_u32_e32 v10, vcc, v10, v3, vcc70; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v12, v11, 071; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v12, v10, v[3:4]72; CHECK-NEXT:    v_ashrrev_i32_e32 v12, 31, v573; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v1274; CHECK-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v13, v11, v[6:7]75; CHECK-NEXT:    v_addc_u32_e32 v4, vcc, v5, v12, vcc76; CHECK-NEXT:    v_xor_b32_e32 v9, v3, v1277; CHECK-NEXT:    v_mul_lo_u32 v3, v10, v278; CHECK-NEXT:    v_mul_lo_u32 v5, v11, v879; CHECK-NEXT:    v_xor_b32_e32 v13, v4, v1280; CHECK-NEXT:    v_mul_hi_u32 v4, v11, v281; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v282; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v583; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc84; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v485; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc86; CHECK-NEXT:    v_mul_lo_u32 v4, v10, v887; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v388; CHECK-NEXT:    v_mul_hi_u32 v5, v11, v889; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v4, v290; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc91; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v592; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc93; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v594; CHECK-NEXT:    v_mul_hi_u32 v5, v10, v895; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v396; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc97; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v398; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v399; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v11, v2100; CHECK-NEXT:    v_addc_u32_e32 v3, vcc, v10, v3, vcc101; CHECK-NEXT:    v_mul_lo_u32 v4, v13, v2102; CHECK-NEXT:    v_mul_lo_u32 v5, v9, v3103; CHECK-NEXT:    v_mul_hi_u32 v6, v9, v2104; CHECK-NEXT:    v_mul_hi_u32 v2, v13, v2105; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v5106; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc107; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v6108; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc109; CHECK-NEXT:    v_mul_lo_u32 v6, v13, v3110; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v4111; CHECK-NEXT:    v_mul_hi_u32 v5, v9, v3112; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v6, v2113; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc114; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v5115; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc116; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v5117; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v2, v4118; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc119; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v2120; CHECK-NEXT:    v_mul_hi_u32 v5, v13, v3121; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v0, v8, 0122; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v5, v4123; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v6, v[3:4]124; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v9, v2125; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v1, v8, v[4:5]126; CHECK-NEXT:    v_subb_u32_e64 v3, s[4:5], v13, v6, vcc127; CHECK-NEXT:    v_sub_i32_e64 v4, s[4:5], v13, v6128; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v3, v1129; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]130; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v0131; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]132; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v1133; CHECK-NEXT:    v_subb_u32_e32 v4, vcc, v4, v1, vcc134; CHECK-NEXT:    v_cndmask_b32_e64 v5, v5, v6, s[4:5]135; CHECK-NEXT:    v_sub_i32_e32 v6, vcc, v2, v0136; CHECK-NEXT:    v_subbrev_u32_e64 v7, s[4:5], 0, v4, vcc137; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v7, v1138; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]139; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v6, v0140; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, -1, s[4:5]141; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v1142; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v4, v1, vcc143; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v6, v0144; CHECK-NEXT:    v_cndmask_b32_e64 v8, v8, v9, s[4:5]145; CHECK-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc146; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v8147; CHECK-NEXT:    v_cndmask_b32_e32 v0, v6, v0, vcc148; CHECK-NEXT:    v_cndmask_b32_e32 v1, v7, v1, vcc149; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5150; CHECK-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc151; CHECK-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc152; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v12153; CHECK-NEXT:    v_xor_b32_e32 v1, v1, v12154; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v12155; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v12, vcc156; CHECK-NEXT:    ; implicit-def: $vgpr2157; CHECK-NEXT:    ; implicit-def: $vgpr4158; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]159; CHECK-NEXT:    s_cbranch_execz .LBB0_2160; CHECK-NEXT:  .LBB0_4:161; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, v2162; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, 0, v2163; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v0164; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0165; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v0166; CHECK-NEXT:    v_mul_lo_u32 v1, v1, v0167; CHECK-NEXT:    v_mul_hi_u32 v1, v0, v1168; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v1169; CHECK-NEXT:    v_mul_hi_u32 v0, v4, v0170; CHECK-NEXT:    v_mov_b32_e32 v1, 0171; CHECK-NEXT:    v_mul_lo_u32 v0, v0, v2172; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v4, v0173; CHECK-NEXT:    v_sub_i32_e32 v3, vcc, v0, v2174; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2175; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc176; CHECK-NEXT:    v_sub_i32_e32 v3, vcc, v0, v2177; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2178; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc179; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]180; CHECK-NEXT:    s_setpc_b64 s[30:31]181  %result = srem i64 %num, %den182  ret i64 %result183}184 185; FIXME: This is a workaround for not handling uniform VGPR case.186declare i32 @llvm.amdgcn.readfirstlane(i32)187 188define amdgpu_ps i64 @s_srem_i64(i64 inreg %num, i64 inreg %den) {189; CHECK-LABEL: s_srem_i64:190; CHECK:       ; %bb.0:191; CHECK-NEXT:    s_or_b64 s[0:1], s[2:3], s[4:5]192; CHECK-NEXT:    s_mov_b32 s0, 0193; CHECK-NEXT:    v_cmp_ne_u64_e64 vcc, s[0:1], 0194; CHECK-NEXT:    s_mov_b32 s0, 1195; CHECK-NEXT:    s_cbranch_vccz .LBB1_2196; CHECK-NEXT:  ; %bb.1:197; CHECK-NEXT:    s_ashr_i32 s6, s3, 31198; CHECK-NEXT:    s_ashr_i32 s0, s5, 31199; CHECK-NEXT:    s_add_u32 s10, s2, s6200; CHECK-NEXT:    s_addc_u32 s11, s3, s6201; CHECK-NEXT:    s_add_u32 s8, s4, s0202; CHECK-NEXT:    s_mov_b32 s1, s0203; CHECK-NEXT:    s_addc_u32 s9, s5, s0204; CHECK-NEXT:    s_xor_b64 s[8:9], s[8:9], s[0:1]205; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, s8206; CHECK-NEXT:    v_cvt_f32_u32_e32 v1, s9207; CHECK-NEXT:    s_mov_b32 s7, s6208; CHECK-NEXT:    s_xor_b64 s[10:11], s[10:11], s[6:7]209; CHECK-NEXT:    s_sub_u32 s3, 0, s8210; CHECK-NEXT:    v_mac_f32_e32 v0, 0x4f800000, v1211; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v0212; CHECK-NEXT:    s_subb_u32 s5, 0, s9213; CHECK-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0214; CHECK-NEXT:    v_mul_f32_e32 v1, 0x2f800000, v0215; CHECK-NEXT:    v_trunc_f32_e32 v1, v1216; CHECK-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v1217; CHECK-NEXT:    v_cvt_u32_f32_e32 v6, v0218; CHECK-NEXT:    v_cvt_u32_f32_e32 v7, v1219; CHECK-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], s3, v6, 0220; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], s3, v7, v[1:2]221; CHECK-NEXT:    v_mul_lo_u32 v1, v7, v0222; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], s5, v6, v[2:3]223; CHECK-NEXT:    v_mul_hi_u32 v2, v6, v0224; CHECK-NEXT:    v_mul_hi_u32 v0, v7, v0225; CHECK-NEXT:    v_mul_lo_u32 v3, v6, v4226; CHECK-NEXT:    v_mul_lo_u32 v5, v7, v4227; CHECK-NEXT:    v_mul_hi_u32 v8, v6, v4228; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v3229; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc230; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v2231; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc232; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v3, v1233; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v5, v0234; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc235; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v8236; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc237; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v3238; CHECK-NEXT:    v_mul_hi_u32 v3, v7, v4239; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v1240; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc241; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v2, v1242; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v3, v1243; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v0244; CHECK-NEXT:    v_addc_u32_e32 v7, vcc, v7, v1, vcc245; CHECK-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], s3, v6, 0246; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], s3, v7, v[1:2]247; CHECK-NEXT:    v_mul_lo_u32 v1, v7, v0248; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], s5, v6, v[2:3]249; CHECK-NEXT:    v_mul_hi_u32 v3, v6, v0250; CHECK-NEXT:    v_mul_hi_u32 v0, v7, v0251; CHECK-NEXT:    v_mul_lo_u32 v2, v6, v4252; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v2253; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc254; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v3255; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc256; CHECK-NEXT:    v_mul_lo_u32 v3, v7, v4257; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v2, v1258; CHECK-NEXT:    v_mul_hi_u32 v2, v6, v4259; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v3, v0260; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc261; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v2262; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc263; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v2264; CHECK-NEXT:    v_mul_hi_u32 v3, v7, v4265; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v1266; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc267; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v2, v1268; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v3, v1269; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v6, v0270; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v7, v1, vcc271; CHECK-NEXT:    v_mul_lo_u32 v2, s11, v0272; CHECK-NEXT:    v_mul_lo_u32 v3, s10, v1273; CHECK-NEXT:    v_mul_hi_u32 v4, s10, v0274; CHECK-NEXT:    v_mul_hi_u32 v0, s11, v0275; CHECK-NEXT:    v_mov_b32_e32 v7, s11276; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v3277; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc278; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v4279; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc280; CHECK-NEXT:    v_mul_lo_u32 v4, s11, v1281; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v2282; CHECK-NEXT:    v_mul_hi_u32 v3, s10, v1283; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v4, v0284; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc285; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v3286; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc287; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v3288; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v0, v2289; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc290; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v0291; CHECK-NEXT:    v_mul_hi_u32 v3, s11, v1292; CHECK-NEXT:    v_mad_u64_u32 v[0:1], s[0:1], s8, v6, 0293; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v3, v2294; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[0:1], s8, v4, v[1:2]295; CHECK-NEXT:    v_mov_b32_e32 v1, s9296; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, s10, v0297; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[0:1], s9, v6, v[2:3]298; CHECK-NEXT:    v_sub_i32_e64 v3, s[0:1], s11, v4299; CHECK-NEXT:    v_subb_u32_e64 v2, s[0:1], v7, v4, vcc300; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v3, v1, vcc301; CHECK-NEXT:    v_cmp_le_u32_e64 s[0:1], s9, v2302; CHECK-NEXT:    v_subrev_i32_e32 v3, vcc, s8, v0303; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, -1, s[0:1]304; CHECK-NEXT:    v_cmp_le_u32_e64 s[0:1], s8, v0305; CHECK-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc306; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[0:1]307; CHECK-NEXT:    v_cmp_eq_u32_e64 s[0:1], s9, v2308; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s9, v1309; CHECK-NEXT:    v_cndmask_b32_e64 v2, v4, v5, s[0:1]310; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, -1, vcc311; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s8, v3312; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, vcc313; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, s9, v1314; CHECK-NEXT:    v_cndmask_b32_e32 v1, v4, v5, vcc315; CHECK-NEXT:    v_subrev_i32_e32 v4, vcc, s8, v3316; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1317; CHECK-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc318; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v2319; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc320; CHECK-NEXT:    v_xor_b32_e32 v0, s6, v0321; CHECK-NEXT:    v_subrev_i32_e32 v0, vcc, s6, v0322; CHECK-NEXT:    s_mov_b32 s0, 0323; CHECK-NEXT:    s_branch .LBB1_3324; CHECK-NEXT:  .LBB1_2:325; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr1326; CHECK-NEXT:  .LBB1_3: ; %Flow327; CHECK-NEXT:    s_xor_b32 s0, s0, 1328; CHECK-NEXT:    s_cmp_lg_u32 s0, 0329; CHECK-NEXT:    s_cbranch_scc1 .LBB1_5330; CHECK-NEXT:  ; %bb.4:331; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, s4332; CHECK-NEXT:    s_sub_i32 s0, 0, s4333; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v0334; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0335; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v0336; CHECK-NEXT:    v_mul_lo_u32 v1, s0, v0337; CHECK-NEXT:    v_mul_hi_u32 v1, v0, v1338; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v1339; CHECK-NEXT:    v_mul_hi_u32 v0, s2, v0340; CHECK-NEXT:    v_mul_lo_u32 v0, v0, s4341; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, s2, v0342; CHECK-NEXT:    v_subrev_i32_e32 v1, vcc, s4, v0343; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s4, v0344; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc345; CHECK-NEXT:    v_subrev_i32_e32 v1, vcc, s4, v0346; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s4, v0347; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc348; CHECK-NEXT:  .LBB1_5:349; CHECK-NEXT:    v_readfirstlane_b32 s0, v0350; CHECK-NEXT:    s_mov_b32 s1, s0351; CHECK-NEXT:    ; return to shader part epilog352  %result = srem i64 %num, %den353  %cast = bitcast i64 %result to <2 x i32>354  %elt.0 = extractelement <2 x i32> %cast, i32 0355  %elt.1 = extractelement <2 x i32> %cast, i32 1356  %res.0 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.0)357  %res.1 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.1)358  %ins.0 = insertelement <2 x i32> poison, i32 %res.0, i32 0359  %ins.1 = insertelement <2 x i32> %ins.0, i32 %res.0, i32 1360  %cast.back = bitcast <2 x i32> %ins.1 to i64361  ret i64 %cast.back362}363 364define <2 x i64> @v_srem_v2i64(<2 x i64> %num, <2 x i64> %den) {365; GISEL-LABEL: v_srem_v2i64:366; GISEL:       ; %bb.0:367; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)368; GISEL-NEXT:    v_ashrrev_i32_e32 v8, 31, v5369; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v8370; GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v5, v8, vcc371; GISEL-NEXT:    v_xor_b32_e32 v5, v4, v8372; GISEL-NEXT:    v_xor_b32_e32 v8, v9, v8373; GISEL-NEXT:    v_cvt_f32_u32_e32 v4, v5374; GISEL-NEXT:    v_cvt_f32_u32_e32 v9, v8375; GISEL-NEXT:    v_sub_i32_e32 v16, vcc, 0, v5376; GISEL-NEXT:    v_subb_u32_e32 v17, vcc, 0, v8, vcc377; GISEL-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v9378; GISEL-NEXT:    v_rcp_iflag_f32_e32 v4, v4379; GISEL-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v4380; GISEL-NEXT:    v_mul_f32_e32 v9, 0x2f800000, v4381; GISEL-NEXT:    v_trunc_f32_e32 v9, v9382; GISEL-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v9383; GISEL-NEXT:    v_cvt_u32_f32_e32 v4, v4384; GISEL-NEXT:    v_cvt_u32_f32_e32 v15, v9385; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v16, v4, 0386; GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v16, v15, v[10:11]387; GISEL-NEXT:    v_mul_lo_u32 v10, v15, v9388; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v17, v4, v[11:12]389; GISEL-NEXT:    v_mul_hi_u32 v12, v4, v9390; GISEL-NEXT:    v_mul_hi_u32 v9, v15, v9391; GISEL-NEXT:    v_mul_lo_u32 v11, v4, v13392; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v11393; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc394; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v12395; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc396; GISEL-NEXT:    v_mul_lo_u32 v12, v15, v13397; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10398; GISEL-NEXT:    v_mul_hi_u32 v11, v4, v13399; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v12, v9400; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc401; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v11402; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc403; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v12, v11404; GISEL-NEXT:    v_mul_hi_u32 v12, v15, v13405; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v10406; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc407; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10408; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v12, v10409; GISEL-NEXT:    v_add_i32_e32 v18, vcc, v4, v9410; GISEL-NEXT:    v_addc_u32_e32 v15, vcc, v15, v10, vcc411; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v16, v18, 0412; GISEL-NEXT:    v_ashrrev_i32_e32 v4, 31, v1413; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v4414; GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v16, v15, v[10:11]415; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v4, vcc416; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v17, v18, v[11:12]417; GISEL-NEXT:    v_xor_b32_e32 v14, v0, v4418; GISEL-NEXT:    v_mul_lo_u32 v0, v15, v9419; GISEL-NEXT:    v_mul_lo_u32 v10, v18, v13420; GISEL-NEXT:    v_xor_b32_e32 v16, v1, v4421; GISEL-NEXT:    v_mul_hi_u32 v1, v18, v9422; GISEL-NEXT:    v_mul_hi_u32 v9, v15, v9423; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v10424; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc425; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v1426; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc427; GISEL-NEXT:    v_mul_lo_u32 v1, v15, v13428; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v0429; GISEL-NEXT:    v_mul_hi_u32 v10, v18, v13430; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v9431; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc432; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v10433; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc434; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v10435; GISEL-NEXT:    v_mul_hi_u32 v10, v15, v13436; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v0437; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc438; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v9, v1439; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v10, v1440; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v18, v0441; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v15, v1, vcc442; GISEL-NEXT:    v_mul_lo_u32 v9, v16, v0443; GISEL-NEXT:    v_mul_lo_u32 v10, v14, v1444; GISEL-NEXT:    v_mul_hi_u32 v11, v14, v0445; GISEL-NEXT:    v_mul_hi_u32 v0, v16, v0446; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v10447; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc448; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v11449; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc450; GISEL-NEXT:    v_mul_lo_u32 v11, v16, v1451; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v9452; GISEL-NEXT:    v_mul_hi_u32 v10, v14, v1453; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v11, v0454; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc455; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v10456; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc457; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10458; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v0, v9459; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc460; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v0461; GISEL-NEXT:    v_mul_hi_u32 v10, v16, v1462; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v13, 0463; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v10, v9464; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v5, v11, v[1:2]465; GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v8, v13, v[9:10]466; GISEL-NEXT:    v_sub_i32_e32 v10, vcc, v14, v0467; GISEL-NEXT:    v_subb_u32_e64 v12, s[4:5], v16, v11, vcc468; GISEL-NEXT:    v_sub_i32_e64 v0, s[4:5], v16, v11469; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v12, v8470; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]471; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v10, v5472; GISEL-NEXT:    v_subb_u32_e32 v0, vcc, v0, v8, vcc473; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, -1, s[4:5]474; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v12, v8475; GISEL-NEXT:    v_sub_i32_e32 v13, vcc, v10, v5476; GISEL-NEXT:    v_cndmask_b32_e64 v11, v1, v9, s[4:5]477; GISEL-NEXT:    v_subbrev_u32_e64 v14, s[4:5], 0, v0, vcc478; GISEL-NEXT:    v_ashrrev_i32_e32 v1, 31, v7479; GISEL-NEXT:    v_add_i32_e64 v6, s[4:5], v6, v1480; GISEL-NEXT:    v_addc_u32_e64 v7, s[4:5], v7, v1, s[4:5]481; GISEL-NEXT:    v_xor_b32_e32 v6, v6, v1482; GISEL-NEXT:    v_xor_b32_e32 v7, v7, v1483; GISEL-NEXT:    v_cvt_f32_u32_e32 v1, v6484; GISEL-NEXT:    v_cvt_f32_u32_e32 v9, v7485; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v14, v8486; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, -1, s[4:5]487; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v13, v5488; GISEL-NEXT:    v_mac_f32_e32 v1, 0x4f800000, v9489; GISEL-NEXT:    v_rcp_iflag_f32_e32 v1, v1490; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, -1, s[4:5]491; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v14, v8492; GISEL-NEXT:    v_cndmask_b32_e64 v15, v15, v16, s[4:5]493; GISEL-NEXT:    v_subb_u32_e32 v16, vcc, v0, v8, vcc494; GISEL-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v1495; GISEL-NEXT:    v_mul_f32_e32 v1, 0x2f800000, v0496; GISEL-NEXT:    v_trunc_f32_e32 v1, v1497; GISEL-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v1498; GISEL-NEXT:    v_cvt_u32_f32_e32 v17, v0499; GISEL-NEXT:    v_sub_i32_e32 v19, vcc, 0, v6500; GISEL-NEXT:    v_cvt_u32_f32_e32 v18, v1501; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v19, v17, 0502; GISEL-NEXT:    v_subb_u32_e32 v20, vcc, 0, v7, vcc503; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v19, v18, v[1:2]504; GISEL-NEXT:    v_mul_lo_u32 v21, v18, v0505; GISEL-NEXT:    v_mul_hi_u32 v22, v17, v0506; GISEL-NEXT:    v_mul_hi_u32 v23, v18, v0507; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v13, v5508; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v16, vcc509; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v15510; GISEL-NEXT:    v_cndmask_b32_e32 v13, v13, v0, vcc511; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v20, v17, v[8:9]512; GISEL-NEXT:    v_cndmask_b32_e32 v5, v14, v5, vcc513; GISEL-NEXT:    v_mul_lo_u32 v1, v17, v0514; GISEL-NEXT:    v_mul_lo_u32 v9, v18, v0515; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v21, v1516; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc517; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v22518; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc519; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v8, v1520; GISEL-NEXT:    v_mul_hi_u32 v8, v17, v0521; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v23522; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc523; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8524; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc525; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v14, v9526; GISEL-NEXT:    v_mul_hi_u32 v0, v18, v0527; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v8, v1528; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc529; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8530; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v8531; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v17, v1532; GISEL-NEXT:    v_addc_u32_e32 v15, vcc, v18, v0, vcc533; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v19, v14, 0534; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v11535; GISEL-NEXT:    v_cndmask_b32_e32 v10, v10, v13, vcc536; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v19, v15, v[1:2]537; GISEL-NEXT:    v_xor_b32_e32 v1, v10, v4538; GISEL-NEXT:    v_cndmask_b32_e32 v5, v12, v5, vcc539; GISEL-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v20, v14, v[8:9]540; GISEL-NEXT:    v_ashrrev_i32_e32 v12, 31, v3541; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v12542; GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v12, vcc543; GISEL-NEXT:    v_xor_b32_e32 v11, v2, v12544; GISEL-NEXT:    v_mul_lo_u32 v2, v15, v0545; GISEL-NEXT:    v_mul_lo_u32 v8, v14, v10546; GISEL-NEXT:    v_xor_b32_e32 v13, v3, v12547; GISEL-NEXT:    v_mul_hi_u32 v3, v14, v0548; GISEL-NEXT:    v_mul_hi_u32 v0, v15, v0549; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v8550; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc551; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v3552; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc553; GISEL-NEXT:    v_mul_lo_u32 v3, v15, v10554; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v8, v2555; GISEL-NEXT:    v_mul_hi_u32 v8, v14, v10556; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v3, v0557; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc558; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v8559; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc560; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v8561; GISEL-NEXT:    v_mul_hi_u32 v8, v15, v10562; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v2563; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc564; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v3, v2565; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v8, v2566; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v14, v0567; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v15, v2, vcc568; GISEL-NEXT:    v_mul_lo_u32 v3, v13, v0569; GISEL-NEXT:    v_mul_lo_u32 v8, v11, v2570; GISEL-NEXT:    v_mul_hi_u32 v9, v11, v0571; GISEL-NEXT:    v_mul_hi_u32 v0, v13, v0572; GISEL-NEXT:    v_xor_b32_e32 v5, v5, v4573; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v8574; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc575; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v9576; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc577; GISEL-NEXT:    v_mul_lo_u32 v9, v13, v2578; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v8, v3579; GISEL-NEXT:    v_mul_hi_u32 v8, v11, v2580; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v9, v0581; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc582; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v8583; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc584; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8585; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v0, v3586; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc587; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v8, v0588; GISEL-NEXT:    v_mul_hi_u32 v8, v13, v2589; GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v10, 0590; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v8, v0591; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v6, v0, v[3:4]592; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v1, v4593; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v5, v4, vcc594; GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v7, v10, v[8:9]595; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v11, v2596; GISEL-NEXT:    v_subb_u32_e64 v4, s[4:5], v13, v3, vcc597; GISEL-NEXT:    v_sub_i32_e64 v3, s[4:5], v13, v3598; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v7599; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]600; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v6601; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]602; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v4, v7603; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v7, vcc604; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, v8, s[4:5]605; GISEL-NEXT:    v_sub_i32_e32 v8, vcc, v2, v6606; GISEL-NEXT:    v_subbrev_u32_e64 v9, s[4:5], 0, v3, vcc607; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v7608; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]609; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v8, v6610; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v7, vcc611; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]612; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v9, v7613; GISEL-NEXT:    v_sub_i32_e32 v6, vcc, v8, v6614; GISEL-NEXT:    v_cndmask_b32_e64 v10, v10, v11, s[4:5]615; GISEL-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc616; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v10617; GISEL-NEXT:    v_cndmask_b32_e32 v6, v8, v6, vcc618; GISEL-NEXT:    v_cndmask_b32_e32 v3, v9, v3, vcc619; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5620; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc621; GISEL-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc622; GISEL-NEXT:    v_xor_b32_e32 v2, v2, v12623; GISEL-NEXT:    v_xor_b32_e32 v3, v3, v12624; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v12625; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v12, vcc626; GISEL-NEXT:    s_setpc_b64 s[30:31]627;628; CGP-LABEL: v_srem_v2i64:629; CGP:       ; %bb.0:630; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)631; CGP-NEXT:    v_mov_b32_e32 v11, v1632; CGP-NEXT:    v_mov_b32_e32 v10, v0633; CGP-NEXT:    v_or_b32_e32 v1, v11, v5634; CGP-NEXT:    v_mov_b32_e32 v0, 0635; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]636; CGP-NEXT:    v_mov_b32_e32 v8, v2637; CGP-NEXT:    v_mov_b32_e32 v9, v3638; CGP-NEXT:    ; implicit-def: $vgpr0_vgpr1639; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc640; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]641; CGP-NEXT:    s_cbranch_execz .LBB2_2642; CGP-NEXT:  ; %bb.1:643; CGP-NEXT:    v_ashrrev_i32_e32 v1, 31, v5644; CGP-NEXT:    v_add_i32_e32 v0, vcc, v4, v1645; CGP-NEXT:    v_addc_u32_e32 v2, vcc, v5, v1, vcc646; CGP-NEXT:    v_xor_b32_e32 v0, v0, v1647; CGP-NEXT:    v_xor_b32_e32 v1, v2, v1648; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v0649; CGP-NEXT:    v_cvt_f32_u32_e32 v3, v1650; CGP-NEXT:    v_sub_i32_e32 v16, vcc, 0, v0651; CGP-NEXT:    v_subb_u32_e32 v17, vcc, 0, v1, vcc652; CGP-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v3653; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v2654; CGP-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v2655; CGP-NEXT:    v_mul_f32_e32 v3, 0x2f800000, v2656; CGP-NEXT:    v_trunc_f32_e32 v3, v3657; CGP-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v3658; CGP-NEXT:    v_cvt_u32_f32_e32 v15, v2659; CGP-NEXT:    v_cvt_u32_f32_e32 v14, v3660; CGP-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v16, v15, 0661; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v16, v14, v[3:4]662; CGP-NEXT:    v_mul_lo_u32 v3, v14, v2663; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v15, v[4:5]664; CGP-NEXT:    v_mul_hi_u32 v4, v15, v2665; CGP-NEXT:    v_mul_hi_u32 v2, v14, v2666; CGP-NEXT:    v_mul_lo_u32 v5, v15, v12667; CGP-NEXT:    v_mul_lo_u32 v13, v14, v12668; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v5669; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc670; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v4671; CGP-NEXT:    v_mul_hi_u32 v4, v15, v12672; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc673; CGP-NEXT:    v_add_i32_e32 v3, vcc, v5, v3674; CGP-NEXT:    v_add_i32_e32 v2, vcc, v13, v2675; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc676; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v4677; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc678; CGP-NEXT:    v_add_i32_e32 v4, vcc, v5, v4679; CGP-NEXT:    v_mul_hi_u32 v5, v14, v12680; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v3681; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc682; CGP-NEXT:    v_add_i32_e32 v3, vcc, v4, v3683; CGP-NEXT:    v_add_i32_e32 v3, vcc, v5, v3684; CGP-NEXT:    v_add_i32_e32 v15, vcc, v15, v2685; CGP-NEXT:    v_addc_u32_e32 v14, vcc, v14, v3, vcc686; CGP-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v16, v15, 0687; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v16, v14, v[3:4]688; CGP-NEXT:    v_ashrrev_i32_e32 v16, 31, v11689; CGP-NEXT:    v_add_i32_e32 v3, vcc, v10, v16690; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v15, v[4:5]691; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v11, v16, vcc692; CGP-NEXT:    v_xor_b32_e32 v13, v3, v16693; CGP-NEXT:    v_mul_lo_u32 v3, v14, v2694; CGP-NEXT:    v_mul_lo_u32 v5, v15, v12695; CGP-NEXT:    v_xor_b32_e32 v17, v4, v16696; CGP-NEXT:    v_mul_hi_u32 v4, v15, v2697; CGP-NEXT:    v_mul_hi_u32 v2, v14, v2698; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v5699; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc700; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v4701; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc702; CGP-NEXT:    v_mul_lo_u32 v4, v14, v12703; CGP-NEXT:    v_add_i32_e32 v3, vcc, v5, v3704; CGP-NEXT:    v_mul_hi_u32 v5, v15, v12705; CGP-NEXT:    v_add_i32_e32 v2, vcc, v4, v2706; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc707; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v5708; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc709; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v5710; CGP-NEXT:    v_mul_hi_u32 v5, v14, v12711; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v3712; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc713; CGP-NEXT:    v_add_i32_e32 v3, vcc, v4, v3714; CGP-NEXT:    v_add_i32_e32 v3, vcc, v5, v3715; CGP-NEXT:    v_add_i32_e32 v2, vcc, v15, v2716; CGP-NEXT:    v_addc_u32_e32 v3, vcc, v14, v3, vcc717; CGP-NEXT:    v_mul_lo_u32 v4, v17, v2718; CGP-NEXT:    v_mul_lo_u32 v5, v13, v3719; CGP-NEXT:    v_mul_hi_u32 v10, v13, v2720; CGP-NEXT:    v_mul_hi_u32 v2, v17, v2721; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v5722; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc723; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v10724; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc725; CGP-NEXT:    v_mul_lo_u32 v10, v17, v3726; CGP-NEXT:    v_add_i32_e32 v4, vcc, v5, v4727; CGP-NEXT:    v_mul_hi_u32 v5, v13, v3728; CGP-NEXT:    v_add_i32_e32 v2, vcc, v10, v2729; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc730; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v5731; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc732; CGP-NEXT:    v_add_i32_e32 v5, vcc, v10, v5733; CGP-NEXT:    v_add_i32_e32 v12, vcc, v2, v4734; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc735; CGP-NEXT:    v_add_i32_e32 v4, vcc, v5, v2736; CGP-NEXT:    v_mul_hi_u32 v5, v17, v3737; CGP-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v0, v12, 0738; CGP-NEXT:    v_add_i32_e32 v10, vcc, v5, v4739; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v10, v[3:4]740; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v13, v2741; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v1, v12, v[4:5]742; CGP-NEXT:    v_subb_u32_e64 v3, s[4:5], v17, v10, vcc743; CGP-NEXT:    v_sub_i32_e64 v4, s[4:5], v17, v10744; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v3, v1745; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]746; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v0747; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]748; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v1749; CGP-NEXT:    v_subb_u32_e32 v4, vcc, v4, v1, vcc750; CGP-NEXT:    v_cndmask_b32_e64 v5, v5, v10, s[4:5]751; CGP-NEXT:    v_sub_i32_e32 v10, vcc, v2, v0752; CGP-NEXT:    v_subbrev_u32_e64 v11, s[4:5], 0, v4, vcc753; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v11, v1754; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, -1, s[4:5]755; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v10, v0756; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, -1, s[4:5]757; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v11, v1758; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v4, v1, vcc759; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v10, v0760; CGP-NEXT:    v_cndmask_b32_e64 v12, v12, v13, s[4:5]761; CGP-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc762; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12763; CGP-NEXT:    v_cndmask_b32_e32 v0, v10, v0, vcc764; CGP-NEXT:    v_cndmask_b32_e32 v1, v11, v1, vcc765; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5766; CGP-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc767; CGP-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc768; CGP-NEXT:    v_xor_b32_e32 v0, v0, v16769; CGP-NEXT:    v_xor_b32_e32 v1, v1, v16770; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v0, v16771; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v1, v16, vcc772; CGP-NEXT:    ; implicit-def: $vgpr4773; CGP-NEXT:    ; implicit-def: $vgpr10774; CGP-NEXT:  .LBB2_2: ; %Flow1775; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]776; CGP-NEXT:    s_cbranch_execz .LBB2_4777; CGP-NEXT:  ; %bb.3:778; CGP-NEXT:    v_cvt_f32_u32_e32 v0, v4779; CGP-NEXT:    v_sub_i32_e32 v1, vcc, 0, v4780; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v0781; CGP-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0782; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v0783; CGP-NEXT:    v_mul_lo_u32 v1, v1, v0784; CGP-NEXT:    v_mul_hi_u32 v1, v0, v1785; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v1786; CGP-NEXT:    v_mul_hi_u32 v0, v10, v0787; CGP-NEXT:    v_mov_b32_e32 v1, 0788; CGP-NEXT:    v_mul_lo_u32 v0, v0, v4789; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v10, v0790; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v4791; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v4792; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc793; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v4794; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v4795; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc796; CGP-NEXT:  .LBB2_4:797; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]798; CGP-NEXT:    v_or_b32_e32 v3, v9, v7799; CGP-NEXT:    v_mov_b32_e32 v2, 0800; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]801; CGP-NEXT:    ; implicit-def: $vgpr2_vgpr3802; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc803; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]804; CGP-NEXT:    s_cbranch_execnz .LBB2_7805; CGP-NEXT:  ; %bb.5: ; %Flow806; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]807; CGP-NEXT:    s_cbranch_execnz .LBB2_8808; CGP-NEXT:  .LBB2_6:809; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]810; CGP-NEXT:    s_setpc_b64 s[30:31]811; CGP-NEXT:  .LBB2_7:812; CGP-NEXT:    v_ashrrev_i32_e32 v3, 31, v7813; CGP-NEXT:    v_add_i32_e32 v2, vcc, v6, v3814; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v7, v3, vcc815; CGP-NEXT:    v_xor_b32_e32 v2, v2, v3816; CGP-NEXT:    v_xor_b32_e32 v3, v4, v3817; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v2818; CGP-NEXT:    v_cvt_f32_u32_e32 v5, v3819; CGP-NEXT:    v_sub_i32_e32 v14, vcc, 0, v2820; CGP-NEXT:    v_subb_u32_e32 v15, vcc, 0, v3, vcc821; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v5822; CGP-NEXT:    v_rcp_iflag_f32_e32 v4, v4823; CGP-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v4824; CGP-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v4825; CGP-NEXT:    v_trunc_f32_e32 v5, v5826; CGP-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v5827; CGP-NEXT:    v_cvt_u32_f32_e32 v13, v4828; CGP-NEXT:    v_cvt_u32_f32_e32 v12, v5829; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v14, v13, 0830; CGP-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v14, v12, v[5:6]831; CGP-NEXT:    v_mul_lo_u32 v5, v12, v4832; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v15, v13, v[6:7]833; CGP-NEXT:    v_mul_hi_u32 v6, v13, v4834; CGP-NEXT:    v_mul_hi_u32 v4, v12, v4835; CGP-NEXT:    v_mul_lo_u32 v7, v13, v10836; CGP-NEXT:    v_mul_lo_u32 v11, v12, v10837; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v7838; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc839; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v6840; CGP-NEXT:    v_mul_hi_u32 v6, v13, v10841; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc842; CGP-NEXT:    v_add_i32_e32 v5, vcc, v7, v5843; CGP-NEXT:    v_add_i32_e32 v4, vcc, v11, v4844; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc845; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v6846; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc847; CGP-NEXT:    v_add_i32_e32 v6, vcc, v7, v6848; CGP-NEXT:    v_mul_hi_u32 v7, v12, v10849; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v5850; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc851; CGP-NEXT:    v_add_i32_e32 v5, vcc, v6, v5852; CGP-NEXT:    v_add_i32_e32 v5, vcc, v7, v5853; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v4854; CGP-NEXT:    v_addc_u32_e32 v12, vcc, v12, v5, vcc855; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v14, v13, 0856; CGP-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v14, v12, v[5:6]857; CGP-NEXT:    v_ashrrev_i32_e32 v14, 31, v9858; CGP-NEXT:    v_add_i32_e32 v5, vcc, v8, v14859; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v15, v13, v[6:7]860; CGP-NEXT:    v_addc_u32_e32 v6, vcc, v9, v14, vcc861; CGP-NEXT:    v_xor_b32_e32 v11, v5, v14862; CGP-NEXT:    v_mul_lo_u32 v5, v12, v4863; CGP-NEXT:    v_mul_lo_u32 v7, v13, v10864; CGP-NEXT:    v_xor_b32_e32 v15, v6, v14865; CGP-NEXT:    v_mul_hi_u32 v6, v13, v4866; CGP-NEXT:    v_mul_hi_u32 v4, v12, v4867; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v7868; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc869; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v6870; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc871; CGP-NEXT:    v_mul_lo_u32 v6, v12, v10872; CGP-NEXT:    v_add_i32_e32 v5, vcc, v7, v5873; CGP-NEXT:    v_mul_hi_u32 v7, v13, v10874; CGP-NEXT:    v_add_i32_e32 v4, vcc, v6, v4875; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc876; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v7877; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc878; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v7879; CGP-NEXT:    v_mul_hi_u32 v7, v12, v10880; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v5881; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc882; CGP-NEXT:    v_add_i32_e32 v5, vcc, v6, v5883; CGP-NEXT:    v_add_i32_e32 v5, vcc, v7, v5884; CGP-NEXT:    v_add_i32_e32 v4, vcc, v13, v4885; CGP-NEXT:    v_addc_u32_e32 v5, vcc, v12, v5, vcc886; CGP-NEXT:    v_mul_lo_u32 v6, v15, v4887; CGP-NEXT:    v_mul_lo_u32 v7, v11, v5888; CGP-NEXT:    v_mul_hi_u32 v8, v11, v4889; CGP-NEXT:    v_mul_hi_u32 v4, v15, v4890; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v7891; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc892; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v8893; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc894; CGP-NEXT:    v_mul_lo_u32 v8, v15, v5895; CGP-NEXT:    v_add_i32_e32 v6, vcc, v7, v6896; CGP-NEXT:    v_mul_hi_u32 v7, v11, v5897; CGP-NEXT:    v_add_i32_e32 v4, vcc, v8, v4898; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc899; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v7900; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc901; CGP-NEXT:    v_add_i32_e32 v7, vcc, v8, v7902; CGP-NEXT:    v_add_i32_e32 v10, vcc, v4, v6903; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc904; CGP-NEXT:    v_add_i32_e32 v6, vcc, v7, v4905; CGP-NEXT:    v_mul_hi_u32 v7, v15, v5906; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v2, v10, 0907; CGP-NEXT:    v_add_i32_e32 v8, vcc, v7, v6908; CGP-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v2, v8, v[5:6]909; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v11, v4910; CGP-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v3, v10, v[6:7]911; CGP-NEXT:    v_subb_u32_e64 v5, s[4:5], v15, v8, vcc912; CGP-NEXT:    v_sub_i32_e64 v6, s[4:5], v15, v8913; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v5, v3914; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, -1, s[4:5]915; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v2916; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]917; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v3918; CGP-NEXT:    v_subb_u32_e32 v6, vcc, v6, v3, vcc919; CGP-NEXT:    v_cndmask_b32_e64 v7, v7, v8, s[4:5]920; CGP-NEXT:    v_sub_i32_e32 v8, vcc, v4, v2921; CGP-NEXT:    v_subbrev_u32_e64 v9, s[4:5], 0, v6, vcc922; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v3923; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]924; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v8, v2925; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]926; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v9, v3927; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v6, v3, vcc928; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v8, v2929; CGP-NEXT:    v_cndmask_b32_e64 v10, v10, v11, s[4:5]930; CGP-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc931; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v10932; CGP-NEXT:    v_cndmask_b32_e32 v2, v8, v2, vcc933; CGP-NEXT:    v_cndmask_b32_e32 v3, v9, v3, vcc934; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v7935; CGP-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc936; CGP-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc937; CGP-NEXT:    v_xor_b32_e32 v2, v2, v14938; CGP-NEXT:    v_xor_b32_e32 v3, v3, v14939; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v2, v14940; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v3, v14, vcc941; CGP-NEXT:    ; implicit-def: $vgpr6942; CGP-NEXT:    ; implicit-def: $vgpr8943; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]944; CGP-NEXT:    s_cbranch_execz .LBB2_6945; CGP-NEXT:  .LBB2_8:946; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v6947; CGP-NEXT:    v_sub_i32_e32 v3, vcc, 0, v6948; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v2949; CGP-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v2950; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v2951; CGP-NEXT:    v_mul_lo_u32 v3, v3, v2952; CGP-NEXT:    v_mul_hi_u32 v3, v2, v3953; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v3954; CGP-NEXT:    v_mul_hi_u32 v2, v8, v2955; CGP-NEXT:    v_mov_b32_e32 v3, 0956; CGP-NEXT:    v_mul_lo_u32 v2, v2, v6957; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v8, v2958; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v6959; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v6960; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc961; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v6962; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v6963; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc964; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]965; CGP-NEXT:    s_setpc_b64 s[30:31]966  %result = srem <2 x i64> %num, %den967  ret <2 x i64> %result968}969 970define i64 @v_srem_i64_pow2k_denom(i64 %num) {971; CHECK-LABEL: v_srem_i64_pow2k_denom:972; CHECK:       ; %bb.0:973; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)974; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, 0x1000975; CHECK-NEXT:    v_cvt_f32_ubyte0_e32 v3, 0976; CHECK-NEXT:    v_mov_b32_e32 v9, 0xfffff000977; CHECK-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v3978; CHECK-NEXT:    v_rcp_iflag_f32_e32 v2, v2979; CHECK-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v2980; CHECK-NEXT:    v_mul_f32_e32 v3, 0x2f800000, v2981; CHECK-NEXT:    v_trunc_f32_e32 v3, v3982; CHECK-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v3983; CHECK-NEXT:    v_cvt_u32_f32_e32 v8, v2984; CHECK-NEXT:    v_cvt_u32_f32_e32 v10, v3985; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 0986; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]987; CHECK-NEXT:    v_mul_lo_u32 v3, v10, v2988; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]989; CHECK-NEXT:    v_mul_hi_u32 v4, v8, v2990; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v2991; CHECK-NEXT:    v_mul_lo_u32 v5, v8, v6992; CHECK-NEXT:    v_mul_lo_u32 v7, v10, v6993; CHECK-NEXT:    v_mul_hi_u32 v11, v8, v6994; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v5995; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc996; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v7, v2997; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc998; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v4999; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1000; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v31001; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v111002; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1003; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v7, v41004; CHECK-NEXT:    v_mul_hi_u32 v5, v10, v61005; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31006; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1007; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v31008; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v31009; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v21010; CHECK-NEXT:    v_addc_u32_e32 v10, vcc, v10, v3, vcc1011; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 01012; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]1013; CHECK-NEXT:    v_ashrrev_i32_e32 v9, 31, v11014; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v91015; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]1016; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc1017; CHECK-NEXT:    v_xor_b32_e32 v4, v0, v91018; CHECK-NEXT:    v_mul_lo_u32 v0, v10, v21019; CHECK-NEXT:    v_mul_lo_u32 v3, v8, v61020; CHECK-NEXT:    v_xor_b32_e32 v5, v1, v91021; CHECK-NEXT:    v_mul_hi_u32 v1, v8, v21022; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v21023; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v31024; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1025; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v11026; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1027; CHECK-NEXT:    v_mul_lo_u32 v1, v10, v61028; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v3, v01029; CHECK-NEXT:    v_mul_hi_u32 v3, v8, v61030; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v21031; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1032; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v31033; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1034; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31035; CHECK-NEXT:    v_mul_hi_u32 v3, v10, v61036; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v1, v01037; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1038; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v2, v11039; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v3, v11040; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v8, v01041; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v10, v1, vcc1042; CHECK-NEXT:    v_mul_lo_u32 v2, v5, v01043; CHECK-NEXT:    v_mul_lo_u32 v3, v4, v11044; CHECK-NEXT:    v_mul_hi_u32 v7, v4, v01045; CHECK-NEXT:    v_mul_hi_u32 v0, v5, v01046; CHECK-NEXT:    v_mov_b32_e32 v6, 0x10001047; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31048; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1049; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v71050; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1051; CHECK-NEXT:    v_mul_lo_u32 v7, v5, v11052; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v21053; CHECK-NEXT:    v_mul_hi_u32 v3, v4, v11054; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v7, v01055; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1056; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v31057; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1058; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v7, v31059; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v0, v21060; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1061; CHECK-NEXT:    v_mul_hi_u32 v7, v5, v11062; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v01063; CHECK-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v2, 01064; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v31065; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v7, v[1:2]1066; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v4, v01067; CHECK-NEXT:    v_subb_u32_e64 v1, s[4:5], v5, v2, vcc1068; CHECK-NEXT:    v_sub_i32_e64 v2, s[4:5], v5, v21069; CHECK-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1070; CHECK-NEXT:    v_sub_i32_e32 v4, vcc, v0, v61071; CHECK-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1072; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v4, v61073; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, vcc1074; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v21075; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v0, v61076; CHECK-NEXT:    v_cndmask_b32_e32 v5, -1, v5, vcc1077; CHECK-NEXT:    v_sub_i32_e32 v6, vcc, v4, v61078; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, -1, s[4:5]1079; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v11080; CHECK-NEXT:    v_subbrev_u32_e32 v7, vcc, 0, v2, vcc1081; CHECK-NEXT:    v_cndmask_b32_e64 v3, -1, v3, s[4:5]1082; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v51083; CHECK-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc1084; CHECK-NEXT:    v_cndmask_b32_e32 v2, v2, v7, vcc1085; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31086; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc1087; CHECK-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1088; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v91089; CHECK-NEXT:    v_xor_b32_e32 v1, v1, v91090; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v91091; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v9, vcc1092; CHECK-NEXT:    s_setpc_b64 s[30:31]1093  %result = srem i64 %num, 40961094  ret i64 %result1095}1096 1097define <2 x i64> @v_srem_v2i64_pow2k_denom(<2 x i64> %num) {1098; GISEL-LABEL: v_srem_v2i64_pow2k_denom:1099; GISEL:       ; %bb.0:1100; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1101; GISEL-NEXT:    v_cvt_f32_u32_e32 v4, 0x10001102; GISEL-NEXT:    v_cvt_f32_ubyte0_e32 v5, 01103; GISEL-NEXT:    v_mov_b32_e32 v6, 0xfffff0001104; GISEL-NEXT:    s_mov_b32 s6, 11105; GISEL-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v51106; GISEL-NEXT:    v_rcp_iflag_f32_e32 v4, v41107; GISEL-NEXT:    s_cmp_lg_u32 s6, 01108; GISEL-NEXT:    s_subb_u32 s6, 0, 01109; GISEL-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v41110; GISEL-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v41111; GISEL-NEXT:    v_trunc_f32_e32 v5, v51112; GISEL-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v51113; GISEL-NEXT:    v_cvt_u32_f32_e32 v7, v41114; GISEL-NEXT:    v_cvt_u32_f32_e32 v8, v51115; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01116; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1117; GISEL-NEXT:    v_mul_hi_u32 v11, v7, v41118; GISEL-NEXT:    v_mul_hi_u32 v12, v8, v41119; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[9:10]1120; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v41121; GISEL-NEXT:    v_mul_lo_u32 v9, v7, v131122; GISEL-NEXT:    v_mul_lo_u32 v4, v8, v131123; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v91124; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1125; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v111126; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1127; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v14, v91128; GISEL-NEXT:    v_mul_hi_u32 v14, v7, v131129; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v121130; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1131; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v141132; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1133; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141134; GISEL-NEXT:    v_mul_hi_u32 v13, v8, v131135; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v91136; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1137; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v14, v91138; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v13, v91139; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v7, v41140; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v6, v4, 01141; GISEL-NEXT:    v_addc_u32_e32 v17, vcc, v8, v9, vcc1142; GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], v6, v17, v[14:15]1143; GISEL-NEXT:    v_mul_lo_u32 v9, v17, v131144; GISEL-NEXT:    v_mul_hi_u32 v18, v4, v131145; GISEL-NEXT:    v_mul_hi_u32 v19, v17, v131146; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v4, v[15:16]1147; GISEL-NEXT:    s_mov_b32 s6, 11148; GISEL-NEXT:    s_cmp_lg_u32 s6, 01149; GISEL-NEXT:    v_mul_lo_u32 v14, v4, v131150; GISEL-NEXT:    v_mul_hi_u32 v15, v4, v131151; GISEL-NEXT:    s_subb_u32 s6, 0, 01152; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v141153; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1154; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v181155; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1156; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v91157; GISEL-NEXT:    v_mul_lo_u32 v9, v17, v131158; GISEL-NEXT:    v_mul_hi_u32 v13, v17, v131159; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v191160; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1161; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v9, v151162; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1163; GISEL-NEXT:    v_add_i32_e32 v16, vcc, v16, v91164; GISEL-NEXT:    v_ashrrev_i32_e32 v9, 31, v11165; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v91166; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc1167; GISEL-NEXT:    v_xor_b32_e32 v18, v0, v91168; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v15, v141169; GISEL-NEXT:    v_xor_b32_e32 v19, v1, v91170; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1171; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v16, v11172; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v13, v11173; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v4, v01174; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v17, v1, vcc1175; GISEL-NEXT:    v_mul_lo_u32 v13, v19, v01176; GISEL-NEXT:    v_mul_lo_u32 v14, v18, v11177; GISEL-NEXT:    v_mul_hi_u32 v15, v18, v01178; GISEL-NEXT:    v_mul_hi_u32 v0, v19, v01179; GISEL-NEXT:    v_mov_b32_e32 v4, 0x10001180; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141181; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1182; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v151183; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1184; GISEL-NEXT:    v_mul_lo_u32 v15, v19, v11185; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v14, v131186; GISEL-NEXT:    v_mul_hi_u32 v14, v18, v11187; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v15, v01188; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1189; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v141190; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1191; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141192; GISEL-NEXT:    v_mul_hi_u32 v1, v19, v11193; GISEL-NEXT:    v_add_i32_e32 v17, vcc, v0, v131194; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1195; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v14, v01196; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v1, v01197; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v17, 01198; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v4, v15, v[1:2]1199; GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], 0, v17, v[13:14]1200; GISEL-NEXT:    v_sub_i32_e32 v16, vcc, v18, v01201; GISEL-NEXT:    v_sub_i32_e64 v0, s[4:5], v19, v151202; GISEL-NEXT:    v_subb_u32_e64 v17, s[4:5], v19, v15, vcc1203; GISEL-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc1204; GISEL-NEXT:    v_sub_i32_e32 v18, vcc, v16, v41205; GISEL-NEXT:    v_subbrev_u32_e32 v19, vcc, 0, v0, vcc1206; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v16, v41207; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v18, v41208; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]1209; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v171210; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1211; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v191212; GISEL-NEXT:    v_cndmask_b32_e64 v15, -1, v1, s[4:5]1213; GISEL-NEXT:    v_cndmask_b32_e32 v20, -1, v0, vcc1214; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]1215; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[0:1]1216; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v18, v41217; GISEL-NEXT:    v_mul_lo_u32 v5, v7, v131218; GISEL-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v19, vcc1219; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v201220; GISEL-NEXT:    v_cndmask_b32_e32 v14, v18, v0, vcc1221; GISEL-NEXT:    v_cndmask_b32_e32 v18, v19, v1, vcc1222; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v51223; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1224; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v111225; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1226; GISEL-NEXT:    v_mul_lo_u32 v5, v8, v131227; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v01228; GISEL-NEXT:    v_mul_hi_u32 v1, v7, v131229; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v121230; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1231; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v5, v11232; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1233; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v10, v51234; GISEL-NEXT:    v_mul_hi_u32 v10, v8, v131235; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v01236; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1237; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v5, v11238; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v10, v11239; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v7, v01240; GISEL-NEXT:    v_addc_u32_e32 v11, vcc, v8, v1, vcc1241; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v10, 01242; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v151243; GISEL-NEXT:    v_cndmask_b32_e32 v5, v16, v14, vcc1244; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v6, v11, v[1:2]1245; GISEL-NEXT:    v_xor_b32_e32 v1, v5, v91246; GISEL-NEXT:    v_ashrrev_i32_e32 v13, 31, v31247; GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], s6, v10, v[7:8]1248; GISEL-NEXT:    v_cndmask_b32_e32 v12, v17, v18, vcc1249; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v131250; GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v13, vcc1251; GISEL-NEXT:    v_xor_b32_e32 v14, v2, v131252; GISEL-NEXT:    v_mul_lo_u32 v2, v11, v01253; GISEL-NEXT:    v_mul_lo_u32 v6, v10, v51254; GISEL-NEXT:    v_xor_b32_e32 v15, v3, v131255; GISEL-NEXT:    v_mul_hi_u32 v3, v10, v01256; GISEL-NEXT:    v_mul_hi_u32 v0, v11, v01257; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v61258; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1259; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v31260; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1261; GISEL-NEXT:    v_mul_lo_u32 v3, v11, v51262; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v6, v21263; GISEL-NEXT:    v_mul_hi_u32 v6, v10, v51264; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v3, v01265; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1266; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v61267; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1268; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v61269; GISEL-NEXT:    v_mul_hi_u32 v5, v11, v51270; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21271; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1272; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v3, v21273; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v5, v21274; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v01275; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v11, v2, vcc1276; GISEL-NEXT:    v_mul_lo_u32 v3, v15, v01277; GISEL-NEXT:    v_mul_lo_u32 v5, v14, v21278; GISEL-NEXT:    v_mul_hi_u32 v6, v14, v01279; GISEL-NEXT:    v_mul_hi_u32 v0, v15, v01280; GISEL-NEXT:    v_xor_b32_e32 v7, v12, v91281; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v51282; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1283; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v61284; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1285; GISEL-NEXT:    v_mul_lo_u32 v6, v15, v21286; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v5, v31287; GISEL-NEXT:    v_mul_hi_u32 v5, v14, v21288; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v6, v01289; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1290; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v51291; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1292; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v6, v51293; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v0, v31294; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1295; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v5, v01296; GISEL-NEXT:    v_mul_hi_u32 v5, v15, v21297; GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v4, v10, 01298; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v5, v01299; GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v4, v0, v[3:4]1300; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v1, v91301; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v7, v9, vcc1302; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], 0, v10, v[5:6]1303; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v14, v21304; GISEL-NEXT:    v_sub_i32_e64 v5, s[4:5], v15, v71305; GISEL-NEXT:    v_subb_u32_e64 v3, s[4:5], v15, v7, vcc1306; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1307; GISEL-NEXT:    v_sub_i32_e32 v7, vcc, v2, v41308; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1309; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v41310; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, vcc1311; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v51312; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v41313; GISEL-NEXT:    v_cndmask_b32_e32 v8, -1, v8, vcc1314; GISEL-NEXT:    v_sub_i32_e32 v4, vcc, v7, v41315; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1316; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v31317; GISEL-NEXT:    v_subbrev_u32_e32 v9, vcc, 0, v5, vcc1318; GISEL-NEXT:    v_cndmask_b32_e64 v6, -1, v6, s[4:5]1319; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v81320; GISEL-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc1321; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc1322; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61323; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1324; GISEL-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc1325; GISEL-NEXT:    v_xor_b32_e32 v2, v2, v131326; GISEL-NEXT:    v_xor_b32_e32 v3, v3, v131327; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v131328; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v13, vcc1329; GISEL-NEXT:    s_setpc_b64 s[30:31]1330;1331; CGP-LABEL: v_srem_v2i64_pow2k_denom:1332; CGP:       ; %bb.0:1333; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1334; CGP-NEXT:    v_cvt_f32_u32_e32 v4, 0x10001335; CGP-NEXT:    v_cvt_f32_ubyte0_e32 v5, 01336; CGP-NEXT:    v_mov_b32_e32 v6, 0xfffff0001337; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v51338; CGP-NEXT:    v_rcp_iflag_f32_e32 v4, v41339; CGP-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v41340; CGP-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v41341; CGP-NEXT:    v_trunc_f32_e32 v5, v51342; CGP-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v51343; CGP-NEXT:    v_cvt_u32_f32_e32 v7, v41344; CGP-NEXT:    v_cvt_u32_f32_e32 v8, v51345; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01346; CGP-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1347; CGP-NEXT:    v_mul_hi_u32 v11, v8, v41348; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], -1, v7, v[9:10]1349; CGP-NEXT:    v_mul_lo_u32 v9, v8, v41350; CGP-NEXT:    v_mul_hi_u32 v10, v7, v41351; CGP-NEXT:    v_mul_lo_u32 v4, v7, v121352; CGP-NEXT:    v_mul_lo_u32 v13, v8, v121353; CGP-NEXT:    v_mul_hi_u32 v14, v7, v121354; CGP-NEXT:    v_mul_hi_u32 v12, v8, v121355; CGP-NEXT:    v_add_i32_e32 v4, vcc, v9, v41356; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1357; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v101358; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1359; CGP-NEXT:    v_add_i32_e32 v4, vcc, v15, v41360; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v111361; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1362; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v141363; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1364; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v141365; CGP-NEXT:    v_add_i32_e32 v4, vcc, v13, v41366; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1367; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131368; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v131369; CGP-NEXT:    v_add_i32_e32 v4, vcc, v7, v41370; CGP-NEXT:    v_addc_u32_e32 v16, vcc, v8, v12, vcc1371; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v6, v4, 01372; CGP-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v6, v16, v[13:14]1373; CGP-NEXT:    v_mul_lo_u32 v17, v16, v121374; CGP-NEXT:    v_mul_hi_u32 v18, v4, v121375; CGP-NEXT:    v_mul_hi_u32 v19, v16, v121376; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], -1, v4, v[14:15]1377; CGP-NEXT:    v_mul_lo_u32 v13, v4, v121378; CGP-NEXT:    v_mul_hi_u32 v15, v4, v121379; CGP-NEXT:    v_add_i32_e32 v13, vcc, v17, v131380; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1381; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v181382; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1383; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131384; CGP-NEXT:    v_mul_lo_u32 v14, v16, v121385; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v191386; CGP-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc1387; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v151388; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1389; CGP-NEXT:    v_add_i32_e32 v15, vcc, v17, v151390; CGP-NEXT:    v_mul_hi_u32 v17, v16, v121391; CGP-NEXT:    v_ashrrev_i32_e32 v12, 31, v11392; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v121393; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v1, v12, vcc1394; CGP-NEXT:    v_xor_b32_e32 v18, v0, v121395; CGP-NEXT:    v_add_i32_e32 v0, vcc, v14, v131396; CGP-NEXT:    v_xor_b32_e32 v19, v1, v121397; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1398; CGP-NEXT:    v_add_i32_e32 v1, vcc, v15, v11399; CGP-NEXT:    v_add_i32_e32 v1, vcc, v17, v11400; CGP-NEXT:    v_add_i32_e32 v0, vcc, v4, v01401; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v16, v1, vcc1402; CGP-NEXT:    v_mul_lo_u32 v13, v19, v01403; CGP-NEXT:    v_mul_lo_u32 v14, v18, v11404; CGP-NEXT:    v_mul_hi_u32 v15, v18, v01405; CGP-NEXT:    v_mul_hi_u32 v0, v19, v01406; CGP-NEXT:    v_mov_b32_e32 v4, 0x10001407; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v141408; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1409; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v151410; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1411; CGP-NEXT:    v_mul_lo_u32 v15, v19, v11412; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131413; CGP-NEXT:    v_mul_hi_u32 v14, v18, v11414; CGP-NEXT:    v_add_i32_e32 v0, vcc, v15, v01415; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1416; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v141417; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1418; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v141419; CGP-NEXT:    v_add_i32_e32 v13, vcc, v0, v131420; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1421; CGP-NEXT:    v_mul_hi_u32 v15, v19, v11422; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v01423; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v13, 01424; CGP-NEXT:    v_add_i32_e32 v15, vcc, v15, v141425; CGP-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v4, v15, v[1:2]1426; CGP-NEXT:    v_sub_i32_e32 v15, vcc, v18, v01427; CGP-NEXT:    v_sub_i32_e64 v0, s[4:5], v19, v131428; CGP-NEXT:    v_subb_u32_e64 v16, s[4:5], v19, v13, vcc1429; CGP-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc1430; CGP-NEXT:    v_sub_i32_e32 v18, vcc, v15, v41431; CGP-NEXT:    v_subbrev_u32_e32 v19, vcc, 0, v0, vcc1432; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v15, v41433; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v18, v41434; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]1435; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v161436; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1437; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v191438; CGP-NEXT:    v_cndmask_b32_e64 v17, -1, v1, s[4:5]1439; CGP-NEXT:    v_cndmask_b32_e32 v20, -1, v0, vcc1440; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]1441; CGP-NEXT:    v_sub_i32_e32 v5, vcc, v18, v41442; CGP-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], -1, v7, v[0:1]1443; CGP-NEXT:    v_subbrev_u32_e32 v21, vcc, 0, v19, vcc1444; CGP-NEXT:    v_mul_lo_u32 v1, v7, v131445; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v201446; CGP-NEXT:    v_cndmask_b32_e32 v0, v18, v5, vcc1447; CGP-NEXT:    v_cndmask_b32_e32 v5, v19, v21, vcc1448; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v171449; CGP-NEXT:    v_cndmask_b32_e32 v14, v15, v0, vcc1450; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v9, v11451; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]1452; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v0, v101453; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1454; CGP-NEXT:    v_mul_lo_u32 v9, v8, v131455; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v1, v01456; CGP-NEXT:    v_mul_hi_u32 v1, v7, v131457; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v9, v111458; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]1459; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v9, v11460; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]1461; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v10, v91462; CGP-NEXT:    v_mul_hi_u32 v10, v8, v131463; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v1, v01464; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]1465; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v9, v11466; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v10, v11467; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v7, v01468; CGP-NEXT:    v_addc_u32_e64 v10, s[4:5], v8, v1, s[4:5]1469; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v9, 01470; CGP-NEXT:    v_cndmask_b32_e32 v5, v16, v5, vcc1471; CGP-NEXT:    v_ashrrev_i32_e32 v13, 31, v31472; CGP-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v6, v10, v[1:2]1473; CGP-NEXT:    v_xor_b32_e32 v1, v5, v121474; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v131475; CGP-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], -1, v9, v[7:8]1476; CGP-NEXT:    v_addc_u32_e32 v3, vcc, v3, v13, vcc1477; CGP-NEXT:    v_xor_b32_e32 v7, v2, v131478; CGP-NEXT:    v_mul_lo_u32 v2, v10, v01479; CGP-NEXT:    v_mul_lo_u32 v6, v9, v51480; CGP-NEXT:    v_xor_b32_e32 v8, v3, v131481; CGP-NEXT:    v_mul_hi_u32 v3, v9, v01482; CGP-NEXT:    v_mul_hi_u32 v0, v10, v01483; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v61484; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1485; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v31486; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1487; CGP-NEXT:    v_mul_lo_u32 v3, v10, v51488; CGP-NEXT:    v_add_i32_e32 v2, vcc, v6, v21489; CGP-NEXT:    v_mul_hi_u32 v6, v9, v51490; CGP-NEXT:    v_add_i32_e32 v0, vcc, v3, v01491; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1492; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v61493; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1494; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v61495; CGP-NEXT:    v_mul_hi_u32 v5, v10, v51496; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v21497; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1498; CGP-NEXT:    v_add_i32_e32 v2, vcc, v3, v21499; CGP-NEXT:    v_add_i32_e32 v2, vcc, v5, v21500; CGP-NEXT:    v_add_i32_e32 v3, vcc, v9, v01501; CGP-NEXT:    v_addc_u32_e32 v2, vcc, v10, v2, vcc1502; CGP-NEXT:    v_mul_lo_u32 v5, v8, v31503; CGP-NEXT:    v_mul_lo_u32 v6, v7, v21504; CGP-NEXT:    v_xor_b32_e32 v11, v14, v121505; CGP-NEXT:    v_mul_hi_u32 v9, v7, v31506; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v11, v121507; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v1, v12, vcc1508; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v61509; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1510; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v91511; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1512; CGP-NEXT:    v_mul_lo_u32 v9, v8, v21513; CGP-NEXT:    v_mul_hi_u32 v3, v8, v31514; CGP-NEXT:    v_add_i32_e32 v5, vcc, v6, v51515; CGP-NEXT:    v_mul_hi_u32 v6, v7, v21516; CGP-NEXT:    v_add_i32_e32 v3, vcc, v9, v31517; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1518; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v61519; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1520; CGP-NEXT:    v_add_i32_e32 v6, vcc, v9, v61521; CGP-NEXT:    v_add_i32_e32 v5, vcc, v3, v51522; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1523; CGP-NEXT:    v_mul_hi_u32 v9, v8, v21524; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v31525; CGP-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v4, v5, 01526; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v61527; CGP-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v4, v9, v[3:4]1528; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v7, v21529; CGP-NEXT:    v_subb_u32_e64 v3, s[4:5], v8, v5, vcc1530; CGP-NEXT:    v_sub_i32_e64 v5, s[4:5], v8, v51531; CGP-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1532; CGP-NEXT:    v_sub_i32_e32 v7, vcc, v2, v41533; CGP-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1534; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v41535; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, vcc1536; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v51537; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v41538; CGP-NEXT:    v_cndmask_b32_e32 v8, -1, v8, vcc1539; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v7, v41540; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1541; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v31542; CGP-NEXT:    v_subbrev_u32_e32 v9, vcc, 0, v5, vcc1543; CGP-NEXT:    v_cndmask_b32_e64 v6, -1, v6, s[4:5]1544; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v81545; CGP-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc1546; CGP-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc1547; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61548; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1549; CGP-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc1550; CGP-NEXT:    v_xor_b32_e32 v2, v2, v131551; CGP-NEXT:    v_xor_b32_e32 v3, v3, v131552; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v2, v131553; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v3, v13, vcc1554; CGP-NEXT:    s_setpc_b64 s[30:31]1555  %result = srem <2 x i64> %num, <i64 4096, i64 4096>1556  ret <2 x i64> %result1557}1558 1559define i64 @v_srem_i64_oddk_denom(i64 %num) {1560; CHECK-LABEL: v_srem_i64_oddk_denom:1561; CHECK:       ; %bb.0:1562; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1563; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, 0x12d8fb1564; CHECK-NEXT:    v_cvt_f32_ubyte0_e32 v3, 01565; CHECK-NEXT:    v_mov_b32_e32 v9, 0xffed27051566; CHECK-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v31567; CHECK-NEXT:    v_rcp_iflag_f32_e32 v2, v21568; CHECK-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v21569; CHECK-NEXT:    v_mul_f32_e32 v3, 0x2f800000, v21570; CHECK-NEXT:    v_trunc_f32_e32 v3, v31571; CHECK-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v31572; CHECK-NEXT:    v_cvt_u32_f32_e32 v8, v21573; CHECK-NEXT:    v_cvt_u32_f32_e32 v10, v31574; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 01575; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]1576; CHECK-NEXT:    v_mul_lo_u32 v3, v10, v21577; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]1578; CHECK-NEXT:    v_mul_hi_u32 v4, v8, v21579; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v21580; CHECK-NEXT:    v_mul_lo_u32 v5, v8, v61581; CHECK-NEXT:    v_mul_lo_u32 v7, v10, v61582; CHECK-NEXT:    v_mul_hi_u32 v11, v8, v61583; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v51584; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1585; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v7, v21586; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1587; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v41588; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1589; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v31590; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v111591; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1592; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v7, v41593; CHECK-NEXT:    v_mul_hi_u32 v5, v10, v61594; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31595; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1596; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v31597; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v5, v31598; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v21599; CHECK-NEXT:    v_addc_u32_e32 v10, vcc, v10, v3, vcc1600; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v9, v8, 01601; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v9, v10, v[3:4]1602; CHECK-NEXT:    v_ashrrev_i32_e32 v9, 31, v11603; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v91604; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], -1, v8, v[4:5]1605; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc1606; CHECK-NEXT:    v_xor_b32_e32 v4, v0, v91607; CHECK-NEXT:    v_mul_lo_u32 v0, v10, v21608; CHECK-NEXT:    v_mul_lo_u32 v3, v8, v61609; CHECK-NEXT:    v_xor_b32_e32 v5, v1, v91610; CHECK-NEXT:    v_mul_hi_u32 v1, v8, v21611; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v21612; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v31613; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1614; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v11615; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1616; CHECK-NEXT:    v_mul_lo_u32 v1, v10, v61617; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v3, v01618; CHECK-NEXT:    v_mul_hi_u32 v3, v8, v61619; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v21620; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1621; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v31622; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1623; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31624; CHECK-NEXT:    v_mul_hi_u32 v3, v10, v61625; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v1, v01626; CHECK-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1627; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v2, v11628; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v3, v11629; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v8, v01630; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v10, v1, vcc1631; CHECK-NEXT:    v_mul_lo_u32 v2, v5, v01632; CHECK-NEXT:    v_mul_lo_u32 v3, v4, v11633; CHECK-NEXT:    v_mul_hi_u32 v7, v4, v01634; CHECK-NEXT:    v_mul_hi_u32 v0, v5, v01635; CHECK-NEXT:    v_mov_b32_e32 v6, 0x12d8fb1636; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v31637; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1638; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v71639; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1640; CHECK-NEXT:    v_mul_lo_u32 v7, v5, v11641; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v21642; CHECK-NEXT:    v_mul_hi_u32 v3, v4, v11643; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v7, v01644; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1645; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v31646; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1647; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v7, v31648; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v0, v21649; CHECK-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1650; CHECK-NEXT:    v_mul_hi_u32 v7, v5, v11651; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v01652; CHECK-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v2, 01653; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v31654; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v7, v[1:2]1655; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v4, v01656; CHECK-NEXT:    v_subb_u32_e64 v1, s[4:5], v5, v2, vcc1657; CHECK-NEXT:    v_sub_i32_e64 v2, s[4:5], v5, v21658; CHECK-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1659; CHECK-NEXT:    v_sub_i32_e32 v4, vcc, v0, v61660; CHECK-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1661; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v4, v61662; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, vcc1663; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v21664; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v0, v61665; CHECK-NEXT:    v_cndmask_b32_e32 v5, -1, v5, vcc1666; CHECK-NEXT:    v_sub_i32_e32 v6, vcc, v4, v61667; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, -1, s[4:5]1668; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v11669; CHECK-NEXT:    v_subbrev_u32_e32 v7, vcc, 0, v2, vcc1670; CHECK-NEXT:    v_cndmask_b32_e64 v3, -1, v3, s[4:5]1671; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v51672; CHECK-NEXT:    v_cndmask_b32_e32 v4, v4, v6, vcc1673; CHECK-NEXT:    v_cndmask_b32_e32 v2, v2, v7, vcc1674; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31675; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc1676; CHECK-NEXT:    v_cndmask_b32_e32 v1, v1, v2, vcc1677; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v91678; CHECK-NEXT:    v_xor_b32_e32 v1, v1, v91679; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v91680; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v9, vcc1681; CHECK-NEXT:    s_setpc_b64 s[30:31]1682  %result = srem i64 %num, 12351951683  ret i64 %result1684}1685 1686define <2 x i64> @v_srem_v2i64_oddk_denom(<2 x i64> %num) {1687; GISEL-LABEL: v_srem_v2i64_oddk_denom:1688; GISEL:       ; %bb.0:1689; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1690; GISEL-NEXT:    v_cvt_f32_u32_e32 v4, 0x12d8fb1691; GISEL-NEXT:    v_cvt_f32_ubyte0_e32 v5, 01692; GISEL-NEXT:    v_mov_b32_e32 v6, 0xffed27051693; GISEL-NEXT:    s_mov_b32 s6, 11694; GISEL-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v51695; GISEL-NEXT:    v_rcp_iflag_f32_e32 v4, v41696; GISEL-NEXT:    s_cmp_lg_u32 s6, 01697; GISEL-NEXT:    s_subb_u32 s6, 0, 01698; GISEL-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v41699; GISEL-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v41700; GISEL-NEXT:    v_trunc_f32_e32 v5, v51701; GISEL-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v51702; GISEL-NEXT:    v_cvt_u32_f32_e32 v7, v41703; GISEL-NEXT:    v_cvt_u32_f32_e32 v8, v51704; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01705; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1706; GISEL-NEXT:    v_mul_hi_u32 v11, v7, v41707; GISEL-NEXT:    v_mul_hi_u32 v12, v8, v41708; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[9:10]1709; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v41710; GISEL-NEXT:    v_mul_lo_u32 v9, v7, v131711; GISEL-NEXT:    v_mul_lo_u32 v4, v8, v131712; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v91713; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1714; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v111715; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1716; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v14, v91717; GISEL-NEXT:    v_mul_hi_u32 v14, v7, v131718; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v121719; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1720; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v141721; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1722; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141723; GISEL-NEXT:    v_mul_hi_u32 v13, v8, v131724; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v91725; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1726; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v14, v91727; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v13, v91728; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v7, v41729; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v6, v4, 01730; GISEL-NEXT:    v_addc_u32_e32 v17, vcc, v8, v9, vcc1731; GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], v6, v17, v[14:15]1732; GISEL-NEXT:    v_mul_lo_u32 v9, v17, v131733; GISEL-NEXT:    v_mul_hi_u32 v18, v4, v131734; GISEL-NEXT:    v_mul_hi_u32 v19, v17, v131735; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v4, v[15:16]1736; GISEL-NEXT:    s_mov_b32 s6, 11737; GISEL-NEXT:    s_cmp_lg_u32 s6, 01738; GISEL-NEXT:    v_mul_lo_u32 v14, v4, v131739; GISEL-NEXT:    v_mul_hi_u32 v15, v4, v131740; GISEL-NEXT:    s_subb_u32 s6, 0, 01741; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v141742; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1743; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v181744; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1745; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v91746; GISEL-NEXT:    v_mul_lo_u32 v9, v17, v131747; GISEL-NEXT:    v_mul_hi_u32 v13, v17, v131748; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v191749; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1750; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v9, v151751; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1752; GISEL-NEXT:    v_add_i32_e32 v16, vcc, v16, v91753; GISEL-NEXT:    v_ashrrev_i32_e32 v9, 31, v11754; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v91755; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v9, vcc1756; GISEL-NEXT:    v_xor_b32_e32 v18, v0, v91757; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v15, v141758; GISEL-NEXT:    v_xor_b32_e32 v19, v1, v91759; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1760; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v16, v11761; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v13, v11762; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v4, v01763; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v17, v1, vcc1764; GISEL-NEXT:    v_mul_lo_u32 v13, v19, v01765; GISEL-NEXT:    v_mul_lo_u32 v14, v18, v11766; GISEL-NEXT:    v_mul_hi_u32 v15, v18, v01767; GISEL-NEXT:    v_mul_hi_u32 v0, v19, v01768; GISEL-NEXT:    v_mov_b32_e32 v4, 0x12d8fb1769; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141770; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1771; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v151772; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1773; GISEL-NEXT:    v_mul_lo_u32 v15, v19, v11774; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v14, v131775; GISEL-NEXT:    v_mul_hi_u32 v14, v18, v11776; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v15, v01777; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1778; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v141779; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1780; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141781; GISEL-NEXT:    v_mul_hi_u32 v1, v19, v11782; GISEL-NEXT:    v_add_i32_e32 v17, vcc, v0, v131783; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1784; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v14, v01785; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v1, v01786; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v17, 01787; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v4, v15, v[1:2]1788; GISEL-NEXT:    v_mad_u64_u32 v[15:16], s[4:5], 0, v17, v[13:14]1789; GISEL-NEXT:    v_sub_i32_e32 v16, vcc, v18, v01790; GISEL-NEXT:    v_sub_i32_e64 v0, s[4:5], v19, v151791; GISEL-NEXT:    v_subb_u32_e64 v17, s[4:5], v19, v15, vcc1792; GISEL-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc1793; GISEL-NEXT:    v_sub_i32_e32 v18, vcc, v16, v41794; GISEL-NEXT:    v_subbrev_u32_e32 v19, vcc, 0, v0, vcc1795; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v16, v41796; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v18, v41797; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]1798; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v171799; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc1800; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v191801; GISEL-NEXT:    v_cndmask_b32_e64 v15, -1, v1, s[4:5]1802; GISEL-NEXT:    v_cndmask_b32_e32 v20, -1, v0, vcc1803; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]1804; GISEL-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], s6, v7, v[0:1]1805; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v18, v41806; GISEL-NEXT:    v_mul_lo_u32 v5, v7, v131807; GISEL-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v19, vcc1808; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v201809; GISEL-NEXT:    v_cndmask_b32_e32 v14, v18, v0, vcc1810; GISEL-NEXT:    v_cndmask_b32_e32 v18, v19, v1, vcc1811; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v51812; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1813; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v111814; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1815; GISEL-NEXT:    v_mul_lo_u32 v5, v8, v131816; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v01817; GISEL-NEXT:    v_mul_hi_u32 v1, v7, v131818; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v121819; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1820; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v5, v11821; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1822; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v10, v51823; GISEL-NEXT:    v_mul_hi_u32 v10, v8, v131824; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v01825; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1826; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v5, v11827; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v10, v11828; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v7, v01829; GISEL-NEXT:    v_addc_u32_e32 v11, vcc, v8, v1, vcc1830; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v10, 01831; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v151832; GISEL-NEXT:    v_cndmask_b32_e32 v5, v16, v14, vcc1833; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v6, v11, v[1:2]1834; GISEL-NEXT:    v_xor_b32_e32 v1, v5, v91835; GISEL-NEXT:    v_ashrrev_i32_e32 v13, 31, v31836; GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], s6, v10, v[7:8]1837; GISEL-NEXT:    v_cndmask_b32_e32 v12, v17, v18, vcc1838; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v131839; GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v13, vcc1840; GISEL-NEXT:    v_xor_b32_e32 v14, v2, v131841; GISEL-NEXT:    v_mul_lo_u32 v2, v11, v01842; GISEL-NEXT:    v_mul_lo_u32 v6, v10, v51843; GISEL-NEXT:    v_xor_b32_e32 v15, v3, v131844; GISEL-NEXT:    v_mul_hi_u32 v3, v10, v01845; GISEL-NEXT:    v_mul_hi_u32 v0, v11, v01846; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v61847; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1848; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v31849; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1850; GISEL-NEXT:    v_mul_lo_u32 v3, v11, v51851; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v6, v21852; GISEL-NEXT:    v_mul_hi_u32 v6, v10, v51853; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v3, v01854; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1855; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v61856; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1857; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v61858; GISEL-NEXT:    v_mul_hi_u32 v5, v11, v51859; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v21860; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1861; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v3, v21862; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v5, v21863; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v01864; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v11, v2, vcc1865; GISEL-NEXT:    v_mul_lo_u32 v3, v15, v01866; GISEL-NEXT:    v_mul_lo_u32 v5, v14, v21867; GISEL-NEXT:    v_mul_hi_u32 v6, v14, v01868; GISEL-NEXT:    v_mul_hi_u32 v0, v15, v01869; GISEL-NEXT:    v_xor_b32_e32 v7, v12, v91870; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v51871; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1872; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v61873; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc1874; GISEL-NEXT:    v_mul_lo_u32 v6, v15, v21875; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v5, v31876; GISEL-NEXT:    v_mul_hi_u32 v5, v14, v21877; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v6, v01878; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1879; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v51880; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1881; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v6, v51882; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v0, v31883; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1884; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v5, v01885; GISEL-NEXT:    v_mul_hi_u32 v5, v15, v21886; GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v4, v10, 01887; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v5, v01888; GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v4, v0, v[3:4]1889; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v1, v91890; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v7, v9, vcc1891; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], 0, v10, v[5:6]1892; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v14, v21893; GISEL-NEXT:    v_sub_i32_e64 v5, s[4:5], v15, v71894; GISEL-NEXT:    v_subb_u32_e64 v3, s[4:5], v15, v7, vcc1895; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1896; GISEL-NEXT:    v_sub_i32_e32 v7, vcc, v2, v41897; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc1898; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v41899; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, vcc1900; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v51901; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v41902; GISEL-NEXT:    v_cndmask_b32_e32 v8, -1, v8, vcc1903; GISEL-NEXT:    v_sub_i32_e32 v4, vcc, v7, v41904; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1905; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v31906; GISEL-NEXT:    v_subbrev_u32_e32 v9, vcc, 0, v5, vcc1907; GISEL-NEXT:    v_cndmask_b32_e64 v6, -1, v6, s[4:5]1908; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v81909; GISEL-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc1910; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc1911; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61912; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1913; GISEL-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc1914; GISEL-NEXT:    v_xor_b32_e32 v2, v2, v131915; GISEL-NEXT:    v_xor_b32_e32 v3, v3, v131916; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v131917; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v13, vcc1918; GISEL-NEXT:    s_setpc_b64 s[30:31]1919;1920; CGP-LABEL: v_srem_v2i64_oddk_denom:1921; CGP:       ; %bb.0:1922; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1923; CGP-NEXT:    v_cvt_f32_u32_e32 v4, 0x12d8fb1924; CGP-NEXT:    v_cvt_f32_ubyte0_e32 v5, 01925; CGP-NEXT:    v_mov_b32_e32 v6, 0xffed27051926; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v51927; CGP-NEXT:    v_rcp_iflag_f32_e32 v4, v41928; CGP-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v41929; CGP-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v41930; CGP-NEXT:    v_trunc_f32_e32 v5, v51931; CGP-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v51932; CGP-NEXT:    v_cvt_u32_f32_e32 v7, v41933; CGP-NEXT:    v_cvt_u32_f32_e32 v8, v51934; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v6, v7, 01935; CGP-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v6, v8, v[5:6]1936; CGP-NEXT:    v_mul_hi_u32 v11, v8, v41937; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], -1, v7, v[9:10]1938; CGP-NEXT:    v_mul_lo_u32 v9, v8, v41939; CGP-NEXT:    v_mul_hi_u32 v10, v7, v41940; CGP-NEXT:    v_mul_lo_u32 v4, v7, v121941; CGP-NEXT:    v_mul_lo_u32 v13, v8, v121942; CGP-NEXT:    v_mul_hi_u32 v14, v7, v121943; CGP-NEXT:    v_mul_hi_u32 v12, v8, v121944; CGP-NEXT:    v_add_i32_e32 v4, vcc, v9, v41945; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1946; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v101947; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1948; CGP-NEXT:    v_add_i32_e32 v4, vcc, v15, v41949; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v111950; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1951; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v141952; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1953; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v141954; CGP-NEXT:    v_add_i32_e32 v4, vcc, v13, v41955; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1956; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131957; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v131958; CGP-NEXT:    v_add_i32_e32 v4, vcc, v7, v41959; CGP-NEXT:    v_addc_u32_e32 v16, vcc, v8, v12, vcc1960; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v6, v4, 01961; CGP-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v6, v16, v[13:14]1962; CGP-NEXT:    v_mul_lo_u32 v17, v16, v121963; CGP-NEXT:    v_mul_hi_u32 v18, v4, v121964; CGP-NEXT:    v_mul_hi_u32 v19, v16, v121965; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], -1, v4, v[14:15]1966; CGP-NEXT:    v_mul_lo_u32 v13, v4, v121967; CGP-NEXT:    v_mul_hi_u32 v15, v4, v121968; CGP-NEXT:    v_add_i32_e32 v13, vcc, v17, v131969; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1970; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v181971; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1972; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131973; CGP-NEXT:    v_mul_lo_u32 v14, v16, v121974; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v191975; CGP-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc1976; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v151977; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1978; CGP-NEXT:    v_add_i32_e32 v15, vcc, v17, v151979; CGP-NEXT:    v_mul_hi_u32 v17, v16, v121980; CGP-NEXT:    v_ashrrev_i32_e32 v12, 31, v11981; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v121982; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v1, v12, vcc1983; CGP-NEXT:    v_xor_b32_e32 v18, v0, v121984; CGP-NEXT:    v_add_i32_e32 v0, vcc, v14, v131985; CGP-NEXT:    v_xor_b32_e32 v19, v1, v121986; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc1987; CGP-NEXT:    v_add_i32_e32 v1, vcc, v15, v11988; CGP-NEXT:    v_add_i32_e32 v1, vcc, v17, v11989; CGP-NEXT:    v_add_i32_e32 v0, vcc, v4, v01990; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v16, v1, vcc1991; CGP-NEXT:    v_mul_lo_u32 v13, v19, v01992; CGP-NEXT:    v_mul_lo_u32 v14, v18, v11993; CGP-NEXT:    v_mul_hi_u32 v15, v18, v01994; CGP-NEXT:    v_mul_hi_u32 v0, v19, v01995; CGP-NEXT:    v_mov_b32_e32 v4, 0x12d8fb1996; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v141997; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1998; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v151999; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc2000; CGP-NEXT:    v_mul_lo_u32 v15, v19, v12001; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v132002; CGP-NEXT:    v_mul_hi_u32 v14, v18, v12003; CGP-NEXT:    v_add_i32_e32 v0, vcc, v15, v02004; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc2005; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v142006; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc2007; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v142008; CGP-NEXT:    v_add_i32_e32 v13, vcc, v0, v132009; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc2010; CGP-NEXT:    v_mul_hi_u32 v15, v19, v12011; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v02012; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v4, v13, 02013; CGP-NEXT:    v_add_i32_e32 v15, vcc, v15, v142014; CGP-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], v4, v15, v[1:2]2015; CGP-NEXT:    v_sub_i32_e32 v15, vcc, v18, v02016; CGP-NEXT:    v_sub_i32_e64 v0, s[4:5], v19, v132017; CGP-NEXT:    v_subb_u32_e64 v16, s[4:5], v19, v13, vcc2018; CGP-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc2019; CGP-NEXT:    v_sub_i32_e32 v18, vcc, v15, v42020; CGP-NEXT:    v_subbrev_u32_e32 v19, vcc, 0, v0, vcc2021; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v15, v42022; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v18, v42023; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]2024; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v162025; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2026; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v192027; CGP-NEXT:    v_cndmask_b32_e64 v17, -1, v1, s[4:5]2028; CGP-NEXT:    v_cndmask_b32_e32 v20, -1, v0, vcc2029; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v8, v[5:6]2030; CGP-NEXT:    v_sub_i32_e32 v5, vcc, v18, v42031; CGP-NEXT:    v_mad_u64_u32 v[13:14], s[4:5], -1, v7, v[0:1]2032; CGP-NEXT:    v_subbrev_u32_e32 v21, vcc, 0, v19, vcc2033; CGP-NEXT:    v_mul_lo_u32 v1, v7, v132034; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v202035; CGP-NEXT:    v_cndmask_b32_e32 v0, v18, v5, vcc2036; CGP-NEXT:    v_cndmask_b32_e32 v5, v19, v21, vcc2037; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v172038; CGP-NEXT:    v_cndmask_b32_e32 v14, v15, v0, vcc2039; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v9, v12040; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]2041; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v0, v102042; CGP-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]2043; CGP-NEXT:    v_mul_lo_u32 v9, v8, v132044; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v1, v02045; CGP-NEXT:    v_mul_hi_u32 v1, v7, v132046; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v9, v112047; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]2048; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v9, v12049; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]2050; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v10, v92051; CGP-NEXT:    v_mul_hi_u32 v10, v8, v132052; CGP-NEXT:    v_add_i32_e64 v0, s[4:5], v1, v02053; CGP-NEXT:    v_cndmask_b32_e64 v1, 0, 1, s[4:5]2054; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v9, v12055; CGP-NEXT:    v_add_i32_e64 v1, s[4:5], v10, v12056; CGP-NEXT:    v_add_i32_e64 v9, s[4:5], v7, v02057; CGP-NEXT:    v_addc_u32_e64 v10, s[4:5], v8, v1, s[4:5]2058; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v9, 02059; CGP-NEXT:    v_cndmask_b32_e32 v5, v16, v5, vcc2060; CGP-NEXT:    v_ashrrev_i32_e32 v13, 31, v32061; CGP-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v6, v10, v[1:2]2062; CGP-NEXT:    v_xor_b32_e32 v1, v5, v122063; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v132064; CGP-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], -1, v9, v[7:8]2065; CGP-NEXT:    v_addc_u32_e32 v3, vcc, v3, v13, vcc2066; CGP-NEXT:    v_xor_b32_e32 v7, v2, v132067; CGP-NEXT:    v_mul_lo_u32 v2, v10, v02068; CGP-NEXT:    v_mul_lo_u32 v6, v9, v52069; CGP-NEXT:    v_xor_b32_e32 v8, v3, v132070; CGP-NEXT:    v_mul_hi_u32 v3, v9, v02071; CGP-NEXT:    v_mul_hi_u32 v0, v10, v02072; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v62073; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2074; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v32075; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc2076; CGP-NEXT:    v_mul_lo_u32 v3, v10, v52077; CGP-NEXT:    v_add_i32_e32 v2, vcc, v6, v22078; CGP-NEXT:    v_mul_hi_u32 v6, v9, v52079; CGP-NEXT:    v_add_i32_e32 v0, vcc, v3, v02080; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc2081; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v62082; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2083; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v62084; CGP-NEXT:    v_mul_hi_u32 v5, v10, v52085; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v22086; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc2087; CGP-NEXT:    v_add_i32_e32 v2, vcc, v3, v22088; CGP-NEXT:    v_add_i32_e32 v2, vcc, v5, v22089; CGP-NEXT:    v_add_i32_e32 v3, vcc, v9, v02090; CGP-NEXT:    v_addc_u32_e32 v2, vcc, v10, v2, vcc2091; CGP-NEXT:    v_mul_lo_u32 v5, v8, v32092; CGP-NEXT:    v_mul_lo_u32 v6, v7, v22093; CGP-NEXT:    v_xor_b32_e32 v11, v14, v122094; CGP-NEXT:    v_mul_hi_u32 v9, v7, v32095; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v11, v122096; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v1, v12, vcc2097; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v62098; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2099; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v92100; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc2101; CGP-NEXT:    v_mul_lo_u32 v9, v8, v22102; CGP-NEXT:    v_mul_hi_u32 v3, v8, v32103; CGP-NEXT:    v_add_i32_e32 v5, vcc, v6, v52104; CGP-NEXT:    v_mul_hi_u32 v6, v7, v22105; CGP-NEXT:    v_add_i32_e32 v3, vcc, v9, v32106; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2107; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v62108; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2109; CGP-NEXT:    v_add_i32_e32 v6, vcc, v9, v62110; CGP-NEXT:    v_add_i32_e32 v5, vcc, v3, v52111; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc2112; CGP-NEXT:    v_mul_hi_u32 v9, v8, v22113; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v32114; CGP-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v4, v5, 02115; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v62116; CGP-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v4, v9, v[3:4]2117; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v7, v22118; CGP-NEXT:    v_subb_u32_e64 v3, s[4:5], v8, v5, vcc2119; CGP-NEXT:    v_sub_i32_e64 v5, s[4:5], v8, v52120; CGP-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc2121; CGP-NEXT:    v_sub_i32_e32 v7, vcc, v2, v42122; CGP-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc2123; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v42124; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, vcc2125; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v52126; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v42127; CGP-NEXT:    v_cndmask_b32_e32 v8, -1, v8, vcc2128; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v7, v42129; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]2130; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v32131; CGP-NEXT:    v_subbrev_u32_e32 v9, vcc, 0, v5, vcc2132; CGP-NEXT:    v_cndmask_b32_e64 v6, -1, v6, s[4:5]2133; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v82134; CGP-NEXT:    v_cndmask_b32_e32 v4, v7, v4, vcc2135; CGP-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc2136; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v62137; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc2138; CGP-NEXT:    v_cndmask_b32_e32 v3, v3, v5, vcc2139; CGP-NEXT:    v_xor_b32_e32 v2, v2, v132140; CGP-NEXT:    v_xor_b32_e32 v3, v3, v132141; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v2, v132142; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v3, v13, vcc2143; CGP-NEXT:    s_setpc_b64 s[30:31]2144  %result = srem <2 x i64> %num, <i64 1235195, i64 1235195>2145  ret <2 x i64> %result2146}2147 2148define i64 @v_srem_i64_pow2_shl_denom(i64 %x, i64 %y) {2149; CHECK-LABEL: v_srem_i64_pow2_shl_denom:2150; CHECK:       ; %bb.0:2151; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2152; CHECK-NEXT:    v_mov_b32_e32 v3, v02153; CHECK-NEXT:    v_mov_b32_e32 v4, v12154; CHECK-NEXT:    v_mov_b32_e32 v0, 0x10002155; CHECK-NEXT:    v_mov_b32_e32 v1, 02156; CHECK-NEXT:    v_lshl_b64 v[5:6], v[0:1], v22157; CHECK-NEXT:    v_mov_b32_e32 v0, 02158; CHECK-NEXT:    v_or_b32_e32 v1, v4, v62159; CHECK-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]2160; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr12161; CHECK-NEXT:    s_and_saveexec_b64 s[4:5], vcc2162; CHECK-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]2163; CHECK-NEXT:    s_cbranch_execnz .LBB7_32164; CHECK-NEXT:  ; %bb.1: ; %Flow2165; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]2166; CHECK-NEXT:    s_cbranch_execnz .LBB7_42167; CHECK-NEXT:  .LBB7_2:2168; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]2169; CHECK-NEXT:    s_setpc_b64 s[30:31]2170; CHECK-NEXT:  .LBB7_3:2171; CHECK-NEXT:    v_ashrrev_i32_e32 v1, 31, v62172; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v5, v12173; CHECK-NEXT:    v_addc_u32_e32 v2, vcc, v6, v1, vcc2174; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v12175; CHECK-NEXT:    v_xor_b32_e32 v1, v2, v12176; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, v02177; CHECK-NEXT:    v_cvt_f32_u32_e32 v5, v12178; CHECK-NEXT:    v_sub_i32_e32 v12, vcc, 0, v02179; CHECK-NEXT:    v_subb_u32_e32 v13, vcc, 0, v1, vcc2180; CHECK-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v52181; CHECK-NEXT:    v_rcp_iflag_f32_e32 v2, v22182; CHECK-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v22183; CHECK-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v22184; CHECK-NEXT:    v_trunc_f32_e32 v5, v52185; CHECK-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v52186; CHECK-NEXT:    v_cvt_u32_f32_e32 v2, v22187; CHECK-NEXT:    v_cvt_u32_f32_e32 v11, v52188; CHECK-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v12, v2, 02189; CHECK-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v12, v11, v[6:7]2190; CHECK-NEXT:    v_mul_lo_u32 v6, v11, v52191; CHECK-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v13, v2, v[7:8]2192; CHECK-NEXT:    v_mul_hi_u32 v7, v2, v52193; CHECK-NEXT:    v_mul_hi_u32 v5, v11, v52194; CHECK-NEXT:    v_mul_lo_u32 v8, v2, v92195; CHECK-NEXT:    v_mul_lo_u32 v10, v11, v92196; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v82197; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2198; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v72199; CHECK-NEXT:    v_mul_hi_u32 v7, v2, v92200; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2201; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v8, v62202; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v10, v52203; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2204; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v72205; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc2206; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v72207; CHECK-NEXT:    v_mul_hi_u32 v8, v11, v92208; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v62209; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2210; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v7, v62211; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v8, v62212; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v52213; CHECK-NEXT:    v_addc_u32_e32 v11, vcc, v11, v6, vcc2214; CHECK-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v12, v2, 02215; CHECK-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v12, v11, v[6:7]2216; CHECK-NEXT:    v_ashrrev_i32_e32 v12, 31, v42217; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v122218; CHECK-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v13, v2, v[7:8]2219; CHECK-NEXT:    v_addc_u32_e32 v4, vcc, v4, v12, vcc2220; CHECK-NEXT:    v_xor_b32_e32 v8, v3, v122221; CHECK-NEXT:    v_mul_lo_u32 v3, v11, v52222; CHECK-NEXT:    v_mul_lo_u32 v6, v2, v92223; CHECK-NEXT:    v_xor_b32_e32 v10, v4, v122224; CHECK-NEXT:    v_mul_hi_u32 v4, v2, v52225; CHECK-NEXT:    v_mul_hi_u32 v5, v11, v52226; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v62227; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2228; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v42229; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc2230; CHECK-NEXT:    v_mul_lo_u32 v4, v11, v92231; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v6, v32232; CHECK-NEXT:    v_mul_hi_u32 v6, v2, v92233; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v52234; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc2235; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v62236; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2237; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v62238; CHECK-NEXT:    v_mul_hi_u32 v6, v11, v92239; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v4, v32240; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc2241; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v42242; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v6, v42243; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v32244; CHECK-NEXT:    v_addc_u32_e32 v3, vcc, v11, v4, vcc2245; CHECK-NEXT:    v_mul_lo_u32 v4, v10, v22246; CHECK-NEXT:    v_mul_lo_u32 v5, v8, v32247; CHECK-NEXT:    v_mul_hi_u32 v6, v8, v22248; CHECK-NEXT:    v_mul_hi_u32 v2, v10, v22249; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v52250; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc2251; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v62252; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc2253; CHECK-NEXT:    v_mul_lo_u32 v6, v10, v32254; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v42255; CHECK-NEXT:    v_mul_hi_u32 v5, v8, v32256; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v6, v22257; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2258; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v52259; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc2260; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v52261; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v2, v42262; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc2263; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v22264; CHECK-NEXT:    v_mul_hi_u32 v5, v10, v32265; CHECK-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v0, v9, 02266; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v5, v42267; CHECK-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v0, v6, v[3:4]2268; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v8, v22269; CHECK-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v1, v9, v[4:5]2270; CHECK-NEXT:    v_subb_u32_e64 v3, s[4:5], v10, v6, vcc2271; CHECK-NEXT:    v_sub_i32_e64 v4, s[4:5], v10, v62272; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v3, v12273; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]2274; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v02275; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]2276; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], v3, v12277; CHECK-NEXT:    v_subb_u32_e32 v4, vcc, v4, v1, vcc2278; CHECK-NEXT:    v_cndmask_b32_e64 v5, v5, v6, s[4:5]2279; CHECK-NEXT:    v_sub_i32_e32 v6, vcc, v2, v02280; CHECK-NEXT:    v_subbrev_u32_e64 v7, s[4:5], 0, v4, vcc2281; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v7, v12282; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]2283; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v6, v02284; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, -1, s[4:5]2285; CHECK-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v12286; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v4, v1, vcc2287; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v6, v02288; CHECK-NEXT:    v_cndmask_b32_e64 v8, v8, v9, s[4:5]2289; CHECK-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc2290; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v82291; CHECK-NEXT:    v_cndmask_b32_e32 v0, v6, v0, vcc2292; CHECK-NEXT:    v_cndmask_b32_e32 v1, v7, v1, vcc2293; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v52294; CHECK-NEXT:    v_cndmask_b32_e32 v0, v2, v0, vcc2295; CHECK-NEXT:    v_cndmask_b32_e32 v1, v3, v1, vcc2296; CHECK-NEXT:    v_xor_b32_e32 v0, v0, v122297; CHECK-NEXT:    v_xor_b32_e32 v1, v1, v122298; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v122299; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v12, vcc2300; CHECK-NEXT:    ; implicit-def: $vgpr5_vgpr62301; CHECK-NEXT:    ; implicit-def: $vgpr32302; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]2303; CHECK-NEXT:    s_cbranch_execz .LBB7_22304; CHECK-NEXT:  .LBB7_4:2305; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, v52306; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, 0, v52307; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v02308; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v02309; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v02310; CHECK-NEXT:    v_mul_lo_u32 v1, v1, v02311; CHECK-NEXT:    v_mul_hi_u32 v1, v0, v12312; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v12313; CHECK-NEXT:    v_mul_hi_u32 v0, v3, v02314; CHECK-NEXT:    v_mov_b32_e32 v1, 02315; CHECK-NEXT:    v_mul_lo_u32 v0, v0, v52316; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v3, v02317; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v0, v52318; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v52319; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2320; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v0, v52321; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v52322; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2323; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]2324; CHECK-NEXT:    s_setpc_b64 s[30:31]2325  %shl.y = shl i64 4096, %y2326  %r = srem i64 %x, %shl.y2327  ret i64 %r2328}2329 2330define <2 x i64> @v_srem_v2i64_pow2_shl_denom(<2 x i64> %x, <2 x i64> %y) {2331; GISEL-LABEL: v_srem_v2i64_pow2_shl_denom:2332; GISEL:       ; %bb.0:2333; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2334; GISEL-NEXT:    v_mov_b32_e32 v10, 0x10002335; GISEL-NEXT:    v_mov_b32_e32 v11, 02336; GISEL-NEXT:    v_lshl_b64 v[4:5], v[10:11], v42337; GISEL-NEXT:    v_ashrrev_i32_e32 v7, 31, v52338; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v72339; GISEL-NEXT:    v_addc_u32_e32 v8, vcc, v5, v7, vcc2340; GISEL-NEXT:    v_xor_b32_e32 v5, v4, v72341; GISEL-NEXT:    v_xor_b32_e32 v7, v8, v72342; GISEL-NEXT:    v_cvt_f32_u32_e32 v4, v52343; GISEL-NEXT:    v_cvt_f32_u32_e32 v8, v72344; GISEL-NEXT:    v_sub_i32_e32 v17, vcc, 0, v52345; GISEL-NEXT:    v_subb_u32_e32 v18, vcc, 0, v7, vcc2346; GISEL-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v82347; GISEL-NEXT:    v_rcp_iflag_f32_e32 v4, v42348; GISEL-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v42349; GISEL-NEXT:    v_mul_f32_e32 v8, 0x2f800000, v42350; GISEL-NEXT:    v_trunc_f32_e32 v8, v82351; GISEL-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v82352; GISEL-NEXT:    v_cvt_u32_f32_e32 v4, v42353; GISEL-NEXT:    v_cvt_u32_f32_e32 v16, v82354; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v17, v4, 02355; GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v16, v[9:10]2356; GISEL-NEXT:    v_mul_lo_u32 v9, v16, v82357; GISEL-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v18, v4, v[12:13]2358; GISEL-NEXT:    v_mul_lo_u32 v12, v4, v142359; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v122360; GISEL-NEXT:    v_mul_hi_u32 v12, v4, v82361; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc2362; GISEL-NEXT:    v_mul_hi_u32 v8, v16, v82363; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v122364; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2365; GISEL-NEXT:    v_mul_lo_u32 v12, v16, v142366; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v13, v92367; GISEL-NEXT:    v_mul_hi_u32 v13, v4, v142368; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v12, v82369; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc2370; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v132371; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc2372; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v132373; GISEL-NEXT:    v_mul_hi_u32 v13, v16, v142374; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v92375; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2376; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v12, v92377; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v13, v92378; GISEL-NEXT:    v_add_i32_e32 v19, vcc, v4, v82379; GISEL-NEXT:    v_addc_u32_e32 v16, vcc, v16, v9, vcc2380; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v17, v19, 02381; GISEL-NEXT:    v_ashrrev_i32_e32 v4, 31, v12382; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v42383; GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v16, v[9:10]2384; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v1, v4, vcc2385; GISEL-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v18, v19, v[12:13]2386; GISEL-NEXT:    v_xor_b32_e32 v15, v0, v42387; GISEL-NEXT:    v_mul_lo_u32 v0, v16, v82388; GISEL-NEXT:    v_mul_lo_u32 v9, v19, v142389; GISEL-NEXT:    v_xor_b32_e32 v17, v1, v42390; GISEL-NEXT:    v_mul_hi_u32 v1, v19, v82391; GISEL-NEXT:    v_mul_hi_u32 v8, v16, v82392; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v92393; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2394; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v12395; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc2396; GISEL-NEXT:    v_mul_lo_u32 v1, v16, v142397; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v9, v02398; GISEL-NEXT:    v_mul_hi_u32 v9, v19, v142399; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v82400; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2401; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v92402; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2403; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v92404; GISEL-NEXT:    v_mul_hi_u32 v9, v16, v142405; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v1, v02406; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc2407; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v8, v12408; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v9, v12409; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v19, v02410; GISEL-NEXT:    v_addc_u32_e32 v1, vcc, v16, v1, vcc2411; GISEL-NEXT:    v_mul_lo_u32 v8, v17, v02412; GISEL-NEXT:    v_mul_lo_u32 v9, v15, v12413; GISEL-NEXT:    v_mul_hi_u32 v12, v15, v02414; GISEL-NEXT:    v_mul_hi_u32 v0, v17, v02415; GISEL-NEXT:    v_lshl_b64 v[10:11], v[10:11], v62416; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v92417; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2418; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v122419; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2420; GISEL-NEXT:    v_mul_lo_u32 v12, v17, v12421; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v82422; GISEL-NEXT:    v_mul_hi_u32 v9, v15, v12423; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v12, v02424; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc2425; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v92426; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2427; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v12, v92428; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v0, v82429; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc2430; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v02431; GISEL-NEXT:    v_mul_hi_u32 v9, v17, v12432; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v14, 02433; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v9, v82434; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v5, v12, v[1:2]2435; GISEL-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v7, v14, v[8:9]2436; GISEL-NEXT:    v_sub_i32_e32 v13, vcc, v15, v02437; GISEL-NEXT:    v_subb_u32_e64 v14, s[4:5], v17, v12, vcc2438; GISEL-NEXT:    v_sub_i32_e64 v0, s[4:5], v17, v122439; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v14, v72440; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, -1, s[4:5]2441; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v13, v52442; GISEL-NEXT:    v_subb_u32_e32 v0, vcc, v0, v7, vcc2443; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]2444; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v14, v72445; GISEL-NEXT:    v_sub_i32_e32 v15, vcc, v13, v52446; GISEL-NEXT:    v_cndmask_b32_e64 v12, v1, v6, s[4:5]2447; GISEL-NEXT:    v_subbrev_u32_e64 v16, s[4:5], 0, v0, vcc2448; GISEL-NEXT:    v_ashrrev_i32_e32 v1, 31, v112449; GISEL-NEXT:    v_add_i32_e64 v6, s[4:5], v10, v12450; GISEL-NEXT:    v_addc_u32_e64 v8, s[4:5], v11, v1, s[4:5]2451; GISEL-NEXT:    v_xor_b32_e32 v6, v6, v12452; GISEL-NEXT:    v_xor_b32_e32 v8, v8, v12453; GISEL-NEXT:    v_cvt_f32_u32_e32 v1, v62454; GISEL-NEXT:    v_cvt_f32_u32_e32 v9, v82455; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v16, v72456; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]2457; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v15, v52458; GISEL-NEXT:    v_mac_f32_e32 v1, 0x4f800000, v92459; GISEL-NEXT:    v_rcp_iflag_f32_e32 v1, v12460; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]2461; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v16, v72462; GISEL-NEXT:    v_subb_u32_e32 v7, vcc, v0, v7, vcc2463; GISEL-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v12464; GISEL-NEXT:    v_mul_f32_e32 v1, 0x2f800000, v02465; GISEL-NEXT:    v_trunc_f32_e32 v1, v12466; GISEL-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v12467; GISEL-NEXT:    v_cvt_u32_f32_e32 v17, v02468; GISEL-NEXT:    v_sub_i32_e32 v19, vcc, 0, v62469; GISEL-NEXT:    v_cndmask_b32_e64 v11, v10, v11, s[4:5]2470; GISEL-NEXT:    v_cvt_u32_f32_e32 v18, v12471; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v19, v17, 02472; GISEL-NEXT:    v_subb_u32_e32 v20, vcc, 0, v8, vcc2473; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v19, v18, v[1:2]2474; GISEL-NEXT:    v_mul_lo_u32 v21, v18, v02475; GISEL-NEXT:    v_mul_hi_u32 v22, v17, v02476; GISEL-NEXT:    v_mul_hi_u32 v23, v18, v02477; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v15, v52478; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v7, vcc2479; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v112480; GISEL-NEXT:    v_cndmask_b32_e32 v7, v15, v0, vcc2481; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v20, v17, v[9:10]2482; GISEL-NEXT:    v_cndmask_b32_e32 v5, v16, v5, vcc2483; GISEL-NEXT:    v_mul_lo_u32 v1, v17, v02484; GISEL-NEXT:    v_mul_lo_u32 v10, v18, v02485; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v21, v12486; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2487; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v1, v222488; GISEL-NEXT:    v_cndmask_b32_e64 v1, 0, 1, vcc2489; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v9, v12490; GISEL-NEXT:    v_mul_hi_u32 v9, v17, v02491; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v232492; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2493; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v92494; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2495; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v102496; GISEL-NEXT:    v_mul_hi_u32 v0, v18, v02497; GISEL-NEXT:    v_add_i32_e32 v1, vcc, v9, v12498; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2499; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v92500; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v92501; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v17, v12502; GISEL-NEXT:    v_addc_u32_e32 v16, vcc, v18, v0, vcc2503; GISEL-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v19, v15, 02504; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v122505; GISEL-NEXT:    v_cndmask_b32_e32 v7, v13, v7, vcc2506; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v19, v16, v[1:2]2507; GISEL-NEXT:    v_xor_b32_e32 v1, v7, v42508; GISEL-NEXT:    v_ashrrev_i32_e32 v7, 31, v32509; GISEL-NEXT:    v_mad_u64_u32 v[11:12], s[4:5], v20, v15, v[9:10]2510; GISEL-NEXT:    v_cndmask_b32_e32 v5, v14, v5, vcc2511; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v72512; GISEL-NEXT:    v_addc_u32_e32 v3, vcc, v3, v7, vcc2513; GISEL-NEXT:    v_xor_b32_e32 v12, v2, v72514; GISEL-NEXT:    v_mul_lo_u32 v2, v16, v02515; GISEL-NEXT:    v_mul_lo_u32 v9, v15, v112516; GISEL-NEXT:    v_xor_b32_e32 v13, v3, v72517; GISEL-NEXT:    v_mul_hi_u32 v3, v15, v02518; GISEL-NEXT:    v_mul_hi_u32 v0, v16, v02519; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v92520; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2521; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v32522; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc2523; GISEL-NEXT:    v_mul_lo_u32 v3, v16, v112524; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v9, v22525; GISEL-NEXT:    v_mul_hi_u32 v9, v15, v112526; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v3, v02527; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc2528; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v92529; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2530; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v92531; GISEL-NEXT:    v_mul_hi_u32 v9, v16, v112532; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v22533; GISEL-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc2534; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v3, v22535; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v9, v22536; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v15, v02537; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v16, v2, vcc2538; GISEL-NEXT:    v_mul_lo_u32 v3, v13, v02539; GISEL-NEXT:    v_mul_lo_u32 v9, v12, v22540; GISEL-NEXT:    v_mul_hi_u32 v10, v12, v02541; GISEL-NEXT:    v_mul_hi_u32 v0, v13, v02542; GISEL-NEXT:    v_xor_b32_e32 v5, v5, v42543; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v92544; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2545; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v102546; GISEL-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc2547; GISEL-NEXT:    v_mul_lo_u32 v10, v13, v22548; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v9, v32549; GISEL-NEXT:    v_mul_hi_u32 v9, v12, v22550; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v10, v02551; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2552; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v0, v92553; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2554; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v92555; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v0, v32556; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc2557; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v9, v02558; GISEL-NEXT:    v_mul_hi_u32 v9, v13, v22559; GISEL-NEXT:    v_mad_u64_u32 v[2:3], s[4:5], v6, v11, 02560; GISEL-NEXT:    v_add_i32_e32 v0, vcc, v9, v02561; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v6, v0, v[3:4]2562; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v1, v42563; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v5, v4, vcc2564; GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v8, v11, v[9:10]2565; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v12, v22566; GISEL-NEXT:    v_subb_u32_e64 v4, s[4:5], v13, v3, vcc2567; GISEL-NEXT:    v_sub_i32_e64 v3, s[4:5], v13, v32568; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v82569; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]2570; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v62571; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, -1, s[4:5]2572; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v4, v82573; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v8, vcc2574; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, v9, s[4:5]2575; GISEL-NEXT:    v_sub_i32_e32 v9, vcc, v2, v62576; GISEL-NEXT:    v_subbrev_u32_e64 v10, s[4:5], 0, v3, vcc2577; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v10, v82578; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]2579; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v62580; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v8, vcc2581; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, -1, s[4:5]2582; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v10, v82583; GISEL-NEXT:    v_sub_i32_e32 v6, vcc, v9, v62584; GISEL-NEXT:    v_cndmask_b32_e64 v11, v11, v12, s[4:5]2585; GISEL-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc2586; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v112587; GISEL-NEXT:    v_cndmask_b32_e32 v6, v9, v6, vcc2588; GISEL-NEXT:    v_cndmask_b32_e32 v3, v10, v3, vcc2589; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v52590; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc2591; GISEL-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc2592; GISEL-NEXT:    v_xor_b32_e32 v2, v2, v72593; GISEL-NEXT:    v_xor_b32_e32 v3, v3, v72594; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v72595; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v7, vcc2596; GISEL-NEXT:    s_setpc_b64 s[30:31]2597;2598; CGP-LABEL: v_srem_v2i64_pow2_shl_denom:2599; CGP:       ; %bb.0:2600; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2601; CGP-NEXT:    v_mov_b32_e32 v5, v22602; CGP-NEXT:    v_mov_b32_e32 v7, v32603; CGP-NEXT:    v_mov_b32_e32 v2, 0x10002604; CGP-NEXT:    v_mov_b32_e32 v3, 02605; CGP-NEXT:    v_lshl_b64 v[11:12], v[2:3], v42606; CGP-NEXT:    v_mov_b32_e32 v9, v12607; CGP-NEXT:    v_mov_b32_e32 v8, v02608; CGP-NEXT:    v_or_b32_e32 v1, v9, v122609; CGP-NEXT:    v_mov_b32_e32 v0, 02610; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]2611; CGP-NEXT:    ; implicit-def: $vgpr0_vgpr12612; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc2613; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]2614; CGP-NEXT:    s_cbranch_execz .LBB8_22615; CGP-NEXT:  ; %bb.1:2616; CGP-NEXT:    v_ashrrev_i32_e32 v1, 31, v122617; CGP-NEXT:    v_add_i32_e32 v0, vcc, v11, v12618; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v12, v1, vcc2619; CGP-NEXT:    v_xor_b32_e32 v0, v0, v12620; CGP-NEXT:    v_xor_b32_e32 v1, v4, v12621; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v02622; CGP-NEXT:    v_cvt_f32_u32_e32 v10, v12623; CGP-NEXT:    v_sub_i32_e32 v17, vcc, 0, v02624; CGP-NEXT:    v_subb_u32_e32 v18, vcc, 0, v1, vcc2625; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v102626; CGP-NEXT:    v_rcp_iflag_f32_e32 v4, v42627; CGP-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v42628; CGP-NEXT:    v_mul_f32_e32 v10, 0x2f800000, v42629; CGP-NEXT:    v_trunc_f32_e32 v10, v102630; CGP-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v102631; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v42632; CGP-NEXT:    v_cvt_u32_f32_e32 v16, v102633; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v17, v4, 02634; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v16, v[11:12]2635; CGP-NEXT:    v_mul_lo_u32 v11, v16, v102636; CGP-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v18, v4, v[12:13]2637; CGP-NEXT:    v_mul_hi_u32 v12, v4, v102638; CGP-NEXT:    v_mul_hi_u32 v10, v16, v102639; CGP-NEXT:    v_mul_lo_u32 v13, v4, v142640; CGP-NEXT:    v_mul_lo_u32 v15, v16, v142641; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v132642; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc2643; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v122644; CGP-NEXT:    v_mul_hi_u32 v12, v4, v142645; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2646; CGP-NEXT:    v_add_i32_e32 v11, vcc, v13, v112647; CGP-NEXT:    v_add_i32_e32 v10, vcc, v15, v102648; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc2649; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v122650; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc2651; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v122652; CGP-NEXT:    v_mul_hi_u32 v13, v16, v142653; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v112654; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2655; CGP-NEXT:    v_add_i32_e32 v11, vcc, v12, v112656; CGP-NEXT:    v_add_i32_e32 v11, vcc, v13, v112657; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v102658; CGP-NEXT:    v_addc_u32_e32 v16, vcc, v16, v11, vcc2659; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v17, v4, 02660; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v17, v16, v[11:12]2661; CGP-NEXT:    v_ashrrev_i32_e32 v17, 31, v92662; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v172663; CGP-NEXT:    v_mad_u64_u32 v[14:15], s[4:5], v18, v4, v[12:13]2664; CGP-NEXT:    v_addc_u32_e32 v9, vcc, v9, v17, vcc2665; CGP-NEXT:    v_xor_b32_e32 v15, v8, v172666; CGP-NEXT:    v_mul_lo_u32 v8, v16, v102667; CGP-NEXT:    v_mul_lo_u32 v11, v4, v142668; CGP-NEXT:    v_xor_b32_e32 v18, v9, v172669; CGP-NEXT:    v_mul_hi_u32 v9, v4, v102670; CGP-NEXT:    v_mul_hi_u32 v10, v16, v102671; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v112672; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2673; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v92674; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2675; CGP-NEXT:    v_mul_lo_u32 v9, v16, v142676; CGP-NEXT:    v_add_i32_e32 v8, vcc, v11, v82677; CGP-NEXT:    v_mul_hi_u32 v11, v4, v142678; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v102679; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2680; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v112681; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2682; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v112683; CGP-NEXT:    v_mul_hi_u32 v11, v16, v142684; CGP-NEXT:    v_add_i32_e32 v8, vcc, v9, v82685; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2686; CGP-NEXT:    v_add_i32_e32 v9, vcc, v10, v92687; CGP-NEXT:    v_add_i32_e32 v9, vcc, v11, v92688; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v82689; CGP-NEXT:    v_addc_u32_e32 v8, vcc, v16, v9, vcc2690; CGP-NEXT:    v_mul_lo_u32 v9, v18, v42691; CGP-NEXT:    v_mul_lo_u32 v10, v15, v82692; CGP-NEXT:    v_mul_hi_u32 v11, v15, v42693; CGP-NEXT:    v_mul_hi_u32 v4, v18, v42694; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v102695; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2696; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v112697; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2698; CGP-NEXT:    v_mul_lo_u32 v11, v18, v82699; CGP-NEXT:    v_add_i32_e32 v9, vcc, v10, v92700; CGP-NEXT:    v_mul_hi_u32 v10, v15, v82701; CGP-NEXT:    v_add_i32_e32 v4, vcc, v11, v42702; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2703; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v102704; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2705; CGP-NEXT:    v_add_i32_e32 v10, vcc, v11, v102706; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v92707; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2708; CGP-NEXT:    v_mul_hi_u32 v11, v18, v82709; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v92710; CGP-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v0, v4, 02711; CGP-NEXT:    v_add_i32_e32 v12, vcc, v11, v102712; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v0, v12, v[9:10]2713; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v1, v4, v[10:11]2714; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v15, v82715; CGP-NEXT:    v_subb_u32_e64 v8, s[4:5], v18, v12, vcc2716; CGP-NEXT:    v_sub_i32_e64 v9, s[4:5], v18, v122717; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v8, v12718; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]2719; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v02720; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]2721; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v8, v12722; CGP-NEXT:    v_subb_u32_e32 v9, vcc, v9, v1, vcc2723; CGP-NEXT:    v_cndmask_b32_e64 v10, v10, v11, s[4:5]2724; CGP-NEXT:    v_sub_i32_e32 v11, vcc, v4, v02725; CGP-NEXT:    v_subbrev_u32_e64 v12, s[4:5], 0, v9, vcc2726; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v12, v12727; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, -1, s[4:5]2728; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v11, v02729; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, -1, s[4:5]2730; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v12, v12731; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v9, v1, vcc2732; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v11, v02733; CGP-NEXT:    v_cndmask_b32_e64 v13, v13, v14, s[4:5]2734; CGP-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc2735; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v132736; CGP-NEXT:    v_cndmask_b32_e32 v0, v11, v0, vcc2737; CGP-NEXT:    v_cndmask_b32_e32 v1, v12, v1, vcc2738; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v102739; CGP-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc2740; CGP-NEXT:    v_cndmask_b32_e32 v1, v8, v1, vcc2741; CGP-NEXT:    v_xor_b32_e32 v0, v0, v172742; CGP-NEXT:    v_xor_b32_e32 v1, v1, v172743; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v0, v172744; CGP-NEXT:    v_subb_u32_e32 v1, vcc, v1, v17, vcc2745; CGP-NEXT:    ; implicit-def: $vgpr11_vgpr122746; CGP-NEXT:    ; implicit-def: $vgpr82747; CGP-NEXT:  .LBB8_2: ; %Flow12748; CGP-NEXT:    s_or_saveexec_b64 s[4:5], s[6:7]2749; CGP-NEXT:    v_lshl_b64 v[9:10], v[2:3], v62750; CGP-NEXT:    s_xor_b64 exec, exec, s[4:5]2751; CGP-NEXT:    s_cbranch_execz .LBB8_42752; CGP-NEXT:  ; %bb.3:2753; CGP-NEXT:    v_cvt_f32_u32_e32 v0, v112754; CGP-NEXT:    v_sub_i32_e32 v1, vcc, 0, v112755; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v02756; CGP-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v02757; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v02758; CGP-NEXT:    v_mul_lo_u32 v1, v1, v02759; CGP-NEXT:    v_mul_hi_u32 v1, v0, v12760; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v12761; CGP-NEXT:    v_mul_hi_u32 v0, v8, v02762; CGP-NEXT:    v_mov_b32_e32 v1, 02763; CGP-NEXT:    v_mul_lo_u32 v0, v0, v112764; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v8, v02765; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v112766; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v112767; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2768; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v112769; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v112770; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2771; CGP-NEXT:  .LBB8_4:2772; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]2773; CGP-NEXT:    v_or_b32_e32 v3, v7, v102774; CGP-NEXT:    v_mov_b32_e32 v2, 02775; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]2776; CGP-NEXT:    ; implicit-def: $vgpr2_vgpr32777; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc2778; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]2779; CGP-NEXT:    s_cbranch_execnz .LBB8_72780; CGP-NEXT:  ; %bb.5: ; %Flow2781; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]2782; CGP-NEXT:    s_cbranch_execnz .LBB8_82783; CGP-NEXT:  .LBB8_6:2784; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]2785; CGP-NEXT:    s_setpc_b64 s[30:31]2786; CGP-NEXT:  .LBB8_7:2787; CGP-NEXT:    v_ashrrev_i32_e32 v3, 31, v102788; CGP-NEXT:    v_add_i32_e32 v2, vcc, v9, v32789; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v10, v3, vcc2790; CGP-NEXT:    v_xor_b32_e32 v2, v2, v32791; CGP-NEXT:    v_xor_b32_e32 v3, v4, v32792; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v22793; CGP-NEXT:    v_cvt_f32_u32_e32 v6, v32794; CGP-NEXT:    v_sub_i32_e32 v14, vcc, 0, v22795; CGP-NEXT:    v_subb_u32_e32 v15, vcc, 0, v3, vcc2796; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v62797; CGP-NEXT:    v_rcp_iflag_f32_e32 v4, v42798; CGP-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v42799; CGP-NEXT:    v_mul_f32_e32 v6, 0x2f800000, v42800; CGP-NEXT:    v_trunc_f32_e32 v6, v62801; CGP-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v62802; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v42803; CGP-NEXT:    v_cvt_u32_f32_e32 v6, v62804; CGP-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v14, v4, 02805; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v14, v6, v[9:10]2806; CGP-NEXT:    v_mul_lo_u32 v9, v6, v82807; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v15, v4, v[10:11]2808; CGP-NEXT:    v_mul_hi_u32 v10, v4, v82809; CGP-NEXT:    v_mul_hi_u32 v8, v6, v82810; CGP-NEXT:    v_mul_lo_u32 v11, v4, v122811; CGP-NEXT:    v_mul_lo_u32 v13, v6, v122812; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v112813; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2814; CGP-NEXT:    v_add_i32_e32 v9, vcc, v9, v102815; CGP-NEXT:    v_mul_hi_u32 v10, v4, v122816; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2817; CGP-NEXT:    v_add_i32_e32 v9, vcc, v11, v92818; CGP-NEXT:    v_add_i32_e32 v8, vcc, v13, v82819; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc2820; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v102821; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc2822; CGP-NEXT:    v_add_i32_e32 v10, vcc, v11, v102823; CGP-NEXT:    v_mul_hi_u32 v11, v6, v122824; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v92825; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2826; CGP-NEXT:    v_add_i32_e32 v9, vcc, v10, v92827; CGP-NEXT:    v_add_i32_e32 v9, vcc, v11, v92828; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v82829; CGP-NEXT:    v_addc_u32_e32 v6, vcc, v6, v9, vcc2830; CGP-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v14, v4, 02831; CGP-NEXT:    v_mad_u64_u32 v[10:11], s[4:5], v14, v6, v[9:10]2832; CGP-NEXT:    v_ashrrev_i32_e32 v14, 31, v72833; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v142834; CGP-NEXT:    v_mad_u64_u32 v[12:13], s[4:5], v15, v4, v[10:11]2835; CGP-NEXT:    v_addc_u32_e32 v7, vcc, v7, v14, vcc2836; CGP-NEXT:    v_xor_b32_e32 v10, v5, v142837; CGP-NEXT:    v_mul_lo_u32 v5, v6, v82838; CGP-NEXT:    v_mul_lo_u32 v9, v4, v122839; CGP-NEXT:    v_xor_b32_e32 v11, v7, v142840; CGP-NEXT:    v_mul_hi_u32 v7, v4, v82841; CGP-NEXT:    v_mul_hi_u32 v8, v6, v82842; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v92843; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2844; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v72845; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc2846; CGP-NEXT:    v_mul_lo_u32 v7, v6, v122847; CGP-NEXT:    v_add_i32_e32 v5, vcc, v9, v52848; CGP-NEXT:    v_mul_hi_u32 v9, v4, v122849; CGP-NEXT:    v_add_i32_e32 v7, vcc, v7, v82850; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2851; CGP-NEXT:    v_add_i32_e32 v7, vcc, v7, v92852; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2853; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v92854; CGP-NEXT:    v_mul_hi_u32 v9, v6, v122855; CGP-NEXT:    v_add_i32_e32 v5, vcc, v7, v52856; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc2857; CGP-NEXT:    v_add_i32_e32 v7, vcc, v8, v72858; CGP-NEXT:    v_add_i32_e32 v7, vcc, v9, v72859; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v52860; CGP-NEXT:    v_addc_u32_e32 v5, vcc, v6, v7, vcc2861; CGP-NEXT:    v_mul_lo_u32 v6, v11, v42862; CGP-NEXT:    v_mul_lo_u32 v7, v10, v52863; CGP-NEXT:    v_mul_hi_u32 v8, v10, v42864; CGP-NEXT:    v_mul_hi_u32 v4, v11, v42865; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v72866; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc2867; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v82868; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc2869; CGP-NEXT:    v_mul_lo_u32 v8, v11, v52870; CGP-NEXT:    v_add_i32_e32 v6, vcc, v7, v62871; CGP-NEXT:    v_mul_hi_u32 v7, v10, v52872; CGP-NEXT:    v_add_i32_e32 v4, vcc, v8, v42873; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc2874; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v72875; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc2876; CGP-NEXT:    v_add_i32_e32 v7, vcc, v8, v72877; CGP-NEXT:    v_add_i32_e32 v12, vcc, v4, v62878; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc2879; CGP-NEXT:    v_add_i32_e32 v6, vcc, v7, v42880; CGP-NEXT:    v_mul_hi_u32 v7, v11, v52881; CGP-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v2, v12, 02882; CGP-NEXT:    v_add_i32_e32 v8, vcc, v7, v62883; CGP-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v2, v8, v[5:6]2884; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v10, v42885; CGP-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v3, v12, v[6:7]2886; CGP-NEXT:    v_subb_u32_e64 v5, s[4:5], v11, v8, vcc2887; CGP-NEXT:    v_sub_i32_e64 v6, s[4:5], v11, v82888; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v5, v32889; CGP-NEXT:    v_cndmask_b32_e64 v7, 0, -1, s[4:5]2890; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v22891; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]2892; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v32893; CGP-NEXT:    v_subb_u32_e32 v6, vcc, v6, v3, vcc2894; CGP-NEXT:    v_cndmask_b32_e64 v7, v7, v8, s[4:5]2895; CGP-NEXT:    v_sub_i32_e32 v8, vcc, v4, v22896; CGP-NEXT:    v_subbrev_u32_e64 v9, s[4:5], 0, v6, vcc2897; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v32898; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]2899; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v8, v22900; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, -1, s[4:5]2901; CGP-NEXT:    v_cmp_eq_u32_e64 s[4:5], v9, v32902; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v6, v3, vcc2903; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v8, v22904; CGP-NEXT:    v_cndmask_b32_e64 v10, v10, v11, s[4:5]2905; CGP-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc2906; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v102907; CGP-NEXT:    v_cndmask_b32_e32 v2, v8, v2, vcc2908; CGP-NEXT:    v_cndmask_b32_e32 v3, v9, v3, vcc2909; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v72910; CGP-NEXT:    v_cndmask_b32_e32 v2, v4, v2, vcc2911; CGP-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc2912; CGP-NEXT:    v_xor_b32_e32 v2, v2, v142913; CGP-NEXT:    v_xor_b32_e32 v3, v3, v142914; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v2, v142915; CGP-NEXT:    v_subb_u32_e32 v3, vcc, v3, v14, vcc2916; CGP-NEXT:    ; implicit-def: $vgpr9_vgpr102917; CGP-NEXT:    ; implicit-def: $vgpr52918; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]2919; CGP-NEXT:    s_cbranch_execz .LBB8_62920; CGP-NEXT:  .LBB8_8:2921; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v92922; CGP-NEXT:    v_sub_i32_e32 v3, vcc, 0, v92923; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v22924; CGP-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v22925; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v22926; CGP-NEXT:    v_mul_lo_u32 v3, v3, v22927; CGP-NEXT:    v_mul_hi_u32 v3, v2, v32928; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v32929; CGP-NEXT:    v_mul_hi_u32 v2, v5, v22930; CGP-NEXT:    v_mov_b32_e32 v3, 02931; CGP-NEXT:    v_mul_lo_u32 v2, v2, v92932; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v5, v22933; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v92934; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v92935; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc2936; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v92937; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v92938; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc2939; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]2940; CGP-NEXT:    s_setpc_b64 s[30:31]2941  %shl.y = shl <2 x i64> <i64 4096, i64 4096>, %y2942  %r = srem <2 x i64> %x, %shl.y2943  ret <2 x i64> %r2944}2945 2946define i64 @v_srem_i64_24bit(i64 %num, i64 %den) {2947; GISEL-LABEL: v_srem_i64_24bit:2948; GISEL:       ; %bb.0:2949; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2950; GISEL-NEXT:    v_and_b32_e32 v1, 0xffffff, v22951; GISEL-NEXT:    v_cvt_f32_u32_e32 v2, v12952; GISEL-NEXT:    v_sub_i32_e32 v3, vcc, 0, v12953; GISEL-NEXT:    v_and_b32_e32 v0, 0xffffff, v02954; GISEL-NEXT:    v_rcp_iflag_f32_e32 v2, v22955; GISEL-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v22956; GISEL-NEXT:    v_cvt_u32_f32_e32 v2, v22957; GISEL-NEXT:    v_mul_lo_u32 v3, v3, v22958; GISEL-NEXT:    v_mul_hi_u32 v3, v2, v32959; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v32960; GISEL-NEXT:    v_mul_hi_u32 v2, v0, v22961; GISEL-NEXT:    v_mul_lo_u32 v2, v2, v12962; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v0, v22963; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v0, v12964; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v12965; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2966; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v0, v12967; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v12968; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc2969; GISEL-NEXT:    v_mov_b32_e32 v1, 02970; GISEL-NEXT:    s_setpc_b64 s[30:31]2971;2972; CGP-LABEL: v_srem_i64_24bit:2973; CGP:       ; %bb.0:2974; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2975; CGP-NEXT:    v_and_b32_e32 v3, 0xffffff, v22976; CGP-NEXT:    v_cvt_f32_u32_e32 v1, v32977; CGP-NEXT:    v_rcp_f32_e32 v1, v12978; CGP-NEXT:    v_mul_f32_e32 v1, 0x4f7ffffe, v12979; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v12980; CGP-NEXT:    v_sub_i32_e32 v1, vcc, 0, v32981; CGP-NEXT:    v_mul_lo_u32 v5, v1, v42982; CGP-NEXT:    v_mad_u64_u32 v[1:2], s[4:5], v4, v5, 02983; CGP-NEXT:    v_and_b32_e32 v5, 0xffffff, v02984; CGP-NEXT:    v_add_i32_e32 v2, vcc, v4, v22985; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v2, 02986; CGP-NEXT:    v_mul_lo_u32 v0, v1, v32987; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v5, v02988; CGP-NEXT:    v_sub_i32_e32 v1, vcc, v0, v32989; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v32990; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc2991; CGP-NEXT:    v_sub_i32_e32 v1, vcc, v0, v32992; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v32993; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc2994; CGP-NEXT:    v_ashrrev_i32_e32 v1, 31, v02995; CGP-NEXT:    s_setpc_b64 s[30:31]2996  %num.mask = and i64 %num, 167772152997  %den.mask = and i64 %den, 167772152998  %result = srem i64 %num.mask, %den.mask2999  ret i64 %result3000}3001 3002define <2 x i64> @v_srem_v2i64_24bit(<2 x i64> %num, <2 x i64> %den) {3003; GISEL-LABEL: v_srem_v2i64_24bit:3004; GISEL:       ; %bb.0:3005; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3006; GISEL-NEXT:    v_and_b32_e32 v1, 0xffffff, v43007; GISEL-NEXT:    v_cvt_f32_u32_e32 v3, v13008; GISEL-NEXT:    v_cvt_f32_ubyte0_e32 v9, 03009; GISEL-NEXT:    v_sub_i32_e32 v12, vcc, 0, v13010; GISEL-NEXT:    v_mac_f32_e32 v3, 0x4f800000, v93011; GISEL-NEXT:    v_rcp_iflag_f32_e32 v3, v33012; GISEL-NEXT:    v_subb_u32_e64 v13, s[4:5], 0, 0, vcc3013; GISEL-NEXT:    v_and_b32_e32 v0, 0xffffff, v03014; GISEL-NEXT:    v_mul_f32_e32 v3, 0x5f7ffffc, v33015; GISEL-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v33016; GISEL-NEXT:    v_trunc_f32_e32 v4, v43017; GISEL-NEXT:    v_mac_f32_e32 v3, 0xcf800000, v43018; GISEL-NEXT:    v_cvt_u32_f32_e32 v11, v33019; GISEL-NEXT:    v_cvt_u32_f32_e32 v10, v43020; GISEL-NEXT:    v_and_b32_e32 v2, 0xffffff, v23021; GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 03022; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v12, v10, v[4:5]3023; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v13, v11, v[7:8]3024; GISEL-NEXT:    v_mul_lo_u32 v5, v10, v33025; GISEL-NEXT:    v_mul_hi_u32 v7, v11, v33026; GISEL-NEXT:    v_mul_lo_u32 v8, v11, v43027; GISEL-NEXT:    v_mul_hi_u32 v3, v10, v33028; GISEL-NEXT:    v_mul_lo_u32 v14, v10, v43029; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v83030; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc3031; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v73032; GISEL-NEXT:    v_mul_hi_u32 v7, v11, v43033; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3034; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v8, v53035; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v14, v33036; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc3037; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v73038; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc3039; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v8, v73040; GISEL-NEXT:    v_mul_hi_u32 v4, v10, v43041; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v53042; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3043; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v7, v53044; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v53045; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v33046; GISEL-NEXT:    v_addc_u32_e32 v10, vcc, v10, v4, vcc3047; GISEL-NEXT:    v_mad_u64_u32 v[3:4], s[4:5], v12, v11, 03048; GISEL-NEXT:    v_mad_u64_u32 v[7:8], s[4:5], v12, v10, v[4:5]3049; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v13, v11, v[7:8]3050; GISEL-NEXT:    v_mul_lo_u32 v5, v10, v33051; GISEL-NEXT:    v_mul_hi_u32 v8, v11, v33052; GISEL-NEXT:    v_mul_lo_u32 v7, v11, v43053; GISEL-NEXT:    v_mul_hi_u32 v3, v10, v33054; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v73055; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc3056; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v83057; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3058; GISEL-NEXT:    v_mul_lo_u32 v8, v10, v43059; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v7, v53060; GISEL-NEXT:    v_mul_hi_u32 v7, v11, v43061; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v8, v33062; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc3063; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v73064; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc3065; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v8, v73066; GISEL-NEXT:    v_mul_hi_u32 v4, v10, v43067; GISEL-NEXT:    v_add_i32_e32 v3, vcc, v3, v53068; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3069; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v7, v53070; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v53071; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v11, v33072; GISEL-NEXT:    v_addc_u32_e32 v4, vcc, v10, v4, vcc3073; GISEL-NEXT:    v_mul_lo_u32 v7, 0, v53074; GISEL-NEXT:    v_mul_lo_u32 v8, v0, v43075; GISEL-NEXT:    v_and_b32_e32 v3, 0xffffff, v63076; GISEL-NEXT:    v_mul_hi_u32 v6, v0, v53077; GISEL-NEXT:    v_mul_hi_u32 v5, 0, v53078; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v83079; GISEL-NEXT:    v_mul_lo_u32 v8, 0, v43080; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v7, v63081; GISEL-NEXT:    v_mul_hi_u32 v7, v0, v43082; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc3083; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v8, v53084; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v73085; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v5, v63086; GISEL-NEXT:    v_cvt_f32_u32_e32 v11, v33087; GISEL-NEXT:    v_mul_hi_u32 v8, 0, v43088; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v1, v10, 03089; GISEL-NEXT:    v_mac_f32_e32 v11, 0x4f800000, v93090; GISEL-NEXT:    v_sub_i32_e32 v13, vcc, 0, v33091; GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v1, v8, v[5:6]3092; GISEL-NEXT:    v_rcp_iflag_f32_e32 v5, v113093; GISEL-NEXT:    v_subb_u32_e64 v14, s[4:5], 0, 0, vcc3094; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], 0, v10, v[6:7]3095; GISEL-NEXT:    v_mul_f32_e32 v5, 0x5f7ffffc, v53096; GISEL-NEXT:    v_mul_f32_e32 v6, 0x2f800000, v53097; GISEL-NEXT:    v_trunc_f32_e32 v6, v63098; GISEL-NEXT:    v_mac_f32_e32 v5, 0xcf800000, v63099; GISEL-NEXT:    v_cvt_u32_f32_e32 v11, v53100; GISEL-NEXT:    v_cvt_u32_f32_e32 v12, v63101; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v0, v43102; GISEL-NEXT:    v_mad_u64_u32 v[5:6], s[4:5], v13, v11, 03103; GISEL-NEXT:    v_subb_u32_e64 v15, s[4:5], 0, v8, vcc3104; GISEL-NEXT:    v_mad_u64_u32 v[9:10], s[4:5], v13, v12, v[6:7]3105; GISEL-NEXT:    v_sub_i32_e64 v8, s[4:5], 0, v83106; GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v14, v11, v[9:10]3107; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v0, v13108; GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, -1, s[4:5]3109; GISEL-NEXT:    v_mul_lo_u32 v7, v12, v53110; GISEL-NEXT:    v_mul_lo_u32 v9, v11, v63111; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v153112; GISEL-NEXT:    v_cndmask_b32_e64 v10, -1, v4, s[4:5]3113; GISEL-NEXT:    v_mul_hi_u32 v4, v11, v53114; GISEL-NEXT:    v_add_i32_e64 v7, s[4:5], v7, v93115; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]3116; GISEL-NEXT:    v_add_i32_e64 v4, s[4:5], v7, v43117; GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]3118; GISEL-NEXT:    v_mul_lo_u32 v7, v12, v63119; GISEL-NEXT:    v_mul_hi_u32 v5, v12, v53120; GISEL-NEXT:    v_add_i32_e64 v4, s[4:5], v9, v43121; GISEL-NEXT:    v_mul_hi_u32 v9, v11, v63122; GISEL-NEXT:    v_add_i32_e64 v5, s[4:5], v7, v53123; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, s[4:5]3124; GISEL-NEXT:    v_add_i32_e64 v5, s[4:5], v5, v93125; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]3126; GISEL-NEXT:    v_add_i32_e64 v7, s[4:5], v7, v93127; GISEL-NEXT:    v_mul_hi_u32 v6, v12, v63128; GISEL-NEXT:    v_add_i32_e64 v4, s[4:5], v5, v43129; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]3130; GISEL-NEXT:    v_add_i32_e64 v5, s[4:5], v7, v53131; GISEL-NEXT:    v_add_i32_e64 v5, s[4:5], v6, v53132; GISEL-NEXT:    v_add_i32_e64 v11, s[4:5], v11, v43133; GISEL-NEXT:    v_addc_u32_e64 v12, s[4:5], v12, v5, s[4:5]3134; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v13, v11, 03135; GISEL-NEXT:    v_subbrev_u32_e32 v8, vcc, 0, v8, vcc3136; GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v13, v12, v[5:6]3137; GISEL-NEXT:    v_sub_i32_e32 v13, vcc, v0, v13138; GISEL-NEXT:    v_subbrev_u32_e32 v16, vcc, 0, v8, vcc3139; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], v14, v11, v[6:7]3140; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v13, v13141; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, -1, vcc3142; GISEL-NEXT:    v_mul_lo_u32 v6, v12, v43143; GISEL-NEXT:    v_mul_lo_u32 v7, v11, v83144; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v163145; GISEL-NEXT:    v_cndmask_b32_e32 v9, -1, v5, vcc3146; GISEL-NEXT:    v_mul_hi_u32 v5, v11, v43147; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v73148; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc3149; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v6, v53150; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3151; GISEL-NEXT:    v_mul_lo_u32 v6, v12, v83152; GISEL-NEXT:    v_mul_hi_u32 v4, v12, v43153; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v7, v53154; GISEL-NEXT:    v_mul_hi_u32 v7, v11, v83155; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v6, v43156; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc3157; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v73158; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc3159; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v73160; GISEL-NEXT:    v_mul_hi_u32 v7, v12, v83161; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v53162; GISEL-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc3163; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v6, v53164; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v7, v53165; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v11, v43166; GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v12, v5, vcc3167; GISEL-NEXT:    v_mul_lo_u32 v6, 0, v43168; GISEL-NEXT:    v_mul_lo_u32 v7, v2, v53169; GISEL-NEXT:    v_mul_hi_u32 v11, v2, v43170; GISEL-NEXT:    v_sub_i32_e32 v1, vcc, v13, v13171; GISEL-NEXT:    v_subbrev_u32_e32 v8, vcc, 0, v16, vcc3172; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v73173; GISEL-NEXT:    v_mul_lo_u32 v7, 0, v53174; GISEL-NEXT:    v_mul_hi_u32 v4, 0, v43175; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v113176; GISEL-NEXT:    v_mul_hi_u32 v11, v2, v53177; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc3178; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v7, v43179; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v113180; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v4, v63181; GISEL-NEXT:    v_mul_hi_u32 v12, 0, v53182; GISEL-NEXT:    v_mad_u64_u32 v[4:5], s[4:5], v3, v11, 03183; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v93184; GISEL-NEXT:    v_cndmask_b32_e32 v1, v13, v1, vcc3185; GISEL-NEXT:    v_mad_u64_u32 v[6:7], s[4:5], v3, v12, v[5:6]3186; GISEL-NEXT:    v_cndmask_b32_e32 v8, v16, v8, vcc3187; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v103188; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc3189; GISEL-NEXT:    v_cndmask_b32_e32 v1, v15, v8, vcc3190; GISEL-NEXT:    v_mad_u64_u32 v[8:9], s[4:5], 0, v11, v[6:7]3191; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v43192; GISEL-NEXT:    v_sub_i32_e64 v5, s[4:5], 0, v83193; GISEL-NEXT:    v_subb_u32_e64 v4, s[4:5], 0, v8, vcc3194; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc3195; GISEL-NEXT:    v_sub_i32_e32 v7, vcc, v2, v33196; GISEL-NEXT:    v_subbrev_u32_e32 v5, vcc, 0, v5, vcc3197; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v33198; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, vcc3199; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v53200; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v33201; GISEL-NEXT:    v_cndmask_b32_e32 v8, -1, v8, vcc3202; GISEL-NEXT:    v_sub_i32_e32 v3, vcc, v7, v33203; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]3204; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v43205; GISEL-NEXT:    v_subbrev_u32_e32 v9, vcc, 0, v5, vcc3206; GISEL-NEXT:    v_cndmask_b32_e64 v6, -1, v6, s[4:5]3207; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v83208; GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc3209; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v9, vcc3210; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v63211; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3212; GISEL-NEXT:    v_cndmask_b32_e32 v3, v4, v5, vcc3213; GISEL-NEXT:    s_setpc_b64 s[30:31]3214;3215; CGP-LABEL: v_srem_v2i64_24bit:3216; CGP:       ; %bb.0:3217; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3218; CGP-NEXT:    v_and_b32_e32 v3, 0xffffff, v43219; CGP-NEXT:    v_cvt_f32_u32_e32 v1, v33220; CGP-NEXT:    v_and_b32_e32 v4, 0xffffff, v63221; CGP-NEXT:    v_sub_i32_e32 v6, vcc, 0, v33222; CGP-NEXT:    v_rcp_f32_e32 v1, v13223; CGP-NEXT:    v_and_b32_e32 v8, 0xffffff, v03224; CGP-NEXT:    v_and_b32_e32 v2, 0xffffff, v23225; CGP-NEXT:    v_mul_f32_e32 v1, 0x4f7ffffe, v13226; CGP-NEXT:    v_cvt_u32_f32_e32 v5, v13227; CGP-NEXT:    v_cvt_f32_u32_e32 v1, v43228; CGP-NEXT:    v_mul_lo_u32 v6, v6, v53229; CGP-NEXT:    v_rcp_f32_e32 v7, v13230; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v5, v6, 03231; CGP-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v73232; CGP-NEXT:    v_cvt_u32_f32_e32 v6, v03233; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v13234; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v8, v5, 03235; CGP-NEXT:    v_sub_i32_e32 v0, vcc, 0, v43236; CGP-NEXT:    v_mul_lo_u32 v5, v0, v63237; CGP-NEXT:    v_mul_lo_u32 v7, v1, v33238; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v6, v5, 03239; CGP-NEXT:    v_sub_i32_e32 v5, vcc, v8, v73240; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v13241; CGP-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v2, v6, 03242; CGP-NEXT:    v_sub_i32_e32 v7, vcc, v5, v33243; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v5, v33244; CGP-NEXT:    v_mul_lo_u32 v6, v1, v43245; CGP-NEXT:    v_cndmask_b32_e32 v0, v5, v7, vcc3246; CGP-NEXT:    v_sub_i32_e32 v5, vcc, v0, v33247; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v33248; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v5, vcc3249; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v2, v63250; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v2, v43251; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v43252; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3253; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v2, v43254; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v43255; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v3, vcc3256; CGP-NEXT:    v_ashrrev_i32_e32 v1, 31, v03257; CGP-NEXT:    v_ashrrev_i32_e32 v3, 31, v23258; CGP-NEXT:    s_setpc_b64 s[30:31]3259  %num.mask = and <2 x i64> %num, <i64 16777215, i64 16777215>3260  %den.mask = and <2 x i64> %den, <i64 16777215, i64 16777215>3261  %result = srem <2 x i64> %num.mask, %den.mask3262  ret <2 x i64> %result3263}3264