brintos

brintos / llvm-project-archived public Read only

0
0
Text · 95.2 KiB · be5543b Raw
2170 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-amd-amdpal -denormal-fp-math-f32=preserve-sign -mattr=+mad-mac-f32-insts < %s | FileCheck -check-prefixes=CHECK,GISEL %s3; RUN: llc -global-isel -amdgpu-codegenprepare-disable-idiv-expansion=0 -mtriple=amdgcn-amd-amdpal -denormal-fp-math-f32=preserve-sign -mattr=+mad-mac-f32-insts < %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_urem_i64(i64 %num, i64 %den) {8; CHECK-LABEL: v_urem_i64:9; CHECK:       ; %bb.0:10; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; CHECK-NEXT:    v_mov_b32_e32 v4, v012; CHECK-NEXT:    v_mov_b32_e32 v5, v113; 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:    v_cvt_f32_u32_e32 v6, v217; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr118; CHECK-NEXT:    s_and_saveexec_b64 s[4:5], vcc19; CHECK-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]20; CHECK-NEXT:    s_cbranch_execnz .LBB0_321; CHECK-NEXT:  ; %bb.1: ; %Flow22; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]23; CHECK-NEXT:    s_cbranch_execnz .LBB0_424; CHECK-NEXT:  .LBB0_2:25; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]26; CHECK-NEXT:    s_setpc_b64 s[30:31]27; CHECK-NEXT:  .LBB0_3:28; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, v329; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, 0, v230; CHECK-NEXT:    v_subb_u32_e32 v7, vcc, 0, v3, vcc31; CHECK-NEXT:    v_mac_f32_e32 v6, 0x4f800000, v032; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v633; CHECK-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v034; CHECK-NEXT:    v_mul_f32_e32 v6, 0x2f800000, v035; CHECK-NEXT:    v_trunc_f32_e32 v6, v636; CHECK-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v637; CHECK-NEXT:    v_cvt_u32_f32_e32 v6, v638; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v039; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v640; CHECK-NEXT:    v_mul_lo_u32 v9, v1, v041; CHECK-NEXT:    v_mul_lo_u32 v10, v7, v042; CHECK-NEXT:    v_mul_hi_u32 v11, v1, v043; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v10, v844; CHECK-NEXT:    v_mul_lo_u32 v10, v6, v945; CHECK-NEXT:    v_mul_hi_u32 v12, v0, v946; CHECK-NEXT:    v_mul_hi_u32 v9, v6, v947; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v1148; CHECK-NEXT:    v_mul_lo_u32 v11, v0, v849; CHECK-NEXT:    v_mul_lo_u32 v13, v6, v850; CHECK-NEXT:    v_mul_hi_u32 v14, v0, v851; CHECK-NEXT:    v_mul_hi_u32 v8, v6, v852; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v10, v1153; CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc54; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v13, v955; CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc56; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v10, v1257; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc58; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v1459; CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc60; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v11, v1061; CHECK-NEXT:    v_add_i32_e32 v11, vcc, v13, v1262; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v1063; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc64; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v11, v1065; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v1066; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v967; CHECK-NEXT:    v_addc_u32_e32 v6, vcc, v6, v8, vcc68; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v069; CHECK-NEXT:    v_mul_lo_u32 v7, v7, v070; CHECK-NEXT:    v_mul_hi_u32 v9, v1, v071; CHECK-NEXT:    v_mul_lo_u32 v1, v1, v672; CHECK-NEXT:    v_mul_lo_u32 v10, v6, v873; CHECK-NEXT:    v_mul_hi_u32 v11, v0, v874; CHECK-NEXT:    v_mul_hi_u32 v8, v6, v875; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v7, v176; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v977; CHECK-NEXT:    v_mul_lo_u32 v7, v0, v178; CHECK-NEXT:    v_mul_lo_u32 v9, v6, v179; CHECK-NEXT:    v_mul_hi_u32 v12, v0, v180; CHECK-NEXT:    v_mul_hi_u32 v1, v6, v181; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v782; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc83; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v9, v884; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc85; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v1186; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc87; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v1288; CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc89; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v790; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v1191; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v792; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc93; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v9, v894; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v895; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v796; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v6, v1, vcc97; CHECK-NEXT:    v_mul_lo_u32 v6, v5, v098; CHECK-NEXT:    v_mul_hi_u32 v7, v4, v099; CHECK-NEXT:    v_mul_hi_u32 v0, v5, v0100; CHECK-NEXT:    v_mul_lo_u32 v8, v4, v1101; CHECK-NEXT:    v_mul_lo_u32 v9, v5, v1102; CHECK-NEXT:    v_mul_hi_u32 v10, v4, v1103; CHECK-NEXT:    v_mul_hi_u32 v1, v5, v1104; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v8105; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc106; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v9, v0107; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc108; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v7109; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc110; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v10111; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc112; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v8, v6113; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v9, v7114; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v6115; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc116; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v7, v6117; CHECK-NEXT:    v_mul_lo_u32 v7, v2, v0118; CHECK-NEXT:    v_mul_lo_u32 v8, v3, v0119; CHECK-NEXT:    v_mul_hi_u32 v0, v2, v0120; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v6121; CHECK-NEXT:    v_mul_lo_u32 v1, v2, v1122; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v8, v1123; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v1, v0124; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, v4, v7125; CHECK-NEXT:    v_subb_u32_e64 v4, s[4:5], v5, v0, vcc126; CHECK-NEXT:    v_sub_i32_e64 v0, s[4:5], v5, v0127; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v1, v2128; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]129; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v3130; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]131; CHECK-NEXT:    v_subb_u32_e32 v0, vcc, v0, v3, vcc132; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v3133; CHECK-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc134; CHECK-NEXT:    v_sub_i32_e32 v6, vcc, v1, v2135; CHECK-NEXT:    v_subbrev_u32_e64 v7, s[4:5], 0, v0, vcc136; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v6, v2137; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]138; CHECK-NEXT:    v_subb_u32_e32 v0, vcc, v0, v3, vcc139; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v3140; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, -1, vcc141; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v6, v2142; CHECK-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc143; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v3144; CHECK-NEXT:    v_cndmask_b32_e32 v3, v9, v8, vcc145; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v3146; CHECK-NEXT:    v_cndmask_b32_e32 v2, v6, v2, vcc147; CHECK-NEXT:    v_cndmask_b32_e32 v3, v7, v0, vcc148; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5149; CHECK-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc150; CHECK-NEXT:    v_cndmask_b32_e32 v1, v4, v3, vcc151; CHECK-NEXT:    ; implicit-def: $vgpr6152; CHECK-NEXT:    ; implicit-def: $vgpr2153; CHECK-NEXT:    ; implicit-def: $vgpr4154; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]155; CHECK-NEXT:    s_cbranch_execz .LBB0_2156; CHECK-NEXT:  .LBB0_4:157; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v6158; CHECK-NEXT:    v_sub_i32_e32 v3, vcc, 0, v2159; CHECK-NEXT:    v_mov_b32_e32 v1, 0160; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0161; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v0162; CHECK-NEXT:    v_mul_lo_u32 v3, v3, v0163; CHECK-NEXT:    v_mul_hi_u32 v3, v0, v3164; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v3165; CHECK-NEXT:    v_mul_hi_u32 v0, v4, v0166; CHECK-NEXT:    v_mul_lo_u32 v0, v0, v2167; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v4, v0168; CHECK-NEXT:    v_sub_i32_e32 v3, vcc, v0, v2169; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2170; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc171; CHECK-NEXT:    v_sub_i32_e32 v3, vcc, v0, v2172; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v2173; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc174; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]175; CHECK-NEXT:    s_setpc_b64 s[30:31]176  %result = urem i64 %num, %den177  ret i64 %result178}179 180; FIXME: This is a workaround for not handling uniform VGPR case.181declare i32 @llvm.amdgcn.readfirstlane(i32)182 183define amdgpu_ps i64 @s_urem_i64(i64 inreg %num, i64 inreg %den) {184; CHECK-LABEL: s_urem_i64:185; CHECK:       ; %bb.0:186; CHECK-NEXT:    s_or_b64 s[4:5], s[0:1], s[2:3]187; CHECK-NEXT:    s_mov_b32 s4, 0188; CHECK-NEXT:    v_cmp_ne_u64_e64 vcc, s[4:5], 0189; CHECK-NEXT:    s_mov_b32 s4, 1190; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, s2191; CHECK-NEXT:    s_cbranch_vccz .LBB1_2192; CHECK-NEXT:  ; %bb.1:193; CHECK-NEXT:    v_mov_b32_e32 v0, s3194; CHECK-NEXT:    v_cvt_f32_u32_e32 v1, s3195; CHECK-NEXT:    s_sub_u32 s4, 0, s2196; CHECK-NEXT:    v_mov_b32_e32 v3, s1197; CHECK-NEXT:    v_madmk_f32 v1, v1, 0x4f800000, v2198; CHECK-NEXT:    s_subb_u32 s5, 0, s3199; CHECK-NEXT:    v_rcp_iflag_f32_e32 v1, v1200; CHECK-NEXT:    v_mul_f32_e32 v1, 0x5f7ffffc, v1201; CHECK-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v1202; CHECK-NEXT:    v_trunc_f32_e32 v4, v4203; CHECK-NEXT:    v_mac_f32_e32 v1, 0xcf800000, v4204; CHECK-NEXT:    v_cvt_u32_f32_e32 v4, v4205; CHECK-NEXT:    v_cvt_u32_f32_e32 v1, v1206; CHECK-NEXT:    v_mul_lo_u32 v5, s4, v4207; CHECK-NEXT:    v_mul_lo_u32 v6, s4, v1208; CHECK-NEXT:    v_mul_lo_u32 v7, s5, v1209; CHECK-NEXT:    v_mul_hi_u32 v8, s4, v1210; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v7, v5211; CHECK-NEXT:    v_mul_lo_u32 v7, v4, v6212; CHECK-NEXT:    v_mul_hi_u32 v9, v1, v6213; CHECK-NEXT:    v_mul_hi_u32 v6, v4, v6214; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v8215; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v5216; CHECK-NEXT:    v_mul_lo_u32 v10, v4, v5217; CHECK-NEXT:    v_mul_hi_u32 v11, v1, v5218; CHECK-NEXT:    v_mul_hi_u32 v5, v4, v5219; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v8220; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc221; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v10, v6222; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc223; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v9224; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc225; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v11226; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc227; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v7228; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v10, v9229; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v7230; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc231; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v7232; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v7233; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v6234; CHECK-NEXT:    v_addc_u32_e32 v4, vcc, v4, v5, vcc235; CHECK-NEXT:    v_mul_lo_u32 v5, s4, v1236; CHECK-NEXT:    v_mul_lo_u32 v6, s5, v1237; CHECK-NEXT:    v_mul_hi_u32 v7, s4, v1238; CHECK-NEXT:    v_mul_lo_u32 v8, s4, v4239; CHECK-NEXT:    v_mul_lo_u32 v9, v4, v5240; CHECK-NEXT:    v_mul_hi_u32 v10, v1, v5241; CHECK-NEXT:    v_mul_hi_u32 v5, v4, v5242; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v8243; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v7244; CHECK-NEXT:    v_mul_lo_u32 v7, v1, v6245; CHECK-NEXT:    v_mul_lo_u32 v8, v4, v6246; CHECK-NEXT:    v_mul_hi_u32 v11, v1, v6247; CHECK-NEXT:    v_mul_hi_u32 v6, v4, v6248; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v9, v7249; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc250; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v8, v5251; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc252; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v10253; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc254; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v11255; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc256; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v9, v7257; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v10258; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v7259; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc260; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v7261; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v6, v7262; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v5263; CHECK-NEXT:    v_addc_u32_e32 v4, vcc, v4, v6, vcc264; CHECK-NEXT:    v_mul_lo_u32 v5, s1, v1265; CHECK-NEXT:    v_mul_hi_u32 v6, s0, v1266; CHECK-NEXT:    v_mul_hi_u32 v1, s1, v1267; CHECK-NEXT:    v_mul_lo_u32 v7, s0, v4268; CHECK-NEXT:    v_mul_lo_u32 v8, s1, v4269; CHECK-NEXT:    v_mul_hi_u32 v9, s0, v4270; CHECK-NEXT:    v_mul_hi_u32 v4, s1, v4271; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v7272; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc273; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v8, v1274; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc275; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v6276; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc277; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v9278; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc279; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v7, v5280; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v8, v6281; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v5282; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc283; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v5284; CHECK-NEXT:    v_mul_lo_u32 v6, s2, v1285; CHECK-NEXT:    v_mul_lo_u32 v7, s3, v1286; CHECK-NEXT:    v_mul_hi_u32 v1, s2, v1287; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v4, v5288; CHECK-NEXT:    v_mul_lo_u32 v4, s2, v4289; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v7, v4290; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v4, v1291; CHECK-NEXT:    v_sub_i32_e32 v4, vcc, s0, v6292; CHECK-NEXT:    v_subb_u32_e64 v3, s[4:5], v3, v1, vcc293; CHECK-NEXT:    v_sub_i32_e64 v1, s[4:5], s1, v1294; CHECK-NEXT:    v_cmp_le_u32_e64 s[4:5], s2, v4295; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]296; CHECK-NEXT:    v_cmp_le_u32_e64 s[4:5], s3, v3297; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]298; CHECK-NEXT:    v_subb_u32_e32 v0, vcc, v1, v0, vcc299; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, s3, v3300; CHECK-NEXT:    v_cndmask_b32_e32 v1, v6, v5, vcc301; CHECK-NEXT:    v_subrev_i32_e32 v3, vcc, s2, v4302; CHECK-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc303; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s2, v3304; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, -1, vcc305; CHECK-NEXT:    v_subrev_i32_e32 v6, vcc, s2, v3306; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s3, v0307; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, -1, vcc308; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, s3, v0309; CHECK-NEXT:    v_cndmask_b32_e32 v0, v7, v5, vcc310; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v0311; CHECK-NEXT:    v_cndmask_b32_e32 v0, v3, v6, vcc312; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1313; CHECK-NEXT:    v_cndmask_b32_e32 v0, v4, v0, vcc314; CHECK-NEXT:    s_mov_b32 s4, 0315; CHECK-NEXT:    s_branch .LBB1_3316; CHECK-NEXT:  .LBB1_2:317; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr1318; CHECK-NEXT:  .LBB1_3: ; %Flow319; CHECK-NEXT:    s_xor_b32 s1, s4, 1320; CHECK-NEXT:    s_cmp_lg_u32 s1, 0321; CHECK-NEXT:    s_cbranch_scc1 .LBB1_5322; CHECK-NEXT:  ; %bb.4:323; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v2324; CHECK-NEXT:    s_sub_i32 s1, 0, s2325; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0326; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v0327; CHECK-NEXT:    v_mul_lo_u32 v1, s1, v0328; CHECK-NEXT:    v_mul_hi_u32 v1, v0, v1329; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v1330; CHECK-NEXT:    v_mul_hi_u32 v0, s0, v0331; CHECK-NEXT:    v_mul_lo_u32 v0, v0, s2332; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, s0, v0333; CHECK-NEXT:    v_subrev_i32_e32 v1, vcc, s2, v0334; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s2, v0335; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc336; CHECK-NEXT:    v_subrev_i32_e32 v1, vcc, s2, v0337; CHECK-NEXT:    v_cmp_le_u32_e32 vcc, s2, v0338; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v1, vcc339; CHECK-NEXT:  .LBB1_5:340; CHECK-NEXT:    v_readfirstlane_b32 s0, v0341; CHECK-NEXT:    s_mov_b32 s1, s0342; CHECK-NEXT:    ; return to shader part epilog343  %result = urem i64 %num, %den344  %cast = bitcast i64 %result to <2 x i32>345  %elt.0 = extractelement <2 x i32> %cast, i32 0346  %elt.1 = extractelement <2 x i32> %cast, i32 1347  %res.0 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.0)348  %res.1 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.1)349  %ins.0 = insertelement <2 x i32> poison, i32 %res.0, i32 0350  %ins.1 = insertelement <2 x i32> %ins.0, i32 %res.0, i32 1351  %cast.back = bitcast <2 x i32> %ins.1 to i64352  ret i64 %cast.back353}354 355define <2 x i64> @v_urem_v2i64(<2 x i64> %num, <2 x i64> %den) {356; GISEL-LABEL: v_urem_v2i64:357; GISEL:       ; %bb.0:358; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)359; GISEL-NEXT:    v_cvt_f32_u32_e32 v8, v4360; GISEL-NEXT:    v_cvt_f32_u32_e32 v9, v5361; GISEL-NEXT:    v_mac_f32_e32 v8, 0x4f800000, v9362; GISEL-NEXT:    v_rcp_iflag_f32_e32 v8, v8363; GISEL-NEXT:    v_mul_f32_e32 v8, 0x5f7ffffc, v8364; GISEL-NEXT:    v_mul_f32_e32 v9, 0x2f800000, v8365; GISEL-NEXT:    v_trunc_f32_e32 v9, v9366; GISEL-NEXT:    v_mac_f32_e32 v8, 0xcf800000, v9367; GISEL-NEXT:    v_cvt_u32_f32_e32 v8, v8368; GISEL-NEXT:    v_cvt_u32_f32_e32 v9, v9369; GISEL-NEXT:    v_sub_i32_e32 v10, vcc, 0, v4370; GISEL-NEXT:    v_subb_u32_e32 v11, vcc, 0, v5, vcc371; GISEL-NEXT:    v_mul_lo_u32 v12, v10, v8372; GISEL-NEXT:    v_mul_lo_u32 v13, v11, v8373; GISEL-NEXT:    v_mul_lo_u32 v14, v10, v9374; GISEL-NEXT:    v_mul_hi_u32 v15, v10, v8375; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v14376; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v15377; GISEL-NEXT:    v_mul_lo_u32 v14, v9, v12378; GISEL-NEXT:    v_mul_lo_u32 v15, v8, v13379; GISEL-NEXT:    v_mul_hi_u32 v16, v8, v12380; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v15381; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc382; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v16383; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc384; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v14385; GISEL-NEXT:    v_mul_lo_u32 v15, v9, v13386; GISEL-NEXT:    v_mul_hi_u32 v12, v9, v12387; GISEL-NEXT:    v_mul_hi_u32 v16, v8, v13388; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v15, v12389; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc390; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v16391; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc392; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v15, v16393; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v14394; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc395; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v14396; GISEL-NEXT:    v_mul_hi_u32 v13, v9, v13397; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v14398; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v12399; GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v13, vcc400; GISEL-NEXT:    v_mul_lo_u32 v12, v10, v8401; GISEL-NEXT:    v_mul_lo_u32 v11, v11, v8402; GISEL-NEXT:    v_mul_lo_u32 v13, v10, v9403; GISEL-NEXT:    v_mul_hi_u32 v10, v10, v8404; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v13405; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10406; GISEL-NEXT:    v_mul_lo_u32 v11, v9, v12407; GISEL-NEXT:    v_mul_lo_u32 v13, v8, v10408; GISEL-NEXT:    v_mul_hi_u32 v14, v8, v12409; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v13410; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc411; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v14412; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc413; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v13, v11414; GISEL-NEXT:    v_mul_lo_u32 v13, v9, v10415; GISEL-NEXT:    v_mul_hi_u32 v12, v9, v12416; GISEL-NEXT:    v_mul_hi_u32 v14, v8, v10417; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v12418; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc419; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v14420; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc421; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v14422; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v12, v11423; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc424; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v12425; GISEL-NEXT:    v_mul_hi_u32 v10, v9, v10426; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v12427; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v11428; GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v10, vcc429; GISEL-NEXT:    v_mul_lo_u32 v10, v1, v8430; GISEL-NEXT:    v_mul_lo_u32 v11, v0, v9431; GISEL-NEXT:    v_mul_hi_u32 v12, v0, v8432; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v11433; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc434; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v12435; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc436; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10437; GISEL-NEXT:    v_mul_lo_u32 v11, v1, v9438; GISEL-NEXT:    v_mul_hi_u32 v8, v1, v8439; GISEL-NEXT:    v_mul_hi_u32 v12, v0, v9440; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v11, v8441; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc442; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v12443; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc444; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v12445; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v10446; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc447; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10448; GISEL-NEXT:    v_mul_hi_u32 v9, v1, v9449; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v10450; GISEL-NEXT:    v_mul_lo_u32 v10, v4, v8451; GISEL-NEXT:    v_mul_lo_u32 v11, v5, v8452; GISEL-NEXT:    v_mul_lo_u32 v9, v4, v9453; GISEL-NEXT:    v_mul_hi_u32 v8, v4, v8454; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v11, v9455; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8456; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v0, v10457; GISEL-NEXT:    v_subb_u32_e64 v9, s[4:5], v1, v8, vcc458; GISEL-NEXT:    v_sub_i32_e64 v1, s[4:5], v1, v8459; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v5460; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]461; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v0, v4462; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]463; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v9, v5464; GISEL-NEXT:    v_cndmask_b32_e64 v8, v8, v10, s[4:5]465; GISEL-NEXT:    v_sub_i32_e64 v10, s[4:5], v0, v4466; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v1, v5, vcc467; GISEL-NEXT:    v_subbrev_u32_e64 v11, vcc, 0, v1, s[4:5]468; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v11, v5469; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, -1, vcc470; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v10, v4471; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, -1, vcc472; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v11, v5473; GISEL-NEXT:    v_cndmask_b32_e32 v12, v12, v13, vcc474; GISEL-NEXT:    v_sub_i32_e32 v4, vcc, v10, v4475; GISEL-NEXT:    v_subb_u32_e64 v1, s[4:5], v1, v5, s[4:5]476; GISEL-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc477; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v12478; GISEL-NEXT:    v_cndmask_b32_e32 v4, v10, v4, vcc479; GISEL-NEXT:    v_cndmask_b32_e32 v1, v11, v1, vcc480; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v8481; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc482; GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc483; GISEL-NEXT:    v_cvt_f32_u32_e32 v4, v6484; GISEL-NEXT:    v_cvt_f32_u32_e32 v5, v7485; GISEL-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v5486; GISEL-NEXT:    v_rcp_iflag_f32_e32 v4, v4487; GISEL-NEXT:    v_mul_f32_e32 v4, 0x5f7ffffc, v4488; GISEL-NEXT:    v_mul_f32_e32 v5, 0x2f800000, v4489; GISEL-NEXT:    v_trunc_f32_e32 v5, v5490; GISEL-NEXT:    v_mac_f32_e32 v4, 0xcf800000, v5491; GISEL-NEXT:    v_cvt_u32_f32_e32 v4, v4492; GISEL-NEXT:    v_cvt_u32_f32_e32 v5, v5493; GISEL-NEXT:    v_sub_i32_e32 v8, vcc, 0, v6494; GISEL-NEXT:    v_subb_u32_e32 v9, vcc, 0, v7, vcc495; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v4496; GISEL-NEXT:    v_mul_lo_u32 v11, v9, v4497; GISEL-NEXT:    v_mul_lo_u32 v12, v8, v5498; GISEL-NEXT:    v_mul_hi_u32 v13, v8, v4499; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v12500; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v13501; GISEL-NEXT:    v_mul_lo_u32 v12, v5, v10502; GISEL-NEXT:    v_mul_lo_u32 v13, v4, v11503; GISEL-NEXT:    v_mul_hi_u32 v14, v4, v10504; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v13505; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc506; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v14507; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc508; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v12509; GISEL-NEXT:    v_mul_lo_u32 v13, v5, v11510; GISEL-NEXT:    v_mul_hi_u32 v10, v5, v10511; GISEL-NEXT:    v_mul_hi_u32 v14, v4, v11512; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v13, v10513; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc514; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v14515; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc516; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v14517; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v12518; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc519; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v12520; GISEL-NEXT:    v_mul_hi_u32 v11, v5, v11521; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v12522; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v10523; GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v11, vcc524; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v4525; GISEL-NEXT:    v_mul_lo_u32 v9, v9, v4526; GISEL-NEXT:    v_mul_lo_u32 v11, v8, v5527; GISEL-NEXT:    v_mul_hi_u32 v8, v8, v4528; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v11529; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8530; GISEL-NEXT:    v_mul_lo_u32 v9, v5, v10531; GISEL-NEXT:    v_mul_lo_u32 v11, v4, v8532; GISEL-NEXT:    v_mul_hi_u32 v12, v4, v10533; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v11534; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc535; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v12536; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc537; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v11, v9538; GISEL-NEXT:    v_mul_lo_u32 v11, v5, v8539; GISEL-NEXT:    v_mul_hi_u32 v10, v5, v10540; GISEL-NEXT:    v_mul_hi_u32 v12, v4, v8541; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10542; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc543; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v12544; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc545; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v12546; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v9547; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc548; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v10549; GISEL-NEXT:    v_mul_hi_u32 v8, v5, v8550; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v10551; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v9552; GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v5, v8, vcc553; GISEL-NEXT:    v_mul_lo_u32 v8, v3, v4554; GISEL-NEXT:    v_mul_lo_u32 v9, v2, v5555; GISEL-NEXT:    v_mul_hi_u32 v10, v2, v4556; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v9557; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc558; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v10559; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc560; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8561; GISEL-NEXT:    v_mul_lo_u32 v9, v3, v5562; GISEL-NEXT:    v_mul_hi_u32 v4, v3, v4563; GISEL-NEXT:    v_mul_hi_u32 v10, v2, v5564; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v9, v4565; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc566; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v10567; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc568; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v10569; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v8570; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc571; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v8572; GISEL-NEXT:    v_mul_hi_u32 v5, v3, v5573; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v8574; GISEL-NEXT:    v_mul_lo_u32 v8, v6, v4575; GISEL-NEXT:    v_mul_lo_u32 v9, v7, v4576; GISEL-NEXT:    v_mul_lo_u32 v5, v6, v5577; GISEL-NEXT:    v_mul_hi_u32 v4, v6, v4578; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v9, v5579; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v5, v4580; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v8581; GISEL-NEXT:    v_subb_u32_e64 v5, s[4:5], v3, v4, vcc582; GISEL-NEXT:    v_sub_i32_e64 v3, s[4:5], v3, v4583; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v5, v7584; GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, -1, s[4:5]585; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v6586; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]587; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v5, v7588; GISEL-NEXT:    v_cndmask_b32_e64 v4, v4, v8, s[4:5]589; GISEL-NEXT:    v_sub_i32_e64 v8, s[4:5], v2, v6590; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v7, vcc591; GISEL-NEXT:    v_subbrev_u32_e64 v9, vcc, 0, v3, s[4:5]592; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v9, v7593; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, vcc594; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v8, v6595; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, vcc596; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v7597; GISEL-NEXT:    v_cndmask_b32_e32 v10, v10, v11, vcc598; GISEL-NEXT:    v_sub_i32_e32 v6, vcc, v8, v6599; GISEL-NEXT:    v_subb_u32_e64 v3, s[4:5], v3, v7, s[4:5]600; GISEL-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc601; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v10602; GISEL-NEXT:    v_cndmask_b32_e32 v6, v8, v6, vcc603; GISEL-NEXT:    v_cndmask_b32_e32 v3, v9, v3, vcc604; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v4605; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v6, vcc606; GISEL-NEXT:    v_cndmask_b32_e32 v3, v5, v3, vcc607; GISEL-NEXT:    s_setpc_b64 s[30:31]608;609; CGP-LABEL: v_urem_v2i64:610; CGP:       ; %bb.0:611; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)612; CGP-NEXT:    v_mov_b32_e32 v10, v0613; CGP-NEXT:    v_mov_b32_e32 v11, v1614; CGP-NEXT:    v_mov_b32_e32 v8, v2615; CGP-NEXT:    v_mov_b32_e32 v9, v3616; CGP-NEXT:    v_or_b32_e32 v1, v11, v5617; CGP-NEXT:    v_mov_b32_e32 v0, 0618; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]619; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v4620; CGP-NEXT:    ; implicit-def: $vgpr0_vgpr1621; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc622; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]623; CGP-NEXT:    s_cbranch_execz .LBB2_2624; CGP-NEXT:  ; %bb.1:625; CGP-NEXT:    v_cvt_f32_u32_e32 v0, v5626; CGP-NEXT:    v_sub_i32_e32 v1, vcc, 0, v4627; CGP-NEXT:    v_subb_u32_e32 v3, vcc, 0, v5, vcc628; CGP-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v0629; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v2630; CGP-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v0631; CGP-NEXT:    v_mul_f32_e32 v2, 0x2f800000, v0632; CGP-NEXT:    v_trunc_f32_e32 v2, v2633; CGP-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v2634; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v2635; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v0636; CGP-NEXT:    v_mul_lo_u32 v12, v1, v2637; CGP-NEXT:    v_mul_lo_u32 v13, v1, v0638; CGP-NEXT:    v_mul_lo_u32 v14, v3, v0639; CGP-NEXT:    v_mul_hi_u32 v15, v1, v0640; CGP-NEXT:    v_add_i32_e32 v12, vcc, v14, v12641; CGP-NEXT:    v_mul_lo_u32 v14, v2, v13642; CGP-NEXT:    v_mul_hi_u32 v16, v0, v13643; CGP-NEXT:    v_mul_hi_u32 v13, v2, v13644; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v15645; CGP-NEXT:    v_mul_lo_u32 v15, v0, v12646; CGP-NEXT:    v_mul_lo_u32 v17, v2, v12647; CGP-NEXT:    v_mul_hi_u32 v18, v0, v12648; CGP-NEXT:    v_mul_hi_u32 v12, v2, v12649; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v15650; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc651; CGP-NEXT:    v_add_i32_e32 v13, vcc, v17, v13652; CGP-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc653; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v16654; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc655; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v18656; CGP-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc657; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v14658; CGP-NEXT:    v_add_i32_e32 v15, vcc, v17, v16659; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v14660; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc661; CGP-NEXT:    v_add_i32_e32 v14, vcc, v15, v14662; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v14663; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v13664; CGP-NEXT:    v_addc_u32_e32 v2, vcc, v2, v12, vcc665; CGP-NEXT:    v_mul_lo_u32 v12, v1, v0666; CGP-NEXT:    v_mul_lo_u32 v3, v3, v0667; CGP-NEXT:    v_mul_hi_u32 v13, v1, v0668; CGP-NEXT:    v_mul_lo_u32 v1, v1, v2669; CGP-NEXT:    v_mul_lo_u32 v14, v2, v12670; CGP-NEXT:    v_mul_hi_u32 v15, v0, v12671; CGP-NEXT:    v_mul_hi_u32 v12, v2, v12672; CGP-NEXT:    v_add_i32_e32 v1, vcc, v3, v1673; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v13674; CGP-NEXT:    v_mul_lo_u32 v3, v0, v1675; CGP-NEXT:    v_mul_lo_u32 v13, v2, v1676; CGP-NEXT:    v_mul_hi_u32 v16, v0, v1677; CGP-NEXT:    v_mul_hi_u32 v1, v2, v1678; CGP-NEXT:    v_add_i32_e32 v3, vcc, v14, v3679; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc680; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v12681; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc682; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v15683; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc684; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v16685; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc686; CGP-NEXT:    v_add_i32_e32 v3, vcc, v14, v3687; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v15688; CGP-NEXT:    v_add_i32_e32 v3, vcc, v12, v3689; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc690; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v12691; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v12692; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v3693; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v2, v1, vcc694; CGP-NEXT:    v_mul_lo_u32 v2, v11, v0695; CGP-NEXT:    v_mul_hi_u32 v3, v10, v0696; CGP-NEXT:    v_mul_hi_u32 v0, v11, v0697; CGP-NEXT:    v_mul_lo_u32 v12, v10, v1698; CGP-NEXT:    v_mul_lo_u32 v13, v11, v1699; CGP-NEXT:    v_mul_hi_u32 v14, v10, v1700; CGP-NEXT:    v_mul_hi_u32 v1, v11, v1701; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v12702; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc703; CGP-NEXT:    v_add_i32_e32 v0, vcc, v13, v0704; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc705; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v3706; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc707; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v14708; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, 1, vcc709; CGP-NEXT:    v_add_i32_e32 v2, vcc, v12, v2710; CGP-NEXT:    v_add_i32_e32 v3, vcc, v13, v3711; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v2712; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc713; CGP-NEXT:    v_add_i32_e32 v2, vcc, v3, v2714; CGP-NEXT:    v_mul_lo_u32 v3, v4, v0715; CGP-NEXT:    v_mul_lo_u32 v12, v5, v0716; CGP-NEXT:    v_mul_hi_u32 v0, v4, v0717; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v2718; CGP-NEXT:    v_mul_lo_u32 v1, v4, v1719; CGP-NEXT:    v_add_i32_e32 v1, vcc, v12, v1720; CGP-NEXT:    v_add_i32_e32 v0, vcc, v1, v0721; CGP-NEXT:    v_sub_i32_e32 v1, vcc, v10, v3722; CGP-NEXT:    v_subb_u32_e64 v2, s[4:5], v11, v0, vcc723; CGP-NEXT:    v_sub_i32_e64 v0, s[4:5], v11, v0724; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v1, v4725; CGP-NEXT:    v_cndmask_b32_e64 v3, 0, -1, s[4:5]726; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v5727; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]728; CGP-NEXT:    v_subb_u32_e32 v0, vcc, v0, v5, vcc729; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v5730; CGP-NEXT:    v_cndmask_b32_e32 v3, v10, v3, vcc731; CGP-NEXT:    v_sub_i32_e32 v10, vcc, v1, v4732; CGP-NEXT:    v_subbrev_u32_e64 v11, s[4:5], 0, v0, vcc733; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v10, v4734; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, -1, s[4:5]735; CGP-NEXT:    v_subb_u32_e32 v0, vcc, v0, v5, vcc736; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v11, v5737; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, -1, vcc738; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v10, v4739; CGP-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc740; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v11, v5741; CGP-NEXT:    v_cndmask_b32_e32 v5, v13, v12, vcc742; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5743; CGP-NEXT:    v_cndmask_b32_e32 v4, v10, v4, vcc744; CGP-NEXT:    v_cndmask_b32_e32 v5, v11, v0, vcc745; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v3746; CGP-NEXT:    v_cndmask_b32_e32 v0, v1, v4, vcc747; CGP-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc748; CGP-NEXT:    ; implicit-def: $vgpr2749; CGP-NEXT:    ; implicit-def: $vgpr4750; CGP-NEXT:    ; implicit-def: $vgpr10751; CGP-NEXT:  .LBB2_2: ; %Flow1752; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]753; CGP-NEXT:    s_cbranch_execz .LBB2_4754; CGP-NEXT:  ; %bb.3:755; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v2756; CGP-NEXT:    v_sub_i32_e32 v2, vcc, 0, v4757; CGP-NEXT:    v_mov_b32_e32 v1, 0758; CGP-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v0759; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v0760; CGP-NEXT:    v_mul_lo_u32 v2, v2, v0761; CGP-NEXT:    v_mul_hi_u32 v2, v0, v2762; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v2763; CGP-NEXT:    v_mul_hi_u32 v0, v10, v0764; CGP-NEXT:    v_mul_lo_u32 v0, v0, v4765; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v10, v0766; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v4767; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v4768; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc769; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v0, v4770; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v4771; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc772; CGP-NEXT:  .LBB2_4:773; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]774; CGP-NEXT:    v_or_b32_e32 v3, v9, v7775; CGP-NEXT:    v_mov_b32_e32 v2, 0776; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]777; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v6778; CGP-NEXT:    ; implicit-def: $vgpr2_vgpr3779; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc780; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]781; CGP-NEXT:    s_cbranch_execnz .LBB2_7782; CGP-NEXT:  ; %bb.5: ; %Flow783; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]784; CGP-NEXT:    s_cbranch_execnz .LBB2_8785; CGP-NEXT:  .LBB2_6:786; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]787; CGP-NEXT:    s_setpc_b64 s[30:31]788; CGP-NEXT:  .LBB2_7:789; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v7790; CGP-NEXT:    v_sub_i32_e32 v3, vcc, 0, v6791; CGP-NEXT:    v_subb_u32_e32 v5, vcc, 0, v7, vcc792; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v2793; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v4794; CGP-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v2795; CGP-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v2796; CGP-NEXT:    v_trunc_f32_e32 v4, v4797; CGP-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v4798; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v4799; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v2800; CGP-NEXT:    v_mul_lo_u32 v10, v3, v4801; CGP-NEXT:    v_mul_lo_u32 v11, v3, v2802; CGP-NEXT:    v_mul_lo_u32 v12, v5, v2803; CGP-NEXT:    v_mul_hi_u32 v13, v3, v2804; CGP-NEXT:    v_add_i32_e32 v10, vcc, v12, v10805; CGP-NEXT:    v_mul_lo_u32 v12, v4, v11806; CGP-NEXT:    v_mul_hi_u32 v14, v2, v11807; CGP-NEXT:    v_mul_hi_u32 v11, v4, v11808; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v13809; CGP-NEXT:    v_mul_lo_u32 v13, v2, v10810; CGP-NEXT:    v_mul_lo_u32 v15, v4, v10811; CGP-NEXT:    v_mul_hi_u32 v16, v2, v10812; CGP-NEXT:    v_mul_hi_u32 v10, v4, v10813; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v13814; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc815; CGP-NEXT:    v_add_i32_e32 v11, vcc, v15, v11816; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc817; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v14818; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc819; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v16820; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc821; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v12822; CGP-NEXT:    v_add_i32_e32 v13, vcc, v15, v14823; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v12824; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc825; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v12826; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v12827; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v11828; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v4, v10, vcc829; CGP-NEXT:    v_mul_lo_u32 v10, v3, v2830; CGP-NEXT:    v_mul_lo_u32 v5, v5, v2831; CGP-NEXT:    v_mul_hi_u32 v11, v3, v2832; CGP-NEXT:    v_mul_lo_u32 v3, v3, v4833; CGP-NEXT:    v_mul_lo_u32 v12, v4, v10834; CGP-NEXT:    v_mul_hi_u32 v13, v2, v10835; CGP-NEXT:    v_mul_hi_u32 v10, v4, v10836; CGP-NEXT:    v_add_i32_e32 v3, vcc, v5, v3837; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v11838; CGP-NEXT:    v_mul_lo_u32 v5, v2, v3839; CGP-NEXT:    v_mul_lo_u32 v11, v4, v3840; CGP-NEXT:    v_mul_hi_u32 v14, v2, v3841; CGP-NEXT:    v_mul_hi_u32 v3, v4, v3842; CGP-NEXT:    v_add_i32_e32 v5, vcc, v12, v5843; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc844; CGP-NEXT:    v_add_i32_e32 v10, vcc, v11, v10845; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc846; CGP-NEXT:    v_add_i32_e32 v5, vcc, v5, v13847; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc848; CGP-NEXT:    v_add_i32_e32 v10, vcc, v10, v14849; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc850; CGP-NEXT:    v_add_i32_e32 v5, vcc, v12, v5851; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v13852; CGP-NEXT:    v_add_i32_e32 v5, vcc, v10, v5853; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc854; CGP-NEXT:    v_add_i32_e32 v10, vcc, v11, v10855; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v10856; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v5857; CGP-NEXT:    v_addc_u32_e32 v3, vcc, v4, v3, vcc858; CGP-NEXT:    v_mul_lo_u32 v4, v9, v2859; CGP-NEXT:    v_mul_hi_u32 v5, v8, v2860; CGP-NEXT:    v_mul_hi_u32 v2, v9, v2861; CGP-NEXT:    v_mul_lo_u32 v10, v8, v3862; CGP-NEXT:    v_mul_lo_u32 v11, v9, v3863; CGP-NEXT:    v_mul_hi_u32 v12, v8, v3864; CGP-NEXT:    v_mul_hi_u32 v3, v9, v3865; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v10866; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc867; CGP-NEXT:    v_add_i32_e32 v2, vcc, v11, v2868; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc869; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v5870; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc871; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v12872; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc873; CGP-NEXT:    v_add_i32_e32 v4, vcc, v10, v4874; CGP-NEXT:    v_add_i32_e32 v5, vcc, v11, v5875; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v4876; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc877; CGP-NEXT:    v_add_i32_e32 v4, vcc, v5, v4878; CGP-NEXT:    v_mul_lo_u32 v5, v6, v2879; CGP-NEXT:    v_mul_lo_u32 v10, v7, v2880; CGP-NEXT:    v_mul_hi_u32 v2, v6, v2881; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v4882; CGP-NEXT:    v_mul_lo_u32 v3, v6, v3883; CGP-NEXT:    v_add_i32_e32 v3, vcc, v10, v3884; CGP-NEXT:    v_add_i32_e32 v2, vcc, v3, v2885; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v8, v5886; CGP-NEXT:    v_subb_u32_e64 v4, s[4:5], v9, v2, vcc887; CGP-NEXT:    v_sub_i32_e64 v2, s[4:5], v9, v2888; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v3, v6889; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]890; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v7891; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]892; CGP-NEXT:    v_subb_u32_e32 v2, vcc, v2, v7, vcc893; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v7894; CGP-NEXT:    v_cndmask_b32_e32 v5, v8, v5, vcc895; CGP-NEXT:    v_sub_i32_e32 v8, vcc, v3, v6896; CGP-NEXT:    v_subbrev_u32_e64 v9, s[4:5], 0, v2, vcc897; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v8, v6898; CGP-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]899; CGP-NEXT:    v_subb_u32_e32 v2, vcc, v2, v7, vcc900; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v9, v7901; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, -1, vcc902; CGP-NEXT:    v_sub_i32_e32 v6, vcc, v8, v6903; CGP-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc904; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v7905; CGP-NEXT:    v_cndmask_b32_e32 v7, v11, v10, vcc906; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v7907; CGP-NEXT:    v_cndmask_b32_e32 v6, v8, v6, vcc908; CGP-NEXT:    v_cndmask_b32_e32 v7, v9, v2, vcc909; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v5910; CGP-NEXT:    v_cndmask_b32_e32 v2, v3, v6, vcc911; CGP-NEXT:    v_cndmask_b32_e32 v3, v4, v7, vcc912; CGP-NEXT:    ; implicit-def: $vgpr4913; CGP-NEXT:    ; implicit-def: $vgpr6914; CGP-NEXT:    ; implicit-def: $vgpr8915; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]916; CGP-NEXT:    s_cbranch_execz .LBB2_6917; CGP-NEXT:  .LBB2_8:918; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v4919; CGP-NEXT:    v_sub_i32_e32 v4, vcc, 0, v6920; CGP-NEXT:    v_mov_b32_e32 v3, 0921; CGP-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v2922; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v2923; CGP-NEXT:    v_mul_lo_u32 v4, v4, v2924; CGP-NEXT:    v_mul_hi_u32 v4, v2, v4925; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v4926; CGP-NEXT:    v_mul_hi_u32 v2, v8, v2927; CGP-NEXT:    v_mul_lo_u32 v2, v2, v6928; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v8, v2929; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v6930; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v6931; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc932; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v6933; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v6934; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc935; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]936; CGP-NEXT:    s_setpc_b64 s[30:31]937  %result = urem <2 x i64> %num, %den938  ret <2 x i64> %result939}940 941define i64 @v_urem_i64_pow2k_denom(i64 %num) {942; CHECK-LABEL: v_urem_i64_pow2k_denom:943; CHECK:       ; %bb.0:944; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)945; CHECK-NEXT:    v_and_b32_e32 v0, 0xfff, v0946; CHECK-NEXT:    v_mov_b32_e32 v1, 0947; CHECK-NEXT:    s_setpc_b64 s[30:31]948  %result = urem i64 %num, 4096949  ret i64 %result950}951 952define <2 x i64> @v_urem_v2i64_pow2k_denom(<2 x i64> %num) {953; CHECK-LABEL: v_urem_v2i64_pow2k_denom:954; CHECK:       ; %bb.0:955; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; CHECK-NEXT:    v_and_b32_e32 v0, 0xfff, v0957; CHECK-NEXT:    v_and_b32_e32 v2, 0xfff, v2958; CHECK-NEXT:    v_mov_b32_e32 v1, 0959; CHECK-NEXT:    v_mov_b32_e32 v3, 0960; CHECK-NEXT:    s_setpc_b64 s[30:31]961  %result = urem <2 x i64> %num, <i64 4096, i64 4096>962  ret <2 x i64> %result963}964 965define i64 @v_urem_i64_oddk_denom(i64 %num) {966; CHECK-LABEL: v_urem_i64_oddk_denom:967; CHECK:       ; %bb.0:968; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)969; CHECK-NEXT:    v_mov_b32_e32 v2, 0x1fb03c31970; CHECK-NEXT:    v_mov_b32_e32 v3, 0xd9528440971; CHECK-NEXT:    v_mov_b32_e32 v4, 0x12d8fb972; CHECK-NEXT:    v_mul_lo_u32 v5, v1, v2973; CHECK-NEXT:    v_mul_lo_u32 v6, v0, v3974; CHECK-NEXT:    v_mul_hi_u32 v7, v0, v2975; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v3976; CHECK-NEXT:    v_mul_hi_u32 v2, v1, v2977; CHECK-NEXT:    v_mul_hi_u32 v9, v0, v3978; CHECK-NEXT:    v_mul_hi_u32 v3, v1, v3979; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v6980; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc981; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v8, v2982; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc983; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v7984; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc985; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v9986; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc987; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v5988; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v8, v7989; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v5990; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc991; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v5992; CHECK-NEXT:    v_add_i32_e32 v3, vcc, v3, v5993; CHECK-NEXT:    v_lshr_b64 v[2:3], v[2:3], 20994; CHECK-NEXT:    v_mul_lo_u32 v5, v2, v4995; CHECK-NEXT:    v_mul_lo_u32 v3, v3, v4996; CHECK-NEXT:    v_mul_hi_u32 v2, v2, v4997; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v3, v2998; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v5999; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v2, vcc1000; CHECK-NEXT:    s_setpc_b64 s[30:31]1001  %result = urem i64 %num, 12351951002  ret i64 %result1003}1004 1005define <2 x i64> @v_urem_v2i64_oddk_denom(<2 x i64> %num) {1006; CHECK-LABEL: v_urem_v2i64_oddk_denom:1007; CHECK:       ; %bb.0:1008; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1009; CHECK-NEXT:    v_mov_b32_e32 v4, 0x1fb03c311010; CHECK-NEXT:    v_mov_b32_e32 v5, 0xd95284401011; CHECK-NEXT:    v_mov_b32_e32 v8, 0x12d8fb1012; CHECK-NEXT:    v_mul_lo_u32 v6, v1, v41013; CHECK-NEXT:    v_mul_lo_u32 v7, v0, v51014; CHECK-NEXT:    v_mul_hi_u32 v9, v0, v41015; CHECK-NEXT:    v_mul_lo_u32 v10, v1, v51016; CHECK-NEXT:    v_mul_hi_u32 v11, v1, v41017; CHECK-NEXT:    v_mul_hi_u32 v12, v0, v51018; CHECK-NEXT:    v_mul_hi_u32 v13, v1, v51019; CHECK-NEXT:    v_mul_lo_u32 v14, v3, v41020; CHECK-NEXT:    v_mul_lo_u32 v15, v2, v51021; CHECK-NEXT:    v_mul_hi_u32 v16, v2, v41022; CHECK-NEXT:    v_mul_lo_u32 v17, v3, v51023; CHECK-NEXT:    v_mul_hi_u32 v4, v3, v41024; CHECK-NEXT:    v_mul_hi_u32 v18, v2, v51025; CHECK-NEXT:    v_mul_hi_u32 v19, v3, v51026; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v71027; CHECK-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1028; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v111029; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1030; CHECK-NEXT:    v_add_i32_e32 v11, vcc, v14, v151031; CHECK-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1032; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v17, v41033; CHECK-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1034; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v5, v91035; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1036; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v121037; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1038; CHECK-NEXT:    v_add_i32_e32 v11, vcc, v11, v161039; CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1040; CHECK-NEXT:    v_add_i32_e32 v12, vcc, v4, v181041; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1042; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v6, v51043; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v10, v91044; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v14, v111045; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v15, v41046; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v7, v51047; CHECK-NEXT:    v_cndmask_b32_e64 v5, 0, 1, vcc1048; CHECK-NEXT:    v_add_i32_e32 v6, vcc, v12, v61049; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1050; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v9, v51051; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v71052; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v13, v51053; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v19, v71054; CHECK-NEXT:    v_lshr_b64 v[4:5], v[4:5], 201055; CHECK-NEXT:    v_lshr_b64 v[6:7], v[6:7], 201056; CHECK-NEXT:    v_mul_lo_u32 v9, v4, v81057; CHECK-NEXT:    v_mul_lo_u32 v5, v5, v81058; CHECK-NEXT:    v_mul_hi_u32 v4, v4, v81059; CHECK-NEXT:    v_mul_lo_u32 v10, v6, v81060; CHECK-NEXT:    v_mul_lo_u32 v7, v7, v81061; CHECK-NEXT:    v_mul_hi_u32 v6, v6, v81062; CHECK-NEXT:    v_add_i32_e32 v4, vcc, v5, v41063; CHECK-NEXT:    v_add_i32_e32 v5, vcc, v7, v61064; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v0, v91065; CHECK-NEXT:    v_subb_u32_e32 v1, vcc, v1, v4, vcc1066; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v2, v101067; CHECK-NEXT:    v_subb_u32_e32 v3, vcc, v3, v5, vcc1068; CHECK-NEXT:    s_setpc_b64 s[30:31]1069  %result = urem <2 x i64> %num, <i64 1235195, i64 1235195>1070  ret <2 x i64> %result1071}1072 1073define i64 @v_urem_i64_pow2_shl_denom(i64 %x, i64 %y) {1074; CHECK-LABEL: v_urem_i64_pow2_shl_denom:1075; CHECK:       ; %bb.0:1076; CHECK-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1077; CHECK-NEXT:    v_mov_b32_e32 v3, v01078; CHECK-NEXT:    v_mov_b32_e32 v4, v11079; CHECK-NEXT:    v_mov_b32_e32 v0, 0x10001080; CHECK-NEXT:    v_mov_b32_e32 v1, 01081; CHECK-NEXT:    v_mov_b32_e32 v7, 01082; CHECK-NEXT:    v_lshl_b64 v[5:6], v[0:1], v21083; CHECK-NEXT:    v_or_b32_e32 v8, v4, v61084; CHECK-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[7:8]1085; CHECK-NEXT:    v_cvt_f32_u32_e32 v2, v51086; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr11087; CHECK-NEXT:    s_and_saveexec_b64 s[4:5], vcc1088; CHECK-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]1089; CHECK-NEXT:    s_cbranch_execnz .LBB7_31090; CHECK-NEXT:  ; %bb.1: ; %Flow1091; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]1092; CHECK-NEXT:    s_cbranch_execnz .LBB7_41093; CHECK-NEXT:  .LBB7_2:1094; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]1095; CHECK-NEXT:    s_setpc_b64 s[30:31]1096; CHECK-NEXT:  .LBB7_3:1097; CHECK-NEXT:    v_cvt_f32_u32_e32 v0, v61098; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, 0, v51099; CHECK-NEXT:    v_subb_u32_e32 v7, vcc, 0, v6, vcc1100; CHECK-NEXT:    v_mac_f32_e32 v2, 0x4f800000, v01101; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v21102; CHECK-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v01103; CHECK-NEXT:    v_mul_f32_e32 v2, 0x2f800000, v01104; CHECK-NEXT:    v_trunc_f32_e32 v2, v21105; CHECK-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v21106; CHECK-NEXT:    v_cvt_u32_f32_e32 v2, v21107; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v01108; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v21109; CHECK-NEXT:    v_mul_lo_u32 v9, v1, v01110; CHECK-NEXT:    v_mul_lo_u32 v10, v7, v01111; CHECK-NEXT:    v_mul_hi_u32 v11, v1, v01112; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v10, v81113; CHECK-NEXT:    v_mul_lo_u32 v10, v2, v91114; CHECK-NEXT:    v_mul_hi_u32 v12, v0, v91115; CHECK-NEXT:    v_mul_hi_u32 v9, v2, v91116; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v111117; CHECK-NEXT:    v_mul_lo_u32 v11, v0, v81118; CHECK-NEXT:    v_mul_lo_u32 v13, v2, v81119; CHECK-NEXT:    v_mul_hi_u32 v14, v0, v81120; CHECK-NEXT:    v_mul_hi_u32 v8, v2, v81121; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v10, v111122; CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1123; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v13, v91124; CHECK-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1125; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v10, v121126; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1127; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v141128; CHECK-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1129; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v11, v101130; CHECK-NEXT:    v_add_i32_e32 v11, vcc, v13, v121131; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v101132; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1133; CHECK-NEXT:    v_add_i32_e32 v10, vcc, v11, v101134; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v101135; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v91136; CHECK-NEXT:    v_addc_u32_e32 v2, vcc, v2, v8, vcc1137; CHECK-NEXT:    v_mul_lo_u32 v8, v1, v01138; CHECK-NEXT:    v_mul_lo_u32 v7, v7, v01139; CHECK-NEXT:    v_mul_hi_u32 v9, v1, v01140; CHECK-NEXT:    v_mul_lo_u32 v1, v1, v21141; CHECK-NEXT:    v_mul_lo_u32 v10, v2, v81142; CHECK-NEXT:    v_mul_hi_u32 v11, v0, v81143; CHECK-NEXT:    v_mul_hi_u32 v8, v2, v81144; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v7, v11145; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v91146; CHECK-NEXT:    v_mul_lo_u32 v7, v0, v11147; CHECK-NEXT:    v_mul_lo_u32 v9, v2, v11148; CHECK-NEXT:    v_mul_hi_u32 v12, v0, v11149; CHECK-NEXT:    v_mul_hi_u32 v1, v2, v11150; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v71151; CHECK-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1152; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v9, v81153; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1154; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v7, v111155; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1156; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v8, v121157; CHECK-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1158; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v10, v71159; CHECK-NEXT:    v_add_i32_e32 v9, vcc, v9, v111160; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v8, v71161; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1162; CHECK-NEXT:    v_add_i32_e32 v8, vcc, v9, v81163; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v81164; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v71165; CHECK-NEXT:    v_addc_u32_e32 v1, vcc, v2, v1, vcc1166; CHECK-NEXT:    v_mul_lo_u32 v2, v4, v01167; CHECK-NEXT:    v_mul_hi_u32 v7, v3, v01168; CHECK-NEXT:    v_mul_hi_u32 v0, v4, v01169; CHECK-NEXT:    v_mul_lo_u32 v8, v3, v11170; CHECK-NEXT:    v_mul_lo_u32 v9, v4, v11171; CHECK-NEXT:    v_mul_hi_u32 v10, v3, v11172; CHECK-NEXT:    v_mul_hi_u32 v1, v4, v11173; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v81174; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1175; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v9, v01176; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1177; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v2, v71178; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1179; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v101180; CHECK-NEXT:    v_cndmask_b32_e64 v7, 0, 1, vcc1181; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v8, v21182; CHECK-NEXT:    v_add_i32_e32 v7, vcc, v9, v71183; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v21184; CHECK-NEXT:    v_cndmask_b32_e64 v2, 0, 1, vcc1185; CHECK-NEXT:    v_add_i32_e32 v2, vcc, v7, v21186; CHECK-NEXT:    v_mul_lo_u32 v7, v5, v01187; CHECK-NEXT:    v_mul_lo_u32 v8, v6, v01188; CHECK-NEXT:    v_mul_hi_u32 v0, v5, v01189; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v1, v21190; CHECK-NEXT:    v_mul_lo_u32 v1, v5, v11191; CHECK-NEXT:    v_add_i32_e32 v1, vcc, v8, v11192; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v1, v01193; CHECK-NEXT:    v_sub_i32_e32 v1, vcc, v3, v71194; CHECK-NEXT:    v_subb_u32_e64 v2, s[4:5], v4, v0, vcc1195; CHECK-NEXT:    v_sub_i32_e64 v0, s[4:5], v4, v01196; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v1, v51197; CHECK-NEXT:    v_cndmask_b32_e64 v3, 0, -1, s[4:5]1198; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v61199; CHECK-NEXT:    v_cndmask_b32_e64 v4, 0, -1, s[4:5]1200; CHECK-NEXT:    v_subb_u32_e32 v0, vcc, v0, v6, vcc1201; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, v2, v61202; CHECK-NEXT:    v_cndmask_b32_e32 v3, v4, v3, vcc1203; CHECK-NEXT:    v_sub_i32_e32 v4, vcc, v1, v51204; CHECK-NEXT:    v_subbrev_u32_e64 v7, s[4:5], 0, v0, vcc1205; CHECK-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v51206; CHECK-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]1207; CHECK-NEXT:    v_subb_u32_e32 v0, vcc, v0, v6, vcc1208; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v61209; CHECK-NEXT:    v_cndmask_b32_e64 v9, 0, -1, vcc1210; CHECK-NEXT:    v_sub_i32_e32 v5, vcc, v4, v51211; CHECK-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc1212; CHECK-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v61213; CHECK-NEXT:    v_cndmask_b32_e32 v6, v9, v8, vcc1214; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61215; CHECK-NEXT:    v_cndmask_b32_e32 v4, v4, v5, vcc1216; CHECK-NEXT:    v_cndmask_b32_e32 v5, v7, v0, vcc1217; CHECK-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31218; CHECK-NEXT:    v_cndmask_b32_e32 v0, v1, v4, vcc1219; CHECK-NEXT:    v_cndmask_b32_e32 v1, v2, v5, vcc1220; CHECK-NEXT:    ; implicit-def: $vgpr21221; CHECK-NEXT:    ; implicit-def: $vgpr5_vgpr61222; CHECK-NEXT:    ; implicit-def: $vgpr31223; CHECK-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]1224; CHECK-NEXT:    s_cbranch_execz .LBB7_21225; CHECK-NEXT:  .LBB7_4:1226; CHECK-NEXT:    v_rcp_iflag_f32_e32 v0, v21227; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, 0, v51228; CHECK-NEXT:    v_mov_b32_e32 v1, 01229; CHECK-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v01230; CHECK-NEXT:    v_cvt_u32_f32_e32 v0, v01231; CHECK-NEXT:    v_mul_lo_u32 v2, v2, v01232; CHECK-NEXT:    v_mul_hi_u32 v2, v0, v21233; CHECK-NEXT:    v_add_i32_e32 v0, vcc, v0, v21234; CHECK-NEXT:    v_mul_hi_u32 v0, v3, v01235; CHECK-NEXT:    v_mul_lo_u32 v0, v0, v51236; CHECK-NEXT:    v_sub_i32_e32 v0, vcc, v3, v01237; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v0, v51238; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v51239; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc1240; CHECK-NEXT:    v_sub_i32_e32 v2, vcc, v0, v51241; CHECK-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v51242; CHECK-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc1243; CHECK-NEXT:    s_or_b64 exec, exec, s[4:5]1244; CHECK-NEXT:    s_setpc_b64 s[30:31]1245  %shl.y = shl i64 4096, %y1246  %r = urem i64 %x, %shl.y1247  ret i64 %r1248}1249 1250define <2 x i64> @v_urem_v2i64_pow2_shl_denom(<2 x i64> %x, <2 x i64> %y) {1251; GISEL-LABEL: v_urem_v2i64_pow2_shl_denom:1252; GISEL:       ; %bb.0:1253; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; GISEL-NEXT:    v_mov_b32_e32 v9, 0x10001255; GISEL-NEXT:    v_mov_b32_e32 v10, 01256; GISEL-NEXT:    v_lshl_b64 v[7:8], v[9:10], v41257; GISEL-NEXT:    v_lshl_b64 v[4:5], v[9:10], v61258; GISEL-NEXT:    v_cvt_f32_u32_e32 v6, v71259; GISEL-NEXT:    v_cvt_f32_u32_e32 v9, v81260; GISEL-NEXT:    v_mac_f32_e32 v6, 0x4f800000, v91261; GISEL-NEXT:    v_rcp_iflag_f32_e32 v6, v61262; GISEL-NEXT:    v_mul_f32_e32 v6, 0x5f7ffffc, v61263; GISEL-NEXT:    v_mul_f32_e32 v9, 0x2f800000, v61264; GISEL-NEXT:    v_trunc_f32_e32 v9, v91265; GISEL-NEXT:    v_mac_f32_e32 v6, 0xcf800000, v91266; GISEL-NEXT:    v_cvt_u32_f32_e32 v6, v61267; GISEL-NEXT:    v_cvt_u32_f32_e32 v9, v91268; GISEL-NEXT:    v_sub_i32_e32 v10, vcc, 0, v71269; GISEL-NEXT:    v_subb_u32_e32 v11, vcc, 0, v8, vcc1270; GISEL-NEXT:    v_mul_lo_u32 v12, v10, v61271; GISEL-NEXT:    v_mul_lo_u32 v13, v11, v61272; GISEL-NEXT:    v_mul_lo_u32 v14, v10, v91273; GISEL-NEXT:    v_mul_hi_u32 v15, v10, v61274; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141275; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v151276; GISEL-NEXT:    v_mul_lo_u32 v14, v9, v121277; GISEL-NEXT:    v_mul_lo_u32 v15, v6, v131278; GISEL-NEXT:    v_mul_hi_u32 v16, v6, v121279; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v151280; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1281; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v161282; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1283; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141284; GISEL-NEXT:    v_mul_lo_u32 v15, v9, v131285; GISEL-NEXT:    v_mul_hi_u32 v12, v9, v121286; GISEL-NEXT:    v_mul_hi_u32 v16, v6, v131287; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v15, v121288; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1289; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v161290; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1291; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v15, v161292; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v141293; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1294; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v15, v141295; GISEL-NEXT:    v_mul_hi_u32 v13, v9, v131296; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141297; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v121298; GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v13, vcc1299; GISEL-NEXT:    v_mul_lo_u32 v12, v10, v61300; GISEL-NEXT:    v_mul_lo_u32 v11, v11, v61301; GISEL-NEXT:    v_mul_lo_u32 v13, v10, v91302; GISEL-NEXT:    v_mul_hi_u32 v10, v10, v61303; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v131304; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v101305; GISEL-NEXT:    v_mul_lo_u32 v11, v9, v121306; GISEL-NEXT:    v_mul_lo_u32 v13, v6, v101307; GISEL-NEXT:    v_mul_hi_u32 v14, v6, v121308; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v131309; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1310; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v141311; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1312; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v13, v111313; GISEL-NEXT:    v_mul_lo_u32 v13, v9, v101314; GISEL-NEXT:    v_mul_hi_u32 v12, v9, v121315; GISEL-NEXT:    v_mul_hi_u32 v14, v6, v101316; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v121317; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1318; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v141319; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1320; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141321; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v12, v111322; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1323; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v121324; GISEL-NEXT:    v_mul_hi_u32 v10, v9, v101325; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v121326; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v111327; GISEL-NEXT:    v_addc_u32_e32 v9, vcc, v9, v10, vcc1328; GISEL-NEXT:    v_mul_lo_u32 v10, v1, v61329; GISEL-NEXT:    v_mul_lo_u32 v11, v0, v91330; GISEL-NEXT:    v_mul_hi_u32 v12, v0, v61331; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v111332; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1333; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v121334; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1335; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v101336; GISEL-NEXT:    v_mul_lo_u32 v11, v1, v91337; GISEL-NEXT:    v_mul_hi_u32 v6, v1, v61338; GISEL-NEXT:    v_mul_hi_u32 v12, v0, v91339; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v11, v61340; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1341; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v121342; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1343; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v121344; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v101345; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1346; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v101347; GISEL-NEXT:    v_mul_hi_u32 v9, v1, v91348; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v101349; GISEL-NEXT:    v_mul_lo_u32 v10, v7, v61350; GISEL-NEXT:    v_mul_lo_u32 v11, v8, v61351; GISEL-NEXT:    v_mul_lo_u32 v9, v7, v91352; GISEL-NEXT:    v_mul_hi_u32 v6, v7, v61353; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v11, v91354; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v9, v61355; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v0, v101356; GISEL-NEXT:    v_subb_u32_e64 v9, s[4:5], v1, v6, vcc1357; GISEL-NEXT:    v_sub_i32_e64 v1, s[4:5], v1, v61358; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v81359; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1360; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v0, v71361; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, s[4:5]1362; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v9, v81363; GISEL-NEXT:    v_cndmask_b32_e64 v6, v6, v10, s[4:5]1364; GISEL-NEXT:    v_sub_i32_e64 v10, s[4:5], v0, v71365; GISEL-NEXT:    v_subb_u32_e32 v1, vcc, v1, v8, vcc1366; GISEL-NEXT:    v_subbrev_u32_e64 v11, vcc, 0, v1, s[4:5]1367; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v11, v81368; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, -1, vcc1369; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v10, v71370; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, -1, vcc1371; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v11, v81372; GISEL-NEXT:    v_cndmask_b32_e32 v12, v12, v13, vcc1373; GISEL-NEXT:    v_sub_i32_e32 v7, vcc, v10, v71374; GISEL-NEXT:    v_subb_u32_e64 v1, s[4:5], v1, v8, s[4:5]1375; GISEL-NEXT:    v_subbrev_u32_e32 v1, vcc, 0, v1, vcc1376; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v121377; GISEL-NEXT:    v_cndmask_b32_e32 v7, v10, v7, vcc1378; GISEL-NEXT:    v_cndmask_b32_e32 v1, v11, v1, vcc1379; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61380; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v7, vcc1381; GISEL-NEXT:    v_cndmask_b32_e32 v1, v9, v1, vcc1382; GISEL-NEXT:    v_cvt_f32_u32_e32 v6, v41383; GISEL-NEXT:    v_cvt_f32_u32_e32 v7, v51384; GISEL-NEXT:    v_mac_f32_e32 v6, 0x4f800000, v71385; GISEL-NEXT:    v_rcp_iflag_f32_e32 v6, v61386; GISEL-NEXT:    v_mul_f32_e32 v6, 0x5f7ffffc, v61387; GISEL-NEXT:    v_mul_f32_e32 v7, 0x2f800000, v61388; GISEL-NEXT:    v_trunc_f32_e32 v7, v71389; GISEL-NEXT:    v_mac_f32_e32 v6, 0xcf800000, v71390; GISEL-NEXT:    v_cvt_u32_f32_e32 v6, v61391; GISEL-NEXT:    v_cvt_u32_f32_e32 v7, v71392; GISEL-NEXT:    v_sub_i32_e32 v8, vcc, 0, v41393; GISEL-NEXT:    v_subb_u32_e32 v9, vcc, 0, v5, vcc1394; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v61395; GISEL-NEXT:    v_mul_lo_u32 v11, v9, v61396; GISEL-NEXT:    v_mul_lo_u32 v12, v8, v71397; GISEL-NEXT:    v_mul_hi_u32 v13, v8, v61398; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v121399; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v131400; GISEL-NEXT:    v_mul_lo_u32 v12, v7, v101401; GISEL-NEXT:    v_mul_lo_u32 v13, v6, v111402; GISEL-NEXT:    v_mul_hi_u32 v14, v6, v101403; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v131404; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1405; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v141406; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1407; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v121408; GISEL-NEXT:    v_mul_lo_u32 v13, v7, v111409; GISEL-NEXT:    v_mul_hi_u32 v10, v7, v101410; GISEL-NEXT:    v_mul_hi_u32 v14, v6, v111411; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v13, v101412; GISEL-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1413; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v141414; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1415; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v141416; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v121417; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1418; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v13, v121419; GISEL-NEXT:    v_mul_hi_u32 v11, v7, v111420; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v121421; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v101422; GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v11, vcc1423; GISEL-NEXT:    v_mul_lo_u32 v10, v8, v61424; GISEL-NEXT:    v_mul_lo_u32 v9, v9, v61425; GISEL-NEXT:    v_mul_lo_u32 v11, v8, v71426; GISEL-NEXT:    v_mul_hi_u32 v8, v8, v61427; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v111428; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v81429; GISEL-NEXT:    v_mul_lo_u32 v9, v7, v101430; GISEL-NEXT:    v_mul_lo_u32 v11, v6, v81431; GISEL-NEXT:    v_mul_hi_u32 v12, v6, v101432; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v111433; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1434; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v121435; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1436; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v11, v91437; GISEL-NEXT:    v_mul_lo_u32 v11, v7, v81438; GISEL-NEXT:    v_mul_hi_u32 v10, v7, v101439; GISEL-NEXT:    v_mul_hi_u32 v12, v6, v81440; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v101441; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1442; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v121443; GISEL-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1444; GISEL-NEXT:    v_add_i32_e32 v11, vcc, v11, v121445; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v91446; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1447; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v11, v101448; GISEL-NEXT:    v_mul_hi_u32 v8, v7, v81449; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v101450; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v91451; GISEL-NEXT:    v_addc_u32_e32 v7, vcc, v7, v8, vcc1452; GISEL-NEXT:    v_mul_lo_u32 v8, v3, v61453; GISEL-NEXT:    v_mul_lo_u32 v9, v2, v71454; GISEL-NEXT:    v_mul_hi_u32 v10, v2, v61455; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v91456; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1457; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v101458; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1459; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v81460; GISEL-NEXT:    v_mul_lo_u32 v9, v3, v71461; GISEL-NEXT:    v_mul_hi_u32 v6, v3, v61462; GISEL-NEXT:    v_mul_hi_u32 v10, v2, v71463; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v9, v61464; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc1465; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v101466; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, vcc1467; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v9, v101468; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v81469; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1470; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v9, v81471; GISEL-NEXT:    v_mul_hi_u32 v7, v3, v71472; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v81473; GISEL-NEXT:    v_mul_lo_u32 v8, v4, v61474; GISEL-NEXT:    v_mul_lo_u32 v9, v5, v61475; GISEL-NEXT:    v_mul_lo_u32 v7, v4, v71476; GISEL-NEXT:    v_mul_hi_u32 v6, v4, v61477; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v9, v71478; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v7, v61479; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v2, v81480; GISEL-NEXT:    v_subb_u32_e64 v7, s[4:5], v3, v6, vcc1481; GISEL-NEXT:    v_sub_i32_e64 v3, s[4:5], v3, v61482; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v7, v51483; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1484; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v2, v41485; GISEL-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]1486; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], v7, v51487; GISEL-NEXT:    v_cndmask_b32_e64 v6, v6, v8, s[4:5]1488; GISEL-NEXT:    v_sub_i32_e64 v8, s[4:5], v2, v41489; GISEL-NEXT:    v_subb_u32_e32 v3, vcc, v3, v5, vcc1490; GISEL-NEXT:    v_subbrev_u32_e64 v9, vcc, 0, v3, s[4:5]1491; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v9, v51492; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, -1, vcc1493; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v8, v41494; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, vcc1495; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, v9, v51496; GISEL-NEXT:    v_cndmask_b32_e32 v10, v10, v11, vcc1497; GISEL-NEXT:    v_sub_i32_e32 v4, vcc, v8, v41498; GISEL-NEXT:    v_subb_u32_e64 v3, s[4:5], v3, v5, s[4:5]1499; GISEL-NEXT:    v_subbrev_u32_e32 v3, vcc, 0, v3, vcc1500; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v101501; GISEL-NEXT:    v_cndmask_b32_e32 v4, v8, v4, vcc1502; GISEL-NEXT:    v_cndmask_b32_e32 v3, v9, v3, vcc1503; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v61504; GISEL-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1505; GISEL-NEXT:    v_cndmask_b32_e32 v3, v7, v3, vcc1506; GISEL-NEXT:    s_setpc_b64 s[30:31]1507;1508; CGP-LABEL: v_urem_v2i64_pow2_shl_denom:1509; CGP:       ; %bb.0:1510; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1511; CGP-NEXT:    v_mov_b32_e32 v8, v01512; CGP-NEXT:    v_mov_b32_e32 v9, v11513; CGP-NEXT:    v_mov_b32_e32 v5, v21514; CGP-NEXT:    v_mov_b32_e32 v7, v31515; CGP-NEXT:    v_mov_b32_e32 v10, 0x10001516; CGP-NEXT:    v_mov_b32_e32 v11, 01517; CGP-NEXT:    v_mov_b32_e32 v0, 01518; CGP-NEXT:    v_lshl_b64 v[2:3], v[10:11], v41519; CGP-NEXT:    v_or_b32_e32 v1, v9, v31520; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1521; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v21522; CGP-NEXT:    ; implicit-def: $vgpr0_vgpr11523; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc1524; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]1525; CGP-NEXT:    s_cbranch_execz .LBB8_21526; CGP-NEXT:  ; %bb.1:1527; CGP-NEXT:    v_cvt_f32_u32_e32 v0, v31528; CGP-NEXT:    v_sub_i32_e32 v1, vcc, 0, v21529; CGP-NEXT:    v_subb_u32_e32 v12, vcc, 0, v3, vcc1530; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v01531; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v41532; CGP-NEXT:    v_mul_f32_e32 v0, 0x5f7ffffc, v01533; CGP-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v01534; CGP-NEXT:    v_trunc_f32_e32 v4, v41535; CGP-NEXT:    v_mac_f32_e32 v0, 0xcf800000, v41536; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v41537; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v01538; CGP-NEXT:    v_mul_lo_u32 v13, v1, v41539; CGP-NEXT:    v_mul_lo_u32 v14, v1, v01540; CGP-NEXT:    v_mul_lo_u32 v15, v12, v01541; CGP-NEXT:    v_mul_hi_u32 v16, v1, v01542; CGP-NEXT:    v_add_i32_e32 v13, vcc, v15, v131543; CGP-NEXT:    v_mul_lo_u32 v15, v4, v141544; CGP-NEXT:    v_mul_hi_u32 v17, v0, v141545; CGP-NEXT:    v_mul_hi_u32 v14, v4, v141546; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v161547; CGP-NEXT:    v_mul_lo_u32 v16, v0, v131548; CGP-NEXT:    v_mul_lo_u32 v18, v4, v131549; CGP-NEXT:    v_mul_hi_u32 v19, v0, v131550; CGP-NEXT:    v_mul_hi_u32 v13, v4, v131551; CGP-NEXT:    v_add_i32_e32 v15, vcc, v15, v161552; CGP-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1553; CGP-NEXT:    v_add_i32_e32 v14, vcc, v18, v141554; CGP-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc1555; CGP-NEXT:    v_add_i32_e32 v15, vcc, v15, v171556; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1557; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v191558; CGP-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc1559; CGP-NEXT:    v_add_i32_e32 v15, vcc, v16, v151560; CGP-NEXT:    v_add_i32_e32 v16, vcc, v18, v171561; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v151562; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1563; CGP-NEXT:    v_add_i32_e32 v15, vcc, v16, v151564; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v151565; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v141566; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v4, v13, vcc1567; CGP-NEXT:    v_mul_lo_u32 v13, v1, v01568; CGP-NEXT:    v_mul_lo_u32 v12, v12, v01569; CGP-NEXT:    v_mul_hi_u32 v14, v1, v01570; CGP-NEXT:    v_mul_lo_u32 v1, v1, v41571; CGP-NEXT:    v_mul_lo_u32 v15, v4, v131572; CGP-NEXT:    v_mul_hi_u32 v16, v0, v131573; CGP-NEXT:    v_mul_hi_u32 v13, v4, v131574; CGP-NEXT:    v_add_i32_e32 v1, vcc, v12, v11575; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v141576; CGP-NEXT:    v_mul_lo_u32 v12, v0, v11577; CGP-NEXT:    v_mul_lo_u32 v14, v4, v11578; CGP-NEXT:    v_mul_hi_u32 v17, v0, v11579; CGP-NEXT:    v_mul_hi_u32 v1, v4, v11580; CGP-NEXT:    v_add_i32_e32 v12, vcc, v15, v121581; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1582; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131583; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1584; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v161585; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1586; CGP-NEXT:    v_add_i32_e32 v13, vcc, v13, v171587; CGP-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1588; CGP-NEXT:    v_add_i32_e32 v12, vcc, v15, v121589; CGP-NEXT:    v_add_i32_e32 v14, vcc, v14, v161590; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v121591; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1592; CGP-NEXT:    v_add_i32_e32 v13, vcc, v14, v131593; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v131594; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v121595; CGP-NEXT:    v_addc_u32_e32 v1, vcc, v4, v1, vcc1596; CGP-NEXT:    v_mul_lo_u32 v4, v9, v01597; CGP-NEXT:    v_mul_hi_u32 v12, v8, v01598; CGP-NEXT:    v_mul_hi_u32 v0, v9, v01599; CGP-NEXT:    v_mul_lo_u32 v13, v8, v11600; CGP-NEXT:    v_mul_lo_u32 v14, v9, v11601; CGP-NEXT:    v_mul_hi_u32 v15, v8, v11602; CGP-NEXT:    v_mul_hi_u32 v1, v9, v11603; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v131604; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1605; CGP-NEXT:    v_add_i32_e32 v0, vcc, v14, v01606; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1607; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v121608; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1609; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v151610; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1611; CGP-NEXT:    v_add_i32_e32 v4, vcc, v13, v41612; CGP-NEXT:    v_add_i32_e32 v12, vcc, v14, v121613; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v41614; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1615; CGP-NEXT:    v_add_i32_e32 v4, vcc, v12, v41616; CGP-NEXT:    v_mul_lo_u32 v12, v2, v01617; CGP-NEXT:    v_mul_lo_u32 v13, v3, v01618; CGP-NEXT:    v_mul_hi_u32 v0, v2, v01619; CGP-NEXT:    v_add_i32_e32 v1, vcc, v1, v41620; CGP-NEXT:    v_mul_lo_u32 v1, v2, v11621; CGP-NEXT:    v_add_i32_e32 v1, vcc, v13, v11622; CGP-NEXT:    v_add_i32_e32 v0, vcc, v1, v01623; CGP-NEXT:    v_sub_i32_e32 v1, vcc, v8, v121624; CGP-NEXT:    v_subb_u32_e64 v4, s[4:5], v9, v0, vcc1625; CGP-NEXT:    v_sub_i32_e64 v0, s[4:5], v9, v01626; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v1, v21627; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]1628; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v31629; CGP-NEXT:    v_cndmask_b32_e64 v9, 0, -1, s[4:5]1630; CGP-NEXT:    v_subb_u32_e32 v0, vcc, v0, v3, vcc1631; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v31632; CGP-NEXT:    v_cndmask_b32_e32 v8, v9, v8, vcc1633; CGP-NEXT:    v_sub_i32_e32 v9, vcc, v1, v21634; CGP-NEXT:    v_subbrev_u32_e64 v12, s[4:5], 0, v0, vcc1635; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v9, v21636; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, -1, s[4:5]1637; CGP-NEXT:    v_subb_u32_e32 v0, vcc, v0, v3, vcc1638; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v12, v31639; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, -1, vcc1640; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v9, v21641; CGP-NEXT:    v_subbrev_u32_e32 v0, vcc, 0, v0, vcc1642; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v12, v31643; CGP-NEXT:    v_cndmask_b32_e32 v3, v14, v13, vcc1644; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v31645; CGP-NEXT:    v_cndmask_b32_e32 v2, v9, v2, vcc1646; CGP-NEXT:    v_cndmask_b32_e32 v3, v12, v0, vcc1647; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v81648; CGP-NEXT:    v_cndmask_b32_e32 v0, v1, v2, vcc1649; CGP-NEXT:    v_cndmask_b32_e32 v1, v4, v3, vcc1650; CGP-NEXT:    ; implicit-def: $vgpr41651; CGP-NEXT:    ; implicit-def: $vgpr2_vgpr31652; CGP-NEXT:    ; implicit-def: $vgpr81653; CGP-NEXT:  .LBB8_2: ; %Flow11654; CGP-NEXT:    s_or_saveexec_b64 s[4:5], s[6:7]1655; CGP-NEXT:    v_lshl_b64 v[9:10], v[10:11], v61656; CGP-NEXT:    s_xor_b64 exec, exec, s[4:5]1657; CGP-NEXT:    s_cbranch_execz .LBB8_41658; CGP-NEXT:  ; %bb.3:1659; CGP-NEXT:    v_rcp_iflag_f32_e32 v0, v41660; CGP-NEXT:    v_sub_i32_e32 v3, vcc, 0, v21661; CGP-NEXT:    v_mov_b32_e32 v1, 01662; CGP-NEXT:    v_mul_f32_e32 v0, 0x4f7ffffe, v01663; CGP-NEXT:    v_cvt_u32_f32_e32 v0, v01664; CGP-NEXT:    v_mul_lo_u32 v3, v3, v01665; CGP-NEXT:    v_mul_hi_u32 v3, v0, v31666; CGP-NEXT:    v_add_i32_e32 v0, vcc, v0, v31667; CGP-NEXT:    v_mul_hi_u32 v0, v8, v01668; CGP-NEXT:    v_mul_lo_u32 v0, v0, v21669; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v8, v01670; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v0, v21671; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v21672; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc1673; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v0, v21674; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v21675; CGP-NEXT:    v_cndmask_b32_e32 v0, v0, v3, vcc1676; CGP-NEXT:  .LBB8_4:1677; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]1678; CGP-NEXT:    v_or_b32_e32 v3, v7, v101679; CGP-NEXT:    v_mov_b32_e32 v2, 01680; CGP-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]1681; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v91682; CGP-NEXT:    ; implicit-def: $vgpr2_vgpr31683; CGP-NEXT:    s_and_saveexec_b64 s[4:5], vcc1684; CGP-NEXT:    s_xor_b64 s[6:7], exec, s[4:5]1685; CGP-NEXT:    s_cbranch_execnz .LBB8_71686; CGP-NEXT:  ; %bb.5: ; %Flow1687; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]1688; CGP-NEXT:    s_cbranch_execnz .LBB8_81689; CGP-NEXT:  .LBB8_6:1690; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]1691; CGP-NEXT:    s_setpc_b64 s[30:31]1692; CGP-NEXT:  .LBB8_7:1693; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v101694; CGP-NEXT:    v_sub_i32_e32 v3, vcc, 0, v91695; CGP-NEXT:    v_subb_u32_e32 v6, vcc, 0, v10, vcc1696; CGP-NEXT:    v_mac_f32_e32 v4, 0x4f800000, v21697; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v41698; CGP-NEXT:    v_mul_f32_e32 v2, 0x5f7ffffc, v21699; CGP-NEXT:    v_mul_f32_e32 v4, 0x2f800000, v21700; CGP-NEXT:    v_trunc_f32_e32 v4, v41701; CGP-NEXT:    v_mac_f32_e32 v2, 0xcf800000, v41702; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v41703; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v21704; CGP-NEXT:    v_mul_lo_u32 v8, v3, v41705; CGP-NEXT:    v_mul_lo_u32 v11, v3, v21706; CGP-NEXT:    v_mul_lo_u32 v12, v6, v21707; CGP-NEXT:    v_mul_hi_u32 v13, v3, v21708; CGP-NEXT:    v_add_i32_e32 v8, vcc, v12, v81709; CGP-NEXT:    v_mul_lo_u32 v12, v4, v111710; CGP-NEXT:    v_mul_hi_u32 v14, v2, v111711; CGP-NEXT:    v_mul_hi_u32 v11, v4, v111712; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v131713; CGP-NEXT:    v_mul_lo_u32 v13, v2, v81714; CGP-NEXT:    v_mul_lo_u32 v15, v4, v81715; CGP-NEXT:    v_mul_hi_u32 v16, v2, v81716; CGP-NEXT:    v_mul_hi_u32 v8, v4, v81717; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v131718; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1719; CGP-NEXT:    v_add_i32_e32 v11, vcc, v15, v111720; CGP-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1721; CGP-NEXT:    v_add_i32_e32 v12, vcc, v12, v141722; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1723; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v161724; CGP-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1725; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v121726; CGP-NEXT:    v_add_i32_e32 v13, vcc, v15, v141727; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v121728; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1729; CGP-NEXT:    v_add_i32_e32 v12, vcc, v13, v121730; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v121731; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v111732; CGP-NEXT:    v_addc_u32_e32 v4, vcc, v4, v8, vcc1733; CGP-NEXT:    v_mul_lo_u32 v8, v3, v21734; CGP-NEXT:    v_mul_lo_u32 v6, v6, v21735; CGP-NEXT:    v_mul_hi_u32 v11, v3, v21736; CGP-NEXT:    v_mul_lo_u32 v3, v3, v41737; CGP-NEXT:    v_mul_lo_u32 v12, v4, v81738; CGP-NEXT:    v_mul_hi_u32 v13, v2, v81739; CGP-NEXT:    v_mul_hi_u32 v8, v4, v81740; CGP-NEXT:    v_add_i32_e32 v3, vcc, v6, v31741; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v111742; CGP-NEXT:    v_mul_lo_u32 v6, v2, v31743; CGP-NEXT:    v_mul_lo_u32 v11, v4, v31744; CGP-NEXT:    v_mul_hi_u32 v14, v2, v31745; CGP-NEXT:    v_mul_hi_u32 v3, v4, v31746; CGP-NEXT:    v_add_i32_e32 v6, vcc, v12, v61747; CGP-NEXT:    v_cndmask_b32_e64 v12, 0, 1, vcc1748; CGP-NEXT:    v_add_i32_e32 v8, vcc, v11, v81749; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1750; CGP-NEXT:    v_add_i32_e32 v6, vcc, v6, v131751; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1752; CGP-NEXT:    v_add_i32_e32 v8, vcc, v8, v141753; CGP-NEXT:    v_cndmask_b32_e64 v13, 0, 1, vcc1754; CGP-NEXT:    v_add_i32_e32 v6, vcc, v12, v61755; CGP-NEXT:    v_add_i32_e32 v11, vcc, v11, v131756; CGP-NEXT:    v_add_i32_e32 v6, vcc, v8, v61757; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1758; CGP-NEXT:    v_add_i32_e32 v8, vcc, v11, v81759; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v81760; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v61761; CGP-NEXT:    v_addc_u32_e32 v3, vcc, v4, v3, vcc1762; CGP-NEXT:    v_mul_lo_u32 v4, v7, v21763; CGP-NEXT:    v_mul_hi_u32 v6, v5, v21764; CGP-NEXT:    v_mul_hi_u32 v2, v7, v21765; CGP-NEXT:    v_mul_lo_u32 v8, v5, v31766; CGP-NEXT:    v_mul_lo_u32 v11, v7, v31767; CGP-NEXT:    v_mul_hi_u32 v12, v5, v31768; CGP-NEXT:    v_mul_hi_u32 v3, v7, v31769; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v81770; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, 1, vcc1771; CGP-NEXT:    v_add_i32_e32 v2, vcc, v11, v21772; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, 1, vcc1773; CGP-NEXT:    v_add_i32_e32 v4, vcc, v4, v61774; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1775; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v121776; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1777; CGP-NEXT:    v_add_i32_e32 v4, vcc, v8, v41778; CGP-NEXT:    v_add_i32_e32 v6, vcc, v11, v61779; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v41780; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc1781; CGP-NEXT:    v_add_i32_e32 v4, vcc, v6, v41782; CGP-NEXT:    v_mul_lo_u32 v6, v9, v21783; CGP-NEXT:    v_mul_lo_u32 v8, v10, v21784; CGP-NEXT:    v_mul_hi_u32 v2, v9, v21785; CGP-NEXT:    v_add_i32_e32 v3, vcc, v3, v41786; CGP-NEXT:    v_mul_lo_u32 v3, v9, v31787; CGP-NEXT:    v_add_i32_e32 v3, vcc, v8, v31788; CGP-NEXT:    v_add_i32_e32 v2, vcc, v3, v21789; CGP-NEXT:    v_sub_i32_e32 v3, vcc, v5, v61790; CGP-NEXT:    v_subb_u32_e64 v4, s[4:5], v7, v2, vcc1791; CGP-NEXT:    v_sub_i32_e64 v2, s[4:5], v7, v21792; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v3, v91793; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, -1, s[4:5]1794; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v4, v101795; CGP-NEXT:    v_cndmask_b32_e64 v6, 0, -1, s[4:5]1796; CGP-NEXT:    v_subb_u32_e32 v2, vcc, v2, v10, vcc1797; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v101798; CGP-NEXT:    v_cndmask_b32_e32 v5, v6, v5, vcc1799; CGP-NEXT:    v_sub_i32_e32 v6, vcc, v3, v91800; CGP-NEXT:    v_subbrev_u32_e64 v7, s[4:5], 0, v2, vcc1801; CGP-NEXT:    v_cmp_ge_u32_e64 s[4:5], v6, v91802; CGP-NEXT:    v_cndmask_b32_e64 v8, 0, -1, s[4:5]1803; CGP-NEXT:    v_subb_u32_e32 v2, vcc, v2, v10, vcc1804; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v7, v101805; CGP-NEXT:    v_cndmask_b32_e64 v11, 0, -1, vcc1806; CGP-NEXT:    v_sub_i32_e32 v9, vcc, v6, v91807; CGP-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1808; CGP-NEXT:    v_cmp_eq_u32_e32 vcc, v7, v101809; CGP-NEXT:    v_cndmask_b32_e32 v8, v11, v8, vcc1810; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v81811; CGP-NEXT:    v_cndmask_b32_e32 v6, v6, v9, vcc1812; CGP-NEXT:    v_cndmask_b32_e32 v7, v7, v2, vcc1813; CGP-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v51814; CGP-NEXT:    v_cndmask_b32_e32 v2, v3, v6, vcc1815; CGP-NEXT:    v_cndmask_b32_e32 v3, v4, v7, vcc1816; CGP-NEXT:    ; implicit-def: $vgpr41817; CGP-NEXT:    ; implicit-def: $vgpr9_vgpr101818; CGP-NEXT:    ; implicit-def: $vgpr51819; CGP-NEXT:    s_andn2_saveexec_b64 s[4:5], s[6:7]1820; CGP-NEXT:    s_cbranch_execz .LBB8_61821; CGP-NEXT:  .LBB8_8:1822; CGP-NEXT:    v_rcp_iflag_f32_e32 v2, v41823; CGP-NEXT:    v_sub_i32_e32 v4, vcc, 0, v91824; CGP-NEXT:    v_mov_b32_e32 v3, 01825; CGP-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v21826; CGP-NEXT:    v_cvt_u32_f32_e32 v2, v21827; CGP-NEXT:    v_mul_lo_u32 v4, v4, v21828; CGP-NEXT:    v_mul_hi_u32 v4, v2, v41829; CGP-NEXT:    v_add_i32_e32 v2, vcc, v2, v41830; CGP-NEXT:    v_mul_hi_u32 v2, v5, v21831; CGP-NEXT:    v_mul_lo_u32 v2, v2, v91832; CGP-NEXT:    v_sub_i32_e32 v2, vcc, v5, v21833; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v91834; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v91835; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1836; CGP-NEXT:    v_sub_i32_e32 v4, vcc, v2, v91837; CGP-NEXT:    v_cmp_ge_u32_e32 vcc, v2, v91838; CGP-NEXT:    v_cndmask_b32_e32 v2, v2, v4, vcc1839; CGP-NEXT:    s_or_b64 exec, exec, s[4:5]1840; CGP-NEXT:    s_setpc_b64 s[30:31]1841  %shl.y = shl <2 x i64> <i64 4096, i64 4096>, %y1842  %r = urem <2 x i64> %x, %shl.y1843  ret <2 x i64> %r1844}1845 1846define i64 @v_urem_i64_24bit(i64 %num, i64 %den) {1847; GISEL-LABEL: v_urem_i64_24bit:1848; GISEL:       ; %bb.0:1849; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1850; GISEL-NEXT:    v_and_b32_e32 v0, 0xffffff, v01851; GISEL-NEXT:    v_and_b32_e32 v1, 0xffffff, v21852; GISEL-NEXT:    v_cvt_f32_u32_e32 v2, v11853; GISEL-NEXT:    v_sub_i32_e32 v3, vcc, 0, v11854; GISEL-NEXT:    v_rcp_iflag_f32_e32 v2, v21855; GISEL-NEXT:    v_mul_f32_e32 v2, 0x4f7ffffe, v21856; GISEL-NEXT:    v_cvt_u32_f32_e32 v2, v21857; GISEL-NEXT:    v_mul_lo_u32 v3, v3, v21858; GISEL-NEXT:    v_mul_hi_u32 v3, v2, v31859; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v31860; GISEL-NEXT:    v_mul_hi_u32 v2, v0, v21861; GISEL-NEXT:    v_mul_lo_u32 v2, v2, v11862; GISEL-NEXT:    v_sub_i32_e32 v0, vcc, v0, v21863; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v0, v11864; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v11865; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc1866; GISEL-NEXT:    v_sub_i32_e32 v2, vcc, v0, v11867; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v0, v11868; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v2, vcc1869; GISEL-NEXT:    v_mov_b32_e32 v1, 01870; GISEL-NEXT:    s_setpc_b64 s[30:31]1871;1872; CGP-LABEL: v_urem_i64_24bit:1873; CGP:       ; %bb.0:1874; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1875; CGP-NEXT:    v_and_b32_e32 v0, 0xffffff, v01876; CGP-NEXT:    v_and_b32_e32 v1, 0xffffff, v21877; CGP-NEXT:    v_cvt_f32_u32_e32 v2, v01878; CGP-NEXT:    v_cvt_f32_u32_e32 v3, v11879; CGP-NEXT:    v_rcp_f32_e32 v4, v31880; CGP-NEXT:    v_mul_f32_e32 v4, v2, v41881; CGP-NEXT:    v_trunc_f32_e32 v4, v41882; CGP-NEXT:    v_mad_f32 v2, -v4, v3, v21883; CGP-NEXT:    v_cvt_u32_f32_e32 v4, v41884; CGP-NEXT:    v_cmp_ge_f32_e64 s[4:5], |v2|, v31885; CGP-NEXT:    v_cndmask_b32_e64 v2, 0, 1, s[4:5]1886; CGP-NEXT:    v_add_i32_e32 v2, vcc, v4, v21887; CGP-NEXT:    v_mul_lo_u32 v1, v2, v11888; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v0, v11889; CGP-NEXT:    v_and_b32_e32 v0, 0xffffff, v01890; CGP-NEXT:    v_mov_b32_e32 v1, 01891; CGP-NEXT:    s_setpc_b64 s[30:31]1892  %num.mask = and i64 %num, 167772151893  %den.mask = and i64 %den, 167772151894  %result = urem i64 %num.mask, %den.mask1895  ret i64 %result1896}1897 1898define <2 x i64> @v_urem_v2i64_24bit(<2 x i64> %num, <2 x i64> %den) {1899; GISEL-LABEL: v_urem_v2i64_24bit:1900; GISEL:       ; %bb.0:1901; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1902; GISEL-NEXT:    v_and_b32_e32 v3, 0xffffff, v41903; GISEL-NEXT:    v_and_b32_e32 v1, 0xffffff, v61904; GISEL-NEXT:    v_cvt_f32_ubyte0_e32 v6, 01905; GISEL-NEXT:    v_cvt_f32_u32_e32 v7, v31906; GISEL-NEXT:    v_sub_i32_e32 v4, vcc, 0, v31907; GISEL-NEXT:    v_subb_u32_e64 v5, s[4:5], 0, 0, vcc1908; GISEL-NEXT:    v_cvt_f32_u32_e32 v8, v11909; GISEL-NEXT:    v_sub_i32_e32 v9, vcc, 0, v11910; GISEL-NEXT:    v_subb_u32_e64 v10, s[4:5], 0, 0, vcc1911; GISEL-NEXT:    v_mac_f32_e32 v7, 0x4f800000, v61912; GISEL-NEXT:    v_mac_f32_e32 v8, 0x4f800000, v61913; GISEL-NEXT:    v_rcp_iflag_f32_e32 v6, v71914; GISEL-NEXT:    v_rcp_iflag_f32_e32 v7, v81915; GISEL-NEXT:    v_mul_f32_e32 v6, 0x5f7ffffc, v61916; GISEL-NEXT:    v_mul_f32_e32 v7, 0x5f7ffffc, v71917; GISEL-NEXT:    v_mul_f32_e32 v8, 0x2f800000, v61918; GISEL-NEXT:    v_mul_f32_e32 v11, 0x2f800000, v71919; GISEL-NEXT:    v_trunc_f32_e32 v8, v81920; GISEL-NEXT:    v_trunc_f32_e32 v11, v111921; GISEL-NEXT:    v_mac_f32_e32 v6, 0xcf800000, v81922; GISEL-NEXT:    v_cvt_u32_f32_e32 v8, v81923; GISEL-NEXT:    v_mac_f32_e32 v7, 0xcf800000, v111924; GISEL-NEXT:    v_cvt_u32_f32_e32 v11, v111925; GISEL-NEXT:    v_cvt_u32_f32_e32 v12, v61926; GISEL-NEXT:    v_mul_lo_u32 v6, v4, v81927; GISEL-NEXT:    v_cvt_u32_f32_e32 v7, v71928; GISEL-NEXT:    v_mul_lo_u32 v13, v9, v111929; GISEL-NEXT:    v_mul_lo_u32 v14, v4, v121930; GISEL-NEXT:    v_mul_lo_u32 v15, v5, v121931; GISEL-NEXT:    v_mul_hi_u32 v16, v4, v121932; GISEL-NEXT:    v_mul_lo_u32 v17, v9, v71933; GISEL-NEXT:    v_mul_lo_u32 v18, v10, v71934; GISEL-NEXT:    v_mul_hi_u32 v19, v9, v71935; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v15, v61936; GISEL-NEXT:    v_mul_lo_u32 v15, v8, v141937; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v18, v131938; GISEL-NEXT:    v_mul_hi_u32 v18, v12, v141939; GISEL-NEXT:    v_mul_hi_u32 v14, v8, v141940; GISEL-NEXT:    v_add_i32_e32 v16, vcc, v6, v161941; GISEL-NEXT:    v_mul_lo_u32 v6, v12, v161942; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v15, v61943; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, vcc1944; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v181945; GISEL-NEXT:    v_mul_lo_u32 v6, v11, v171946; GISEL-NEXT:    v_mul_hi_u32 v18, v7, v171947; GISEL-NEXT:    v_mul_hi_u32 v17, v11, v171948; GISEL-NEXT:    v_add_i32_e64 v13, s[4:5], v13, v191949; GISEL-NEXT:    v_mul_lo_u32 v19, v7, v131950; GISEL-NEXT:    v_add_i32_e64 v6, s[4:5], v6, v191951; GISEL-NEXT:    v_cndmask_b32_e64 v19, 0, 1, s[4:5]1952; GISEL-NEXT:    v_add_i32_e64 v6, s[4:5], v6, v181953; GISEL-NEXT:    v_mul_lo_u32 v6, v8, v161954; GISEL-NEXT:    v_mul_lo_u32 v18, v11, v131955; GISEL-NEXT:    v_add_i32_e64 v17, s[6:7], v18, v171956; GISEL-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc1957; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v15, v181958; GISEL-NEXT:    v_mul_hi_u32 v18, v12, v161959; GISEL-NEXT:    v_add_i32_e32 v6, vcc, v6, v141960; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc1961; GISEL-NEXT:    v_add_i32_e32 v18, vcc, v6, v181962; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1963; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v61964; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, s[4:5]1965; GISEL-NEXT:    v_add_i32_e32 v19, vcc, v19, v61966; GISEL-NEXT:    v_mul_hi_u32 v6, v7, v131967; GISEL-NEXT:    v_cndmask_b32_e64 v20, 0, 1, s[6:7]1968; GISEL-NEXT:    v_add_i32_e32 v17, vcc, v17, v61969; GISEL-NEXT:    v_cndmask_b32_e64 v6, 0, 1, vcc1970; GISEL-NEXT:    v_add_i32_e32 v20, vcc, v20, v61971; GISEL-NEXT:    v_and_b32_e32 v6, 0xffffff, v01972; GISEL-NEXT:    v_and_b32_e32 v0, 0xffffff, v21973; GISEL-NEXT:    v_mul_hi_u32 v2, v8, v161974; GISEL-NEXT:    v_mul_hi_u32 v13, v11, v131975; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v18, v151976; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, vcc1977; GISEL-NEXT:    v_add_i32_e32 v17, vcc, v17, v191978; GISEL-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc1979; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v14, v161980; GISEL-NEXT:    v_add_i32_e32 v16, vcc, v20, v181981; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v141982; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v161983; GISEL-NEXT:    v_add_i32_e32 v12, vcc, v12, v151984; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v8, v2, vcc1985; GISEL-NEXT:    v_mul_lo_u32 v8, v4, v121986; GISEL-NEXT:    v_mul_lo_u32 v5, v5, v121987; GISEL-NEXT:    v_mul_hi_u32 v14, v4, v121988; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v171989; GISEL-NEXT:    v_addc_u32_e32 v11, vcc, v11, v13, vcc1990; GISEL-NEXT:    v_mul_lo_u32 v13, v9, v71991; GISEL-NEXT:    v_mul_lo_u32 v10, v10, v71992; GISEL-NEXT:    v_mul_hi_u32 v15, v9, v71993; GISEL-NEXT:    v_mul_lo_u32 v4, v4, v21994; GISEL-NEXT:    v_mul_lo_u32 v16, v2, v81995; GISEL-NEXT:    v_mul_hi_u32 v17, v12, v81996; GISEL-NEXT:    v_mul_hi_u32 v8, v2, v81997; GISEL-NEXT:    v_mul_lo_u32 v9, v9, v111998; GISEL-NEXT:    v_mul_lo_u32 v18, v11, v131999; GISEL-NEXT:    v_mul_hi_u32 v19, v7, v132000; GISEL-NEXT:    v_mul_hi_u32 v13, v11, v132001; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v5, v42002; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v10, v92003; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v142004; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v152005; GISEL-NEXT:    v_mul_lo_u32 v9, v12, v42006; GISEL-NEXT:    v_mul_lo_u32 v10, v2, v42007; GISEL-NEXT:    v_mul_hi_u32 v14, v12, v42008; GISEL-NEXT:    v_mul_hi_u32 v4, v2, v42009; GISEL-NEXT:    v_mul_lo_u32 v15, v7, v52010; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v18, v152011; GISEL-NEXT:    v_cndmask_b32_e64 v18, 0, 1, vcc2012; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v15, v192013; GISEL-NEXT:    v_mul_lo_u32 v15, v11, v52014; GISEL-NEXT:    v_mul_hi_u32 v19, v7, v52015; GISEL-NEXT:    v_mul_hi_u32 v5, v11, v52016; GISEL-NEXT:    v_add_i32_e64 v9, s[4:5], v16, v92017; GISEL-NEXT:    v_cndmask_b32_e64 v16, 0, 1, s[4:5]2018; GISEL-NEXT:    v_add_i32_e64 v8, s[4:5], v10, v82019; GISEL-NEXT:    v_cndmask_b32_e64 v10, 0, 1, s[4:5]2020; GISEL-NEXT:    v_add_i32_e64 v13, s[4:5], v15, v132021; GISEL-NEXT:    v_cndmask_b32_e64 v15, 0, 1, s[4:5]2022; GISEL-NEXT:    v_add_i32_e64 v9, s[4:5], v9, v172023; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, s[4:5]2024; GISEL-NEXT:    v_add_i32_e64 v8, s[4:5], v8, v142025; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, s[4:5]2026; GISEL-NEXT:    v_cndmask_b32_e64 v17, 0, 1, vcc2027; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v192028; GISEL-NEXT:    v_cndmask_b32_e64 v19, 0, 1, vcc2029; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v16, v92030; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v142031; GISEL-NEXT:    v_add_i32_e32 v14, vcc, v18, v172032; GISEL-NEXT:    v_add_i32_e32 v15, vcc, v15, v192033; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v92034; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2035; GISEL-NEXT:    v_add_i32_e32 v13, vcc, v13, v142036; GISEL-NEXT:    v_cndmask_b32_e64 v14, 0, 1, vcc2037; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v92038; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v15, v142039; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v92040; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v5, v102041; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v12, v82042; GISEL-NEXT:    v_addc_u32_e32 v2, vcc, v2, v4, vcc2043; GISEL-NEXT:    v_mul_lo_u32 v4, 0, v82044; GISEL-NEXT:    v_mul_hi_u32 v9, v6, v82045; GISEL-NEXT:    v_mul_hi_u32 v8, 0, v82046; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v132047; GISEL-NEXT:    v_addc_u32_e32 v5, vcc, v11, v5, vcc2048; GISEL-NEXT:    v_mul_lo_u32 v10, 0, v72049; GISEL-NEXT:    v_mul_hi_u32 v11, v0, v72050; GISEL-NEXT:    v_mul_hi_u32 v7, 0, v72051; GISEL-NEXT:    v_mul_lo_u32 v12, v6, v22052; GISEL-NEXT:    v_mul_lo_u32 v13, 0, v22053; GISEL-NEXT:    v_mul_hi_u32 v14, v6, v22054; GISEL-NEXT:    v_mul_hi_u32 v2, 0, v22055; GISEL-NEXT:    v_mul_lo_u32 v15, v0, v52056; GISEL-NEXT:    v_mul_lo_u32 v16, 0, v52057; GISEL-NEXT:    v_mul_hi_u32 v17, v0, v52058; GISEL-NEXT:    v_mul_hi_u32 v5, 0, v52059; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v122060; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v13, v82061; GISEL-NEXT:    v_mul_lo_u32 v2, v3, v22062; GISEL-NEXT:    v_add_i32_e32 v10, vcc, v10, v152063; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v16, v72064; GISEL-NEXT:    v_mul_lo_u32 v5, v1, v52065; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v4, v92066; GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc2067; GISEL-NEXT:    v_add_i32_e32 v8, vcc, v8, v142068; GISEL-NEXT:    v_add_i32_e32 v9, vcc, v10, v112069; GISEL-NEXT:    v_cndmask_b32_e64 v9, 0, 1, vcc2070; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v172071; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v8, v42072; GISEL-NEXT:    v_add_i32_e32 v7, vcc, v7, v92073; GISEL-NEXT:    v_mul_lo_u32 v8, v3, v42074; GISEL-NEXT:    v_mul_lo_u32 v9, 0, v42075; GISEL-NEXT:    v_mul_hi_u32 v4, v3, v42076; GISEL-NEXT:    v_mul_lo_u32 v10, v1, v72077; GISEL-NEXT:    v_mul_lo_u32 v11, 0, v72078; GISEL-NEXT:    v_mul_hi_u32 v7, v1, v72079; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v9, v22080; GISEL-NEXT:    v_add_i32_e32 v5, vcc, v11, v52081; GISEL-NEXT:    v_add_i32_e32 v2, vcc, v2, v42082; GISEL-NEXT:    v_add_i32_e32 v4, vcc, v5, v72083; GISEL-NEXT:    v_sub_i32_e32 v5, vcc, v6, v82084; GISEL-NEXT:    v_subb_u32_e64 v6, s[4:5], 0, v2, vcc2085; GISEL-NEXT:    v_sub_i32_e64 v2, s[4:5], 0, v22086; GISEL-NEXT:    v_cmp_ge_u32_e64 s[4:5], v5, v32087; GISEL-NEXT:    v_cndmask_b32_e64 v7, 0, -1, s[4:5]2088; GISEL-NEXT:    v_sub_i32_e64 v8, s[4:5], v0, v102089; GISEL-NEXT:    v_subb_u32_e64 v9, s[6:7], 0, v4, s[4:5]2090; GISEL-NEXT:    v_sub_i32_e64 v0, s[6:7], 0, v42091; GISEL-NEXT:    v_cmp_ge_u32_e64 s[6:7], v8, v12092; GISEL-NEXT:    v_cndmask_b32_e64 v4, 0, -1, s[6:7]2093; GISEL-NEXT:    v_cmp_eq_u32_e64 s[6:7], 0, v62094; GISEL-NEXT:    v_cndmask_b32_e64 v7, -1, v7, s[6:7]2095; GISEL-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc2096; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v92097; GISEL-NEXT:    v_cndmask_b32_e32 v4, -1, v4, vcc2098; GISEL-NEXT:    v_subbrev_u32_e64 v0, vcc, 0, v0, s[4:5]2099; GISEL-NEXT:    v_sub_i32_e32 v10, vcc, v5, v32100; GISEL-NEXT:    v_subbrev_u32_e32 v2, vcc, 0, v2, vcc2101; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v10, v32102; GISEL-NEXT:    v_cndmask_b32_e64 v11, 0, -1, vcc2103; GISEL-NEXT:    v_sub_i32_e32 v12, vcc, v8, v12104; GISEL-NEXT:    v_subbrev_u32_e32 v13, vcc, 0, v0, vcc2105; GISEL-NEXT:    v_cmp_ge_u32_e32 vcc, v12, v12106; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, -1, vcc2107; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v22108; GISEL-NEXT:    v_cndmask_b32_e32 v11, -1, v11, vcc2109; GISEL-NEXT:    v_sub_i32_e32 v3, vcc, v10, v32110; GISEL-NEXT:    v_subbrev_u32_e32 v14, vcc, 0, v2, vcc2111; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v132112; GISEL-NEXT:    v_cndmask_b32_e32 v0, -1, v0, vcc2113; GISEL-NEXT:    v_sub_i32_e32 v1, vcc, v12, v12114; GISEL-NEXT:    v_subbrev_u32_e32 v15, vcc, 0, v13, vcc2115; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v112116; GISEL-NEXT:    v_cndmask_b32_e32 v3, v10, v3, vcc2117; GISEL-NEXT:    v_cmp_ne_u32_e64 s[4:5], 0, v02118; GISEL-NEXT:    v_cndmask_b32_e64 v1, v12, v1, s[4:5]2119; GISEL-NEXT:    v_cndmask_b32_e32 v10, v2, v14, vcc2120; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v72121; GISEL-NEXT:    v_cndmask_b32_e32 v0, v5, v3, vcc2122; GISEL-NEXT:    v_cndmask_b32_e64 v3, v13, v15, s[4:5]2123; GISEL-NEXT:    v_cmp_ne_u32_e64 s[4:5], 0, v42124; GISEL-NEXT:    v_cndmask_b32_e64 v2, v8, v1, s[4:5]2125; GISEL-NEXT:    v_cndmask_b32_e32 v1, v6, v10, vcc2126; GISEL-NEXT:    v_cndmask_b32_e64 v3, v9, v3, s[4:5]2127; GISEL-NEXT:    s_setpc_b64 s[30:31]2128;2129; CGP-LABEL: v_urem_v2i64_24bit:2130; CGP:       ; %bb.0:2131; CGP-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2132; CGP-NEXT:    v_and_b32_e32 v0, 0xffffff, v02133; CGP-NEXT:    v_and_b32_e32 v1, 0xffffff, v42134; CGP-NEXT:    v_and_b32_e32 v2, 0xffffff, v22135; CGP-NEXT:    v_and_b32_e32 v3, 0xffffff, v62136; CGP-NEXT:    v_cvt_f32_u32_e32 v4, v02137; CGP-NEXT:    v_cvt_f32_u32_e32 v5, v12138; CGP-NEXT:    v_cvt_f32_u32_e32 v6, v22139; CGP-NEXT:    v_cvt_f32_u32_e32 v7, v32140; CGP-NEXT:    v_rcp_f32_e32 v8, v52141; CGP-NEXT:    v_rcp_f32_e32 v9, v72142; CGP-NEXT:    v_mul_f32_e32 v8, v4, v82143; CGP-NEXT:    v_mul_f32_e32 v9, v6, v92144; CGP-NEXT:    v_trunc_f32_e32 v8, v82145; CGP-NEXT:    v_trunc_f32_e32 v9, v92146; CGP-NEXT:    v_mad_f32 v4, -v8, v5, v42147; CGP-NEXT:    v_cvt_u32_f32_e32 v8, v82148; CGP-NEXT:    v_mad_f32 v6, -v9, v7, v62149; CGP-NEXT:    v_cvt_u32_f32_e32 v9, v92150; CGP-NEXT:    v_cmp_ge_f32_e64 s[4:5], |v4|, v52151; CGP-NEXT:    v_cndmask_b32_e64 v4, 0, 1, s[4:5]2152; CGP-NEXT:    v_cmp_ge_f32_e64 s[4:5], |v6|, v72153; CGP-NEXT:    v_cndmask_b32_e64 v5, 0, 1, s[4:5]2154; CGP-NEXT:    v_add_i32_e32 v4, vcc, v8, v42155; CGP-NEXT:    v_add_i32_e32 v5, vcc, v9, v52156; CGP-NEXT:    v_mul_lo_u32 v1, v4, v12157; CGP-NEXT:    v_mul_lo_u32 v3, v5, v32158; CGP-NEXT:    v_sub_i32_e32 v0, vcc, v0, v12159; CGP-NEXT:    v_sub_i32_e32 v1, vcc, v2, v32160; CGP-NEXT:    v_and_b32_e32 v0, 0xffffff, v02161; CGP-NEXT:    v_and_b32_e32 v2, 0xffffff, v12162; CGP-NEXT:    v_mov_b32_e32 v1, 02163; CGP-NEXT:    v_mov_b32_e32 v3, 02164; CGP-NEXT:    s_setpc_b64 s[30:31]2165  %num.mask = and <2 x i64> %num, <i64 16777215, i64 16777215>2166  %den.mask = and <2 x i64> %den, <i64 16777215, i64 16777215>2167  %result = urem <2 x i64> %num.mask, %den.mask2168  ret <2 x i64> %result2169}2170