3247 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -o - %s | FileCheck -check-prefix=SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -o - %s | FileCheck -check-prefix=GISEL %s4 5define <2 x i128> @v_sdiv_v2i128_vv(<2 x i128> %lhs, <2 x i128> %rhs) {6; SDAG-LABEL: v_sdiv_v2i128_vv:7; SDAG: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases8; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9; SDAG-NEXT: v_sub_i32_e32 v16, vcc, 0, v010; SDAG-NEXT: v_mov_b32_e32 v18, 011; SDAG-NEXT: v_ashrrev_i32_e32 v24, 31, v312; SDAG-NEXT: v_ashrrev_i32_e32 v25, 31, v1113; SDAG-NEXT: s_mov_b64 s[10:11], 0x7f14; SDAG-NEXT: v_subb_u32_e32 v17, vcc, 0, v1, vcc15; SDAG-NEXT: v_mov_b32_e32 v26, v2416; SDAG-NEXT: v_mov_b32_e32 v27, v2517; SDAG-NEXT: v_subb_u32_e32 v19, vcc, 0, v2, vcc18; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[2:3]19; SDAG-NEXT: v_cndmask_b32_e64 v21, v1, v17, s[4:5]20; SDAG-NEXT: v_cndmask_b32_e64 v20, v0, v16, s[4:5]21; SDAG-NEXT: v_subb_u32_e32 v0, vcc, 0, v3, vcc22; SDAG-NEXT: v_cndmask_b32_e64 v16, v2, v19, s[4:5]23; SDAG-NEXT: v_ffbh_u32_e32 v1, v2024; SDAG-NEXT: v_ffbh_u32_e32 v2, v2125; SDAG-NEXT: v_cndmask_b32_e64 v17, v3, v0, s[4:5]26; SDAG-NEXT: v_or_b32_e32 v0, v20, v1627; SDAG-NEXT: v_sub_i32_e32 v3, vcc, 0, v828; SDAG-NEXT: v_add_i32_e64 v19, s[4:5], 32, v129; SDAG-NEXT: v_ffbh_u32_e32 v22, v1630; SDAG-NEXT: v_or_b32_e32 v1, v21, v1731; SDAG-NEXT: v_subb_u32_e32 v23, vcc, 0, v9, vcc32; SDAG-NEXT: v_min_u32_e32 v2, v19, v233; SDAG-NEXT: v_add_i32_e64 v19, s[4:5], 32, v2234; SDAG-NEXT: v_ffbh_u32_e32 v22, v1735; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[0:1]36; SDAG-NEXT: v_cmp_gt_i64_e64 s[6:7], 0, v[10:11]37; SDAG-NEXT: v_cndmask_b32_e64 v28, v9, v23, s[6:7]38; SDAG-NEXT: v_subb_u32_e32 v0, vcc, 0, v10, vcc39; SDAG-NEXT: v_cndmask_b32_e64 v29, v8, v3, s[6:7]40; SDAG-NEXT: v_min_u32_e32 v1, v19, v2241; SDAG-NEXT: v_add_i32_e64 v2, s[8:9], 64, v242; SDAG-NEXT: v_addc_u32_e64 v3, s[8:9], 0, 0, s[8:9]43; SDAG-NEXT: v_subb_u32_e32 v8, vcc, 0, v11, vcc44; SDAG-NEXT: v_cndmask_b32_e64 v0, v10, v0, s[6:7]45; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[16:17]46; SDAG-NEXT: v_cndmask_b32_e64 v9, v3, 0, vcc47; SDAG-NEXT: v_cndmask_b32_e32 v10, v2, v1, vcc48; SDAG-NEXT: v_ffbh_u32_e32 v3, v2949; SDAG-NEXT: v_ffbh_u32_e32 v19, v2850; SDAG-NEXT: v_cndmask_b32_e64 v1, v11, v8, s[6:7]51; SDAG-NEXT: v_or_b32_e32 v2, v29, v052; SDAG-NEXT: v_add_i32_e32 v8, vcc, 32, v353; SDAG-NEXT: v_ffbh_u32_e32 v11, v054; SDAG-NEXT: v_or_b32_e32 v3, v28, v155; SDAG-NEXT: v_min_u32_e32 v8, v8, v1956; SDAG-NEXT: v_add_i32_e32 v11, vcc, 32, v1157; SDAG-NEXT: v_ffbh_u32_e32 v19, v158; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[2:3]59; SDAG-NEXT: v_min_u32_e32 v2, v11, v1960; SDAG-NEXT: v_add_i32_e64 v3, s[6:7], 64, v861; SDAG-NEXT: v_addc_u32_e64 v8, s[6:7], 0, 0, s[6:7]62; SDAG-NEXT: v_cmp_ne_u64_e64 s[6:7], 0, v[0:1]63; SDAG-NEXT: v_cndmask_b32_e64 v11, v8, 0, s[6:7]64; SDAG-NEXT: v_cndmask_b32_e64 v2, v3, v2, s[6:7]65; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[4:5]66; SDAG-NEXT: v_sub_i32_e32 v8, vcc, v2, v1067; SDAG-NEXT: v_subb_u32_e32 v9, vcc, v11, v9, vcc68; SDAG-NEXT: v_xor_b32_e32 v2, 0x7f, v869; SDAG-NEXT: v_subb_u32_e32 v10, vcc, 0, v18, vcc70; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[10:11], v[8:9]71; SDAG-NEXT: v_cndmask_b32_e64 v19, 0, 1, s[4:5]72; SDAG-NEXT: v_subb_u32_e32 v11, vcc, 0, v18, vcc73; SDAG-NEXT: v_or_b32_e32 v2, v2, v1074; SDAG-NEXT: v_or_b32_e32 v3, v9, v1175; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]76; SDAG-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc77; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]78; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[10:11]79; SDAG-NEXT: v_cndmask_b32_e64 v2, v18, v19, s[4:5]80; SDAG-NEXT: v_and_b32_e32 v2, 1, v281; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v282; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]83; SDAG-NEXT: v_cndmask_b32_e64 v18, v17, 0, s[4:5]84; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -185; SDAG-NEXT: v_cndmask_b32_e64 v22, v16, 0, s[4:5]86; SDAG-NEXT: v_cndmask_b32_e64 v19, v21, 0, s[4:5]87; SDAG-NEXT: s_and_b64 s[8:9], s[6:7], vcc88; SDAG-NEXT: v_cndmask_b32_e64 v23, v20, 0, s[4:5]89; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[8:9]90; SDAG-NEXT: s_cbranch_execz .LBB0_691; SDAG-NEXT: ; %bb.1: ; %udiv-bb1592; SDAG-NEXT: v_add_i32_e32 v30, vcc, 1, v893; SDAG-NEXT: v_sub_i32_e64 v18, s[4:5], 63, v894; SDAG-NEXT: v_mov_b32_e32 v2, 095; SDAG-NEXT: v_mov_b32_e32 v3, 096; SDAG-NEXT: v_addc_u32_e32 v31, vcc, 0, v9, vcc97; SDAG-NEXT: v_lshl_b64 v[18:19], v[20:21], v1898; SDAG-NEXT: v_addc_u32_e32 v32, vcc, 0, v10, vcc99; SDAG-NEXT: v_addc_u32_e32 v33, vcc, 0, v11, vcc100; SDAG-NEXT: v_or_b32_e32 v9, v30, v32101; SDAG-NEXT: v_sub_i32_e32 v11, vcc, 0x7f, v8102; SDAG-NEXT: v_or_b32_e32 v10, v31, v33103; SDAG-NEXT: v_lshl_b64 v[22:23], v[16:17], v11104; SDAG-NEXT: v_sub_i32_e32 v8, vcc, 64, v11105; SDAG-NEXT: v_lshl_b64 v[34:35], v[20:21], v11106; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[9:10]107; SDAG-NEXT: v_lshr_b64 v[8:9], v[20:21], v8108; SDAG-NEXT: v_or_b32_e32 v9, v23, v9109; SDAG-NEXT: v_or_b32_e32 v8, v22, v8110; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v11111; SDAG-NEXT: v_cndmask_b32_e64 v9, v19, v9, s[4:5]112; SDAG-NEXT: v_cndmask_b32_e64 v8, v18, v8, s[4:5]113; SDAG-NEXT: v_cndmask_b32_e64 v19, 0, v35, s[4:5]114; SDAG-NEXT: v_cndmask_b32_e64 v18, 0, v34, s[4:5]115; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v11116; SDAG-NEXT: v_cndmask_b32_e64 v9, v9, v17, s[4:5]117; SDAG-NEXT: v_cndmask_b32_e64 v8, v8, v16, s[4:5]118; SDAG-NEXT: v_mov_b32_e32 v10, 0119; SDAG-NEXT: v_mov_b32_e32 v11, 0120; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc121; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]122; SDAG-NEXT: s_cbranch_execz .LBB0_5123; SDAG-NEXT: ; %bb.2: ; %udiv-preheader4124; SDAG-NEXT: v_lshr_b64 v[2:3], v[20:21], v30125; SDAG-NEXT: v_sub_i32_e32 v10, vcc, 64, v30126; SDAG-NEXT: v_lshl_b64 v[10:11], v[16:17], v10127; SDAG-NEXT: v_or_b32_e32 v11, v3, v11128; SDAG-NEXT: v_or_b32_e32 v10, v2, v10129; SDAG-NEXT: v_cmp_gt_u32_e32 vcc, 64, v30130; SDAG-NEXT: v_subrev_i32_e64 v2, s[4:5], 64, v30131; SDAG-NEXT: v_lshr_b64 v[2:3], v[16:17], v2132; SDAG-NEXT: v_cndmask_b32_e32 v3, v3, v11, vcc133; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v30134; SDAG-NEXT: v_cndmask_b32_e64 v21, v3, v21, s[4:5]135; SDAG-NEXT: v_cndmask_b32_e32 v2, v2, v10, vcc136; SDAG-NEXT: v_cndmask_b32_e64 v20, v2, v20, s[4:5]137; SDAG-NEXT: v_lshr_b64 v[2:3], v[16:17], v30138; SDAG-NEXT: v_cndmask_b32_e32 v23, 0, v3, vcc139; SDAG-NEXT: v_cndmask_b32_e32 v22, 0, v2, vcc140; SDAG-NEXT: v_add_i32_e32 v34, vcc, -1, v29141; SDAG-NEXT: v_addc_u32_e32 v35, vcc, -1, v28, vcc142; SDAG-NEXT: v_addc_u32_e32 v36, vcc, -1, v0, vcc143; SDAG-NEXT: v_addc_u32_e32 v37, vcc, -1, v1, vcc144; SDAG-NEXT: v_mov_b32_e32 v10, 0145; SDAG-NEXT: v_mov_b32_e32 v11, 0146; SDAG-NEXT: s_mov_b64 s[4:5], 0147; SDAG-NEXT: v_mov_b32_e32 v3, 0148; SDAG-NEXT: v_mov_b32_e32 v16, 0149; SDAG-NEXT: v_mov_b32_e32 v17, 0150; SDAG-NEXT: .LBB0_3: ; %udiv-do-while3151; SDAG-NEXT: ; =>This Inner Loop Header: Depth=1152; SDAG-NEXT: v_lshrrev_b32_e32 v2, 31, v19153; SDAG-NEXT: v_lshl_b64 v[18:19], v[18:19], 1154; SDAG-NEXT: v_lshl_b64 v[22:23], v[22:23], 1155; SDAG-NEXT: v_lshrrev_b32_e32 v38, 31, v21156; SDAG-NEXT: v_lshl_b64 v[20:21], v[20:21], 1157; SDAG-NEXT: v_lshrrev_b32_e32 v39, 31, v9158; SDAG-NEXT: v_lshl_b64 v[8:9], v[8:9], 1159; SDAG-NEXT: v_or_b32_e32 v19, v17, v19160; SDAG-NEXT: v_or_b32_e32 v18, v16, v18161; SDAG-NEXT: v_or_b32_e32 v16, v22, v38162; SDAG-NEXT: v_or_b32_e32 v17, v20, v39163; SDAG-NEXT: v_or_b32_e32 v8, v8, v2164; SDAG-NEXT: v_sub_i32_e32 v2, vcc, v34, v17165; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v35, v21, vcc166; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v36, v16, vcc167; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v37, v23, vcc168; SDAG-NEXT: v_ashrrev_i32_e32 v2, 31, v2169; SDAG-NEXT: v_and_b32_e32 v20, v2, v29170; SDAG-NEXT: v_and_b32_e32 v22, v2, v28171; SDAG-NEXT: v_and_b32_e32 v38, v2, v0172; SDAG-NEXT: v_and_b32_e32 v39, v2, v1173; SDAG-NEXT: v_and_b32_e32 v2, 1, v2174; SDAG-NEXT: v_sub_i32_e32 v20, vcc, v17, v20175; SDAG-NEXT: v_subb_u32_e32 v21, vcc, v21, v22, vcc176; SDAG-NEXT: v_subb_u32_e32 v22, vcc, v16, v38, vcc177; SDAG-NEXT: v_subb_u32_e32 v23, vcc, v23, v39, vcc178; SDAG-NEXT: v_add_i32_e32 v30, vcc, -1, v30179; SDAG-NEXT: v_addc_u32_e32 v31, vcc, -1, v31, vcc180; SDAG-NEXT: v_addc_u32_e32 v32, vcc, -1, v32, vcc181; SDAG-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc182; SDAG-NEXT: v_or_b32_e32 v16, v30, v32183; SDAG-NEXT: v_or_b32_e32 v17, v31, v33184; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]185; SDAG-NEXT: v_or_b32_e32 v9, v11, v9186; SDAG-NEXT: s_or_b64 s[4:5], vcc, s[4:5]187; SDAG-NEXT: v_or_b32_e32 v8, v10, v8188; SDAG-NEXT: v_mov_b32_e32 v17, v3189; SDAG-NEXT: v_mov_b32_e32 v16, v2190; SDAG-NEXT: s_andn2_b64 exec, exec, s[4:5]191; SDAG-NEXT: s_cbranch_execnz .LBB0_3192; SDAG-NEXT: ; %bb.4: ; %Flow13193; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]194; SDAG-NEXT: .LBB0_5: ; %Flow14195; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]196; SDAG-NEXT: v_lshl_b64 v[0:1], v[8:9], 1197; SDAG-NEXT: v_lshrrev_b32_e32 v16, 31, v19198; SDAG-NEXT: v_lshl_b64 v[8:9], v[18:19], 1199; SDAG-NEXT: v_or_b32_e32 v0, v0, v16200; SDAG-NEXT: v_or_b32_e32 v18, v11, v1201; SDAG-NEXT: v_or_b32_e32 v19, v3, v9202; SDAG-NEXT: v_or_b32_e32 v22, v10, v0203; SDAG-NEXT: v_or_b32_e32 v23, v2, v8204; SDAG-NEXT: .LBB0_6: ; %Flow16205; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]206; SDAG-NEXT: v_ashrrev_i32_e32 v16, 31, v7207; SDAG-NEXT: v_ashrrev_i32_e32 v17, 31, v15208; SDAG-NEXT: v_sub_i32_e32 v0, vcc, 0, v4209; SDAG-NEXT: v_mov_b32_e32 v11, 0210; SDAG-NEXT: s_mov_b64 s[10:11], 0x7f211; SDAG-NEXT: v_mov_b32_e32 v20, v16212; SDAG-NEXT: v_mov_b32_e32 v21, v17213; SDAG-NEXT: v_subb_u32_e32 v1, vcc, 0, v5, vcc214; SDAG-NEXT: v_subb_u32_e32 v8, vcc, 0, v6, vcc215; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[6:7]216; SDAG-NEXT: v_cndmask_b32_e64 v3, v5, v1, s[4:5]217; SDAG-NEXT: v_cndmask_b32_e64 v2, v4, v0, s[4:5]218; SDAG-NEXT: v_subb_u32_e32 v0, vcc, 0, v7, vcc219; SDAG-NEXT: v_cndmask_b32_e64 v8, v6, v8, s[4:5]220; SDAG-NEXT: v_ffbh_u32_e32 v1, v2221; SDAG-NEXT: v_ffbh_u32_e32 v4, v3222; SDAG-NEXT: v_cndmask_b32_e64 v9, v7, v0, s[4:5]223; SDAG-NEXT: v_sub_i32_e32 v5, vcc, 0, v12224; SDAG-NEXT: v_or_b32_e32 v0, v2, v8225; SDAG-NEXT: v_ffbh_u32_e32 v6, v8226; SDAG-NEXT: v_add_i32_e64 v7, s[4:5], 32, v1227; SDAG-NEXT: v_subb_u32_e32 v10, vcc, 0, v13, vcc228; SDAG-NEXT: v_or_b32_e32 v1, v3, v9229; SDAG-NEXT: v_add_i32_e64 v6, s[4:5], 32, v6230; SDAG-NEXT: v_ffbh_u32_e32 v30, v9231; SDAG-NEXT: v_min_u32_e32 v4, v7, v4232; SDAG-NEXT: v_subb_u32_e32 v7, vcc, 0, v14, vcc233; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[14:15]234; SDAG-NEXT: v_cndmask_b32_e64 v28, v13, v10, s[4:5]235; SDAG-NEXT: v_cndmask_b32_e64 v29, v12, v5, s[4:5]236; SDAG-NEXT: v_cmp_eq_u64_e64 s[6:7], 0, v[0:1]237; SDAG-NEXT: v_min_u32_e32 v1, v6, v30238; SDAG-NEXT: v_add_i32_e64 v4, s[8:9], 64, v4239; SDAG-NEXT: v_addc_u32_e64 v5, s[8:9], 0, 0, s[8:9]240; SDAG-NEXT: v_subb_u32_e32 v6, vcc, 0, v15, vcc241; SDAG-NEXT: v_cndmask_b32_e64 v0, v14, v7, s[4:5]242; SDAG-NEXT: v_ffbh_u32_e32 v7, v29243; SDAG-NEXT: v_ffbh_u32_e32 v10, v28244; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[8:9]245; SDAG-NEXT: v_cndmask_b32_e64 v12, v5, 0, vcc246; SDAG-NEXT: v_cndmask_b32_e32 v13, v4, v1, vcc247; SDAG-NEXT: v_cndmask_b32_e64 v1, v15, v6, s[4:5]248; SDAG-NEXT: v_or_b32_e32 v4, v29, v0249; SDAG-NEXT: v_ffbh_u32_e32 v6, v0250; SDAG-NEXT: v_add_i32_e32 v7, vcc, 32, v7251; SDAG-NEXT: v_or_b32_e32 v5, v28, v1252; SDAG-NEXT: v_add_i32_e32 v6, vcc, 32, v6253; SDAG-NEXT: v_ffbh_u32_e32 v14, v1254; SDAG-NEXT: v_min_u32_e32 v7, v7, v10255; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[4:5]256; SDAG-NEXT: v_min_u32_e32 v4, v6, v14257; SDAG-NEXT: v_add_i32_e64 v5, s[4:5], 64, v7258; SDAG-NEXT: v_addc_u32_e64 v6, s[4:5], 0, 0, s[4:5]259; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[6:7]260; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]261; SDAG-NEXT: v_cndmask_b32_e64 v7, v6, 0, vcc262; SDAG-NEXT: v_cndmask_b32_e32 v4, v5, v4, vcc263; SDAG-NEXT: v_sub_i32_e32 v6, vcc, v4, v13264; SDAG-NEXT: v_subb_u32_e32 v7, vcc, v7, v12, vcc265; SDAG-NEXT: v_xor_b32_e32 v4, 0x7f, v6266; SDAG-NEXT: v_subb_u32_e32 v10, vcc, 0, v11, vcc267; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[10:11], v[6:7]268; SDAG-NEXT: v_cndmask_b32_e64 v12, 0, 1, s[4:5]269; SDAG-NEXT: v_subb_u32_e32 v11, vcc, 0, v11, vcc270; SDAG-NEXT: v_or_b32_e32 v4, v4, v10271; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]272; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc273; SDAG-NEXT: v_or_b32_e32 v5, v7, v11274; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]275; SDAG-NEXT: v_cndmask_b32_e32 v12, v13, v12, vcc276; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[4:5]277; SDAG-NEXT: v_and_b32_e32 v4, 1, v12278; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v4279; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]280; SDAG-NEXT: v_cndmask_b32_e64 v13, v9, 0, s[4:5]281; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -1282; SDAG-NEXT: v_cndmask_b32_e64 v5, v8, 0, s[4:5]283; SDAG-NEXT: v_cndmask_b32_e64 v14, v3, 0, s[4:5]284; SDAG-NEXT: v_cndmask_b32_e64 v4, v2, 0, s[4:5]285; SDAG-NEXT: s_and_b64 s[4:5], s[6:7], vcc286; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]287; SDAG-NEXT: s_cbranch_execz .LBB0_12288; SDAG-NEXT: ; %bb.7: ; %udiv-bb1289; SDAG-NEXT: v_add_i32_e32 v30, vcc, 1, v6290; SDAG-NEXT: v_sub_i32_e64 v12, s[4:5], 63, v6291; SDAG-NEXT: v_mov_b32_e32 v4, 0292; SDAG-NEXT: v_mov_b32_e32 v5, 0293; SDAG-NEXT: v_addc_u32_e32 v31, vcc, 0, v7, vcc294; SDAG-NEXT: v_lshl_b64 v[12:13], v[2:3], v12295; SDAG-NEXT: v_addc_u32_e32 v32, vcc, 0, v10, vcc296; SDAG-NEXT: v_addc_u32_e32 v33, vcc, 0, v11, vcc297; SDAG-NEXT: v_or_b32_e32 v10, v30, v32298; SDAG-NEXT: v_sub_i32_e32 v34, vcc, 0x7f, v6299; SDAG-NEXT: v_or_b32_e32 v11, v31, v33300; SDAG-NEXT: v_lshl_b64 v[6:7], v[8:9], v34301; SDAG-NEXT: v_sub_i32_e32 v35, vcc, 64, v34302; SDAG-NEXT: v_lshl_b64 v[14:15], v[2:3], v34303; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]304; SDAG-NEXT: v_lshr_b64 v[10:11], v[2:3], v35305; SDAG-NEXT: v_or_b32_e32 v7, v7, v11306; SDAG-NEXT: v_or_b32_e32 v6, v6, v10307; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v34308; SDAG-NEXT: v_cndmask_b32_e64 v7, v13, v7, s[4:5]309; SDAG-NEXT: v_cndmask_b32_e64 v6, v12, v6, s[4:5]310; SDAG-NEXT: v_cndmask_b32_e64 v11, 0, v15, s[4:5]311; SDAG-NEXT: v_cndmask_b32_e64 v10, 0, v14, s[4:5]312; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v34313; SDAG-NEXT: v_cndmask_b32_e64 v7, v7, v9, s[4:5]314; SDAG-NEXT: v_cndmask_b32_e64 v6, v6, v8, s[4:5]315; SDAG-NEXT: v_mov_b32_e32 v12, 0316; SDAG-NEXT: v_mov_b32_e32 v13, 0317; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc318; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]319; SDAG-NEXT: s_cbranch_execz .LBB0_11320; SDAG-NEXT: ; %bb.8: ; %udiv-preheader321; SDAG-NEXT: v_lshr_b64 v[14:15], v[2:3], v30322; SDAG-NEXT: v_sub_i32_e32 v4, vcc, 64, v30323; SDAG-NEXT: v_subrev_i32_e32 v35, vcc, 64, v30324; SDAG-NEXT: v_lshr_b64 v[37:38], v[8:9], v30325; SDAG-NEXT: v_add_i32_e32 v34, vcc, -1, v29326; SDAG-NEXT: v_mov_b32_e32 v12, 0327; SDAG-NEXT: v_mov_b32_e32 v13, 0328; SDAG-NEXT: s_mov_b64 s[10:11], 0329; SDAG-NEXT: v_mov_b32_e32 v5, 0330; SDAG-NEXT: v_lshl_b64 v[48:49], v[8:9], v4331; SDAG-NEXT: v_lshr_b64 v[8:9], v[8:9], v35332; SDAG-NEXT: v_addc_u32_e32 v35, vcc, -1, v28, vcc333; SDAG-NEXT: v_or_b32_e32 v4, v15, v49334; SDAG-NEXT: v_or_b32_e32 v14, v14, v48335; SDAG-NEXT: v_addc_u32_e32 v36, vcc, -1, v0, vcc336; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v30337; SDAG-NEXT: v_cndmask_b32_e64 v4, v9, v4, s[4:5]338; SDAG-NEXT: v_cndmask_b32_e64 v8, v8, v14, s[4:5]339; SDAG-NEXT: v_cndmask_b32_e64 v15, 0, v38, s[4:5]340; SDAG-NEXT: v_cndmask_b32_e64 v14, 0, v37, s[4:5]341; SDAG-NEXT: v_addc_u32_e32 v37, vcc, -1, v1, vcc342; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v30343; SDAG-NEXT: v_cndmask_b32_e32 v9, v4, v3, vcc344; SDAG-NEXT: v_cndmask_b32_e32 v8, v8, v2, vcc345; SDAG-NEXT: v_mov_b32_e32 v2, 0346; SDAG-NEXT: v_mov_b32_e32 v3, 0347; SDAG-NEXT: .LBB0_9: ; %udiv-do-while348; SDAG-NEXT: ; =>This Inner Loop Header: Depth=1349; SDAG-NEXT: v_lshl_b64 v[14:15], v[14:15], 1350; SDAG-NEXT: v_lshrrev_b32_e32 v4, 31, v9351; SDAG-NEXT: v_lshl_b64 v[8:9], v[8:9], 1352; SDAG-NEXT: v_lshrrev_b32_e32 v38, 31, v7353; SDAG-NEXT: v_lshl_b64 v[6:7], v[6:7], 1354; SDAG-NEXT: v_lshrrev_b32_e32 v39, 31, v11355; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 1356; SDAG-NEXT: v_or_b32_e32 v4, v14, v4357; SDAG-NEXT: v_or_b32_e32 v8, v8, v38358; SDAG-NEXT: v_or_b32_e32 v6, v6, v39359; SDAG-NEXT: v_or_b32_e32 v7, v13, v7360; SDAG-NEXT: v_or_b32_e32 v11, v3, v11361; SDAG-NEXT: v_sub_i32_e32 v3, vcc, v34, v8362; SDAG-NEXT: v_or_b32_e32 v6, v12, v6363; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v35, v9, vcc364; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v36, v4, vcc365; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v37, v15, vcc366; SDAG-NEXT: v_ashrrev_i32_e32 v38, 31, v3367; SDAG-NEXT: v_and_b32_e32 v3, v38, v29368; SDAG-NEXT: v_and_b32_e32 v14, v38, v28369; SDAG-NEXT: v_and_b32_e32 v39, v38, v0370; SDAG-NEXT: v_and_b32_e32 v48, v38, v1371; SDAG-NEXT: v_sub_i32_e32 v8, vcc, v8, v3372; SDAG-NEXT: v_subb_u32_e32 v9, vcc, v9, v14, vcc373; SDAG-NEXT: v_subb_u32_e32 v14, vcc, v4, v39, vcc374; SDAG-NEXT: v_subb_u32_e32 v15, vcc, v15, v48, vcc375; SDAG-NEXT: v_add_i32_e32 v30, vcc, -1, v30376; SDAG-NEXT: v_addc_u32_e32 v31, vcc, -1, v31, vcc377; SDAG-NEXT: v_addc_u32_e32 v32, vcc, -1, v32, vcc378; SDAG-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc379; SDAG-NEXT: v_or_b32_e32 v3, v30, v32380; SDAG-NEXT: v_or_b32_e32 v4, v31, v33381; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[3:4]382; SDAG-NEXT: v_and_b32_e32 v4, 1, v38383; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]384; SDAG-NEXT: v_or_b32_e32 v10, v2, v10385; SDAG-NEXT: v_mov_b32_e32 v2, v4386; SDAG-NEXT: v_mov_b32_e32 v3, v5387; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]388; SDAG-NEXT: s_cbranch_execnz .LBB0_9389; SDAG-NEXT: ; %bb.10: ; %Flow390; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]391; SDAG-NEXT: .LBB0_11: ; %Flow11392; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]393; SDAG-NEXT: v_lshl_b64 v[0:1], v[6:7], 1394; SDAG-NEXT: v_lshrrev_b32_e32 v6, 31, v11395; SDAG-NEXT: v_lshl_b64 v[2:3], v[10:11], 1396; SDAG-NEXT: v_or_b32_e32 v0, v0, v6397; SDAG-NEXT: v_or_b32_e32 v13, v13, v1398; SDAG-NEXT: v_or_b32_e32 v14, v5, v3399; SDAG-NEXT: v_or_b32_e32 v5, v12, v0400; SDAG-NEXT: v_or_b32_e32 v4, v4, v2401; SDAG-NEXT: .LBB0_12: ; %Flow12402; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]403; SDAG-NEXT: v_xor_b32_e32 v3, v27, v26404; SDAG-NEXT: v_xor_b32_e32 v2, v25, v24405; SDAG-NEXT: v_xor_b32_e32 v7, v21, v20406; SDAG-NEXT: v_xor_b32_e32 v6, v17, v16407; SDAG-NEXT: v_xor_b32_e32 v8, v18, v3408; SDAG-NEXT: v_xor_b32_e32 v9, v22, v2409; SDAG-NEXT: v_xor_b32_e32 v1, v19, v3410; SDAG-NEXT: v_xor_b32_e32 v0, v23, v2411; SDAG-NEXT: v_xor_b32_e32 v10, v13, v7412; SDAG-NEXT: v_xor_b32_e32 v11, v5, v6413; SDAG-NEXT: v_xor_b32_e32 v5, v14, v7414; SDAG-NEXT: v_sub_i32_e32 v0, vcc, v0, v2415; SDAG-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc416; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v9, v2, vcc417; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v8, v3, vcc418; SDAG-NEXT: v_xor_b32_e32 v4, v4, v6419; SDAG-NEXT: v_sub_i32_e32 v4, vcc, v4, v6420; SDAG-NEXT: v_subb_u32_e32 v5, vcc, v5, v7, vcc421; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v11, v6, vcc422; SDAG-NEXT: v_subb_u32_e32 v7, vcc, v10, v7, vcc423; SDAG-NEXT: s_setpc_b64 s[30:31]424;425; GISEL-LABEL: v_sdiv_v2i128_vv:426; GISEL: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases427; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)428; GISEL-NEXT: v_ashrrev_i32_e32 v24, 31, v3429; GISEL-NEXT: v_ashrrev_i32_e32 v25, 31, v11430; GISEL-NEXT: v_mov_b32_e32 v16, 0x7f431; GISEL-NEXT: v_mov_b32_e32 v17, 0432; GISEL-NEXT: s_mov_b64 s[8:9], 0433; GISEL-NEXT: v_xor_b32_e32 v0, v24, v0434; GISEL-NEXT: v_xor_b32_e32 v1, v24, v1435; GISEL-NEXT: v_xor_b32_e32 v2, v24, v2436; GISEL-NEXT: v_xor_b32_e32 v3, v24, v3437; GISEL-NEXT: v_xor_b32_e32 v8, v25, v8438; GISEL-NEXT: v_xor_b32_e32 v9, v25, v9439; GISEL-NEXT: v_xor_b32_e32 v10, v25, v10440; GISEL-NEXT: v_xor_b32_e32 v11, v25, v11441; GISEL-NEXT: v_sub_i32_e32 v18, vcc, v0, v24442; GISEL-NEXT: v_subb_u32_e32 v19, vcc, v1, v24, vcc443; GISEL-NEXT: v_sub_i32_e64 v26, s[4:5], v8, v25444; GISEL-NEXT: v_subb_u32_e64 v27, s[4:5], v9, v25, s[4:5]445; GISEL-NEXT: v_subb_u32_e32 v20, vcc, v2, v24, vcc446; GISEL-NEXT: v_subb_u32_e32 v21, vcc, v3, v24, vcc447; GISEL-NEXT: v_subb_u32_e64 v10, vcc, v10, v25, s[4:5]448; GISEL-NEXT: v_subb_u32_e32 v11, vcc, v11, v25, vcc449; GISEL-NEXT: v_ffbh_u32_e32 v8, v27450; GISEL-NEXT: v_ffbh_u32_e32 v9, v26451; GISEL-NEXT: v_ffbh_u32_e32 v22, v18452; GISEL-NEXT: v_ffbh_u32_e32 v23, v19453; GISEL-NEXT: v_or_b32_e32 v0, v26, v10454; GISEL-NEXT: v_or_b32_e32 v1, v27, v11455; GISEL-NEXT: v_or_b32_e32 v2, v18, v20456; GISEL-NEXT: v_or_b32_e32 v3, v19, v21457; GISEL-NEXT: v_add_i32_e32 v9, vcc, 32, v9458; GISEL-NEXT: v_add_i32_e32 v22, vcc, 32, v22459; GISEL-NEXT: v_ffbh_u32_e32 v28, v10460; GISEL-NEXT: v_ffbh_u32_e32 v29, v11461; GISEL-NEXT: v_ffbh_u32_e32 v30, v20462; GISEL-NEXT: v_ffbh_u32_e32 v31, v21463; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]464; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[2:3]465; GISEL-NEXT: v_min_u32_e32 v0, v8, v9466; GISEL-NEXT: v_min_u32_e32 v1, v23, v22467; GISEL-NEXT: v_add_i32_e64 v2, s[6:7], 32, v28468; GISEL-NEXT: v_add_i32_e64 v3, s[6:7], 32, v30469; GISEL-NEXT: v_min_u32_e32 v2, v29, v2470; GISEL-NEXT: v_min_u32_e32 v3, v31, v3471; GISEL-NEXT: v_add_i32_e64 v0, s[6:7], 64, v0472; GISEL-NEXT: v_add_i32_e64 v1, s[6:7], 64, v1473; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]474; GISEL-NEXT: v_cndmask_b32_e64 v22, 0, 1, s[4:5]475; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]476; GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc477; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[20:21]478; GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc479; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v0, v1480; GISEL-NEXT: v_subb_u32_e64 v3, s[4:5], 0, 0, vcc481; GISEL-NEXT: v_subb_u32_e64 v0, s[4:5], 0, 0, s[4:5]482; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], 0, 0, s[4:5]483; GISEL-NEXT: v_xor_b32_e32 v8, 0x7f, v2484; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[16:17]485; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc486; GISEL-NEXT: v_or_b32_e32 v8, v8, v0487; GISEL-NEXT: v_or_b32_e32 v9, v3, v1488; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[0:1]489; GISEL-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc490; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]491; GISEL-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc492; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[8:9]493; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc494; GISEL-NEXT: v_or_b32_e32 v9, v22, v16495; GISEL-NEXT: v_or_b32_e32 v8, v9, v8496; GISEL-NEXT: v_and_b32_e32 v9, 1, v9497; GISEL-NEXT: v_and_b32_e32 v8, 1, v8498; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v9499; GISEL-NEXT: v_cndmask_b32_e64 v22, v18, 0, vcc500; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v8501; GISEL-NEXT: v_cndmask_b32_e64 v8, v20, 0, vcc502; GISEL-NEXT: v_cndmask_b32_e64 v9, v21, 0, vcc503; GISEL-NEXT: s_xor_b64 s[4:5], s[4:5], -1504; GISEL-NEXT: v_cndmask_b32_e64 v23, v19, 0, vcc505; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]506; GISEL-NEXT: s_cbranch_execz .LBB0_6507; GISEL-NEXT: ; %bb.1: ; %udiv-bb15508; GISEL-NEXT: v_add_i32_e32 v28, vcc, 1, v2509; GISEL-NEXT: v_addc_u32_e64 v29, s[4:5], 0, v3, vcc510; GISEL-NEXT: v_sub_i32_e32 v32, vcc, 0x7f, v2511; GISEL-NEXT: v_not_b32_e32 v2, 63512; GISEL-NEXT: v_addc_u32_e64 v30, vcc, 0, v0, s[4:5]513; GISEL-NEXT: v_addc_u32_e32 v31, vcc, 0, v1, vcc514; GISEL-NEXT: v_add_i32_e64 v16, s[4:5], v32, v2515; GISEL-NEXT: v_sub_i32_e64 v8, s[4:5], 64, v32516; GISEL-NEXT: v_lshl_b64 v[0:1], v[18:19], v32517; GISEL-NEXT: v_lshl_b64 v[2:3], v[20:21], v32518; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -1519; GISEL-NEXT: v_lshr_b64 v[8:9], v[18:19], v8520; GISEL-NEXT: v_lshl_b64 v[22:23], v[18:19], v16521; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v32522; GISEL-NEXT: v_cndmask_b32_e32 v16, 0, v0, vcc523; GISEL-NEXT: v_cndmask_b32_e32 v17, 0, v1, vcc524; GISEL-NEXT: v_or_b32_e32 v0, v8, v2525; GISEL-NEXT: v_or_b32_e32 v1, v9, v3526; GISEL-NEXT: v_cndmask_b32_e32 v0, v22, v0, vcc527; GISEL-NEXT: v_cndmask_b32_e32 v1, v23, v1, vcc528; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v32529; GISEL-NEXT: v_cndmask_b32_e32 v8, v0, v20, vcc530; GISEL-NEXT: v_cndmask_b32_e32 v9, v1, v21, vcc531; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]532; GISEL-NEXT: v_mov_b32_e32 v0, s8533; GISEL-NEXT: v_mov_b32_e32 v1, s9534; GISEL-NEXT: v_mov_b32_e32 v2, s10535; GISEL-NEXT: v_mov_b32_e32 v3, s11536; GISEL-NEXT: s_and_saveexec_b64 s[8:9], s[4:5]537; GISEL-NEXT: s_xor_b64 s[12:13], exec, s[8:9]538; GISEL-NEXT: s_cbranch_execz .LBB0_5539; GISEL-NEXT: ; %bb.2: ; %udiv-preheader4540; GISEL-NEXT: v_add_i32_e32 v32, vcc, 0xffffffc0, v28541; GISEL-NEXT: v_sub_i32_e32 v22, vcc, 64, v28542; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v28543; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v28544; GISEL-NEXT: v_lshr_b64 v[0:1], v[20:21], v28545; GISEL-NEXT: v_lshr_b64 v[2:3], v[18:19], v28546; GISEL-NEXT: v_lshl_b64 v[22:23], v[20:21], v22547; GISEL-NEXT: v_or_b32_e32 v22, v2, v22548; GISEL-NEXT: v_or_b32_e32 v23, v3, v23549; GISEL-NEXT: s_mov_b64 s[8:9], 0550; GISEL-NEXT: v_lshr_b64 v[2:3], v[20:21], v32551; GISEL-NEXT: v_cndmask_b32_e32 v2, v2, v22, vcc552; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v23, vcc553; GISEL-NEXT: v_cndmask_b32_e64 v18, v2, v18, s[4:5]554; GISEL-NEXT: v_cndmask_b32_e64 v19, v3, v19, s[4:5]555; GISEL-NEXT: v_cndmask_b32_e32 v20, 0, v0, vcc556; GISEL-NEXT: v_cndmask_b32_e32 v21, 0, v1, vcc557; GISEL-NEXT: v_add_i32_e32 v32, vcc, -1, v26558; GISEL-NEXT: v_addc_u32_e32 v33, vcc, -1, v27, vcc559; GISEL-NEXT: v_addc_u32_e32 v34, vcc, -1, v10, vcc560; GISEL-NEXT: v_addc_u32_e32 v35, vcc, -1, v11, vcc561; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]562; GISEL-NEXT: v_mov_b32_e32 v23, 0563; GISEL-NEXT: v_mov_b32_e32 v0, s8564; GISEL-NEXT: v_mov_b32_e32 v1, s9565; GISEL-NEXT: v_mov_b32_e32 v2, s10566; GISEL-NEXT: v_mov_b32_e32 v3, s11567; GISEL-NEXT: .LBB0_3: ; %udiv-do-while3568; GISEL-NEXT: ; =>This Inner Loop Header: Depth=1569; GISEL-NEXT: v_lshrrev_b32_e32 v36, 31, v17570; GISEL-NEXT: v_lshl_b64 v[2:3], v[16:17], 1571; GISEL-NEXT: v_or_b32_e32 v16, v0, v2572; GISEL-NEXT: v_or_b32_e32 v17, v1, v3573; GISEL-NEXT: v_lshrrev_b32_e32 v22, 31, v19574; GISEL-NEXT: v_lshl_b64 v[0:1], v[18:19], 1575; GISEL-NEXT: v_lshl_b64 v[2:3], v[20:21], 1576; GISEL-NEXT: v_or_b32_e32 v2, v2, v22577; GISEL-NEXT: v_lshrrev_b32_e32 v18, 31, v9578; GISEL-NEXT: v_or_b32_e32 v0, v0, v18579; GISEL-NEXT: v_sub_i32_e32 v18, vcc, v32, v0580; GISEL-NEXT: v_subb_u32_e32 v18, vcc, v33, v1, vcc581; GISEL-NEXT: v_subb_u32_e32 v18, vcc, v34, v2, vcc582; GISEL-NEXT: v_subb_u32_e32 v18, vcc, v35, v3, vcc583; GISEL-NEXT: v_ashrrev_i32_e32 v22, 31, v18584; GISEL-NEXT: v_and_b32_e32 v18, v22, v26585; GISEL-NEXT: v_sub_i32_e32 v18, vcc, v0, v18586; GISEL-NEXT: v_and_b32_e32 v0, v22, v27587; GISEL-NEXT: v_subb_u32_e32 v19, vcc, v1, v0, vcc588; GISEL-NEXT: v_and_b32_e32 v0, v22, v10589; GISEL-NEXT: v_subb_u32_e32 v20, vcc, v2, v0, vcc590; GISEL-NEXT: v_and_b32_e32 v0, v22, v11591; GISEL-NEXT: v_subb_u32_e32 v21, vcc, v3, v0, vcc592; GISEL-NEXT: v_add_i32_e32 v28, vcc, -1, v28593; GISEL-NEXT: v_addc_u32_e32 v29, vcc, -1, v29, vcc594; GISEL-NEXT: v_addc_u32_e32 v30, vcc, -1, v30, vcc595; GISEL-NEXT: v_addc_u32_e32 v31, vcc, -1, v31, vcc596; GISEL-NEXT: v_or_b32_e32 v0, v28, v30597; GISEL-NEXT: v_or_b32_e32 v1, v29, v31598; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]599; GISEL-NEXT: v_and_b32_e32 v22, 1, v22600; GISEL-NEXT: v_lshl_b64 v[8:9], v[8:9], 1601; GISEL-NEXT: s_or_b64 s[8:9], vcc, s[8:9]602; GISEL-NEXT: v_or_b32_e32 v8, v8, v36603; GISEL-NEXT: v_mov_b32_e32 v0, v22604; GISEL-NEXT: v_mov_b32_e32 v1, v23605; GISEL-NEXT: s_andn2_b64 exec, exec, s[8:9]606; GISEL-NEXT: s_cbranch_execnz .LBB0_3607; GISEL-NEXT: ; %bb.4: ; %Flow13608; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]609; GISEL-NEXT: .LBB0_5: ; %Flow14610; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]611; GISEL-NEXT: v_lshl_b64 v[2:3], v[16:17], 1612; GISEL-NEXT: v_lshl_b64 v[8:9], v[8:9], 1613; GISEL-NEXT: v_lshrrev_b32_e32 v10, 31, v17614; GISEL-NEXT: v_or_b32_e32 v8, v8, v10615; GISEL-NEXT: v_or_b32_e32 v22, v0, v2616; GISEL-NEXT: v_or_b32_e32 v23, v1, v3617; GISEL-NEXT: .LBB0_6: ; %Flow16618; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]619; GISEL-NEXT: s_mov_b64 s[8:9], 0620; GISEL-NEXT: v_ashrrev_i32_e32 v18, 31, v7621; GISEL-NEXT: v_ashrrev_i32_e32 v19, 31, v15622; GISEL-NEXT: v_mov_b32_e32 v16, 0x7f623; GISEL-NEXT: v_mov_b32_e32 v17, 0624; GISEL-NEXT: v_xor_b32_e32 v0, v18, v4625; GISEL-NEXT: v_xor_b32_e32 v1, v18, v5626; GISEL-NEXT: v_xor_b32_e32 v2, v18, v6627; GISEL-NEXT: v_xor_b32_e32 v3, v18, v7628; GISEL-NEXT: v_xor_b32_e32 v4, v19, v12629; GISEL-NEXT: v_xor_b32_e32 v5, v19, v13630; GISEL-NEXT: v_xor_b32_e32 v12, v19, v14631; GISEL-NEXT: v_xor_b32_e32 v13, v19, v15632; GISEL-NEXT: v_sub_i32_e32 v6, vcc, v0, v18633; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v1, v18, vcc634; GISEL-NEXT: v_sub_i32_e64 v20, s[4:5], v4, v19635; GISEL-NEXT: v_subb_u32_e64 v21, s[4:5], v5, v19, s[4:5]636; GISEL-NEXT: v_subb_u32_e32 v10, vcc, v2, v18, vcc637; GISEL-NEXT: v_subb_u32_e32 v11, vcc, v3, v18, vcc638; GISEL-NEXT: v_subb_u32_e64 v4, vcc, v12, v19, s[4:5]639; GISEL-NEXT: v_subb_u32_e32 v5, vcc, v13, v19, vcc640; GISEL-NEXT: v_ffbh_u32_e32 v12, v21641; GISEL-NEXT: v_ffbh_u32_e32 v13, v20642; GISEL-NEXT: v_ffbh_u32_e32 v14, v7643; GISEL-NEXT: v_ffbh_u32_e32 v15, v6644; GISEL-NEXT: v_or_b32_e32 v0, v20, v4645; GISEL-NEXT: v_or_b32_e32 v1, v21, v5646; GISEL-NEXT: v_or_b32_e32 v2, v6, v10647; GISEL-NEXT: v_or_b32_e32 v3, v7, v11648; GISEL-NEXT: v_add_i32_e32 v13, vcc, 32, v13649; GISEL-NEXT: v_ffbh_u32_e32 v26, v5650; GISEL-NEXT: v_ffbh_u32_e32 v27, v4651; GISEL-NEXT: v_add_i32_e32 v15, vcc, 32, v15652; GISEL-NEXT: v_ffbh_u32_e32 v28, v11653; GISEL-NEXT: v_ffbh_u32_e32 v29, v10654; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]655; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[2:3]656; GISEL-NEXT: v_min_u32_e32 v0, v12, v13657; GISEL-NEXT: v_add_i32_e64 v1, s[6:7], 32, v27658; GISEL-NEXT: v_min_u32_e32 v2, v14, v15659; GISEL-NEXT: v_add_i32_e64 v3, s[6:7], 32, v29660; GISEL-NEXT: v_add_i32_e64 v0, s[6:7], 64, v0661; GISEL-NEXT: v_min_u32_e32 v1, v26, v1662; GISEL-NEXT: v_add_i32_e64 v2, s[6:7], 64, v2663; GISEL-NEXT: v_min_u32_e32 v3, v28, v3664; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]665; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, s[4:5]666; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[4:5]667; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc668; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]669; GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v2, vcc670; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v0, v1671; GISEL-NEXT: v_subb_u32_e64 v3, s[4:5], 0, 0, vcc672; GISEL-NEXT: v_subb_u32_e64 v0, s[4:5], 0, 0, s[4:5]673; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], 0, 0, s[4:5]674; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[16:17]675; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc676; GISEL-NEXT: v_xor_b32_e32 v12, 0x7f, v2677; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[0:1]678; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc679; GISEL-NEXT: v_or_b32_e32 v12, v12, v0680; GISEL-NEXT: v_or_b32_e32 v13, v3, v1681; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]682; GISEL-NEXT: v_cndmask_b32_e32 v15, v16, v15, vcc683; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[12:13]684; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc685; GISEL-NEXT: v_or_b32_e32 v13, v14, v15686; GISEL-NEXT: v_and_b32_e32 v14, 1, v13687; GISEL-NEXT: v_or_b32_e32 v12, v13, v12688; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v14689; GISEL-NEXT: v_cndmask_b32_e64 v14, v6, 0, vcc690; GISEL-NEXT: v_and_b32_e32 v16, 1, v12691; GISEL-NEXT: v_cndmask_b32_e64 v15, v7, 0, vcc692; GISEL-NEXT: v_cndmask_b32_e64 v12, v10, 0, vcc693; GISEL-NEXT: v_cndmask_b32_e64 v13, v11, 0, vcc694; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v16695; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -1696; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]697; GISEL-NEXT: s_cbranch_execz .LBB0_12698; GISEL-NEXT: ; %bb.7: ; %udiv-bb1699; GISEL-NEXT: v_add_i32_e32 v26, vcc, 1, v2700; GISEL-NEXT: v_addc_u32_e64 v27, s[4:5], 0, v3, vcc701; GISEL-NEXT: v_sub_i32_e32 v30, vcc, 0x7f, v2702; GISEL-NEXT: v_not_b32_e32 v2, 63703; GISEL-NEXT: v_addc_u32_e64 v28, vcc, 0, v0, s[4:5]704; GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v1, vcc705; GISEL-NEXT: v_add_i32_e64 v14, s[4:5], v30, v2706; GISEL-NEXT: v_sub_i32_e64 v12, s[4:5], 64, v30707; GISEL-NEXT: v_lshl_b64 v[0:1], v[6:7], v30708; GISEL-NEXT: v_lshl_b64 v[2:3], v[10:11], v30709; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -1710; GISEL-NEXT: v_lshr_b64 v[12:13], v[6:7], v12711; GISEL-NEXT: v_lshl_b64 v[16:17], v[6:7], v14712; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v30713; GISEL-NEXT: v_cndmask_b32_e32 v14, 0, v0, vcc714; GISEL-NEXT: v_cndmask_b32_e32 v15, 0, v1, vcc715; GISEL-NEXT: v_or_b32_e32 v0, v12, v2716; GISEL-NEXT: v_or_b32_e32 v1, v13, v3717; GISEL-NEXT: v_cndmask_b32_e32 v0, v16, v0, vcc718; GISEL-NEXT: v_cndmask_b32_e32 v1, v17, v1, vcc719; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v30720; GISEL-NEXT: v_cndmask_b32_e32 v12, v0, v10, vcc721; GISEL-NEXT: v_cndmask_b32_e32 v13, v1, v11, vcc722; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]723; GISEL-NEXT: v_mov_b32_e32 v0, s8724; GISEL-NEXT: v_mov_b32_e32 v1, s9725; GISEL-NEXT: v_mov_b32_e32 v2, s10726; GISEL-NEXT: v_mov_b32_e32 v3, s11727; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]728; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]729; GISEL-NEXT: s_cbranch_execz .LBB0_11730; GISEL-NEXT: ; %bb.8: ; %udiv-preheader731; GISEL-NEXT: v_add_i32_e32 v32, vcc, 0xffffffc0, v26732; GISEL-NEXT: v_sub_i32_e32 v16, vcc, 64, v26733; GISEL-NEXT: v_lshr_b64 v[0:1], v[10:11], v26734; GISEL-NEXT: v_lshr_b64 v[2:3], v[6:7], v26735; GISEL-NEXT: s_mov_b64 s[4:5], 0736; GISEL-NEXT: v_add_i32_e32 v30, vcc, -1, v20737; GISEL-NEXT: v_addc_u32_e32 v31, vcc, -1, v21, vcc738; GISEL-NEXT: v_lshl_b64 v[16:17], v[10:11], v16739; GISEL-NEXT: v_lshr_b64 v[10:11], v[10:11], v32740; GISEL-NEXT: v_addc_u32_e32 v32, vcc, -1, v4, vcc741; GISEL-NEXT: v_addc_u32_e32 v33, vcc, -1, v5, vcc742; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]743; GISEL-NEXT: v_or_b32_e32 v2, v2, v16744; GISEL-NEXT: v_or_b32_e32 v3, v3, v17745; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v26746; GISEL-NEXT: v_cndmask_b32_e32 v2, v10, v2, vcc747; GISEL-NEXT: v_cndmask_b32_e32 v3, v11, v3, vcc748; GISEL-NEXT: v_cndmask_b32_e32 v16, 0, v0, vcc749; GISEL-NEXT: v_cndmask_b32_e32 v17, 0, v1, vcc750; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v26751; GISEL-NEXT: v_cndmask_b32_e32 v10, v2, v6, vcc752; GISEL-NEXT: v_cndmask_b32_e32 v11, v3, v7, vcc753; GISEL-NEXT: v_mov_b32_e32 v7, 0754; GISEL-NEXT: v_mov_b32_e32 v0, s4755; GISEL-NEXT: v_mov_b32_e32 v1, s5756; GISEL-NEXT: v_mov_b32_e32 v2, s6757; GISEL-NEXT: v_mov_b32_e32 v3, s7758; GISEL-NEXT: .LBB0_9: ; %udiv-do-while759; GISEL-NEXT: ; =>This Inner Loop Header: Depth=1760; GISEL-NEXT: v_lshl_b64 v[2:3], v[10:11], 1761; GISEL-NEXT: v_lshl_b64 v[16:17], v[16:17], 1762; GISEL-NEXT: v_lshrrev_b32_e32 v6, 31, v11763; GISEL-NEXT: v_lshrrev_b32_e32 v34, 31, v13764; GISEL-NEXT: v_lshl_b64 v[10:11], v[14:15], 1765; GISEL-NEXT: v_lshl_b64 v[12:13], v[12:13], 1766; GISEL-NEXT: v_lshrrev_b32_e32 v14, 31, v15767; GISEL-NEXT: v_add_i32_e32 v26, vcc, -1, v26768; GISEL-NEXT: v_addc_u32_e32 v27, vcc, -1, v27, vcc769; GISEL-NEXT: v_or_b32_e32 v16, v16, v6770; GISEL-NEXT: v_or_b32_e32 v2, v2, v34771; GISEL-NEXT: v_or_b32_e32 v12, v12, v14772; GISEL-NEXT: v_or_b32_e32 v14, v0, v10773; GISEL-NEXT: v_or_b32_e32 v15, v1, v11774; GISEL-NEXT: v_addc_u32_e32 v28, vcc, -1, v28, vcc775; GISEL-NEXT: v_addc_u32_e32 v29, vcc, -1, v29, vcc776; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v30, v2777; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v31, v3, vcc778; GISEL-NEXT: v_or_b32_e32 v0, v26, v28779; GISEL-NEXT: v_or_b32_e32 v1, v27, v29780; GISEL-NEXT: v_subb_u32_e32 v6, vcc, v32, v16, vcc781; GISEL-NEXT: v_subb_u32_e32 v6, vcc, v33, v17, vcc782; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]783; GISEL-NEXT: v_ashrrev_i32_e32 v0, 31, v6784; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]785; GISEL-NEXT: v_and_b32_e32 v6, 1, v0786; GISEL-NEXT: v_and_b32_e32 v10, v0, v20787; GISEL-NEXT: v_and_b32_e32 v11, v0, v21788; GISEL-NEXT: v_and_b32_e32 v34, v0, v4789; GISEL-NEXT: v_and_b32_e32 v35, v0, v5790; GISEL-NEXT: v_mov_b32_e32 v0, v6791; GISEL-NEXT: v_mov_b32_e32 v1, v7792; GISEL-NEXT: v_sub_i32_e32 v10, vcc, v2, v10793; GISEL-NEXT: v_subb_u32_e32 v11, vcc, v3, v11, vcc794; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v16, v34, vcc795; GISEL-NEXT: v_subb_u32_e32 v17, vcc, v17, v35, vcc796; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]797; GISEL-NEXT: s_cbranch_execnz .LBB0_9798; GISEL-NEXT: ; %bb.10: ; %Flow799; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]800; GISEL-NEXT: .LBB0_11: ; %Flow11801; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]802; GISEL-NEXT: v_lshl_b64 v[2:3], v[14:15], 1803; GISEL-NEXT: v_lshl_b64 v[12:13], v[12:13], 1804; GISEL-NEXT: v_lshrrev_b32_e32 v4, 31, v15805; GISEL-NEXT: v_or_b32_e32 v12, v12, v4806; GISEL-NEXT: v_or_b32_e32 v14, v0, v2807; GISEL-NEXT: v_or_b32_e32 v15, v1, v3808; GISEL-NEXT: .LBB0_12: ; %Flow12809; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]810; GISEL-NEXT: v_xor_b32_e32 v3, v25, v24811; GISEL-NEXT: v_xor_b32_e32 v7, v19, v18812; GISEL-NEXT: v_xor_b32_e32 v0, v22, v3813; GISEL-NEXT: v_xor_b32_e32 v1, v23, v3814; GISEL-NEXT: v_xor_b32_e32 v2, v8, v3815; GISEL-NEXT: v_xor_b32_e32 v6, v9, v3816; GISEL-NEXT: v_xor_b32_e32 v4, v14, v7817; GISEL-NEXT: v_xor_b32_e32 v5, v15, v7818; GISEL-NEXT: v_xor_b32_e32 v8, v12, v7819; GISEL-NEXT: v_xor_b32_e32 v9, v13, v7820; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v3821; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v1, v3, vcc822; GISEL-NEXT: v_sub_i32_e64 v4, s[4:5], v4, v7823; GISEL-NEXT: v_subb_u32_e64 v5, s[4:5], v5, v7, s[4:5]824; GISEL-NEXT: v_subb_u32_e32 v2, vcc, v2, v3, vcc825; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v6, v3, vcc826; GISEL-NEXT: v_subb_u32_e64 v6, vcc, v8, v7, s[4:5]827; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v9, v7, vcc828; GISEL-NEXT: s_setpc_b64 s[30:31]829 %shl = sdiv <2 x i128> %lhs, %rhs830 ret <2 x i128> %shl831}832 833define <2 x i128> @v_udiv_v2i128_vv(<2 x i128> %lhs, <2 x i128> %rhs) {834; SDAG-LABEL: v_udiv_v2i128_vv:835; SDAG: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases836; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)837; SDAG-NEXT: v_or_b32_e32 v17, v9, v11838; SDAG-NEXT: v_or_b32_e32 v16, v8, v10839; SDAG-NEXT: v_or_b32_e32 v19, v1, v3840; SDAG-NEXT: v_or_b32_e32 v18, v0, v2841; SDAG-NEXT: v_ffbh_u32_e32 v20, v10842; SDAG-NEXT: v_ffbh_u32_e32 v21, v11843; SDAG-NEXT: v_ffbh_u32_e32 v22, v8844; SDAG-NEXT: v_ffbh_u32_e32 v23, v9845; SDAG-NEXT: v_ffbh_u32_e32 v24, v2846; SDAG-NEXT: v_ffbh_u32_e32 v25, v3847; SDAG-NEXT: v_ffbh_u32_e32 v26, v0848; SDAG-NEXT: v_ffbh_u32_e32 v27, v1849; SDAG-NEXT: v_mov_b32_e32 v28, 0850; SDAG-NEXT: s_mov_b64 s[8:9], 0x7f851; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]852; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]853; SDAG-NEXT: v_add_i32_e64 v16, s[6:7], 32, v20854; SDAG-NEXT: v_add_i32_e64 v17, s[6:7], 32, v22855; SDAG-NEXT: v_add_i32_e64 v18, s[6:7], 32, v24856; SDAG-NEXT: v_add_i32_e64 v19, s[6:7], 32, v26857; SDAG-NEXT: v_min_u32_e32 v16, v16, v21858; SDAG-NEXT: v_min_u32_e32 v17, v17, v23859; SDAG-NEXT: v_min_u32_e32 v18, v18, v25860; SDAG-NEXT: v_min_u32_e32 v19, v19, v27861; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[4:5]862; SDAG-NEXT: v_add_i32_e32 v17, vcc, 64, v17863; SDAG-NEXT: v_addc_u32_e64 v20, s[4:5], 0, 0, vcc864; SDAG-NEXT: v_add_i32_e32 v19, vcc, 64, v19865; SDAG-NEXT: v_addc_u32_e64 v21, s[4:5], 0, 0, vcc866; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]867; SDAG-NEXT: v_cndmask_b32_e64 v20, v20, 0, vcc868; SDAG-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc869; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]870; SDAG-NEXT: v_cndmask_b32_e64 v17, v21, 0, vcc871; SDAG-NEXT: v_cndmask_b32_e32 v18, v19, v18, vcc872; SDAG-NEXT: v_sub_i32_e32 v21, vcc, v16, v18873; SDAG-NEXT: v_subb_u32_e32 v22, vcc, v20, v17, vcc874; SDAG-NEXT: v_xor_b32_e32 v16, 0x7f, v21875; SDAG-NEXT: v_subb_u32_e32 v23, vcc, 0, v28, vcc876; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[8:9], v[21:22]877; SDAG-NEXT: v_cndmask_b32_e64 v18, 0, 1, s[4:5]878; SDAG-NEXT: v_subb_u32_e32 v24, vcc, 0, v28, vcc879; SDAG-NEXT: v_or_b32_e32 v16, v16, v23880; SDAG-NEXT: v_or_b32_e32 v17, v22, v24881; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[23:24]882; SDAG-NEXT: v_cndmask_b32_e64 v19, 0, 1, vcc883; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[16:17]884; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[23:24]885; SDAG-NEXT: v_cndmask_b32_e64 v16, v19, v18, s[4:5]886; SDAG-NEXT: v_and_b32_e32 v16, 1, v16887; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v16888; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]889; SDAG-NEXT: v_cndmask_b32_e64 v16, v3, 0, s[4:5]890; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -1891; SDAG-NEXT: v_cndmask_b32_e64 v17, v2, 0, s[4:5]892; SDAG-NEXT: v_cndmask_b32_e64 v18, v1, 0, s[4:5]893; SDAG-NEXT: s_and_b64 s[8:9], s[6:7], vcc894; SDAG-NEXT: v_cndmask_b32_e64 v19, v0, 0, s[4:5]895; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[8:9]896; SDAG-NEXT: s_cbranch_execz .LBB1_6897; SDAG-NEXT: ; %bb.1: ; %udiv-bb15898; SDAG-NEXT: v_add_i32_e32 v18, vcc, 1, v21899; SDAG-NEXT: v_sub_i32_e64 v16, s[4:5], 63, v21900; SDAG-NEXT: v_mov_b32_e32 v19, 0901; SDAG-NEXT: v_mov_b32_e32 v20, 0902; SDAG-NEXT: v_addc_u32_e32 v27, vcc, 0, v22, vcc903; SDAG-NEXT: v_lshl_b64 v[16:17], v[0:1], v16904; SDAG-NEXT: v_addc_u32_e32 v28, vcc, 0, v23, vcc905; SDAG-NEXT: v_addc_u32_e32 v29, vcc, 0, v24, vcc906; SDAG-NEXT: v_or_b32_e32 v22, v18, v28907; SDAG-NEXT: v_sub_i32_e32 v26, vcc, 0x7f, v21908; SDAG-NEXT: v_or_b32_e32 v23, v27, v29909; SDAG-NEXT: v_lshl_b64 v[24:25], v[2:3], v26910; SDAG-NEXT: v_sub_i32_e32 v21, vcc, 64, v26911; SDAG-NEXT: v_lshl_b64 v[30:31], v[0:1], v26912; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[22:23]913; SDAG-NEXT: v_lshr_b64 v[21:22], v[0:1], v21914; SDAG-NEXT: v_or_b32_e32 v22, v25, v22915; SDAG-NEXT: v_or_b32_e32 v21, v24, v21916; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v26917; SDAG-NEXT: v_cndmask_b32_e64 v22, v17, v22, s[4:5]918; SDAG-NEXT: v_cndmask_b32_e64 v21, v16, v21, s[4:5]919; SDAG-NEXT: v_cndmask_b32_e64 v17, 0, v31, s[4:5]920; SDAG-NEXT: v_cndmask_b32_e64 v16, 0, v30, s[4:5]921; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v26922; SDAG-NEXT: v_cndmask_b32_e64 v22, v22, v3, s[4:5]923; SDAG-NEXT: v_cndmask_b32_e64 v21, v21, v2, s[4:5]924; SDAG-NEXT: v_mov_b32_e32 v23, 0925; SDAG-NEXT: v_mov_b32_e32 v24, 0926; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc927; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]928; SDAG-NEXT: s_cbranch_execz .LBB1_5929; SDAG-NEXT: ; %bb.2: ; %udiv-preheader4930; SDAG-NEXT: v_lshr_b64 v[19:20], v[0:1], v18931; SDAG-NEXT: v_sub_i32_e32 v23, vcc, 64, v18932; SDAG-NEXT: v_lshl_b64 v[23:24], v[2:3], v23933; SDAG-NEXT: v_or_b32_e32 v24, v20, v24934; SDAG-NEXT: v_or_b32_e32 v23, v19, v23935; SDAG-NEXT: v_cmp_gt_u32_e32 vcc, 64, v18936; SDAG-NEXT: v_subrev_i32_e64 v19, s[4:5], 64, v18937; SDAG-NEXT: v_lshr_b64 v[19:20], v[2:3], v19938; SDAG-NEXT: v_cndmask_b32_e32 v20, v20, v24, vcc939; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v18940; SDAG-NEXT: v_cndmask_b32_e64 v1, v20, v1, s[4:5]941; SDAG-NEXT: v_cndmask_b32_e32 v19, v19, v23, vcc942; SDAG-NEXT: v_cndmask_b32_e64 v0, v19, v0, s[4:5]943; SDAG-NEXT: v_lshr_b64 v[2:3], v[2:3], v18944; SDAG-NEXT: v_cndmask_b32_e32 v3, 0, v3, vcc945; SDAG-NEXT: v_cndmask_b32_e32 v2, 0, v2, vcc946; SDAG-NEXT: v_add_i32_e32 v30, vcc, -1, v8947; SDAG-NEXT: v_addc_u32_e32 v31, vcc, -1, v9, vcc948; SDAG-NEXT: v_addc_u32_e32 v32, vcc, -1, v10, vcc949; SDAG-NEXT: v_addc_u32_e32 v33, vcc, -1, v11, vcc950; SDAG-NEXT: v_mov_b32_e32 v23, 0951; SDAG-NEXT: v_mov_b32_e32 v24, 0952; SDAG-NEXT: s_mov_b64 s[4:5], 0953; SDAG-NEXT: v_mov_b32_e32 v20, 0954; SDAG-NEXT: v_mov_b32_e32 v25, 0955; SDAG-NEXT: v_mov_b32_e32 v26, 0956; SDAG-NEXT: .LBB1_3: ; %udiv-do-while3957; SDAG-NEXT: ; =>This Inner Loop Header: Depth=1958; SDAG-NEXT: v_lshrrev_b32_e32 v34, 31, v17959; SDAG-NEXT: v_lshl_b64 v[16:17], v[16:17], 1960; SDAG-NEXT: v_or_b32_e32 v17, v26, v17961; SDAG-NEXT: v_or_b32_e32 v16, v25, v16962; SDAG-NEXT: v_lshl_b64 v[2:3], v[2:3], 1963; SDAG-NEXT: v_lshrrev_b32_e32 v19, 31, v1964; SDAG-NEXT: v_lshl_b64 v[0:1], v[0:1], 1965; SDAG-NEXT: v_or_b32_e32 v2, v2, v19966; SDAG-NEXT: v_lshrrev_b32_e32 v19, 31, v22967; SDAG-NEXT: v_or_b32_e32 v0, v0, v19968; SDAG-NEXT: v_sub_i32_e32 v19, vcc, v30, v0969; SDAG-NEXT: v_subb_u32_e32 v19, vcc, v31, v1, vcc970; SDAG-NEXT: v_subb_u32_e32 v19, vcc, v32, v2, vcc971; SDAG-NEXT: v_subb_u32_e32 v19, vcc, v33, v3, vcc972; SDAG-NEXT: v_ashrrev_i32_e32 v19, 31, v19973; SDAG-NEXT: v_and_b32_e32 v25, v19, v8974; SDAG-NEXT: v_sub_i32_e32 v0, vcc, v0, v25975; SDAG-NEXT: v_and_b32_e32 v25, v19, v9976; SDAG-NEXT: v_subb_u32_e32 v1, vcc, v1, v25, vcc977; SDAG-NEXT: v_and_b32_e32 v25, v19, v10978; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v2, v25, vcc979; SDAG-NEXT: v_and_b32_e32 v25, v19, v11980; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v3, v25, vcc981; SDAG-NEXT: v_add_i32_e32 v18, vcc, -1, v18982; SDAG-NEXT: v_addc_u32_e32 v27, vcc, -1, v27, vcc983; SDAG-NEXT: v_addc_u32_e32 v28, vcc, -1, v28, vcc984; SDAG-NEXT: v_addc_u32_e32 v29, vcc, -1, v29, vcc985; SDAG-NEXT: v_or_b32_e32 v25, v18, v28986; SDAG-NEXT: v_or_b32_e32 v26, v27, v29987; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[25:26]988; SDAG-NEXT: v_and_b32_e32 v19, 1, v19989; SDAG-NEXT: v_lshl_b64 v[21:22], v[21:22], 1990; SDAG-NEXT: v_or_b32_e32 v21, v21, v34991; SDAG-NEXT: v_or_b32_e32 v22, v24, v22992; SDAG-NEXT: s_or_b64 s[4:5], vcc, s[4:5]993; SDAG-NEXT: v_or_b32_e32 v21, v23, v21994; SDAG-NEXT: v_mov_b32_e32 v26, v20995; SDAG-NEXT: v_mov_b32_e32 v25, v19996; SDAG-NEXT: s_andn2_b64 exec, exec, s[4:5]997; SDAG-NEXT: s_cbranch_execnz .LBB1_3998; SDAG-NEXT: ; %bb.4: ; %Flow13999; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]1000; SDAG-NEXT: .LBB1_5: ; %Flow141001; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1002; SDAG-NEXT: v_lshl_b64 v[0:1], v[21:22], 11003; SDAG-NEXT: v_lshrrev_b32_e32 v8, 31, v171004; SDAG-NEXT: v_lshl_b64 v[2:3], v[16:17], 11005; SDAG-NEXT: v_or_b32_e32 v0, v0, v81006; SDAG-NEXT: v_or_b32_e32 v16, v24, v11007; SDAG-NEXT: v_or_b32_e32 v18, v20, v31008; SDAG-NEXT: v_or_b32_e32 v17, v23, v01009; SDAG-NEXT: v_or_b32_e32 v19, v19, v21010; SDAG-NEXT: .LBB1_6: ; %Flow161011; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1012; SDAG-NEXT: v_or_b32_e32 v1, v13, v151013; SDAG-NEXT: v_or_b32_e32 v0, v12, v141014; SDAG-NEXT: v_or_b32_e32 v3, v5, v71015; SDAG-NEXT: v_or_b32_e32 v2, v4, v61016; SDAG-NEXT: v_ffbh_u32_e32 v8, v141017; SDAG-NEXT: v_ffbh_u32_e32 v9, v151018; SDAG-NEXT: v_ffbh_u32_e32 v10, v121019; SDAG-NEXT: v_ffbh_u32_e32 v11, v131020; SDAG-NEXT: v_ffbh_u32_e32 v20, v61021; SDAG-NEXT: v_ffbh_u32_e32 v21, v71022; SDAG-NEXT: v_ffbh_u32_e32 v22, v41023; SDAG-NEXT: v_ffbh_u32_e32 v23, v51024; SDAG-NEXT: v_mov_b32_e32 v24, 01025; SDAG-NEXT: s_mov_b64 s[8:9], 0x7f1026; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]1027; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[2:3]1028; SDAG-NEXT: v_add_i32_e64 v0, s[6:7], 32, v81029; SDAG-NEXT: v_add_i32_e64 v1, s[6:7], 32, v101030; SDAG-NEXT: v_add_i32_e64 v2, s[6:7], 32, v201031; SDAG-NEXT: v_add_i32_e64 v3, s[6:7], 32, v221032; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[4:5]1033; SDAG-NEXT: v_min_u32_e32 v0, v0, v91034; SDAG-NEXT: v_min_u32_e32 v1, v1, v111035; SDAG-NEXT: v_min_u32_e32 v2, v2, v211036; SDAG-NEXT: v_min_u32_e32 v3, v3, v231037; SDAG-NEXT: v_add_i32_e32 v1, vcc, 64, v11038; SDAG-NEXT: v_addc_u32_e64 v8, s[4:5], 0, 0, vcc1039; SDAG-NEXT: v_add_i32_e32 v3, vcc, 64, v31040; SDAG-NEXT: v_addc_u32_e64 v9, s[4:5], 0, 0, vcc1041; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[14:15]1042; SDAG-NEXT: v_cndmask_b32_e64 v8, v8, 0, vcc1043; SDAG-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc1044; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[6:7]1045; SDAG-NEXT: v_cndmask_b32_e64 v1, v9, 0, vcc1046; SDAG-NEXT: v_cndmask_b32_e32 v2, v3, v2, vcc1047; SDAG-NEXT: v_sub_i32_e32 v2, vcc, v0, v21048; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v8, v1, vcc1049; SDAG-NEXT: v_xor_b32_e32 v0, 0x7f, v21050; SDAG-NEXT: v_subb_u32_e32 v20, vcc, 0, v24, vcc1051; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[8:9], v[2:3]1052; SDAG-NEXT: v_cndmask_b32_e64 v8, 0, 1, s[4:5]1053; SDAG-NEXT: v_subb_u32_e32 v21, vcc, 0, v24, vcc1054; SDAG-NEXT: v_or_b32_e32 v0, v0, v201055; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[20:21]1056; SDAG-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1057; SDAG-NEXT: v_or_b32_e32 v1, v3, v211058; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[20:21]1059; SDAG-NEXT: v_cndmask_b32_e32 v8, v9, v8, vcc1060; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]1061; SDAG-NEXT: v_and_b32_e32 v0, 1, v81062; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v01063; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]1064; SDAG-NEXT: v_cndmask_b32_e64 v8, v7, 0, s[4:5]1065; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -11066; SDAG-NEXT: v_cndmask_b32_e64 v9, v6, 0, s[4:5]1067; SDAG-NEXT: v_cndmask_b32_e64 v10, v5, 0, s[4:5]1068; SDAG-NEXT: v_cndmask_b32_e64 v11, v4, 0, s[4:5]1069; SDAG-NEXT: s_and_b64 s[4:5], s[6:7], vcc1070; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1071; SDAG-NEXT: s_cbranch_execz .LBB1_121072; SDAG-NEXT: ; %bb.7: ; %udiv-bb11073; SDAG-NEXT: v_add_i32_e32 v22, vcc, 1, v21074; SDAG-NEXT: v_sub_i32_e64 v8, s[4:5], 63, v21075; SDAG-NEXT: v_mov_b32_e32 v0, 01076; SDAG-NEXT: v_mov_b32_e32 v1, 01077; SDAG-NEXT: v_addc_u32_e32 v23, vcc, 0, v3, vcc1078; SDAG-NEXT: v_lshl_b64 v[8:9], v[4:5], v81079; SDAG-NEXT: v_addc_u32_e32 v24, vcc, 0, v20, vcc1080; SDAG-NEXT: v_addc_u32_e32 v25, vcc, 0, v21, vcc1081; SDAG-NEXT: v_or_b32_e32 v10, v22, v241082; SDAG-NEXT: v_sub_i32_e32 v26, vcc, 0x7f, v21083; SDAG-NEXT: v_or_b32_e32 v11, v23, v251084; SDAG-NEXT: v_lshl_b64 v[2:3], v[6:7], v261085; SDAG-NEXT: v_sub_i32_e32 v27, vcc, 64, v261086; SDAG-NEXT: v_lshl_b64 v[20:21], v[4:5], v261087; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]1088; SDAG-NEXT: v_lshr_b64 v[10:11], v[4:5], v271089; SDAG-NEXT: v_or_b32_e32 v3, v3, v111090; SDAG-NEXT: v_or_b32_e32 v2, v2, v101091; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v261092; SDAG-NEXT: v_cndmask_b32_e64 v3, v9, v3, s[4:5]1093; SDAG-NEXT: v_cndmask_b32_e64 v2, v8, v2, s[4:5]1094; SDAG-NEXT: v_cndmask_b32_e64 v9, 0, v21, s[4:5]1095; SDAG-NEXT: v_cndmask_b32_e64 v8, 0, v20, s[4:5]1096; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v261097; SDAG-NEXT: v_cndmask_b32_e64 v3, v3, v7, s[4:5]1098; SDAG-NEXT: v_cndmask_b32_e64 v2, v2, v6, s[4:5]1099; SDAG-NEXT: v_mov_b32_e32 v20, 01100; SDAG-NEXT: v_mov_b32_e32 v21, 01101; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc1102; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]1103; SDAG-NEXT: s_cbranch_execz .LBB1_111104; SDAG-NEXT: ; %bb.8: ; %udiv-preheader1105; SDAG-NEXT: v_lshr_b64 v[10:11], v[4:5], v221106; SDAG-NEXT: v_sub_i32_e32 v0, vcc, 64, v221107; SDAG-NEXT: v_subrev_i32_e32 v27, vcc, 64, v221108; SDAG-NEXT: v_lshr_b64 v[29:30], v[6:7], v221109; SDAG-NEXT: v_add_i32_e32 v26, vcc, -1, v121110; SDAG-NEXT: v_mov_b32_e32 v20, 01111; SDAG-NEXT: v_mov_b32_e32 v21, 01112; SDAG-NEXT: s_mov_b64 s[10:11], 01113; SDAG-NEXT: v_mov_b32_e32 v1, 01114; SDAG-NEXT: v_lshl_b64 v[31:32], v[6:7], v01115; SDAG-NEXT: v_lshr_b64 v[6:7], v[6:7], v271116; SDAG-NEXT: v_addc_u32_e32 v27, vcc, -1, v13, vcc1117; SDAG-NEXT: v_or_b32_e32 v0, v11, v321118; SDAG-NEXT: v_or_b32_e32 v10, v10, v311119; SDAG-NEXT: v_addc_u32_e32 v28, vcc, -1, v14, vcc1120; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v221121; SDAG-NEXT: v_cndmask_b32_e64 v0, v7, v0, s[4:5]1122; SDAG-NEXT: v_cndmask_b32_e64 v6, v6, v10, s[4:5]1123; SDAG-NEXT: v_cndmask_b32_e64 v11, 0, v30, s[4:5]1124; SDAG-NEXT: v_cndmask_b32_e64 v10, 0, v29, s[4:5]1125; SDAG-NEXT: v_addc_u32_e32 v29, vcc, -1, v15, vcc1126; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v221127; SDAG-NEXT: v_cndmask_b32_e32 v7, v0, v5, vcc1128; SDAG-NEXT: v_cndmask_b32_e32 v6, v6, v4, vcc1129; SDAG-NEXT: v_mov_b32_e32 v4, 01130; SDAG-NEXT: v_mov_b32_e32 v5, 01131; SDAG-NEXT: .LBB1_9: ; %udiv-do-while1132; SDAG-NEXT: ; =>This Inner Loop Header: Depth=11133; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 11134; SDAG-NEXT: v_lshrrev_b32_e32 v0, 31, v71135; SDAG-NEXT: v_lshl_b64 v[6:7], v[6:7], 11136; SDAG-NEXT: v_lshrrev_b32_e32 v30, 31, v31137; SDAG-NEXT: v_lshl_b64 v[2:3], v[2:3], 11138; SDAG-NEXT: v_lshrrev_b32_e32 v31, 31, v91139; SDAG-NEXT: v_lshl_b64 v[8:9], v[8:9], 11140; SDAG-NEXT: v_or_b32_e32 v10, v10, v01141; SDAG-NEXT: v_or_b32_e32 v0, v6, v301142; SDAG-NEXT: v_or_b32_e32 v2, v2, v311143; SDAG-NEXT: v_or_b32_e32 v3, v21, v31144; SDAG-NEXT: v_sub_i32_e32 v6, vcc, v26, v01145; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v27, v7, vcc1146; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v28, v10, vcc1147; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v29, v11, vcc1148; SDAG-NEXT: v_ashrrev_i32_e32 v30, 31, v61149; SDAG-NEXT: v_and_b32_e32 v31, v30, v131150; SDAG-NEXT: v_and_b32_e32 v6, v30, v121151; SDAG-NEXT: v_sub_i32_e32 v6, vcc, v0, v61152; SDAG-NEXT: v_subb_u32_e32 v7, vcc, v7, v31, vcc1153; SDAG-NEXT: v_or_b32_e32 v9, v5, v91154; SDAG-NEXT: v_or_b32_e32 v2, v20, v21155; SDAG-NEXT: v_and_b32_e32 v0, 1, v301156; SDAG-NEXT: v_and_b32_e32 v5, v30, v151157; SDAG-NEXT: v_and_b32_e32 v30, v30, v141158; SDAG-NEXT: v_subb_u32_e32 v10, vcc, v10, v30, vcc1159; SDAG-NEXT: v_subb_u32_e32 v11, vcc, v11, v5, vcc1160; SDAG-NEXT: v_add_i32_e32 v22, vcc, -1, v221161; SDAG-NEXT: v_addc_u32_e32 v23, vcc, -1, v23, vcc1162; SDAG-NEXT: v_addc_u32_e32 v24, vcc, -1, v24, vcc1163; SDAG-NEXT: v_addc_u32_e32 v25, vcc, -1, v25, vcc1164; SDAG-NEXT: v_or_b32_e32 v31, v23, v251165; SDAG-NEXT: v_or_b32_e32 v30, v22, v241166; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[30:31]1167; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]1168; SDAG-NEXT: v_or_b32_e32 v8, v4, v81169; SDAG-NEXT: v_mov_b32_e32 v5, v11170; SDAG-NEXT: v_mov_b32_e32 v4, v01171; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]1172; SDAG-NEXT: s_cbranch_execnz .LBB1_91173; SDAG-NEXT: ; %bb.10: ; %Flow1174; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]1175; SDAG-NEXT: .LBB1_11: ; %Flow111176; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1177; SDAG-NEXT: v_lshl_b64 v[2:3], v[2:3], 11178; SDAG-NEXT: v_lshrrev_b32_e32 v6, 31, v91179; SDAG-NEXT: v_lshl_b64 v[4:5], v[8:9], 11180; SDAG-NEXT: v_or_b32_e32 v2, v2, v61181; SDAG-NEXT: v_or_b32_e32 v8, v21, v31182; SDAG-NEXT: v_or_b32_e32 v10, v1, v51183; SDAG-NEXT: v_or_b32_e32 v9, v20, v21184; SDAG-NEXT: v_or_b32_e32 v11, v0, v41185; SDAG-NEXT: .LBB1_12: ; %Flow121186; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1187; SDAG-NEXT: v_mov_b32_e32 v0, v191188; SDAG-NEXT: v_mov_b32_e32 v1, v181189; SDAG-NEXT: v_mov_b32_e32 v2, v171190; SDAG-NEXT: v_mov_b32_e32 v3, v161191; SDAG-NEXT: v_mov_b32_e32 v4, v111192; SDAG-NEXT: v_mov_b32_e32 v5, v101193; SDAG-NEXT: v_mov_b32_e32 v6, v91194; SDAG-NEXT: v_mov_b32_e32 v7, v81195; SDAG-NEXT: s_setpc_b64 s[30:31]1196;1197; GISEL-LABEL: v_udiv_v2i128_vv:1198; GISEL: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases1199; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1200; GISEL-NEXT: v_mov_b32_e32 v16, v21201; GISEL-NEXT: v_mov_b32_e32 v17, v31202; GISEL-NEXT: v_or_b32_e32 v2, v8, v101203; GISEL-NEXT: v_or_b32_e32 v3, v9, v111204; GISEL-NEXT: v_or_b32_e32 v18, v0, v161205; GISEL-NEXT: v_or_b32_e32 v19, v1, v171206; GISEL-NEXT: v_ffbh_u32_e32 v20, v91207; GISEL-NEXT: v_ffbh_u32_e32 v21, v81208; GISEL-NEXT: v_ffbh_u32_e32 v22, v111209; GISEL-NEXT: v_ffbh_u32_e32 v23, v101210; GISEL-NEXT: v_ffbh_u32_e32 v26, v11211; GISEL-NEXT: v_ffbh_u32_e32 v27, v01212; GISEL-NEXT: v_ffbh_u32_e32 v28, v161213; GISEL-NEXT: v_ffbh_u32_e32 v29, v171214; GISEL-NEXT: v_mov_b32_e32 v24, 0x7f1215; GISEL-NEXT: v_mov_b32_e32 v25, 01216; GISEL-NEXT: s_mov_b64 s[8:9], 01217; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[2:3]1218; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]1219; GISEL-NEXT: v_add_i32_e64 v2, s[6:7], 32, v211220; GISEL-NEXT: v_add_i32_e64 v3, s[6:7], 32, v231221; GISEL-NEXT: v_add_i32_e64 v18, s[6:7], 32, v271222; GISEL-NEXT: v_add_i32_e64 v19, s[6:7], 32, v281223; GISEL-NEXT: v_min_u32_e32 v2, v20, v21224; GISEL-NEXT: v_min_u32_e32 v3, v22, v31225; GISEL-NEXT: v_min_u32_e32 v18, v26, v181226; GISEL-NEXT: v_min_u32_e32 v19, v29, v191227; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1228; GISEL-NEXT: v_cndmask_b32_e64 v26, 0, 1, s[4:5]1229; GISEL-NEXT: v_add_i32_e32 v2, vcc, 64, v21230; GISEL-NEXT: v_add_i32_e32 v18, vcc, 64, v181231; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]1232; GISEL-NEXT: v_cndmask_b32_e32 v2, v3, v2, vcc1233; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]1234; GISEL-NEXT: v_cndmask_b32_e32 v3, v19, v18, vcc1235; GISEL-NEXT: v_sub_i32_e32 v22, vcc, v2, v31236; GISEL-NEXT: v_subb_u32_e64 v23, s[4:5], 0, 0, vcc1237; GISEL-NEXT: v_subb_u32_e64 v20, s[4:5], 0, 0, s[4:5]1238; GISEL-NEXT: v_subb_u32_e64 v21, s[4:5], 0, 0, s[4:5]1239; GISEL-NEXT: v_xor_b32_e32 v2, 0x7f, v221240; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[22:23], v[24:25]1241; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc1242; GISEL-NEXT: v_or_b32_e32 v2, v2, v201243; GISEL-NEXT: v_or_b32_e32 v3, v23, v211244; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[20:21]1245; GISEL-NEXT: v_cndmask_b32_e64 v19, 0, 1, vcc1246; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[20:21]1247; GISEL-NEXT: v_cndmask_b32_e32 v18, v19, v18, vcc1248; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[2:3]1249; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1250; GISEL-NEXT: v_or_b32_e32 v3, v26, v181251; GISEL-NEXT: v_or_b32_e32 v2, v3, v21252; GISEL-NEXT: v_and_b32_e32 v3, 1, v31253; GISEL-NEXT: v_and_b32_e32 v2, 1, v21254; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v31255; GISEL-NEXT: v_cndmask_b32_e64 v18, v0, 0, vcc1256; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v21257; GISEL-NEXT: v_cndmask_b32_e64 v2, v16, 0, vcc1258; GISEL-NEXT: v_cndmask_b32_e64 v3, v17, 0, vcc1259; GISEL-NEXT: s_xor_b64 s[4:5], s[4:5], -11260; GISEL-NEXT: v_cndmask_b32_e64 v19, v1, 0, vcc1261; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]1262; GISEL-NEXT: s_cbranch_execz .LBB1_61263; GISEL-NEXT: ; %bb.1: ; %udiv-bb151264; GISEL-NEXT: v_add_i32_e32 v26, vcc, 1, v221265; GISEL-NEXT: v_addc_u32_e64 v27, s[4:5], 0, v23, vcc1266; GISEL-NEXT: v_sub_i32_e32 v30, vcc, 0x7f, v221267; GISEL-NEXT: v_not_b32_e32 v2, 631268; GISEL-NEXT: v_addc_u32_e64 v28, vcc, 0, v20, s[4:5]1269; GISEL-NEXT: v_addc_u32_e32 v29, vcc, 0, v21, vcc1270; GISEL-NEXT: v_add_i32_e64 v22, s[4:5], v30, v21271; GISEL-NEXT: v_sub_i32_e64 v20, s[4:5], 64, v301272; GISEL-NEXT: v_lshl_b64 v[2:3], v[0:1], v301273; GISEL-NEXT: v_lshl_b64 v[18:19], v[16:17], v301274; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -11275; GISEL-NEXT: v_lshr_b64 v[20:21], v[0:1], v201276; GISEL-NEXT: v_lshl_b64 v[24:25], v[0:1], v221277; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v301278; GISEL-NEXT: v_cndmask_b32_e32 v22, 0, v2, vcc1279; GISEL-NEXT: v_cndmask_b32_e32 v23, 0, v3, vcc1280; GISEL-NEXT: v_or_b32_e32 v2, v20, v181281; GISEL-NEXT: v_or_b32_e32 v3, v21, v191282; GISEL-NEXT: v_cndmask_b32_e32 v2, v24, v2, vcc1283; GISEL-NEXT: v_cndmask_b32_e32 v3, v25, v3, vcc1284; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v301285; GISEL-NEXT: v_cndmask_b32_e32 v2, v2, v16, vcc1286; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v17, vcc1287; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]1288; GISEL-NEXT: v_mov_b32_e32 v21, s111289; GISEL-NEXT: v_mov_b32_e32 v20, s101290; GISEL-NEXT: v_mov_b32_e32 v19, s91291; GISEL-NEXT: v_mov_b32_e32 v18, s81292; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1293; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]1294; GISEL-NEXT: s_cbranch_execz .LBB1_51295; GISEL-NEXT: ; %bb.2: ; %udiv-preheader41296; GISEL-NEXT: v_add_i32_e32 v32, vcc, 0xffffffc0, v261297; GISEL-NEXT: v_sub_i32_e32 v24, vcc, 64, v261298; GISEL-NEXT: v_lshr_b64 v[18:19], v[16:17], v261299; GISEL-NEXT: v_lshr_b64 v[20:21], v[0:1], v261300; GISEL-NEXT: s_mov_b64 s[4:5], 01301; GISEL-NEXT: v_add_i32_e32 v30, vcc, -1, v81302; GISEL-NEXT: v_addc_u32_e32 v31, vcc, -1, v9, vcc1303; GISEL-NEXT: v_lshl_b64 v[24:25], v[16:17], v241304; GISEL-NEXT: v_lshr_b64 v[16:17], v[16:17], v321305; GISEL-NEXT: v_addc_u32_e32 v32, vcc, -1, v10, vcc1306; GISEL-NEXT: v_addc_u32_e32 v33, vcc, -1, v11, vcc1307; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]1308; GISEL-NEXT: v_or_b32_e32 v20, v20, v241309; GISEL-NEXT: v_or_b32_e32 v21, v21, v251310; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v261311; GISEL-NEXT: v_cndmask_b32_e32 v20, v16, v20, vcc1312; GISEL-NEXT: v_cndmask_b32_e32 v21, v17, v21, vcc1313; GISEL-NEXT: v_cndmask_b32_e32 v16, 0, v18, vcc1314; GISEL-NEXT: v_cndmask_b32_e32 v17, 0, v19, vcc1315; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v261316; GISEL-NEXT: v_cndmask_b32_e32 v24, v20, v0, vcc1317; GISEL-NEXT: v_cndmask_b32_e32 v25, v21, v1, vcc1318; GISEL-NEXT: v_mov_b32_e32 v1, 01319; GISEL-NEXT: v_mov_b32_e32 v21, s71320; GISEL-NEXT: v_mov_b32_e32 v20, s61321; GISEL-NEXT: v_mov_b32_e32 v19, s51322; GISEL-NEXT: v_mov_b32_e32 v18, s41323; GISEL-NEXT: .LBB1_3: ; %udiv-do-while31324; GISEL-NEXT: ; =>This Inner Loop Header: Depth=11325; GISEL-NEXT: v_lshrrev_b32_e32 v34, 31, v231326; GISEL-NEXT: v_lshl_b64 v[20:21], v[22:23], 11327; GISEL-NEXT: v_lshrrev_b32_e32 v0, 31, v251328; GISEL-NEXT: v_lshl_b64 v[24:25], v[24:25], 11329; GISEL-NEXT: v_lshl_b64 v[16:17], v[16:17], 11330; GISEL-NEXT: v_lshrrev_b32_e32 v35, 31, v31331; GISEL-NEXT: v_add_i32_e32 v26, vcc, -1, v261332; GISEL-NEXT: v_addc_u32_e32 v27, vcc, -1, v27, vcc1333; GISEL-NEXT: v_lshl_b64 v[2:3], v[2:3], 11334; GISEL-NEXT: v_or_b32_e32 v22, v18, v201335; GISEL-NEXT: v_or_b32_e32 v23, v19, v211336; GISEL-NEXT: v_or_b32_e32 v16, v16, v01337; GISEL-NEXT: v_or_b32_e32 v20, v24, v351338; GISEL-NEXT: v_addc_u32_e32 v28, vcc, -1, v28, vcc1339; GISEL-NEXT: v_addc_u32_e32 v29, vcc, -1, v29, vcc1340; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v30, v201341; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v31, v25, vcc1342; GISEL-NEXT: v_or_b32_e32 v18, v26, v281343; GISEL-NEXT: v_or_b32_e32 v19, v27, v291344; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v32, v16, vcc1345; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v33, v17, vcc1346; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[18:19]1347; GISEL-NEXT: v_ashrrev_i32_e32 v0, 31, v01348; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1349; GISEL-NEXT: v_and_b32_e32 v18, v0, v81350; GISEL-NEXT: v_and_b32_e32 v19, v0, v91351; GISEL-NEXT: v_and_b32_e32 v21, v0, v101352; GISEL-NEXT: v_and_b32_e32 v35, v0, v111353; GISEL-NEXT: v_and_b32_e32 v0, 1, v01354; GISEL-NEXT: v_sub_i32_e32 v24, vcc, v20, v181355; GISEL-NEXT: v_subb_u32_e32 v25, vcc, v25, v19, vcc1356; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v16, v21, vcc1357; GISEL-NEXT: v_subb_u32_e32 v17, vcc, v17, v35, vcc1358; GISEL-NEXT: v_or_b32_e32 v2, v2, v341359; GISEL-NEXT: v_mov_b32_e32 v19, v11360; GISEL-NEXT: v_mov_b32_e32 v18, v01361; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]1362; GISEL-NEXT: s_cbranch_execnz .LBB1_31363; GISEL-NEXT: ; %bb.4: ; %Flow131364; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]1365; GISEL-NEXT: .LBB1_5: ; %Flow141366; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]1367; GISEL-NEXT: v_lshl_b64 v[0:1], v[22:23], 11368; GISEL-NEXT: v_lshl_b64 v[2:3], v[2:3], 11369; GISEL-NEXT: v_lshrrev_b32_e32 v8, 31, v231370; GISEL-NEXT: v_or_b32_e32 v2, v2, v81371; GISEL-NEXT: v_or_b32_e32 v18, v18, v01372; GISEL-NEXT: v_or_b32_e32 v19, v19, v11373; GISEL-NEXT: .LBB1_6: ; %Flow161374; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]1375; GISEL-NEXT: s_mov_b64 s[8:9], 01376; GISEL-NEXT: v_or_b32_e32 v0, v12, v141377; GISEL-NEXT: v_or_b32_e32 v1, v13, v151378; GISEL-NEXT: v_or_b32_e32 v8, v4, v61379; GISEL-NEXT: v_or_b32_e32 v9, v5, v71380; GISEL-NEXT: v_ffbh_u32_e32 v16, v131381; GISEL-NEXT: v_ffbh_u32_e32 v17, v121382; GISEL-NEXT: v_ffbh_u32_e32 v20, v151383; GISEL-NEXT: v_ffbh_u32_e32 v21, v141384; GISEL-NEXT: v_ffbh_u32_e32 v22, v51385; GISEL-NEXT: v_ffbh_u32_e32 v23, v41386; GISEL-NEXT: v_ffbh_u32_e32 v24, v71387; GISEL-NEXT: v_ffbh_u32_e32 v25, v61388; GISEL-NEXT: v_mov_b32_e32 v10, 0x7f1389; GISEL-NEXT: v_mov_b32_e32 v11, 01390; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]1391; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[8:9]1392; GISEL-NEXT: v_add_i32_e64 v0, s[6:7], 32, v171393; GISEL-NEXT: v_add_i32_e64 v1, s[6:7], 32, v211394; GISEL-NEXT: v_add_i32_e64 v8, s[6:7], 32, v231395; GISEL-NEXT: v_add_i32_e64 v9, s[6:7], 32, v251396; GISEL-NEXT: v_min_u32_e32 v0, v16, v01397; GISEL-NEXT: v_min_u32_e32 v1, v20, v11398; GISEL-NEXT: v_min_u32_e32 v8, v22, v81399; GISEL-NEXT: v_min_u32_e32 v9, v24, v91400; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1401; GISEL-NEXT: v_cndmask_b32_e64 v20, 0, 1, s[4:5]1402; GISEL-NEXT: v_add_i32_e32 v0, vcc, 64, v01403; GISEL-NEXT: v_add_i32_e32 v8, vcc, 64, v81404; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[14:15]1405; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc1406; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[6:7]1407; GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v8, vcc1408; GISEL-NEXT: v_sub_i32_e32 v16, vcc, v0, v11409; GISEL-NEXT: v_subb_u32_e64 v17, s[4:5], 0, 0, vcc1410; GISEL-NEXT: v_subb_u32_e64 v0, s[4:5], 0, 0, s[4:5]1411; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], 0, 0, s[4:5]1412; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[16:17], v[10:11]1413; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1414; GISEL-NEXT: v_xor_b32_e32 v8, 0x7f, v161415; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[0:1]1416; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1417; GISEL-NEXT: v_or_b32_e32 v8, v8, v01418; GISEL-NEXT: v_or_b32_e32 v9, v17, v11419; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]1420; GISEL-NEXT: v_cndmask_b32_e32 v10, v11, v10, vcc1421; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[8:9]1422; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1423; GISEL-NEXT: v_or_b32_e32 v9, v20, v101424; GISEL-NEXT: v_and_b32_e32 v10, 1, v91425; GISEL-NEXT: v_or_b32_e32 v8, v9, v81426; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v101427; GISEL-NEXT: v_cndmask_b32_e64 v10, v4, 0, vcc1428; GISEL-NEXT: v_and_b32_e32 v20, 1, v81429; GISEL-NEXT: v_cndmask_b32_e64 v11, v5, 0, vcc1430; GISEL-NEXT: v_cndmask_b32_e64 v8, v6, 0, vcc1431; GISEL-NEXT: v_cndmask_b32_e64 v9, v7, 0, vcc1432; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v201433; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -11434; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]1435; GISEL-NEXT: s_cbranch_execz .LBB1_121436; GISEL-NEXT: ; %bb.7: ; %udiv-bb11437; GISEL-NEXT: v_add_i32_e32 v8, vcc, 1, v161438; GISEL-NEXT: v_addc_u32_e64 v11, s[4:5], 0, v17, vcc1439; GISEL-NEXT: v_sub_i32_e32 v26, vcc, 0x7f, v161440; GISEL-NEXT: v_not_b32_e32 v9, 631441; GISEL-NEXT: v_addc_u32_e64 v24, vcc, 0, v0, s[4:5]1442; GISEL-NEXT: v_addc_u32_e32 v25, vcc, 0, v1, vcc1443; GISEL-NEXT: v_add_i32_e64 v9, s[4:5], v26, v91444; GISEL-NEXT: v_sub_i32_e64 v10, s[4:5], 64, v261445; GISEL-NEXT: v_lshl_b64 v[0:1], v[4:5], v261446; GISEL-NEXT: v_lshl_b64 v[16:17], v[6:7], v261447; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -11448; GISEL-NEXT: v_lshr_b64 v[20:21], v[4:5], v101449; GISEL-NEXT: v_lshl_b64 v[22:23], v[4:5], v91450; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v261451; GISEL-NEXT: v_cndmask_b32_e32 v9, 0, v0, vcc1452; GISEL-NEXT: v_cndmask_b32_e32 v10, 0, v1, vcc1453; GISEL-NEXT: v_or_b32_e32 v0, v20, v161454; GISEL-NEXT: v_or_b32_e32 v1, v21, v171455; GISEL-NEXT: v_cndmask_b32_e32 v0, v22, v0, vcc1456; GISEL-NEXT: v_cndmask_b32_e32 v1, v23, v1, vcc1457; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v261458; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v6, vcc1459; GISEL-NEXT: v_cndmask_b32_e32 v1, v1, v7, vcc1460; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]1461; GISEL-NEXT: v_mov_b32_e32 v23, s111462; GISEL-NEXT: v_mov_b32_e32 v22, s101463; GISEL-NEXT: v_mov_b32_e32 v21, s91464; GISEL-NEXT: v_mov_b32_e32 v20, s81465; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1466; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]1467; GISEL-NEXT: s_cbranch_execz .LBB1_111468; GISEL-NEXT: ; %bb.8: ; %udiv-preheader1469; GISEL-NEXT: v_add_i32_e32 v28, vcc, 0xffffffc0, v81470; GISEL-NEXT: v_sub_i32_e32 v22, vcc, 64, v81471; GISEL-NEXT: v_lshr_b64 v[16:17], v[6:7], v81472; GISEL-NEXT: v_lshr_b64 v[20:21], v[4:5], v81473; GISEL-NEXT: s_mov_b64 s[4:5], 01474; GISEL-NEXT: v_add_i32_e32 v26, vcc, -1, v121475; GISEL-NEXT: v_addc_u32_e32 v27, vcc, -1, v13, vcc1476; GISEL-NEXT: v_lshl_b64 v[22:23], v[6:7], v221477; GISEL-NEXT: v_lshr_b64 v[6:7], v[6:7], v281478; GISEL-NEXT: v_addc_u32_e32 v28, vcc, -1, v14, vcc1479; GISEL-NEXT: v_addc_u32_e32 v29, vcc, -1, v15, vcc1480; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]1481; GISEL-NEXT: v_or_b32_e32 v20, v20, v221482; GISEL-NEXT: v_or_b32_e32 v21, v21, v231483; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v81484; GISEL-NEXT: v_cndmask_b32_e32 v6, v6, v20, vcc1485; GISEL-NEXT: v_cndmask_b32_e32 v7, v7, v21, vcc1486; GISEL-NEXT: v_cndmask_b32_e32 v16, 0, v16, vcc1487; GISEL-NEXT: v_cndmask_b32_e32 v17, 0, v17, vcc1488; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v81489; GISEL-NEXT: v_cndmask_b32_e32 v6, v6, v4, vcc1490; GISEL-NEXT: v_cndmask_b32_e32 v7, v7, v5, vcc1491; GISEL-NEXT: v_mov_b32_e32 v5, 01492; GISEL-NEXT: v_mov_b32_e32 v23, s71493; GISEL-NEXT: v_mov_b32_e32 v22, s61494; GISEL-NEXT: v_mov_b32_e32 v21, s51495; GISEL-NEXT: v_mov_b32_e32 v20, s41496; GISEL-NEXT: .LBB1_9: ; %udiv-do-while1497; GISEL-NEXT: ; =>This Inner Loop Header: Depth=11498; GISEL-NEXT: v_lshl_b64 v[22:23], v[6:7], 11499; GISEL-NEXT: v_lshl_b64 v[16:17], v[16:17], 11500; GISEL-NEXT: v_lshrrev_b32_e32 v4, 31, v71501; GISEL-NEXT: v_lshrrev_b32_e32 v30, 31, v11502; GISEL-NEXT: v_lshl_b64 v[6:7], v[9:10], 11503; GISEL-NEXT: v_lshl_b64 v[0:1], v[0:1], 11504; GISEL-NEXT: v_lshrrev_b32_e32 v9, 31, v101505; GISEL-NEXT: v_add_i32_e32 v8, vcc, -1, v81506; GISEL-NEXT: v_addc_u32_e32 v11, vcc, -1, v11, vcc1507; GISEL-NEXT: v_or_b32_e32 v16, v16, v41508; GISEL-NEXT: v_or_b32_e32 v22, v22, v301509; GISEL-NEXT: v_or_b32_e32 v0, v0, v91510; GISEL-NEXT: v_or_b32_e32 v9, v20, v61511; GISEL-NEXT: v_or_b32_e32 v10, v21, v71512; GISEL-NEXT: v_addc_u32_e32 v24, vcc, -1, v24, vcc1513; GISEL-NEXT: v_addc_u32_e32 v25, vcc, -1, v25, vcc1514; GISEL-NEXT: v_sub_i32_e32 v4, vcc, v26, v221515; GISEL-NEXT: v_subb_u32_e32 v4, vcc, v27, v23, vcc1516; GISEL-NEXT: v_or_b32_e32 v6, v8, v241517; GISEL-NEXT: v_or_b32_e32 v7, v11, v251518; GISEL-NEXT: v_subb_u32_e32 v4, vcc, v28, v16, vcc1519; GISEL-NEXT: v_subb_u32_e32 v4, vcc, v29, v17, vcc1520; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[6:7]1521; GISEL-NEXT: v_ashrrev_i32_e32 v6, 31, v41522; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]1523; GISEL-NEXT: v_and_b32_e32 v4, 1, v61524; GISEL-NEXT: v_and_b32_e32 v7, v6, v121525; GISEL-NEXT: v_and_b32_e32 v30, v6, v131526; GISEL-NEXT: v_and_b32_e32 v31, v6, v141527; GISEL-NEXT: v_and_b32_e32 v32, v6, v151528; GISEL-NEXT: v_mov_b32_e32 v21, v51529; GISEL-NEXT: v_mov_b32_e32 v20, v41530; GISEL-NEXT: v_sub_i32_e32 v6, vcc, v22, v71531; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v23, v30, vcc1532; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v16, v31, vcc1533; GISEL-NEXT: v_subb_u32_e32 v17, vcc, v17, v32, vcc1534; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]1535; GISEL-NEXT: s_cbranch_execnz .LBB1_91536; GISEL-NEXT: ; %bb.10: ; %Flow1537; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]1538; GISEL-NEXT: .LBB1_11: ; %Flow111539; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]1540; GISEL-NEXT: v_lshl_b64 v[4:5], v[9:10], 11541; GISEL-NEXT: v_lshl_b64 v[8:9], v[0:1], 11542; GISEL-NEXT: v_lshrrev_b32_e32 v0, 31, v101543; GISEL-NEXT: v_or_b32_e32 v8, v8, v01544; GISEL-NEXT: v_or_b32_e32 v10, v20, v41545; GISEL-NEXT: v_or_b32_e32 v11, v21, v51546; GISEL-NEXT: .LBB1_12: ; %Flow121547; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]1548; GISEL-NEXT: v_mov_b32_e32 v0, v181549; GISEL-NEXT: v_mov_b32_e32 v1, v191550; GISEL-NEXT: v_mov_b32_e32 v4, v101551; GISEL-NEXT: v_mov_b32_e32 v5, v111552; GISEL-NEXT: v_mov_b32_e32 v6, v81553; GISEL-NEXT: v_mov_b32_e32 v7, v91554; GISEL-NEXT: s_setpc_b64 s[30:31]1555 %shl = udiv <2 x i128> %lhs, %rhs1556 ret <2 x i128> %shl1557}1558 1559define <2 x i128> @v_srem_v2i128_vv(<2 x i128> %lhs, <2 x i128> %rhs) {1560; SDAG-LABEL: v_srem_v2i128_vv:1561; SDAG: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases1562; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1563; SDAG-NEXT: buffer_store_dword v40, off, s[0:3], s32 ; 4-byte Folded Spill1564; SDAG-NEXT: v_sub_i32_e32 v16, vcc, 0, v01565; SDAG-NEXT: v_mov_b32_e32 v19, 01566; SDAG-NEXT: v_ashrrev_i32_e32 v28, 31, v31567; SDAG-NEXT: s_mov_b64 s[10:11], 0x7f1568; SDAG-NEXT: v_subb_u32_e32 v17, vcc, 0, v1, vcc1569; SDAG-NEXT: v_mov_b32_e32 v29, v281570; SDAG-NEXT: v_subb_u32_e32 v18, vcc, 0, v2, vcc1571; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[2:3]1572; SDAG-NEXT: v_cndmask_b32_e64 v17, v1, v17, s[4:5]1573; SDAG-NEXT: v_cndmask_b32_e64 v16, v0, v16, s[4:5]1574; SDAG-NEXT: v_subb_u32_e32 v1, vcc, 0, v3, vcc1575; SDAG-NEXT: v_cndmask_b32_e64 v0, v2, v18, s[4:5]1576; SDAG-NEXT: v_ffbh_u32_e32 v18, v161577; SDAG-NEXT: v_ffbh_u32_e32 v20, v171578; SDAG-NEXT: v_sub_i32_e32 v21, vcc, 0, v81579; SDAG-NEXT: v_cndmask_b32_e64 v1, v3, v1, s[4:5]1580; SDAG-NEXT: v_or_b32_e32 v2, v16, v01581; SDAG-NEXT: v_add_i32_e64 v18, s[4:5], 32, v181582; SDAG-NEXT: v_ffbh_u32_e32 v22, v01583; SDAG-NEXT: v_subb_u32_e32 v23, vcc, 0, v9, vcc1584; SDAG-NEXT: v_or_b32_e32 v3, v17, v11585; SDAG-NEXT: v_min_u32_e32 v18, v18, v201586; SDAG-NEXT: v_add_i32_e64 v20, s[4:5], 32, v221587; SDAG-NEXT: v_ffbh_u32_e32 v22, v11588; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[10:11]1589; SDAG-NEXT: v_cndmask_b32_e64 v30, v9, v23, s[4:5]1590; SDAG-NEXT: v_subb_u32_e32 v9, vcc, 0, v10, vcc1591; SDAG-NEXT: v_cndmask_b32_e64 v31, v8, v21, s[4:5]1592; SDAG-NEXT: v_cmp_eq_u64_e64 s[6:7], 0, v[2:3]1593; SDAG-NEXT: v_min_u32_e32 v3, v20, v221594; SDAG-NEXT: v_add_i32_e64 v8, s[8:9], 64, v181595; SDAG-NEXT: v_addc_u32_e64 v18, s[8:9], 0, 0, s[8:9]1596; SDAG-NEXT: v_subb_u32_e32 v20, vcc, 0, v11, vcc1597; SDAG-NEXT: v_cndmask_b32_e64 v2, v10, v9, s[4:5]1598; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]1599; SDAG-NEXT: v_cndmask_b32_e64 v18, v18, 0, vcc1600; SDAG-NEXT: v_cndmask_b32_e32 v10, v8, v3, vcc1601; SDAG-NEXT: v_ffbh_u32_e32 v9, v311602; SDAG-NEXT: v_ffbh_u32_e32 v21, v301603; SDAG-NEXT: v_cndmask_b32_e64 v3, v11, v20, s[4:5]1604; SDAG-NEXT: v_or_b32_e32 v8, v31, v21605; SDAG-NEXT: v_add_i32_e32 v11, vcc, 32, v91606; SDAG-NEXT: v_ffbh_u32_e32 v20, v21607; SDAG-NEXT: v_or_b32_e32 v9, v30, v31608; SDAG-NEXT: v_min_u32_e32 v11, v11, v211609; SDAG-NEXT: v_add_i32_e32 v20, vcc, 32, v201610; SDAG-NEXT: v_ffbh_u32_e32 v21, v31611; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[8:9]1612; SDAG-NEXT: v_min_u32_e32 v8, v20, v211613; SDAG-NEXT: v_add_i32_e64 v9, s[4:5], 64, v111614; SDAG-NEXT: v_addc_u32_e64 v11, s[4:5], 0, 0, s[4:5]1615; SDAG-NEXT: v_cmp_ne_u64_e64 s[4:5], 0, v[2:3]1616; SDAG-NEXT: v_cndmask_b32_e64 v11, v11, 0, s[4:5]1617; SDAG-NEXT: v_cndmask_b32_e64 v8, v9, v8, s[4:5]1618; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[6:7]1619; SDAG-NEXT: v_sub_i32_e32 v10, vcc, v8, v101620; SDAG-NEXT: v_subb_u32_e32 v11, vcc, v11, v18, vcc1621; SDAG-NEXT: v_xor_b32_e32 v8, 0x7f, v101622; SDAG-NEXT: v_subb_u32_e32 v18, vcc, 0, v19, vcc1623; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[10:11], v[10:11]1624; SDAG-NEXT: v_cndmask_b32_e64 v20, 0, 1, s[4:5]1625; SDAG-NEXT: v_subb_u32_e32 v19, vcc, 0, v19, vcc1626; SDAG-NEXT: v_or_b32_e32 v8, v8, v181627; SDAG-NEXT: v_or_b32_e32 v9, v11, v191628; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[18:19]1629; SDAG-NEXT: v_cndmask_b32_e64 v21, 0, 1, vcc1630; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[8:9]1631; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]1632; SDAG-NEXT: v_cndmask_b32_e64 v8, v21, v20, s[4:5]1633; SDAG-NEXT: v_and_b32_e32 v8, 1, v81634; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v81635; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]1636; SDAG-NEXT: v_cndmask_b32_e64 v34, v1, 0, s[4:5]1637; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -11638; SDAG-NEXT: v_cndmask_b32_e64 v32, v0, 0, s[4:5]1639; SDAG-NEXT: v_cndmask_b32_e64 v27, v17, 0, s[4:5]1640; SDAG-NEXT: s_and_b64 s[8:9], s[6:7], vcc1641; SDAG-NEXT: v_cndmask_b32_e64 v33, v16, 0, s[4:5]1642; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[8:9]1643; SDAG-NEXT: s_cbranch_execz .LBB2_61644; SDAG-NEXT: ; %bb.1: ; %udiv-bb151645; SDAG-NEXT: v_add_i32_e32 v32, vcc, 1, v101646; SDAG-NEXT: v_sub_i32_e64 v20, s[4:5], 63, v101647; SDAG-NEXT: v_mov_b32_e32 v8, 01648; SDAG-NEXT: v_mov_b32_e32 v9, 01649; SDAG-NEXT: v_addc_u32_e32 v33, vcc, 0, v11, vcc1650; SDAG-NEXT: v_lshl_b64 v[20:21], v[16:17], v201651; SDAG-NEXT: v_addc_u32_e32 v34, vcc, 0, v18, vcc1652; SDAG-NEXT: v_addc_u32_e32 v35, vcc, 0, v19, vcc1653; SDAG-NEXT: v_or_b32_e32 v18, v32, v341654; SDAG-NEXT: v_sub_i32_e32 v24, vcc, 0x7f, v101655; SDAG-NEXT: v_or_b32_e32 v19, v33, v351656; SDAG-NEXT: v_lshl_b64 v[10:11], v[0:1], v241657; SDAG-NEXT: v_sub_i32_e32 v25, vcc, 64, v241658; SDAG-NEXT: v_lshl_b64 v[22:23], v[16:17], v241659; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[18:19]1660; SDAG-NEXT: v_lshr_b64 v[18:19], v[16:17], v251661; SDAG-NEXT: v_or_b32_e32 v11, v11, v191662; SDAG-NEXT: v_or_b32_e32 v10, v10, v181663; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v241664; SDAG-NEXT: v_cndmask_b32_e64 v11, v21, v11, s[4:5]1665; SDAG-NEXT: v_cndmask_b32_e64 v10, v20, v10, s[4:5]1666; SDAG-NEXT: v_cndmask_b32_e64 v21, 0, v23, s[4:5]1667; SDAG-NEXT: v_cndmask_b32_e64 v20, 0, v22, s[4:5]1668; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v241669; SDAG-NEXT: v_cndmask_b32_e64 v11, v11, v1, s[4:5]1670; SDAG-NEXT: v_cndmask_b32_e64 v10, v10, v0, s[4:5]1671; SDAG-NEXT: v_mov_b32_e32 v18, 01672; SDAG-NEXT: v_mov_b32_e32 v19, 01673; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc1674; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]1675; SDAG-NEXT: s_cbranch_execz .LBB2_51676; SDAG-NEXT: ; %bb.2: ; %udiv-preheader41677; SDAG-NEXT: v_lshr_b64 v[22:23], v[16:17], v321678; SDAG-NEXT: v_sub_i32_e32 v8, vcc, 64, v321679; SDAG-NEXT: v_subrev_i32_e32 v37, vcc, 64, v321680; SDAG-NEXT: v_lshr_b64 v[24:25], v[0:1], v321681; SDAG-NEXT: v_add_i32_e32 v36, vcc, -1, v311682; SDAG-NEXT: v_mov_b32_e32 v18, 01683; SDAG-NEXT: v_mov_b32_e32 v19, 01684; SDAG-NEXT: s_mov_b64 s[10:11], 01685; SDAG-NEXT: v_mov_b32_e32 v9, 01686; SDAG-NEXT: v_lshl_b64 v[26:27], v[0:1], v81687; SDAG-NEXT: v_lshr_b64 v[48:49], v[0:1], v371688; SDAG-NEXT: v_addc_u32_e32 v37, vcc, -1, v30, vcc1689; SDAG-NEXT: v_or_b32_e32 v8, v23, v271690; SDAG-NEXT: v_or_b32_e32 v22, v22, v261691; SDAG-NEXT: v_addc_u32_e32 v38, vcc, -1, v2, vcc1692; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v321693; SDAG-NEXT: v_cndmask_b32_e64 v8, v49, v8, s[4:5]1694; SDAG-NEXT: v_cndmask_b32_e64 v22, v48, v22, s[4:5]1695; SDAG-NEXT: v_cndmask_b32_e64 v27, 0, v25, s[4:5]1696; SDAG-NEXT: v_cndmask_b32_e64 v26, 0, v24, s[4:5]1697; SDAG-NEXT: v_addc_u32_e32 v39, vcc, -1, v3, vcc1698; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v321699; SDAG-NEXT: v_cndmask_b32_e32 v25, v8, v17, vcc1700; SDAG-NEXT: v_cndmask_b32_e32 v24, v22, v16, vcc1701; SDAG-NEXT: v_mov_b32_e32 v22, 01702; SDAG-NEXT: v_mov_b32_e32 v23, 01703; SDAG-NEXT: .LBB2_3: ; %udiv-do-while31704; SDAG-NEXT: ; =>This Inner Loop Header: Depth=11705; SDAG-NEXT: v_lshrrev_b32_e32 v8, 31, v211706; SDAG-NEXT: v_lshl_b64 v[20:21], v[20:21], 11707; SDAG-NEXT: v_lshl_b64 v[26:27], v[26:27], 11708; SDAG-NEXT: v_lshrrev_b32_e32 v48, 31, v251709; SDAG-NEXT: v_lshl_b64 v[24:25], v[24:25], 11710; SDAG-NEXT: v_lshrrev_b32_e32 v49, 31, v111711; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 11712; SDAG-NEXT: v_or_b32_e32 v21, v23, v211713; SDAG-NEXT: v_or_b32_e32 v20, v22, v201714; SDAG-NEXT: v_or_b32_e32 v22, v26, v481715; SDAG-NEXT: v_or_b32_e32 v23, v24, v491716; SDAG-NEXT: v_or_b32_e32 v10, v10, v81717; SDAG-NEXT: v_sub_i32_e32 v8, vcc, v36, v231718; SDAG-NEXT: v_subb_u32_e32 v8, vcc, v37, v25, vcc1719; SDAG-NEXT: v_subb_u32_e32 v8, vcc, v38, v22, vcc1720; SDAG-NEXT: v_subb_u32_e32 v8, vcc, v39, v27, vcc1721; SDAG-NEXT: v_ashrrev_i32_e32 v8, 31, v81722; SDAG-NEXT: v_and_b32_e32 v24, v8, v311723; SDAG-NEXT: v_and_b32_e32 v26, v8, v301724; SDAG-NEXT: v_and_b32_e32 v48, v8, v21725; SDAG-NEXT: v_and_b32_e32 v49, v8, v31726; SDAG-NEXT: v_and_b32_e32 v8, 1, v81727; SDAG-NEXT: v_sub_i32_e32 v24, vcc, v23, v241728; SDAG-NEXT: v_subb_u32_e32 v25, vcc, v25, v26, vcc1729; SDAG-NEXT: v_subb_u32_e32 v26, vcc, v22, v48, vcc1730; SDAG-NEXT: v_subb_u32_e32 v27, vcc, v27, v49, vcc1731; SDAG-NEXT: v_add_i32_e32 v32, vcc, -1, v321732; SDAG-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc1733; SDAG-NEXT: v_addc_u32_e32 v34, vcc, -1, v34, vcc1734; SDAG-NEXT: v_addc_u32_e32 v35, vcc, -1, v35, vcc1735; SDAG-NEXT: v_or_b32_e32 v22, v32, v341736; SDAG-NEXT: v_or_b32_e32 v23, v33, v351737; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[22:23]1738; SDAG-NEXT: v_or_b32_e32 v11, v19, v111739; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]1740; SDAG-NEXT: v_or_b32_e32 v10, v18, v101741; SDAG-NEXT: v_mov_b32_e32 v23, v91742; SDAG-NEXT: v_mov_b32_e32 v22, v81743; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]1744; SDAG-NEXT: s_cbranch_execnz .LBB2_31745; SDAG-NEXT: ; %bb.4: ; %Flow131746; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]1747; SDAG-NEXT: .LBB2_5: ; %Flow141748; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1749; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 11750; SDAG-NEXT: v_lshrrev_b32_e32 v22, 31, v211751; SDAG-NEXT: v_or_b32_e32 v10, v10, v221752; SDAG-NEXT: v_lshl_b64 v[20:21], v[20:21], 11753; SDAG-NEXT: v_or_b32_e32 v34, v19, v111754; SDAG-NEXT: v_or_b32_e32 v32, v18, v101755; SDAG-NEXT: v_or_b32_e32 v27, v9, v211756; SDAG-NEXT: v_or_b32_e32 v33, v8, v201757; SDAG-NEXT: .LBB2_6: ; %Flow161758; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1759; SDAG-NEXT: v_ashrrev_i32_e32 v26, 31, v71760; SDAG-NEXT: v_sub_i32_e32 v8, vcc, 0, v41761; SDAG-NEXT: v_mov_b32_e32 v18, 01762; SDAG-NEXT: s_mov_b64 s[10:11], 0x7f1763; SDAG-NEXT: v_mov_b32_e32 v35, v261764; SDAG-NEXT: v_subb_u32_e32 v9, vcc, 0, v5, vcc1765; SDAG-NEXT: v_subb_u32_e32 v10, vcc, 0, v6, vcc1766; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[6:7]1767; SDAG-NEXT: v_cndmask_b32_e64 v9, v5, v9, s[4:5]1768; SDAG-NEXT: v_cndmask_b32_e64 v8, v4, v8, s[4:5]1769; SDAG-NEXT: v_subb_u32_e32 v5, vcc, 0, v7, vcc1770; SDAG-NEXT: v_cndmask_b32_e64 v4, v6, v10, s[4:5]1771; SDAG-NEXT: v_ffbh_u32_e32 v10, v81772; SDAG-NEXT: v_ffbh_u32_e32 v11, v91773; SDAG-NEXT: v_cndmask_b32_e64 v5, v7, v5, s[4:5]1774; SDAG-NEXT: v_sub_i32_e32 v19, vcc, 0, v121775; SDAG-NEXT: v_or_b32_e32 v6, v8, v41776; SDAG-NEXT: v_ffbh_u32_e32 v20, v41777; SDAG-NEXT: v_add_i32_e64 v10, s[4:5], 32, v101778; SDAG-NEXT: v_subb_u32_e32 v21, vcc, 0, v13, vcc1779; SDAG-NEXT: v_or_b32_e32 v7, v9, v51780; SDAG-NEXT: v_add_i32_e64 v20, s[4:5], 32, v201781; SDAG-NEXT: v_ffbh_u32_e32 v22, v51782; SDAG-NEXT: v_min_u32_e32 v10, v10, v111783; SDAG-NEXT: v_subb_u32_e32 v11, vcc, 0, v14, vcc1784; SDAG-NEXT: v_cmp_gt_i64_e64 s[4:5], 0, v[14:15]1785; SDAG-NEXT: v_cndmask_b32_e64 v36, v13, v21, s[4:5]1786; SDAG-NEXT: v_cndmask_b32_e64 v37, v12, v19, s[4:5]1787; SDAG-NEXT: v_cmp_eq_u64_e64 s[6:7], 0, v[6:7]1788; SDAG-NEXT: v_min_u32_e32 v7, v20, v221789; SDAG-NEXT: v_add_i32_e64 v10, s[8:9], 64, v101790; SDAG-NEXT: v_addc_u32_e64 v12, s[8:9], 0, 0, s[8:9]1791; SDAG-NEXT: v_subb_u32_e32 v13, vcc, 0, v15, vcc1792; SDAG-NEXT: v_cndmask_b32_e64 v6, v14, v11, s[4:5]1793; SDAG-NEXT: v_ffbh_u32_e32 v11, v371794; SDAG-NEXT: v_ffbh_u32_e32 v14, v361795; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[4:5]1796; SDAG-NEXT: v_cndmask_b32_e64 v12, v12, 0, vcc1797; SDAG-NEXT: v_cndmask_b32_e32 v19, v10, v7, vcc1798; SDAG-NEXT: v_cndmask_b32_e64 v7, v15, v13, s[4:5]1799; SDAG-NEXT: v_or_b32_e32 v10, v37, v61800; SDAG-NEXT: v_ffbh_u32_e32 v13, v61801; SDAG-NEXT: v_add_i32_e32 v15, vcc, 32, v111802; SDAG-NEXT: v_or_b32_e32 v11, v36, v71803; SDAG-NEXT: v_add_i32_e32 v13, vcc, 32, v131804; SDAG-NEXT: v_ffbh_u32_e32 v20, v71805; SDAG-NEXT: v_min_u32_e32 v14, v15, v141806; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]1807; SDAG-NEXT: v_min_u32_e32 v10, v13, v201808; SDAG-NEXT: v_add_i32_e64 v11, s[4:5], 64, v141809; SDAG-NEXT: v_addc_u32_e64 v13, s[4:5], 0, 0, s[4:5]1810; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[6:7]1811; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[6:7]1812; SDAG-NEXT: v_cndmask_b32_e64 v13, v13, 0, vcc1813; SDAG-NEXT: v_cndmask_b32_e32 v10, v11, v10, vcc1814; SDAG-NEXT: v_sub_i32_e32 v10, vcc, v10, v191815; SDAG-NEXT: v_subb_u32_e32 v11, vcc, v13, v12, vcc1816; SDAG-NEXT: v_xor_b32_e32 v12, 0x7f, v101817; SDAG-NEXT: v_subb_u32_e32 v14, vcc, 0, v18, vcc1818; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[10:11], v[10:11]1819; SDAG-NEXT: v_cndmask_b32_e64 v19, 0, 1, s[4:5]1820; SDAG-NEXT: v_subb_u32_e32 v15, vcc, 0, v18, vcc1821; SDAG-NEXT: v_or_b32_e32 v12, v12, v141822; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[14:15]1823; SDAG-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc1824; SDAG-NEXT: v_or_b32_e32 v13, v11, v151825; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[14:15]1826; SDAG-NEXT: v_cndmask_b32_e32 v18, v18, v19, vcc1827; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[12:13]1828; SDAG-NEXT: v_and_b32_e32 v12, 1, v181829; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v121830; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]1831; SDAG-NEXT: v_cndmask_b32_e64 v19, v5, 0, s[4:5]1832; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -11833; SDAG-NEXT: v_cndmask_b32_e64 v18, v4, 0, s[4:5]1834; SDAG-NEXT: v_cndmask_b32_e64 v13, v9, 0, s[4:5]1835; SDAG-NEXT: v_cndmask_b32_e64 v12, v8, 0, s[4:5]1836; SDAG-NEXT: s_and_b64 s[4:5], s[6:7], vcc1837; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1838; SDAG-NEXT: s_cbranch_execz .LBB2_121839; SDAG-NEXT: ; %bb.7: ; %udiv-bb11840; SDAG-NEXT: v_add_i32_e32 v38, vcc, 1, v101841; SDAG-NEXT: v_sub_i32_e64 v18, s[4:5], 63, v101842; SDAG-NEXT: v_mov_b32_e32 v12, 01843; SDAG-NEXT: v_mov_b32_e32 v13, 01844; SDAG-NEXT: v_addc_u32_e32 v39, vcc, 0, v11, vcc1845; SDAG-NEXT: v_lshl_b64 v[18:19], v[8:9], v181846; SDAG-NEXT: v_addc_u32_e32 v48, vcc, 0, v14, vcc1847; SDAG-NEXT: v_addc_u32_e32 v49, vcc, 0, v15, vcc1848; SDAG-NEXT: v_or_b32_e32 v14, v38, v481849; SDAG-NEXT: v_sub_i32_e32 v22, vcc, 0x7f, v101850; SDAG-NEXT: v_or_b32_e32 v15, v39, v491851; SDAG-NEXT: v_lshl_b64 v[10:11], v[4:5], v221852; SDAG-NEXT: v_sub_i32_e32 v23, vcc, 64, v221853; SDAG-NEXT: v_lshl_b64 v[20:21], v[8:9], v221854; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[14:15]1855; SDAG-NEXT: v_lshr_b64 v[14:15], v[8:9], v231856; SDAG-NEXT: v_or_b32_e32 v11, v11, v151857; SDAG-NEXT: v_or_b32_e32 v10, v10, v141858; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v221859; SDAG-NEXT: v_cndmask_b32_e64 v14, v19, v11, s[4:5]1860; SDAG-NEXT: v_cndmask_b32_e64 v18, v18, v10, s[4:5]1861; SDAG-NEXT: v_cndmask_b32_e64 v11, 0, v21, s[4:5]1862; SDAG-NEXT: v_cndmask_b32_e64 v10, 0, v20, s[4:5]1863; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v221864; SDAG-NEXT: v_cndmask_b32_e64 v15, v14, v5, s[4:5]1865; SDAG-NEXT: v_cndmask_b32_e64 v14, v18, v4, s[4:5]1866; SDAG-NEXT: v_mov_b32_e32 v18, 01867; SDAG-NEXT: v_mov_b32_e32 v19, 01868; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc1869; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]1870; SDAG-NEXT: s_cbranch_execz .LBB2_111871; SDAG-NEXT: ; %bb.8: ; %udiv-preheader1872; SDAG-NEXT: v_lshr_b64 v[20:21], v[8:9], v381873; SDAG-NEXT: v_sub_i32_e32 v12, vcc, 64, v381874; SDAG-NEXT: v_subrev_i32_e32 v51, vcc, 64, v381875; SDAG-NEXT: v_lshr_b64 v[22:23], v[4:5], v381876; SDAG-NEXT: v_add_i32_e32 v50, vcc, -1, v371877; SDAG-NEXT: v_mov_b32_e32 v18, 01878; SDAG-NEXT: v_mov_b32_e32 v19, 01879; SDAG-NEXT: s_mov_b64 s[10:11], 01880; SDAG-NEXT: v_mov_b32_e32 v13, 01881; SDAG-NEXT: v_lshl_b64 v[24:25], v[4:5], v121882; SDAG-NEXT: v_lshr_b64 v[53:54], v[4:5], v511883; SDAG-NEXT: v_addc_u32_e32 v51, vcc, -1, v36, vcc1884; SDAG-NEXT: v_or_b32_e32 v12, v21, v251885; SDAG-NEXT: v_or_b32_e32 v20, v20, v241886; SDAG-NEXT: v_addc_u32_e32 v52, vcc, -1, v6, vcc1887; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v381888; SDAG-NEXT: v_cndmask_b32_e64 v12, v54, v12, s[4:5]1889; SDAG-NEXT: v_cndmask_b32_e64 v20, v53, v20, s[4:5]1890; SDAG-NEXT: v_cndmask_b32_e64 v25, 0, v23, s[4:5]1891; SDAG-NEXT: v_cndmask_b32_e64 v24, 0, v22, s[4:5]1892; SDAG-NEXT: v_addc_u32_e32 v53, vcc, -1, v7, vcc1893; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v381894; SDAG-NEXT: v_cndmask_b32_e32 v23, v12, v9, vcc1895; SDAG-NEXT: v_cndmask_b32_e32 v22, v20, v8, vcc1896; SDAG-NEXT: v_mov_b32_e32 v20, 01897; SDAG-NEXT: v_mov_b32_e32 v21, 01898; SDAG-NEXT: .LBB2_9: ; %udiv-do-while1899; SDAG-NEXT: ; =>This Inner Loop Header: Depth=11900; SDAG-NEXT: v_lshl_b64 v[24:25], v[24:25], 11901; SDAG-NEXT: v_lshrrev_b32_e32 v12, 31, v231902; SDAG-NEXT: v_lshl_b64 v[22:23], v[22:23], 11903; SDAG-NEXT: v_lshrrev_b32_e32 v54, 31, v151904; SDAG-NEXT: v_lshl_b64 v[14:15], v[14:15], 11905; SDAG-NEXT: v_lshrrev_b32_e32 v55, 31, v111906; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 11907; SDAG-NEXT: v_or_b32_e32 v24, v24, v121908; SDAG-NEXT: v_or_b32_e32 v22, v22, v541909; SDAG-NEXT: v_or_b32_e32 v12, v14, v551910; SDAG-NEXT: v_or_b32_e32 v15, v19, v151911; SDAG-NEXT: v_or_b32_e32 v11, v21, v111912; SDAG-NEXT: v_or_b32_e32 v14, v18, v121913; SDAG-NEXT: v_sub_i32_e32 v12, vcc, v50, v221914; SDAG-NEXT: v_subb_u32_e32 v12, vcc, v51, v23, vcc1915; SDAG-NEXT: v_subb_u32_e32 v12, vcc, v52, v24, vcc1916; SDAG-NEXT: v_subb_u32_e32 v12, vcc, v53, v25, vcc1917; SDAG-NEXT: v_ashrrev_i32_e32 v21, 31, v121918; SDAG-NEXT: v_and_b32_e32 v12, 1, v211919; SDAG-NEXT: v_and_b32_e32 v54, v21, v71920; SDAG-NEXT: v_and_b32_e32 v55, v21, v61921; SDAG-NEXT: v_and_b32_e32 v40, v21, v361922; SDAG-NEXT: v_and_b32_e32 v21, v21, v371923; SDAG-NEXT: v_sub_i32_e32 v22, vcc, v22, v211924; SDAG-NEXT: v_subb_u32_e32 v23, vcc, v23, v40, vcc1925; SDAG-NEXT: v_subb_u32_e32 v24, vcc, v24, v55, vcc1926; SDAG-NEXT: v_subb_u32_e32 v25, vcc, v25, v54, vcc1927; SDAG-NEXT: v_add_i32_e32 v38, vcc, -1, v381928; SDAG-NEXT: v_addc_u32_e32 v39, vcc, -1, v39, vcc1929; SDAG-NEXT: v_addc_u32_e32 v48, vcc, -1, v48, vcc1930; SDAG-NEXT: v_addc_u32_e32 v49, vcc, -1, v49, vcc1931; SDAG-NEXT: v_or_b32_e32 v55, v39, v491932; SDAG-NEXT: v_or_b32_e32 v54, v38, v481933; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[54:55]1934; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]1935; SDAG-NEXT: v_or_b32_e32 v10, v20, v101936; SDAG-NEXT: v_mov_b32_e32 v21, v131937; SDAG-NEXT: v_mov_b32_e32 v20, v121938; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]1939; SDAG-NEXT: s_cbranch_execnz .LBB2_91940; SDAG-NEXT: ; %bb.10: ; %Flow1941; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]1942; SDAG-NEXT: .LBB2_11: ; %Flow111943; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1944; SDAG-NEXT: v_lshl_b64 v[14:15], v[14:15], 11945; SDAG-NEXT: v_lshrrev_b32_e32 v20, 31, v111946; SDAG-NEXT: v_lshl_b64 v[10:11], v[10:11], 11947; SDAG-NEXT: v_or_b32_e32 v14, v14, v201948; SDAG-NEXT: v_or_b32_e32 v19, v19, v151949; SDAG-NEXT: v_or_b32_e32 v13, v13, v111950; SDAG-NEXT: v_or_b32_e32 v18, v18, v141951; SDAG-NEXT: v_or_b32_e32 v12, v12, v101952; SDAG-NEXT: .LBB2_12: ; %Flow121953; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1954; SDAG-NEXT: v_mul_lo_u32 v14, v33, v31955; SDAG-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v33, v2, 01956; SDAG-NEXT: v_mul_lo_u32 v15, v27, v21957; SDAG-NEXT: v_mul_lo_u32 v23, v34, v311958; SDAG-NEXT: v_mul_lo_u32 v24, v32, v301959; SDAG-NEXT: v_mad_u64_u32 v[20:21], s[4:5], v31, v33, 01960; SDAG-NEXT: v_mov_b32_e32 v22, 01961; SDAG-NEXT: v_mul_lo_u32 v25, v12, v71962; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v12, v6, 01963; SDAG-NEXT: v_mul_lo_u32 v34, v13, v61964; SDAG-NEXT: v_mul_lo_u32 v19, v19, v371965; SDAG-NEXT: v_mul_lo_u32 v38, v18, v361966; SDAG-NEXT: v_add_i32_e32 v11, vcc, v11, v141967; SDAG-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v30, v33, v[21:22]1968; SDAG-NEXT: v_sub_i32_e32 v16, vcc, v16, v201969; SDAG-NEXT: v_add_i32_e64 v3, s[4:5], v3, v251970; SDAG-NEXT: v_add_i32_e64 v11, s[4:5], v11, v151971; SDAG-NEXT: v_mov_b32_e32 v21, v61972; SDAG-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v31, v27, v[21:22]1973; SDAG-NEXT: v_xor_b32_e32 v16, v16, v281974; SDAG-NEXT: v_add_i32_e64 v3, s[4:5], v3, v341975; SDAG-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v32, v31, v[10:11]1976; SDAG-NEXT: v_add_i32_e64 v6, s[4:5], v7, v151977; SDAG-NEXT: v_addc_u32_e64 v7, s[4:5], 0, 0, s[4:5]1978; SDAG-NEXT: v_subb_u32_e32 v14, vcc, v17, v14, vcc1979; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v18, v37, v[2:3]1980; SDAG-NEXT: v_mad_u64_u32 v[20:21], s[4:5], v37, v12, 01981; SDAG-NEXT: v_add_i32_e64 v15, s[4:5], v23, v111982; SDAG-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v30, v27, v[6:7]1983; SDAG-NEXT: v_xor_b32_e32 v17, v14, v291984; SDAG-NEXT: v_add_i32_e64 v3, s[4:5], v19, v31985; SDAG-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v36, v12, v[21:22]1986; SDAG-NEXT: v_add_i32_e64 v18, s[4:5], v24, v151987; SDAG-NEXT: v_add_i32_e64 v3, s[4:5], v38, v31988; SDAG-NEXT: v_mov_b32_e32 v21, v111989; SDAG-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v37, v13, v[21:22]1990; SDAG-NEXT: v_add_i32_e64 v6, s[4:5], v6, v101991; SDAG-NEXT: v_addc_u32_e64 v10, s[4:5], v7, v18, s[4:5]1992; SDAG-NEXT: v_subb_u32_e32 v0, vcc, v0, v6, vcc1993; SDAG-NEXT: v_add_i32_e64 v6, s[4:5], v12, v151994; SDAG-NEXT: v_addc_u32_e64 v7, s[4:5], 0, 0, s[4:5]1995; SDAG-NEXT: v_subb_u32_e32 v1, vcc, v1, v10, vcc1996; SDAG-NEXT: v_xor_b32_e32 v10, v0, v281997; SDAG-NEXT: v_mad_u64_u32 v[6:7], s[4:5], v36, v13, v[6:7]1998; SDAG-NEXT: v_xor_b32_e32 v11, v1, v291999; SDAG-NEXT: v_sub_i32_e32 v0, vcc, v16, v282000; SDAG-NEXT: v_add_i32_e64 v6, s[4:5], v6, v22001; SDAG-NEXT: v_addc_u32_e64 v7, s[4:5], v7, v3, s[4:5]2002; SDAG-NEXT: v_subb_u32_e32 v1, vcc, v17, v29, vcc2003; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v10, v28, vcc2004; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v11, v29, vcc2005; SDAG-NEXT: v_sub_i32_e32 v8, vcc, v8, v202006; SDAG-NEXT: v_subb_u32_e32 v9, vcc, v9, v14, vcc2007; SDAG-NEXT: v_xor_b32_e32 v8, v8, v262008; SDAG-NEXT: v_subb_u32_e32 v4, vcc, v4, v6, vcc2009; SDAG-NEXT: v_xor_b32_e32 v6, v9, v352010; SDAG-NEXT: v_subb_u32_e32 v5, vcc, v5, v7, vcc2011; SDAG-NEXT: v_xor_b32_e32 v7, v4, v262012; SDAG-NEXT: v_xor_b32_e32 v9, v5, v352013; SDAG-NEXT: v_sub_i32_e32 v4, vcc, v8, v262014; SDAG-NEXT: v_subb_u32_e32 v5, vcc, v6, v35, vcc2015; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v7, v26, vcc2016; SDAG-NEXT: v_subb_u32_e32 v7, vcc, v9, v35, vcc2017; SDAG-NEXT: buffer_load_dword v40, off, s[0:3], s32 ; 4-byte Folded Reload2018; SDAG-NEXT: s_waitcnt vmcnt(0)2019; SDAG-NEXT: s_setpc_b64 s[30:31]2020;2021; GISEL-LABEL: v_srem_v2i128_vv:2022; GISEL: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases2023; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2024; GISEL-NEXT: v_ashrrev_i32_e32 v28, 31, v32025; GISEL-NEXT: v_ashrrev_i32_e32 v18, 31, v112026; GISEL-NEXT: v_mov_b32_e32 v19, 0x7f2027; GISEL-NEXT: v_mov_b32_e32 v20, 02028; GISEL-NEXT: s_mov_b64 s[8:9], 02029; GISEL-NEXT: v_xor_b32_e32 v0, v0, v282030; GISEL-NEXT: v_xor_b32_e32 v1, v1, v282031; GISEL-NEXT: v_xor_b32_e32 v2, v2, v282032; GISEL-NEXT: v_xor_b32_e32 v3, v3, v282033; GISEL-NEXT: v_xor_b32_e32 v8, v8, v182034; GISEL-NEXT: v_xor_b32_e32 v9, v9, v182035; GISEL-NEXT: v_xor_b32_e32 v10, v10, v182036; GISEL-NEXT: v_xor_b32_e32 v11, v11, v182037; GISEL-NEXT: v_sub_i32_e32 v16, vcc, v0, v282038; GISEL-NEXT: v_subb_u32_e32 v17, vcc, v1, v28, vcc2039; GISEL-NEXT: v_sub_i32_e64 v30, s[4:5], v8, v182040; GISEL-NEXT: v_subb_u32_e64 v29, s[4:5], v9, v18, s[4:5]2041; GISEL-NEXT: v_subb_u32_e32 v8, vcc, v2, v28, vcc2042; GISEL-NEXT: v_subb_u32_e32 v9, vcc, v3, v28, vcc2043; GISEL-NEXT: v_subb_u32_e64 v10, vcc, v10, v18, s[4:5]2044; GISEL-NEXT: v_subb_u32_e32 v11, vcc, v11, v18, vcc2045; GISEL-NEXT: v_ffbh_u32_e32 v18, v292046; GISEL-NEXT: v_ffbh_u32_e32 v21, v302047; GISEL-NEXT: v_ffbh_u32_e32 v22, v172048; GISEL-NEXT: v_ffbh_u32_e32 v23, v162049; GISEL-NEXT: v_or_b32_e32 v0, v30, v102050; GISEL-NEXT: v_or_b32_e32 v1, v29, v112051; GISEL-NEXT: v_or_b32_e32 v2, v16, v82052; GISEL-NEXT: v_or_b32_e32 v3, v17, v92053; GISEL-NEXT: v_add_i32_e32 v21, vcc, 32, v212054; GISEL-NEXT: v_add_i32_e32 v23, vcc, 32, v232055; GISEL-NEXT: v_ffbh_u32_e32 v24, v102056; GISEL-NEXT: v_ffbh_u32_e32 v25, v112057; GISEL-NEXT: v_ffbh_u32_e32 v26, v82058; GISEL-NEXT: v_ffbh_u32_e32 v27, v92059; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2060; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[2:3]2061; GISEL-NEXT: v_min_u32_e32 v0, v18, v212062; GISEL-NEXT: v_min_u32_e32 v1, v22, v232063; GISEL-NEXT: v_add_i32_e64 v2, s[6:7], 32, v242064; GISEL-NEXT: v_add_i32_e64 v3, s[6:7], 32, v262065; GISEL-NEXT: v_min_u32_e32 v2, v25, v22066; GISEL-NEXT: v_min_u32_e32 v3, v27, v32067; GISEL-NEXT: v_add_i32_e64 v0, s[6:7], 64, v02068; GISEL-NEXT: v_add_i32_e64 v1, s[6:7], 64, v12069; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2070; GISEL-NEXT: v_cndmask_b32_e64 v21, 0, 1, s[4:5]2071; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]2072; GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v0, vcc2073; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[8:9]2074; GISEL-NEXT: v_cndmask_b32_e32 v1, v3, v1, vcc2075; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v0, v12076; GISEL-NEXT: v_subb_u32_e64 v3, s[4:5], 0, 0, vcc2077; GISEL-NEXT: v_subb_u32_e64 v0, s[4:5], 0, 0, s[4:5]2078; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], 0, 0, s[4:5]2079; GISEL-NEXT: v_xor_b32_e32 v18, 0x7f, v22080; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[2:3], v[19:20]2081; GISEL-NEXT: v_cndmask_b32_e64 v20, 0, 1, vcc2082; GISEL-NEXT: v_or_b32_e32 v18, v18, v02083; GISEL-NEXT: v_or_b32_e32 v19, v3, v12084; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[0:1]2085; GISEL-NEXT: v_cndmask_b32_e64 v22, 0, 1, vcc2086; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2087; GISEL-NEXT: v_cndmask_b32_e32 v20, v22, v20, vcc2088; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[18:19]2089; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc2090; GISEL-NEXT: v_or_b32_e32 v19, v21, v202091; GISEL-NEXT: v_or_b32_e32 v18, v19, v182092; GISEL-NEXT: v_and_b32_e32 v19, 1, v192093; GISEL-NEXT: v_and_b32_e32 v18, 1, v182094; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v192095; GISEL-NEXT: v_cndmask_b32_e64 v31, v16, 0, vcc2096; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v182097; GISEL-NEXT: v_cndmask_b32_e64 v18, v8, 0, vcc2098; GISEL-NEXT: v_cndmask_b32_e64 v19, v9, 0, vcc2099; GISEL-NEXT: s_xor_b64 s[4:5], s[4:5], -12100; GISEL-NEXT: v_cndmask_b32_e64 v32, v17, 0, vcc2101; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]2102; GISEL-NEXT: s_cbranch_execz .LBB2_62103; GISEL-NEXT: ; %bb.1: ; %udiv-bb152104; GISEL-NEXT: v_add_i32_e32 v31, vcc, 1, v22105; GISEL-NEXT: v_addc_u32_e64 v32, s[4:5], 0, v3, vcc2106; GISEL-NEXT: v_sub_i32_e32 v24, vcc, 0x7f, v22107; GISEL-NEXT: v_not_b32_e32 v2, 632108; GISEL-NEXT: v_addc_u32_e64 v33, vcc, 0, v0, s[4:5]2109; GISEL-NEXT: v_addc_u32_e32 v34, vcc, 0, v1, vcc2110; GISEL-NEXT: v_add_i32_e64 v20, s[4:5], v24, v22111; GISEL-NEXT: v_sub_i32_e64 v18, s[4:5], 64, v242112; GISEL-NEXT: v_lshl_b64 v[0:1], v[16:17], v242113; GISEL-NEXT: v_lshl_b64 v[2:3], v[8:9], v242114; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -12115; GISEL-NEXT: v_lshr_b64 v[18:19], v[16:17], v182116; GISEL-NEXT: v_lshl_b64 v[22:23], v[16:17], v202117; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v242118; GISEL-NEXT: v_cndmask_b32_e32 v20, 0, v0, vcc2119; GISEL-NEXT: v_cndmask_b32_e32 v21, 0, v1, vcc2120; GISEL-NEXT: v_or_b32_e32 v0, v18, v22121; GISEL-NEXT: v_or_b32_e32 v1, v19, v32122; GISEL-NEXT: v_cndmask_b32_e32 v0, v22, v0, vcc2123; GISEL-NEXT: v_cndmask_b32_e32 v1, v23, v1, vcc2124; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v242125; GISEL-NEXT: v_cndmask_b32_e32 v18, v0, v8, vcc2126; GISEL-NEXT: v_cndmask_b32_e32 v19, v1, v9, vcc2127; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]2128; GISEL-NEXT: v_mov_b32_e32 v0, s82129; GISEL-NEXT: v_mov_b32_e32 v1, s92130; GISEL-NEXT: v_mov_b32_e32 v2, s102131; GISEL-NEXT: v_mov_b32_e32 v3, s112132; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]2133; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]2134; GISEL-NEXT: s_cbranch_execz .LBB2_52135; GISEL-NEXT: ; %bb.2: ; %udiv-preheader42136; GISEL-NEXT: v_add_i32_e32 v24, vcc, 0xffffffc0, v312137; GISEL-NEXT: v_sub_i32_e32 v22, vcc, 64, v312138; GISEL-NEXT: v_lshr_b64 v[0:1], v[8:9], v312139; GISEL-NEXT: v_lshr_b64 v[2:3], v[16:17], v312140; GISEL-NEXT: s_mov_b64 s[4:5], 02141; GISEL-NEXT: v_add_i32_e32 v35, vcc, -1, v302142; GISEL-NEXT: v_addc_u32_e32 v36, vcc, -1, v29, vcc2143; GISEL-NEXT: v_lshl_b64 v[22:23], v[8:9], v222144; GISEL-NEXT: v_lshr_b64 v[24:25], v[8:9], v242145; GISEL-NEXT: v_addc_u32_e32 v37, vcc, -1, v10, vcc2146; GISEL-NEXT: v_addc_u32_e32 v38, vcc, -1, v11, vcc2147; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]2148; GISEL-NEXT: v_or_b32_e32 v2, v2, v222149; GISEL-NEXT: v_or_b32_e32 v3, v3, v232150; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v312151; GISEL-NEXT: v_cndmask_b32_e32 v2, v24, v2, vcc2152; GISEL-NEXT: v_cndmask_b32_e32 v3, v25, v3, vcc2153; GISEL-NEXT: v_cndmask_b32_e32 v24, 0, v0, vcc2154; GISEL-NEXT: v_cndmask_b32_e32 v25, 0, v1, vcc2155; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v312156; GISEL-NEXT: v_cndmask_b32_e32 v26, v2, v16, vcc2157; GISEL-NEXT: v_cndmask_b32_e32 v27, v3, v17, vcc2158; GISEL-NEXT: v_mov_b32_e32 v23, 02159; GISEL-NEXT: v_mov_b32_e32 v0, s42160; GISEL-NEXT: v_mov_b32_e32 v1, s52161; GISEL-NEXT: v_mov_b32_e32 v2, s62162; GISEL-NEXT: v_mov_b32_e32 v3, s72163; GISEL-NEXT: .LBB2_3: ; %udiv-do-while32164; GISEL-NEXT: ; =>This Inner Loop Header: Depth=12165; GISEL-NEXT: v_lshrrev_b32_e32 v39, 31, v212166; GISEL-NEXT: v_lshl_b64 v[2:3], v[20:21], 12167; GISEL-NEXT: v_lshrrev_b32_e32 v22, 31, v272168; GISEL-NEXT: v_lshl_b64 v[26:27], v[26:27], 12169; GISEL-NEXT: v_lshl_b64 v[24:25], v[24:25], 12170; GISEL-NEXT: v_lshrrev_b32_e32 v48, 31, v192171; GISEL-NEXT: v_add_i32_e32 v31, vcc, -1, v312172; GISEL-NEXT: v_addc_u32_e32 v32, vcc, -1, v32, vcc2173; GISEL-NEXT: v_lshl_b64 v[18:19], v[18:19], 12174; GISEL-NEXT: v_or_b32_e32 v20, v0, v22175; GISEL-NEXT: v_or_b32_e32 v21, v1, v32176; GISEL-NEXT: v_or_b32_e32 v2, v24, v222177; GISEL-NEXT: v_or_b32_e32 v3, v26, v482178; GISEL-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc2179; GISEL-NEXT: v_addc_u32_e32 v34, vcc, -1, v34, vcc2180; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v35, v32181; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v36, v27, vcc2182; GISEL-NEXT: v_or_b32_e32 v0, v31, v332183; GISEL-NEXT: v_or_b32_e32 v1, v32, v342184; GISEL-NEXT: v_subb_u32_e32 v22, vcc, v37, v2, vcc2185; GISEL-NEXT: v_subb_u32_e32 v22, vcc, v38, v25, vcc2186; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2187; GISEL-NEXT: v_ashrrev_i32_e32 v0, 31, v222188; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2189; GISEL-NEXT: v_and_b32_e32 v1, v0, v302190; GISEL-NEXT: v_and_b32_e32 v24, v0, v292191; GISEL-NEXT: v_and_b32_e32 v48, v0, v102192; GISEL-NEXT: v_and_b32_e32 v49, v0, v112193; GISEL-NEXT: v_and_b32_e32 v22, 1, v02194; GISEL-NEXT: v_sub_i32_e32 v26, vcc, v3, v12195; GISEL-NEXT: v_subb_u32_e32 v27, vcc, v27, v24, vcc2196; GISEL-NEXT: v_subb_u32_e32 v24, vcc, v2, v48, vcc2197; GISEL-NEXT: v_subb_u32_e32 v25, vcc, v25, v49, vcc2198; GISEL-NEXT: v_or_b32_e32 v18, v18, v392199; GISEL-NEXT: v_mov_b32_e32 v0, v222200; GISEL-NEXT: v_mov_b32_e32 v1, v232201; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]2202; GISEL-NEXT: s_cbranch_execnz .LBB2_32203; GISEL-NEXT: ; %bb.4: ; %Flow132204; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]2205; GISEL-NEXT: .LBB2_5: ; %Flow142206; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]2207; GISEL-NEXT: v_lshl_b64 v[2:3], v[20:21], 12208; GISEL-NEXT: v_lshl_b64 v[18:19], v[18:19], 12209; GISEL-NEXT: v_lshrrev_b32_e32 v20, 31, v212210; GISEL-NEXT: v_or_b32_e32 v18, v18, v202211; GISEL-NEXT: v_or_b32_e32 v31, v0, v22212; GISEL-NEXT: v_or_b32_e32 v32, v1, v32213; GISEL-NEXT: .LBB2_6: ; %Flow162214; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]2215; GISEL-NEXT: s_mov_b64 s[8:9], 02216; GISEL-NEXT: v_ashrrev_i32_e32 v33, 31, v72217; GISEL-NEXT: v_ashrrev_i32_e32 v0, 31, v152218; GISEL-NEXT: v_mov_b32_e32 v2, 0x7f2219; GISEL-NEXT: v_mov_b32_e32 v3, 02220; GISEL-NEXT: v_xor_b32_e32 v1, v4, v332221; GISEL-NEXT: v_xor_b32_e32 v4, v5, v332222; GISEL-NEXT: v_xor_b32_e32 v5, v6, v332223; GISEL-NEXT: v_xor_b32_e32 v7, v7, v332224; GISEL-NEXT: v_xor_b32_e32 v6, v12, v02225; GISEL-NEXT: v_xor_b32_e32 v20, v13, v02226; GISEL-NEXT: v_xor_b32_e32 v14, v14, v02227; GISEL-NEXT: v_xor_b32_e32 v15, v15, v02228; GISEL-NEXT: v_sub_i32_e32 v12, vcc, v1, v332229; GISEL-NEXT: v_subb_u32_e32 v13, vcc, v4, v33, vcc2230; GISEL-NEXT: v_sub_i32_e64 v35, s[4:5], v6, v02231; GISEL-NEXT: v_subb_u32_e64 v34, s[4:5], v20, v0, s[4:5]2232; GISEL-NEXT: v_subb_u32_e32 v6, vcc, v5, v33, vcc2233; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v7, v33, vcc2234; GISEL-NEXT: v_subb_u32_e64 v4, vcc, v14, v0, s[4:5]2235; GISEL-NEXT: v_subb_u32_e32 v5, vcc, v15, v0, vcc2236; GISEL-NEXT: v_ffbh_u32_e32 v20, v342237; GISEL-NEXT: v_ffbh_u32_e32 v21, v352238; GISEL-NEXT: v_ffbh_u32_e32 v22, v132239; GISEL-NEXT: v_ffbh_u32_e32 v23, v122240; GISEL-NEXT: v_or_b32_e32 v0, v35, v42241; GISEL-NEXT: v_or_b32_e32 v1, v34, v52242; GISEL-NEXT: v_or_b32_e32 v14, v12, v62243; GISEL-NEXT: v_or_b32_e32 v15, v13, v72244; GISEL-NEXT: v_add_i32_e32 v21, vcc, 32, v212245; GISEL-NEXT: v_ffbh_u32_e32 v24, v52246; GISEL-NEXT: v_ffbh_u32_e32 v25, v42247; GISEL-NEXT: v_add_i32_e32 v23, vcc, 32, v232248; GISEL-NEXT: v_ffbh_u32_e32 v26, v72249; GISEL-NEXT: v_ffbh_u32_e32 v27, v62250; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2251; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[14:15]2252; GISEL-NEXT: v_min_u32_e32 v0, v20, v212253; GISEL-NEXT: v_add_i32_e64 v1, s[6:7], 32, v252254; GISEL-NEXT: v_min_u32_e32 v14, v22, v232255; GISEL-NEXT: v_add_i32_e64 v15, s[6:7], 32, v272256; GISEL-NEXT: v_add_i32_e64 v0, s[6:7], 64, v02257; GISEL-NEXT: v_min_u32_e32 v1, v24, v12258; GISEL-NEXT: v_add_i32_e64 v14, s[6:7], 64, v142259; GISEL-NEXT: v_min_u32_e32 v15, v26, v152260; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2261; GISEL-NEXT: v_cndmask_b32_e64 v20, 0, 1, s[4:5]2262; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[4:5]2263; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc2264; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[6:7]2265; GISEL-NEXT: v_cndmask_b32_e32 v1, v15, v14, vcc2266; GISEL-NEXT: v_sub_i32_e32 v14, vcc, v0, v12267; GISEL-NEXT: v_subb_u32_e64 v15, s[4:5], 0, 0, vcc2268; GISEL-NEXT: v_subb_u32_e64 v0, s[4:5], 0, 0, s[4:5]2269; GISEL-NEXT: v_subb_u32_e64 v1, s[4:5], 0, 0, s[4:5]2270; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[14:15], v[2:3]2271; GISEL-NEXT: v_cndmask_b32_e64 v21, 0, 1, vcc2272; GISEL-NEXT: v_xor_b32_e32 v2, 0x7f, v142273; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[0:1]2274; GISEL-NEXT: v_cndmask_b32_e64 v22, 0, 1, vcc2275; GISEL-NEXT: v_or_b32_e32 v2, v2, v02276; GISEL-NEXT: v_or_b32_e32 v3, v15, v12277; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2278; GISEL-NEXT: v_cndmask_b32_e32 v21, v22, v21, vcc2279; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[2:3]2280; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc2281; GISEL-NEXT: v_or_b32_e32 v3, v20, v212282; GISEL-NEXT: v_and_b32_e32 v20, 1, v32283; GISEL-NEXT: v_or_b32_e32 v2, v3, v22284; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v202285; GISEL-NEXT: v_cndmask_b32_e64 v20, v12, 0, vcc2286; GISEL-NEXT: v_and_b32_e32 v22, 1, v22287; GISEL-NEXT: v_cndmask_b32_e64 v21, v13, 0, vcc2288; GISEL-NEXT: v_cndmask_b32_e64 v2, v6, 0, vcc2289; GISEL-NEXT: v_cndmask_b32_e64 v3, v7, 0, vcc2290; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v222291; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -12292; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]2293; GISEL-NEXT: s_cbranch_execz .LBB2_122294; GISEL-NEXT: ; %bb.7: ; %udiv-bb12295; GISEL-NEXT: v_add_i32_e32 v36, vcc, 1, v142296; GISEL-NEXT: v_addc_u32_e64 v37, s[4:5], 0, v15, vcc2297; GISEL-NEXT: v_sub_i32_e32 v24, vcc, 0x7f, v142298; GISEL-NEXT: v_not_b32_e32 v2, 632299; GISEL-NEXT: v_addc_u32_e64 v38, vcc, 0, v0, s[4:5]2300; GISEL-NEXT: v_addc_u32_e32 v39, vcc, 0, v1, vcc2301; GISEL-NEXT: v_add_i32_e64 v20, s[4:5], v24, v22302; GISEL-NEXT: v_sub_i32_e64 v14, s[4:5], 64, v242303; GISEL-NEXT: v_lshl_b64 v[0:1], v[12:13], v242304; GISEL-NEXT: v_lshl_b64 v[2:3], v[6:7], v242305; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -12306; GISEL-NEXT: v_lshr_b64 v[14:15], v[12:13], v142307; GISEL-NEXT: v_lshl_b64 v[22:23], v[12:13], v202308; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v242309; GISEL-NEXT: v_cndmask_b32_e32 v20, 0, v0, vcc2310; GISEL-NEXT: v_cndmask_b32_e32 v21, 0, v1, vcc2311; GISEL-NEXT: v_or_b32_e32 v0, v14, v22312; GISEL-NEXT: v_or_b32_e32 v1, v15, v32313; GISEL-NEXT: v_cndmask_b32_e32 v0, v22, v0, vcc2314; GISEL-NEXT: v_cndmask_b32_e32 v1, v23, v1, vcc2315; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v242316; GISEL-NEXT: v_cndmask_b32_e32 v14, v0, v6, vcc2317; GISEL-NEXT: v_cndmask_b32_e32 v15, v1, v7, vcc2318; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]2319; GISEL-NEXT: v_mov_b32_e32 v0, s82320; GISEL-NEXT: v_mov_b32_e32 v1, s92321; GISEL-NEXT: v_mov_b32_e32 v2, s102322; GISEL-NEXT: v_mov_b32_e32 v3, s112323; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]2324; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]2325; GISEL-NEXT: s_cbranch_execz .LBB2_112326; GISEL-NEXT: ; %bb.8: ; %udiv-preheader2327; GISEL-NEXT: v_add_i32_e32 v24, vcc, 0xffffffc0, v362328; GISEL-NEXT: v_sub_i32_e32 v22, vcc, 64, v362329; GISEL-NEXT: v_lshr_b64 v[0:1], v[6:7], v362330; GISEL-NEXT: v_lshr_b64 v[2:3], v[12:13], v362331; GISEL-NEXT: s_mov_b64 s[4:5], 02332; GISEL-NEXT: v_add_i32_e32 v48, vcc, -1, v352333; GISEL-NEXT: v_addc_u32_e32 v49, vcc, -1, v34, vcc2334; GISEL-NEXT: v_lshl_b64 v[22:23], v[6:7], v222335; GISEL-NEXT: v_lshr_b64 v[24:25], v[6:7], v242336; GISEL-NEXT: v_addc_u32_e32 v50, vcc, -1, v4, vcc2337; GISEL-NEXT: v_addc_u32_e32 v51, vcc, -1, v5, vcc2338; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]2339; GISEL-NEXT: v_or_b32_e32 v2, v2, v222340; GISEL-NEXT: v_or_b32_e32 v3, v3, v232341; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v362342; GISEL-NEXT: v_cndmask_b32_e32 v2, v24, v2, vcc2343; GISEL-NEXT: v_cndmask_b32_e32 v3, v25, v3, vcc2344; GISEL-NEXT: v_cndmask_b32_e32 v26, 0, v0, vcc2345; GISEL-NEXT: v_cndmask_b32_e32 v27, 0, v1, vcc2346; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v362347; GISEL-NEXT: v_cndmask_b32_e32 v24, v2, v12, vcc2348; GISEL-NEXT: v_cndmask_b32_e32 v25, v3, v13, vcc2349; GISEL-NEXT: v_mov_b32_e32 v23, 02350; GISEL-NEXT: v_mov_b32_e32 v0, s42351; GISEL-NEXT: v_mov_b32_e32 v1, s52352; GISEL-NEXT: v_mov_b32_e32 v2, s62353; GISEL-NEXT: v_mov_b32_e32 v3, s72354; GISEL-NEXT: .LBB2_9: ; %udiv-do-while2355; GISEL-NEXT: ; =>This Inner Loop Header: Depth=12356; GISEL-NEXT: v_lshl_b64 v[2:3], v[20:21], 12357; GISEL-NEXT: v_lshrrev_b32_e32 v22, 31, v212358; GISEL-NEXT: v_lshl_b64 v[52:53], v[24:25], 12359; GISEL-NEXT: v_lshl_b64 v[26:27], v[26:27], 12360; GISEL-NEXT: v_lshrrev_b32_e32 v24, 31, v252361; GISEL-NEXT: v_lshrrev_b32_e32 v25, 31, v152362; GISEL-NEXT: v_lshl_b64 v[14:15], v[14:15], 12363; GISEL-NEXT: v_add_i32_e32 v36, vcc, -1, v362364; GISEL-NEXT: v_addc_u32_e32 v37, vcc, -1, v37, vcc2365; GISEL-NEXT: v_or_b32_e32 v20, v0, v22366; GISEL-NEXT: v_or_b32_e32 v21, v1, v32367; GISEL-NEXT: v_or_b32_e32 v2, v26, v242368; GISEL-NEXT: v_or_b32_e32 v3, v52, v252369; GISEL-NEXT: v_or_b32_e32 v14, v14, v222370; GISEL-NEXT: v_addc_u32_e32 v38, vcc, -1, v38, vcc2371; GISEL-NEXT: v_addc_u32_e32 v39, vcc, -1, v39, vcc2372; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v48, v32373; GISEL-NEXT: v_subb_u32_e32 v0, vcc, v49, v53, vcc2374; GISEL-NEXT: v_or_b32_e32 v0, v36, v382375; GISEL-NEXT: v_or_b32_e32 v1, v37, v392376; GISEL-NEXT: v_subb_u32_e32 v22, vcc, v50, v2, vcc2377; GISEL-NEXT: v_subb_u32_e32 v22, vcc, v51, v27, vcc2378; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[0:1]2379; GISEL-NEXT: v_ashrrev_i32_e32 v0, 31, v222380; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2381; GISEL-NEXT: v_and_b32_e32 v22, 1, v02382; GISEL-NEXT: v_and_b32_e32 v1, v0, v352383; GISEL-NEXT: v_and_b32_e32 v25, v0, v342384; GISEL-NEXT: v_and_b32_e32 v26, v0, v42385; GISEL-NEXT: v_and_b32_e32 v52, v0, v52386; GISEL-NEXT: v_sub_i32_e32 v24, vcc, v3, v12387; GISEL-NEXT: v_subb_u32_e32 v25, vcc, v53, v25, vcc2388; GISEL-NEXT: v_mov_b32_e32 v0, v222389; GISEL-NEXT: v_mov_b32_e32 v1, v232390; GISEL-NEXT: v_subb_u32_e32 v26, vcc, v2, v26, vcc2391; GISEL-NEXT: v_subb_u32_e32 v27, vcc, v27, v52, vcc2392; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]2393; GISEL-NEXT: s_cbranch_execnz .LBB2_92394; GISEL-NEXT: ; %bb.10: ; %Flow2395; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]2396; GISEL-NEXT: .LBB2_11: ; %Flow112397; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]2398; GISEL-NEXT: v_lshl_b64 v[22:23], v[20:21], 12399; GISEL-NEXT: v_lshl_b64 v[2:3], v[14:15], 12400; GISEL-NEXT: v_lshrrev_b32_e32 v14, 31, v212401; GISEL-NEXT: v_or_b32_e32 v2, v2, v142402; GISEL-NEXT: v_or_b32_e32 v20, v0, v222403; GISEL-NEXT: v_or_b32_e32 v21, v1, v232404; GISEL-NEXT: .LBB2_12: ; %Flow122405; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]2406; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v30, v31, 02407; GISEL-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v30, v18, 02408; GISEL-NEXT: v_mul_lo_u32 v26, v30, v192409; GISEL-NEXT: v_mul_lo_u32 v27, v29, v182410; GISEL-NEXT: v_mad_u64_u32 v[22:23], s[4:5], v35, v20, 02411; GISEL-NEXT: v_mad_u64_u32 v[18:19], s[4:5], v35, v2, 02412; GISEL-NEXT: v_mul_lo_u32 v36, v35, v32413; GISEL-NEXT: v_mul_lo_u32 v37, v34, v22414; GISEL-NEXT: v_mad_u64_u32 v[24:25], s[4:5], v29, v32, v[14:15]2415; GISEL-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v34, v21, v[18:19]2416; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v10, v31, v[24:25]2417; GISEL-NEXT: v_mad_u64_u32 v[24:25], s[4:5], v4, v20, v[14:15]2418; GISEL-NEXT: v_mad_u64_u32 v[14:15], vcc, v30, v32, v[1:2]2419; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v35, v21, v[23:24]2420; GISEL-NEXT: v_mad_u64_u32 v[18:19], s[6:7], v29, v31, v[14:15]2421; GISEL-NEXT: v_addc_u32_e64 v3, s[6:7], v3, v26, s[6:7]2422; GISEL-NEXT: v_mad_u64_u32 v[14:15], s[6:7], v34, v20, v[1:2]2423; GISEL-NEXT: v_addc_u32_e64 v2, s[6:7], v25, v36, s[6:7]2424; GISEL-NEXT: v_addc_u32_e32 v1, vcc, v3, v27, vcc2425; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v16, v02426; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v17, v18, vcc2427; GISEL-NEXT: v_xor_b32_e32 v18, v0, v282428; GISEL-NEXT: v_addc_u32_e64 v0, s[4:5], v2, v37, s[4:5]2429; GISEL-NEXT: v_sub_i32_e64 v2, s[4:5], v12, v222430; GISEL-NEXT: v_subb_u32_e64 v14, s[4:5], v13, v14, s[4:5]2431; GISEL-NEXT: v_xor_b32_e32 v22, v2, v332432; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v10, v32, v[1:2]2433; GISEL-NEXT: v_xor_b32_e32 v1, v16, v282434; GISEL-NEXT: v_mad_u64_u32 v[12:13], s[6:7], v4, v21, v[0:1]2435; GISEL-NEXT: v_xor_b32_e32 v10, v14, v332436; GISEL-NEXT: v_mad_u64_u32 v[16:17], s[6:7], v11, v31, v[2:3]2437; GISEL-NEXT: v_sub_i32_e64 v0, s[6:7], v18, v282438; GISEL-NEXT: v_subb_u32_e64 v1, s[6:7], v1, v28, s[6:7]2439; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v5, v20, v[12:13]2440; GISEL-NEXT: v_sub_i32_e64 v4, s[8:9], v22, v332441; GISEL-NEXT: v_subb_u32_e64 v5, s[8:9], v10, v33, s[8:9]2442; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v8, v19, vcc2443; GISEL-NEXT: v_subb_u32_e32 v8, vcc, v9, v16, vcc2444; GISEL-NEXT: v_xor_b32_e32 v3, v3, v282445; GISEL-NEXT: v_subb_u32_e64 v6, vcc, v6, v15, s[4:5]2446; GISEL-NEXT: v_subb_u32_e32 v2, vcc, v7, v2, vcc2447; GISEL-NEXT: v_xor_b32_e32 v6, v6, v332448; GISEL-NEXT: v_xor_b32_e32 v7, v8, v282449; GISEL-NEXT: v_xor_b32_e32 v8, v2, v332450; GISEL-NEXT: v_subb_u32_e64 v2, vcc, v3, v28, s[6:7]2451; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v7, v28, vcc2452; GISEL-NEXT: v_subb_u32_e64 v6, vcc, v6, v33, s[8:9]2453; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v8, v33, vcc2454; GISEL-NEXT: s_setpc_b64 s[30:31]2455 %shl = srem <2 x i128> %lhs, %rhs2456 ret <2 x i128> %shl2457}2458 2459define <2 x i128> @v_urem_v2i128_vv(<2 x i128> %lhs, <2 x i128> %rhs) {2460; SDAG-LABEL: v_urem_v2i128_vv:2461; SDAG: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases2462; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2463; SDAG-NEXT: v_or_b32_e32 v17, v9, v112464; SDAG-NEXT: v_or_b32_e32 v16, v8, v102465; SDAG-NEXT: v_or_b32_e32 v19, v1, v32466; SDAG-NEXT: v_or_b32_e32 v18, v0, v22467; SDAG-NEXT: v_ffbh_u32_e32 v20, v102468; SDAG-NEXT: v_ffbh_u32_e32 v21, v112469; SDAG-NEXT: v_ffbh_u32_e32 v22, v82470; SDAG-NEXT: v_ffbh_u32_e32 v23, v92471; SDAG-NEXT: v_ffbh_u32_e32 v24, v22472; SDAG-NEXT: v_ffbh_u32_e32 v25, v32473; SDAG-NEXT: v_ffbh_u32_e32 v26, v02474; SDAG-NEXT: v_ffbh_u32_e32 v27, v12475; SDAG-NEXT: v_mov_b32_e32 v28, 02476; SDAG-NEXT: s_mov_b64 s[8:9], 0x7f2477; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]2478; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]2479; SDAG-NEXT: v_add_i32_e64 v16, s[6:7], 32, v202480; SDAG-NEXT: v_add_i32_e64 v17, s[6:7], 32, v222481; SDAG-NEXT: v_add_i32_e64 v18, s[6:7], 32, v242482; SDAG-NEXT: v_add_i32_e64 v19, s[6:7], 32, v262483; SDAG-NEXT: v_min_u32_e32 v16, v16, v212484; SDAG-NEXT: v_min_u32_e32 v17, v17, v232485; SDAG-NEXT: v_min_u32_e32 v18, v18, v252486; SDAG-NEXT: v_min_u32_e32 v19, v19, v272487; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[4:5]2488; SDAG-NEXT: v_add_i32_e32 v17, vcc, 64, v172489; SDAG-NEXT: v_addc_u32_e64 v20, s[4:5], 0, 0, vcc2490; SDAG-NEXT: v_add_i32_e32 v19, vcc, 64, v192491; SDAG-NEXT: v_addc_u32_e64 v21, s[4:5], 0, 0, vcc2492; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[10:11]2493; SDAG-NEXT: v_cndmask_b32_e64 v20, v20, 0, vcc2494; SDAG-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc2495; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]2496; SDAG-NEXT: v_cndmask_b32_e64 v17, v21, 0, vcc2497; SDAG-NEXT: v_cndmask_b32_e32 v18, v19, v18, vcc2498; SDAG-NEXT: v_sub_i32_e32 v18, vcc, v16, v182499; SDAG-NEXT: v_subb_u32_e32 v19, vcc, v20, v17, vcc2500; SDAG-NEXT: v_xor_b32_e32 v16, 0x7f, v182501; SDAG-NEXT: v_subb_u32_e32 v20, vcc, 0, v28, vcc2502; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[8:9], v[18:19]2503; SDAG-NEXT: v_cndmask_b32_e64 v22, 0, 1, s[4:5]2504; SDAG-NEXT: v_subb_u32_e32 v21, vcc, 0, v28, vcc2505; SDAG-NEXT: v_or_b32_e32 v16, v16, v202506; SDAG-NEXT: v_or_b32_e32 v17, v19, v212507; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[20:21]2508; SDAG-NEXT: v_cndmask_b32_e64 v23, 0, 1, vcc2509; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[16:17]2510; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[20:21]2511; SDAG-NEXT: v_cndmask_b32_e64 v16, v23, v22, s[4:5]2512; SDAG-NEXT: v_and_b32_e32 v16, 1, v162513; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v162514; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]2515; SDAG-NEXT: v_cndmask_b32_e64 v33, v3, 0, s[4:5]2516; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -12517; SDAG-NEXT: v_cndmask_b32_e64 v31, v2, 0, s[4:5]2518; SDAG-NEXT: v_cndmask_b32_e64 v30, v1, 0, s[4:5]2519; SDAG-NEXT: s_and_b64 s[8:9], s[6:7], vcc2520; SDAG-NEXT: v_cndmask_b32_e64 v32, v0, 0, s[4:5]2521; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[8:9]2522; SDAG-NEXT: s_cbranch_execz .LBB3_62523; SDAG-NEXT: ; %bb.1: ; %udiv-bb152524; SDAG-NEXT: v_add_i32_e32 v30, vcc, 1, v182525; SDAG-NEXT: v_sub_i32_e64 v22, s[4:5], 63, v182526; SDAG-NEXT: v_mov_b32_e32 v16, 02527; SDAG-NEXT: v_mov_b32_e32 v17, 02528; SDAG-NEXT: v_addc_u32_e32 v31, vcc, 0, v19, vcc2529; SDAG-NEXT: v_lshl_b64 v[22:23], v[0:1], v222530; SDAG-NEXT: v_addc_u32_e32 v32, vcc, 0, v20, vcc2531; SDAG-NEXT: v_addc_u32_e32 v33, vcc, 0, v21, vcc2532; SDAG-NEXT: v_or_b32_e32 v19, v30, v322533; SDAG-NEXT: v_sub_i32_e32 v21, vcc, 0x7f, v182534; SDAG-NEXT: v_or_b32_e32 v20, v31, v332535; SDAG-NEXT: v_lshl_b64 v[24:25], v[2:3], v212536; SDAG-NEXT: v_sub_i32_e32 v18, vcc, 64, v212537; SDAG-NEXT: v_lshl_b64 v[26:27], v[0:1], v212538; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[19:20]2539; SDAG-NEXT: v_lshr_b64 v[18:19], v[0:1], v182540; SDAG-NEXT: v_or_b32_e32 v19, v25, v192541; SDAG-NEXT: v_or_b32_e32 v18, v24, v182542; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v212543; SDAG-NEXT: v_cndmask_b32_e64 v19, v23, v19, s[4:5]2544; SDAG-NEXT: v_cndmask_b32_e64 v18, v22, v18, s[4:5]2545; SDAG-NEXT: v_cndmask_b32_e64 v23, 0, v27, s[4:5]2546; SDAG-NEXT: v_cndmask_b32_e64 v22, 0, v26, s[4:5]2547; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v212548; SDAG-NEXT: v_cndmask_b32_e64 v19, v19, v3, s[4:5]2549; SDAG-NEXT: v_cndmask_b32_e64 v18, v18, v2, s[4:5]2550; SDAG-NEXT: v_mov_b32_e32 v20, 02551; SDAG-NEXT: v_mov_b32_e32 v21, 02552; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc2553; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]2554; SDAG-NEXT: s_cbranch_execz .LBB3_52555; SDAG-NEXT: ; %bb.2: ; %udiv-preheader42556; SDAG-NEXT: v_lshr_b64 v[24:25], v[0:1], v302557; SDAG-NEXT: v_sub_i32_e32 v16, vcc, 64, v302558; SDAG-NEXT: v_subrev_i32_e32 v35, vcc, 64, v302559; SDAG-NEXT: v_lshr_b64 v[26:27], v[2:3], v302560; SDAG-NEXT: v_add_i32_e32 v34, vcc, -1, v82561; SDAG-NEXT: v_mov_b32_e32 v20, 02562; SDAG-NEXT: v_mov_b32_e32 v21, 02563; SDAG-NEXT: s_mov_b64 s[10:11], 02564; SDAG-NEXT: v_mov_b32_e32 v17, 02565; SDAG-NEXT: v_lshl_b64 v[28:29], v[2:3], v162566; SDAG-NEXT: v_lshr_b64 v[37:38], v[2:3], v352567; SDAG-NEXT: v_addc_u32_e32 v35, vcc, -1, v9, vcc2568; SDAG-NEXT: v_or_b32_e32 v16, v25, v292569; SDAG-NEXT: v_or_b32_e32 v24, v24, v282570; SDAG-NEXT: v_addc_u32_e32 v36, vcc, -1, v10, vcc2571; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v302572; SDAG-NEXT: v_cndmask_b32_e64 v16, v38, v16, s[4:5]2573; SDAG-NEXT: v_cndmask_b32_e64 v24, v37, v24, s[4:5]2574; SDAG-NEXT: v_cndmask_b32_e64 v29, 0, v27, s[4:5]2575; SDAG-NEXT: v_cndmask_b32_e64 v28, 0, v26, s[4:5]2576; SDAG-NEXT: v_addc_u32_e32 v37, vcc, -1, v11, vcc2577; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v302578; SDAG-NEXT: v_cndmask_b32_e32 v27, v16, v1, vcc2579; SDAG-NEXT: v_cndmask_b32_e32 v26, v24, v0, vcc2580; SDAG-NEXT: v_mov_b32_e32 v24, 02581; SDAG-NEXT: v_mov_b32_e32 v25, 02582; SDAG-NEXT: .LBB3_3: ; %udiv-do-while32583; SDAG-NEXT: ; =>This Inner Loop Header: Depth=12584; SDAG-NEXT: v_lshrrev_b32_e32 v16, 31, v232585; SDAG-NEXT: v_lshl_b64 v[22:23], v[22:23], 12586; SDAG-NEXT: v_lshl_b64 v[28:29], v[28:29], 12587; SDAG-NEXT: v_lshrrev_b32_e32 v38, 31, v272588; SDAG-NEXT: v_lshl_b64 v[26:27], v[26:27], 12589; SDAG-NEXT: v_lshrrev_b32_e32 v39, 31, v192590; SDAG-NEXT: v_lshl_b64 v[18:19], v[18:19], 12591; SDAG-NEXT: v_or_b32_e32 v23, v25, v232592; SDAG-NEXT: v_or_b32_e32 v22, v24, v222593; SDAG-NEXT: v_or_b32_e32 v24, v28, v382594; SDAG-NEXT: v_or_b32_e32 v25, v26, v392595; SDAG-NEXT: v_or_b32_e32 v18, v18, v162596; SDAG-NEXT: v_sub_i32_e32 v16, vcc, v34, v252597; SDAG-NEXT: v_subb_u32_e32 v16, vcc, v35, v27, vcc2598; SDAG-NEXT: v_subb_u32_e32 v16, vcc, v36, v24, vcc2599; SDAG-NEXT: v_subb_u32_e32 v16, vcc, v37, v29, vcc2600; SDAG-NEXT: v_ashrrev_i32_e32 v16, 31, v162601; SDAG-NEXT: v_and_b32_e32 v26, v16, v82602; SDAG-NEXT: v_and_b32_e32 v28, v16, v92603; SDAG-NEXT: v_and_b32_e32 v38, v16, v102604; SDAG-NEXT: v_and_b32_e32 v39, v16, v112605; SDAG-NEXT: v_and_b32_e32 v16, 1, v162606; SDAG-NEXT: v_sub_i32_e32 v26, vcc, v25, v262607; SDAG-NEXT: v_subb_u32_e32 v27, vcc, v27, v28, vcc2608; SDAG-NEXT: v_subb_u32_e32 v28, vcc, v24, v38, vcc2609; SDAG-NEXT: v_subb_u32_e32 v29, vcc, v29, v39, vcc2610; SDAG-NEXT: v_add_i32_e32 v30, vcc, -1, v302611; SDAG-NEXT: v_addc_u32_e32 v31, vcc, -1, v31, vcc2612; SDAG-NEXT: v_addc_u32_e32 v32, vcc, -1, v32, vcc2613; SDAG-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc2614; SDAG-NEXT: v_or_b32_e32 v24, v30, v322615; SDAG-NEXT: v_or_b32_e32 v25, v31, v332616; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[24:25]2617; SDAG-NEXT: v_or_b32_e32 v19, v21, v192618; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]2619; SDAG-NEXT: v_or_b32_e32 v18, v20, v182620; SDAG-NEXT: v_mov_b32_e32 v25, v172621; SDAG-NEXT: v_mov_b32_e32 v24, v162622; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]2623; SDAG-NEXT: s_cbranch_execnz .LBB3_32624; SDAG-NEXT: ; %bb.4: ; %Flow132625; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]2626; SDAG-NEXT: .LBB3_5: ; %Flow142627; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]2628; SDAG-NEXT: v_lshl_b64 v[18:19], v[18:19], 12629; SDAG-NEXT: v_lshrrev_b32_e32 v24, 31, v232630; SDAG-NEXT: v_lshl_b64 v[22:23], v[22:23], 12631; SDAG-NEXT: v_or_b32_e32 v18, v18, v242632; SDAG-NEXT: v_or_b32_e32 v33, v21, v192633; SDAG-NEXT: v_or_b32_e32 v30, v17, v232634; SDAG-NEXT: v_or_b32_e32 v31, v20, v182635; SDAG-NEXT: v_or_b32_e32 v32, v16, v222636; SDAG-NEXT: .LBB3_6: ; %Flow162637; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]2638; SDAG-NEXT: v_or_b32_e32 v17, v13, v152639; SDAG-NEXT: v_or_b32_e32 v16, v12, v142640; SDAG-NEXT: v_or_b32_e32 v19, v5, v72641; SDAG-NEXT: v_or_b32_e32 v18, v4, v62642; SDAG-NEXT: v_ffbh_u32_e32 v20, v142643; SDAG-NEXT: v_ffbh_u32_e32 v21, v152644; SDAG-NEXT: v_ffbh_u32_e32 v22, v122645; SDAG-NEXT: v_ffbh_u32_e32 v23, v132646; SDAG-NEXT: v_ffbh_u32_e32 v24, v62647; SDAG-NEXT: v_ffbh_u32_e32 v25, v72648; SDAG-NEXT: v_ffbh_u32_e32 v26, v42649; SDAG-NEXT: v_ffbh_u32_e32 v27, v52650; SDAG-NEXT: v_mov_b32_e32 v28, 02651; SDAG-NEXT: s_mov_b64 s[8:9], 0x7f2652; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]2653; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]2654; SDAG-NEXT: v_add_i32_e64 v16, s[6:7], 32, v202655; SDAG-NEXT: v_add_i32_e64 v17, s[6:7], 32, v222656; SDAG-NEXT: v_add_i32_e64 v18, s[6:7], 32, v242657; SDAG-NEXT: v_add_i32_e64 v19, s[6:7], 32, v262658; SDAG-NEXT: s_or_b64 s[6:7], vcc, s[4:5]2659; SDAG-NEXT: v_min_u32_e32 v16, v16, v212660; SDAG-NEXT: v_min_u32_e32 v17, v17, v232661; SDAG-NEXT: v_min_u32_e32 v18, v18, v252662; SDAG-NEXT: v_min_u32_e32 v19, v19, v272663; SDAG-NEXT: v_add_i32_e32 v17, vcc, 64, v172664; SDAG-NEXT: v_addc_u32_e64 v20, s[4:5], 0, 0, vcc2665; SDAG-NEXT: v_add_i32_e32 v19, vcc, 64, v192666; SDAG-NEXT: v_addc_u32_e64 v21, s[4:5], 0, 0, vcc2667; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[14:15]2668; SDAG-NEXT: v_cndmask_b32_e64 v20, v20, 0, vcc2669; SDAG-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc2670; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[6:7]2671; SDAG-NEXT: v_cndmask_b32_e64 v17, v21, 0, vcc2672; SDAG-NEXT: v_cndmask_b32_e32 v18, v19, v18, vcc2673; SDAG-NEXT: v_sub_i32_e32 v18, vcc, v16, v182674; SDAG-NEXT: v_subb_u32_e32 v19, vcc, v20, v17, vcc2675; SDAG-NEXT: v_xor_b32_e32 v16, 0x7f, v182676; SDAG-NEXT: v_subb_u32_e32 v20, vcc, 0, v28, vcc2677; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[8:9], v[18:19]2678; SDAG-NEXT: v_cndmask_b32_e64 v22, 0, 1, s[4:5]2679; SDAG-NEXT: v_subb_u32_e32 v21, vcc, 0, v28, vcc2680; SDAG-NEXT: v_or_b32_e32 v16, v16, v202681; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[20:21]2682; SDAG-NEXT: v_cndmask_b32_e64 v23, 0, 1, vcc2683; SDAG-NEXT: v_or_b32_e32 v17, v19, v212684; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[20:21]2685; SDAG-NEXT: v_cndmask_b32_e32 v22, v23, v22, vcc2686; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[16:17]2687; SDAG-NEXT: v_and_b32_e32 v16, 1, v222688; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 1, v162689; SDAG-NEXT: s_or_b64 s[4:5], s[6:7], s[4:5]2690; SDAG-NEXT: v_cndmask_b32_e64 v23, v7, 0, s[4:5]2691; SDAG-NEXT: s_xor_b64 s[6:7], s[4:5], -12692; SDAG-NEXT: v_cndmask_b32_e64 v22, v6, 0, s[4:5]2693; SDAG-NEXT: v_cndmask_b32_e64 v17, v5, 0, s[4:5]2694; SDAG-NEXT: v_cndmask_b32_e64 v16, v4, 0, s[4:5]2695; SDAG-NEXT: s_and_b64 s[4:5], s[6:7], vcc2696; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]2697; SDAG-NEXT: s_cbranch_execz .LBB3_122698; SDAG-NEXT: ; %bb.7: ; %udiv-bb12699; SDAG-NEXT: v_add_i32_e32 v34, vcc, 1, v182700; SDAG-NEXT: v_sub_i32_e64 v22, s[4:5], 63, v182701; SDAG-NEXT: v_mov_b32_e32 v16, 02702; SDAG-NEXT: v_mov_b32_e32 v17, 02703; SDAG-NEXT: v_addc_u32_e32 v35, vcc, 0, v19, vcc2704; SDAG-NEXT: v_lshl_b64 v[22:23], v[4:5], v222705; SDAG-NEXT: v_addc_u32_e32 v36, vcc, 0, v20, vcc2706; SDAG-NEXT: v_addc_u32_e32 v37, vcc, 0, v21, vcc2707; SDAG-NEXT: v_or_b32_e32 v19, v34, v362708; SDAG-NEXT: v_sub_i32_e32 v28, vcc, 0x7f, v182709; SDAG-NEXT: v_or_b32_e32 v20, v35, v372710; SDAG-NEXT: v_lshl_b64 v[24:25], v[6:7], v282711; SDAG-NEXT: v_sub_i32_e32 v18, vcc, 64, v282712; SDAG-NEXT: v_lshl_b64 v[26:27], v[4:5], v282713; SDAG-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[19:20]2714; SDAG-NEXT: v_lshr_b64 v[18:19], v[4:5], v182715; SDAG-NEXT: v_or_b32_e32 v19, v25, v192716; SDAG-NEXT: v_or_b32_e32 v18, v24, v182717; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v282718; SDAG-NEXT: v_cndmask_b32_e64 v19, v23, v19, s[4:5]2719; SDAG-NEXT: v_cndmask_b32_e64 v18, v22, v18, s[4:5]2720; SDAG-NEXT: v_cndmask_b32_e64 v21, 0, v27, s[4:5]2721; SDAG-NEXT: v_cndmask_b32_e64 v20, 0, v26, s[4:5]2722; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v282723; SDAG-NEXT: v_cndmask_b32_e64 v19, v19, v7, s[4:5]2724; SDAG-NEXT: v_cndmask_b32_e64 v18, v18, v6, s[4:5]2725; SDAG-NEXT: v_mov_b32_e32 v22, 02726; SDAG-NEXT: v_mov_b32_e32 v23, 02727; SDAG-NEXT: s_and_saveexec_b64 s[4:5], vcc2728; SDAG-NEXT: s_xor_b64 s[8:9], exec, s[4:5]2729; SDAG-NEXT: s_cbranch_execz .LBB3_112730; SDAG-NEXT: ; %bb.8: ; %udiv-preheader2731; SDAG-NEXT: v_lshr_b64 v[24:25], v[4:5], v342732; SDAG-NEXT: v_sub_i32_e32 v16, vcc, 64, v342733; SDAG-NEXT: v_subrev_i32_e32 v39, vcc, 64, v342734; SDAG-NEXT: v_lshr_b64 v[26:27], v[6:7], v342735; SDAG-NEXT: v_add_i32_e32 v38, vcc, -1, v122736; SDAG-NEXT: v_mov_b32_e32 v22, 02737; SDAG-NEXT: v_mov_b32_e32 v23, 02738; SDAG-NEXT: s_mov_b64 s[10:11], 02739; SDAG-NEXT: v_mov_b32_e32 v17, 02740; SDAG-NEXT: v_lshl_b64 v[28:29], v[6:7], v162741; SDAG-NEXT: v_lshr_b64 v[49:50], v[6:7], v392742; SDAG-NEXT: v_addc_u32_e32 v39, vcc, -1, v13, vcc2743; SDAG-NEXT: v_or_b32_e32 v16, v25, v292744; SDAG-NEXT: v_or_b32_e32 v24, v24, v282745; SDAG-NEXT: v_addc_u32_e32 v48, vcc, -1, v14, vcc2746; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v342747; SDAG-NEXT: v_cndmask_b32_e64 v16, v50, v16, s[4:5]2748; SDAG-NEXT: v_cndmask_b32_e64 v24, v49, v24, s[4:5]2749; SDAG-NEXT: v_cndmask_b32_e64 v29, 0, v27, s[4:5]2750; SDAG-NEXT: v_cndmask_b32_e64 v28, 0, v26, s[4:5]2751; SDAG-NEXT: v_addc_u32_e32 v49, vcc, -1, v15, vcc2752; SDAG-NEXT: v_cmp_eq_u32_e32 vcc, 0, v342753; SDAG-NEXT: v_cndmask_b32_e32 v27, v16, v5, vcc2754; SDAG-NEXT: v_cndmask_b32_e32 v26, v24, v4, vcc2755; SDAG-NEXT: v_mov_b32_e32 v24, 02756; SDAG-NEXT: v_mov_b32_e32 v25, 02757; SDAG-NEXT: .LBB3_9: ; %udiv-do-while2758; SDAG-NEXT: ; =>This Inner Loop Header: Depth=12759; SDAG-NEXT: v_lshl_b64 v[28:29], v[28:29], 12760; SDAG-NEXT: v_lshrrev_b32_e32 v16, 31, v272761; SDAG-NEXT: v_lshl_b64 v[26:27], v[26:27], 12762; SDAG-NEXT: v_lshrrev_b32_e32 v50, 31, v192763; SDAG-NEXT: v_lshl_b64 v[18:19], v[18:19], 12764; SDAG-NEXT: v_lshrrev_b32_e32 v51, 31, v212765; SDAG-NEXT: v_lshl_b64 v[20:21], v[20:21], 12766; SDAG-NEXT: v_or_b32_e32 v16, v28, v162767; SDAG-NEXT: v_or_b32_e32 v26, v26, v502768; SDAG-NEXT: v_or_b32_e32 v18, v18, v512769; SDAG-NEXT: v_or_b32_e32 v19, v23, v192770; SDAG-NEXT: v_or_b32_e32 v21, v25, v212771; SDAG-NEXT: v_sub_i32_e32 v25, vcc, v38, v262772; SDAG-NEXT: v_or_b32_e32 v18, v22, v182773; SDAG-NEXT: v_subb_u32_e32 v25, vcc, v39, v27, vcc2774; SDAG-NEXT: v_subb_u32_e32 v25, vcc, v48, v16, vcc2775; SDAG-NEXT: v_subb_u32_e32 v25, vcc, v49, v29, vcc2776; SDAG-NEXT: v_ashrrev_i32_e32 v25, 31, v252777; SDAG-NEXT: v_and_b32_e32 v28, v25, v122778; SDAG-NEXT: v_and_b32_e32 v50, v25, v132779; SDAG-NEXT: v_and_b32_e32 v51, v25, v142780; SDAG-NEXT: v_and_b32_e32 v52, v25, v152781; SDAG-NEXT: v_sub_i32_e32 v26, vcc, v26, v282782; SDAG-NEXT: v_subb_u32_e32 v27, vcc, v27, v50, vcc2783; SDAG-NEXT: v_subb_u32_e32 v28, vcc, v16, v51, vcc2784; SDAG-NEXT: v_subb_u32_e32 v29, vcc, v29, v52, vcc2785; SDAG-NEXT: v_add_i32_e32 v34, vcc, -1, v342786; SDAG-NEXT: v_addc_u32_e32 v35, vcc, -1, v35, vcc2787; SDAG-NEXT: v_addc_u32_e32 v36, vcc, -1, v36, vcc2788; SDAG-NEXT: v_addc_u32_e32 v37, vcc, -1, v37, vcc2789; SDAG-NEXT: v_or_b32_e32 v50, v34, v362790; SDAG-NEXT: v_or_b32_e32 v51, v35, v372791; SDAG-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[50:51]2792; SDAG-NEXT: v_and_b32_e32 v16, 1, v252793; SDAG-NEXT: s_or_b64 s[10:11], vcc, s[10:11]2794; SDAG-NEXT: v_or_b32_e32 v20, v24, v202795; SDAG-NEXT: v_mov_b32_e32 v25, v172796; SDAG-NEXT: v_mov_b32_e32 v24, v162797; SDAG-NEXT: s_andn2_b64 exec, exec, s[10:11]2798; SDAG-NEXT: s_cbranch_execnz .LBB3_92799; SDAG-NEXT: ; %bb.10: ; %Flow2800; SDAG-NEXT: s_or_b64 exec, exec, s[10:11]2801; SDAG-NEXT: .LBB3_11: ; %Flow112802; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]2803; SDAG-NEXT: v_lshl_b64 v[18:19], v[18:19], 12804; SDAG-NEXT: v_lshrrev_b32_e32 v24, 31, v212805; SDAG-NEXT: v_lshl_b64 v[20:21], v[20:21], 12806; SDAG-NEXT: v_or_b32_e32 v18, v18, v242807; SDAG-NEXT: v_or_b32_e32 v23, v23, v192808; SDAG-NEXT: v_or_b32_e32 v17, v17, v212809; SDAG-NEXT: v_or_b32_e32 v22, v22, v182810; SDAG-NEXT: v_or_b32_e32 v16, v16, v202811; SDAG-NEXT: .LBB3_12: ; %Flow122812; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]2813; SDAG-NEXT: v_mul_lo_u32 v21, v32, v112814; SDAG-NEXT: v_mad_u64_u32 v[24:25], s[4:5], v32, v10, 02815; SDAG-NEXT: v_mul_lo_u32 v26, v30, v102816; SDAG-NEXT: v_mul_lo_u32 v27, v33, v82817; SDAG-NEXT: v_mul_lo_u32 v28, v31, v92818; SDAG-NEXT: v_mad_u64_u32 v[18:19], s[4:5], v8, v32, 02819; SDAG-NEXT: v_mov_b32_e32 v20, 02820; SDAG-NEXT: v_mul_lo_u32 v29, v16, v152821; SDAG-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v16, v14, 02822; SDAG-NEXT: v_mul_lo_u32 v33, v17, v142823; SDAG-NEXT: v_mul_lo_u32 v34, v23, v122824; SDAG-NEXT: v_mul_lo_u32 v35, v22, v132825; SDAG-NEXT: v_add_i32_e32 v21, vcc, v25, v212826; SDAG-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v9, v32, v[19:20]2827; SDAG-NEXT: v_sub_i32_e32 v0, vcc, v0, v182828; SDAG-NEXT: v_add_i32_e64 v11, s[4:5], v11, v292829; SDAG-NEXT: v_add_i32_e64 v25, s[4:5], v21, v262830; SDAG-NEXT: v_mov_b32_e32 v19, v142831; SDAG-NEXT: v_mad_u64_u32 v[18:19], s[4:5], v8, v30, v[19:20]2832; SDAG-NEXT: v_add_i32_e64 v11, s[4:5], v11, v332833; SDAG-NEXT: v_mad_u64_u32 v[23:24], s[4:5], v31, v8, v[24:25]2834; SDAG-NEXT: v_add_i32_e64 v14, s[4:5], v15, v192835; SDAG-NEXT: v_addc_u32_e64 v15, s[4:5], 0, 0, s[4:5]2836; SDAG-NEXT: v_subb_u32_e32 v1, vcc, v1, v18, vcc2837; SDAG-NEXT: v_mad_u64_u32 v[10:11], s[4:5], v22, v12, v[10:11]2838; SDAG-NEXT: v_mad_u64_u32 v[18:19], s[4:5], v12, v16, 02839; SDAG-NEXT: v_add_i32_e64 v21, s[4:5], v27, v242840; SDAG-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v9, v30, v[14:15]2841; SDAG-NEXT: v_add_i32_e64 v11, s[4:5], v34, v112842; SDAG-NEXT: v_mad_u64_u32 v[14:15], s[4:5], v13, v16, v[19:20]2843; SDAG-NEXT: v_add_i32_e64 v16, s[4:5], v28, v212844; SDAG-NEXT: v_add_i32_e64 v21, s[4:5], v35, v112845; SDAG-NEXT: v_mov_b32_e32 v19, v142846; SDAG-NEXT: v_mad_u64_u32 v[11:12], s[4:5], v12, v17, v[19:20]2847; SDAG-NEXT: v_add_i32_e64 v8, s[4:5], v8, v232848; SDAG-NEXT: v_addc_u32_e64 v14, s[4:5], v9, v16, s[4:5]2849; SDAG-NEXT: v_subb_u32_e32 v2, vcc, v2, v8, vcc2850; SDAG-NEXT: v_add_i32_e64 v8, s[4:5], v15, v122851; SDAG-NEXT: v_addc_u32_e64 v9, s[4:5], 0, 0, s[4:5]2852; SDAG-NEXT: v_subb_u32_e32 v3, vcc, v3, v14, vcc2853; SDAG-NEXT: v_mad_u64_u32 v[8:9], s[4:5], v13, v17, v[8:9]2854; SDAG-NEXT: v_add_i32_e32 v8, vcc, v8, v102855; SDAG-NEXT: v_addc_u32_e32 v9, vcc, v9, v21, vcc2856; SDAG-NEXT: v_sub_i32_e32 v4, vcc, v4, v182857; SDAG-NEXT: v_subb_u32_e32 v5, vcc, v5, v11, vcc2858; SDAG-NEXT: v_subb_u32_e32 v6, vcc, v6, v8, vcc2859; SDAG-NEXT: v_subb_u32_e32 v7, vcc, v7, v9, vcc2860; SDAG-NEXT: s_setpc_b64 s[30:31]2861;2862; GISEL-LABEL: v_urem_v2i128_vv:2863; GISEL: ; %bb.0: ; %_udiv-special-cases_udiv-special-cases2864; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2865; GISEL-NEXT: v_or_b32_e32 v16, v8, v102866; GISEL-NEXT: v_or_b32_e32 v17, v9, v112867; GISEL-NEXT: v_or_b32_e32 v18, v0, v22868; GISEL-NEXT: v_or_b32_e32 v19, v1, v32869; GISEL-NEXT: v_ffbh_u32_e32 v22, v92870; GISEL-NEXT: v_ffbh_u32_e32 v23, v82871; GISEL-NEXT: v_ffbh_u32_e32 v24, v112872; GISEL-NEXT: v_ffbh_u32_e32 v25, v102873; GISEL-NEXT: v_ffbh_u32_e32 v26, v12874; GISEL-NEXT: v_ffbh_u32_e32 v27, v02875; GISEL-NEXT: v_ffbh_u32_e32 v28, v22876; GISEL-NEXT: v_ffbh_u32_e32 v29, v32877; GISEL-NEXT: v_mov_b32_e32 v20, 0x7f2878; GISEL-NEXT: v_mov_b32_e32 v21, 02879; GISEL-NEXT: s_mov_b64 s[8:9], 02880; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]2881; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]2882; GISEL-NEXT: v_add_i32_e64 v16, s[6:7], 32, v232883; GISEL-NEXT: v_add_i32_e64 v17, s[6:7], 32, v252884; GISEL-NEXT: v_add_i32_e64 v18, s[6:7], 32, v272885; GISEL-NEXT: v_add_i32_e64 v19, s[6:7], 32, v282886; GISEL-NEXT: v_min_u32_e32 v16, v22, v162887; GISEL-NEXT: v_min_u32_e32 v17, v24, v172888; GISEL-NEXT: v_min_u32_e32 v18, v26, v182889; GISEL-NEXT: v_min_u32_e32 v19, v29, v192890; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]2891; GISEL-NEXT: v_cndmask_b32_e64 v22, 0, 1, s[4:5]2892; GISEL-NEXT: v_add_i32_e32 v16, vcc, 64, v162893; GISEL-NEXT: v_add_i32_e32 v18, vcc, 64, v182894; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[10:11]2895; GISEL-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc2896; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[2:3]2897; GISEL-NEXT: v_cndmask_b32_e32 v17, v19, v18, vcc2898; GISEL-NEXT: v_sub_i32_e32 v18, vcc, v16, v172899; GISEL-NEXT: v_subb_u32_e64 v19, s[4:5], 0, 0, vcc2900; GISEL-NEXT: v_subb_u32_e64 v16, s[4:5], 0, 0, s[4:5]2901; GISEL-NEXT: v_subb_u32_e64 v17, s[4:5], 0, 0, s[4:5]2902; GISEL-NEXT: v_xor_b32_e32 v23, 0x7f, v182903; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[18:19], v[20:21]2904; GISEL-NEXT: v_cndmask_b32_e64 v24, 0, 1, vcc2905; GISEL-NEXT: v_or_b32_e32 v20, v23, v162906; GISEL-NEXT: v_or_b32_e32 v21, v19, v172907; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[16:17]2908; GISEL-NEXT: v_cndmask_b32_e64 v23, 0, 1, vcc2909; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]2910; GISEL-NEXT: v_cndmask_b32_e32 v23, v23, v24, vcc2911; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[20:21]2912; GISEL-NEXT: v_cndmask_b32_e64 v20, 0, 1, vcc2913; GISEL-NEXT: v_or_b32_e32 v21, v22, v232914; GISEL-NEXT: v_or_b32_e32 v20, v21, v202915; GISEL-NEXT: v_and_b32_e32 v21, 1, v212916; GISEL-NEXT: v_and_b32_e32 v20, 1, v202917; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v212918; GISEL-NEXT: v_cndmask_b32_e64 v32, v0, 0, vcc2919; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v202920; GISEL-NEXT: v_cndmask_b32_e64 v20, v2, 0, vcc2921; GISEL-NEXT: v_cndmask_b32_e64 v21, v3, 0, vcc2922; GISEL-NEXT: s_xor_b64 s[4:5], s[4:5], -12923; GISEL-NEXT: v_cndmask_b32_e64 v33, v1, 0, vcc2924; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]2925; GISEL-NEXT: s_cbranch_execz .LBB3_62926; GISEL-NEXT: ; %bb.1: ; %udiv-bb152927; GISEL-NEXT: v_add_i32_e32 v30, vcc, 1, v182928; GISEL-NEXT: v_addc_u32_e64 v31, s[4:5], 0, v19, vcc2929; GISEL-NEXT: v_sub_i32_e32 v26, vcc, 0x7f, v182930; GISEL-NEXT: v_not_b32_e32 v18, 632931; GISEL-NEXT: v_addc_u32_e64 v32, vcc, 0, v16, s[4:5]2932; GISEL-NEXT: v_addc_u32_e32 v33, vcc, 0, v17, vcc2933; GISEL-NEXT: v_add_i32_e64 v22, s[4:5], v26, v182934; GISEL-NEXT: v_sub_i32_e64 v20, s[4:5], 64, v262935; GISEL-NEXT: v_lshl_b64 v[16:17], v[0:1], v262936; GISEL-NEXT: v_lshl_b64 v[18:19], v[2:3], v262937; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -12938; GISEL-NEXT: v_lshr_b64 v[20:21], v[0:1], v202939; GISEL-NEXT: v_lshl_b64 v[24:25], v[0:1], v222940; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v262941; GISEL-NEXT: v_cndmask_b32_e32 v22, 0, v16, vcc2942; GISEL-NEXT: v_cndmask_b32_e32 v23, 0, v17, vcc2943; GISEL-NEXT: v_or_b32_e32 v16, v20, v182944; GISEL-NEXT: v_or_b32_e32 v17, v21, v192945; GISEL-NEXT: v_cndmask_b32_e32 v16, v24, v16, vcc2946; GISEL-NEXT: v_cndmask_b32_e32 v17, v25, v17, vcc2947; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v262948; GISEL-NEXT: v_cndmask_b32_e32 v20, v16, v2, vcc2949; GISEL-NEXT: v_cndmask_b32_e32 v21, v17, v3, vcc2950; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]2951; GISEL-NEXT: v_mov_b32_e32 v19, s112952; GISEL-NEXT: v_mov_b32_e32 v18, s102953; GISEL-NEXT: v_mov_b32_e32 v17, s92954; GISEL-NEXT: v_mov_b32_e32 v16, s82955; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]2956; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]2957; GISEL-NEXT: s_cbranch_execz .LBB3_52958; GISEL-NEXT: ; %bb.2: ; %udiv-preheader42959; GISEL-NEXT: v_add_i32_e32 v26, vcc, 0xffffffc0, v302960; GISEL-NEXT: v_sub_i32_e32 v24, vcc, 64, v302961; GISEL-NEXT: v_lshr_b64 v[16:17], v[2:3], v302962; GISEL-NEXT: v_lshr_b64 v[18:19], v[0:1], v302963; GISEL-NEXT: s_mov_b64 s[4:5], 02964; GISEL-NEXT: v_add_i32_e32 v34, vcc, -1, v82965; GISEL-NEXT: v_addc_u32_e32 v35, vcc, -1, v9, vcc2966; GISEL-NEXT: v_lshl_b64 v[24:25], v[2:3], v242967; GISEL-NEXT: v_lshr_b64 v[26:27], v[2:3], v262968; GISEL-NEXT: v_addc_u32_e32 v36, vcc, -1, v10, vcc2969; GISEL-NEXT: v_addc_u32_e32 v37, vcc, -1, v11, vcc2970; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]2971; GISEL-NEXT: v_or_b32_e32 v18, v18, v242972; GISEL-NEXT: v_or_b32_e32 v19, v19, v252973; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v302974; GISEL-NEXT: v_cndmask_b32_e32 v18, v26, v18, vcc2975; GISEL-NEXT: v_cndmask_b32_e32 v19, v27, v19, vcc2976; GISEL-NEXT: v_cndmask_b32_e32 v26, 0, v16, vcc2977; GISEL-NEXT: v_cndmask_b32_e32 v27, 0, v17, vcc2978; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v302979; GISEL-NEXT: v_cndmask_b32_e32 v28, v18, v0, vcc2980; GISEL-NEXT: v_cndmask_b32_e32 v29, v19, v1, vcc2981; GISEL-NEXT: v_mov_b32_e32 v25, 02982; GISEL-NEXT: v_mov_b32_e32 v19, s72983; GISEL-NEXT: v_mov_b32_e32 v18, s62984; GISEL-NEXT: v_mov_b32_e32 v17, s52985; GISEL-NEXT: v_mov_b32_e32 v16, s42986; GISEL-NEXT: .LBB3_3: ; %udiv-do-while32987; GISEL-NEXT: ; =>This Inner Loop Header: Depth=12988; GISEL-NEXT: v_lshrrev_b32_e32 v38, 31, v232989; GISEL-NEXT: v_lshl_b64 v[18:19], v[22:23], 12990; GISEL-NEXT: v_lshrrev_b32_e32 v24, 31, v292991; GISEL-NEXT: v_lshl_b64 v[28:29], v[28:29], 12992; GISEL-NEXT: v_lshl_b64 v[26:27], v[26:27], 12993; GISEL-NEXT: v_lshrrev_b32_e32 v39, 31, v212994; GISEL-NEXT: v_add_i32_e32 v30, vcc, -1, v302995; GISEL-NEXT: v_addc_u32_e32 v31, vcc, -1, v31, vcc2996; GISEL-NEXT: v_lshl_b64 v[20:21], v[20:21], 12997; GISEL-NEXT: v_or_b32_e32 v22, v16, v182998; GISEL-NEXT: v_or_b32_e32 v23, v17, v192999; GISEL-NEXT: v_or_b32_e32 v18, v26, v243000; GISEL-NEXT: v_or_b32_e32 v19, v28, v393001; GISEL-NEXT: v_addc_u32_e32 v32, vcc, -1, v32, vcc3002; GISEL-NEXT: v_addc_u32_e32 v33, vcc, -1, v33, vcc3003; GISEL-NEXT: v_sub_i32_e32 v16, vcc, v34, v193004; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v35, v29, vcc3005; GISEL-NEXT: v_or_b32_e32 v16, v30, v323006; GISEL-NEXT: v_or_b32_e32 v17, v31, v333007; GISEL-NEXT: v_subb_u32_e32 v24, vcc, v36, v18, vcc3008; GISEL-NEXT: v_subb_u32_e32 v24, vcc, v37, v27, vcc3009; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]3010; GISEL-NEXT: v_ashrrev_i32_e32 v16, 31, v243011; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3012; GISEL-NEXT: v_and_b32_e32 v17, v16, v83013; GISEL-NEXT: v_and_b32_e32 v26, v16, v93014; GISEL-NEXT: v_and_b32_e32 v39, v16, v103015; GISEL-NEXT: v_and_b32_e32 v48, v16, v113016; GISEL-NEXT: v_and_b32_e32 v24, 1, v163017; GISEL-NEXT: v_sub_i32_e32 v28, vcc, v19, v173018; GISEL-NEXT: v_subb_u32_e32 v29, vcc, v29, v26, vcc3019; GISEL-NEXT: v_subb_u32_e32 v26, vcc, v18, v39, vcc3020; GISEL-NEXT: v_subb_u32_e32 v27, vcc, v27, v48, vcc3021; GISEL-NEXT: v_or_b32_e32 v20, v20, v383022; GISEL-NEXT: v_mov_b32_e32 v16, v243023; GISEL-NEXT: v_mov_b32_e32 v17, v253024; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]3025; GISEL-NEXT: s_cbranch_execnz .LBB3_33026; GISEL-NEXT: ; %bb.4: ; %Flow133027; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]3028; GISEL-NEXT: .LBB3_5: ; %Flow143029; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]3030; GISEL-NEXT: v_lshl_b64 v[18:19], v[22:23], 13031; GISEL-NEXT: v_lshl_b64 v[20:21], v[20:21], 13032; GISEL-NEXT: v_lshrrev_b32_e32 v22, 31, v233033; GISEL-NEXT: v_or_b32_e32 v20, v20, v223034; GISEL-NEXT: v_or_b32_e32 v32, v16, v183035; GISEL-NEXT: v_or_b32_e32 v33, v17, v193036; GISEL-NEXT: .LBB3_6: ; %Flow163037; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]3038; GISEL-NEXT: s_mov_b64 s[8:9], 03039; GISEL-NEXT: v_or_b32_e32 v16, v12, v143040; GISEL-NEXT: v_or_b32_e32 v17, v13, v153041; GISEL-NEXT: v_or_b32_e32 v18, v4, v63042; GISEL-NEXT: v_or_b32_e32 v19, v5, v73043; GISEL-NEXT: v_ffbh_u32_e32 v22, v133044; GISEL-NEXT: v_ffbh_u32_e32 v23, v123045; GISEL-NEXT: v_ffbh_u32_e32 v26, v153046; GISEL-NEXT: v_ffbh_u32_e32 v27, v143047; GISEL-NEXT: v_ffbh_u32_e32 v28, v53048; GISEL-NEXT: v_ffbh_u32_e32 v29, v43049; GISEL-NEXT: v_ffbh_u32_e32 v30, v73050; GISEL-NEXT: v_ffbh_u32_e32 v31, v63051; GISEL-NEXT: v_mov_b32_e32 v24, 0x7f3052; GISEL-NEXT: v_mov_b32_e32 v25, 03053; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]3054; GISEL-NEXT: v_cmp_eq_u64_e64 s[4:5], 0, v[18:19]3055; GISEL-NEXT: v_add_i32_e64 v16, s[6:7], 32, v233056; GISEL-NEXT: v_add_i32_e64 v17, s[6:7], 32, v273057; GISEL-NEXT: v_add_i32_e64 v18, s[6:7], 32, v293058; GISEL-NEXT: v_add_i32_e64 v19, s[6:7], 32, v313059; GISEL-NEXT: v_min_u32_e32 v16, v22, v163060; GISEL-NEXT: v_min_u32_e32 v17, v26, v173061; GISEL-NEXT: v_min_u32_e32 v18, v28, v183062; GISEL-NEXT: v_min_u32_e32 v19, v30, v193063; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3064; GISEL-NEXT: v_cndmask_b32_e64 v26, 0, 1, s[4:5]3065; GISEL-NEXT: v_add_i32_e32 v16, vcc, 64, v163066; GISEL-NEXT: v_add_i32_e32 v18, vcc, 64, v183067; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[14:15]3068; GISEL-NEXT: v_cndmask_b32_e32 v16, v17, v16, vcc3069; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[6:7]3070; GISEL-NEXT: v_cndmask_b32_e32 v17, v19, v18, vcc3071; GISEL-NEXT: v_sub_i32_e32 v22, vcc, v16, v173072; GISEL-NEXT: v_subb_u32_e64 v23, s[4:5], 0, 0, vcc3073; GISEL-NEXT: v_subb_u32_e64 v16, s[4:5], 0, 0, s[4:5]3074; GISEL-NEXT: v_subb_u32_e64 v17, s[4:5], 0, 0, s[4:5]3075; GISEL-NEXT: v_cmp_gt_u64_e32 vcc, v[22:23], v[24:25]3076; GISEL-NEXT: v_cndmask_b32_e64 v24, 0, 1, vcc3077; GISEL-NEXT: v_xor_b32_e32 v18, 0x7f, v223078; GISEL-NEXT: v_cmp_lt_u64_e32 vcc, 0, v[16:17]3079; GISEL-NEXT: v_cndmask_b32_e64 v25, 0, 1, vcc3080; GISEL-NEXT: v_or_b32_e32 v18, v18, v163081; GISEL-NEXT: v_or_b32_e32 v19, v23, v173082; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]3083; GISEL-NEXT: v_cndmask_b32_e32 v24, v25, v24, vcc3084; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[18:19]3085; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc3086; GISEL-NEXT: v_or_b32_e32 v19, v26, v243087; GISEL-NEXT: v_and_b32_e32 v24, 1, v193088; GISEL-NEXT: v_or_b32_e32 v18, v19, v183089; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v243090; GISEL-NEXT: v_cndmask_b32_e64 v24, v4, 0, vcc3091; GISEL-NEXT: v_and_b32_e32 v26, 1, v183092; GISEL-NEXT: v_cndmask_b32_e64 v25, v5, 0, vcc3093; GISEL-NEXT: v_cndmask_b32_e64 v18, v6, 0, vcc3094; GISEL-NEXT: v_cndmask_b32_e64 v19, v7, 0, vcc3095; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v263096; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -13097; GISEL-NEXT: s_and_saveexec_b64 s[12:13], s[4:5]3098; GISEL-NEXT: s_cbranch_execz .LBB3_123099; GISEL-NEXT: ; %bb.7: ; %udiv-bb13100; GISEL-NEXT: v_add_i32_e32 v34, vcc, 1, v223101; GISEL-NEXT: v_addc_u32_e64 v35, s[4:5], 0, v23, vcc3102; GISEL-NEXT: v_sub_i32_e32 v28, vcc, 0x7f, v223103; GISEL-NEXT: v_not_b32_e32 v18, 633104; GISEL-NEXT: v_addc_u32_e64 v36, vcc, 0, v16, s[4:5]3105; GISEL-NEXT: v_addc_u32_e32 v37, vcc, 0, v17, vcc3106; GISEL-NEXT: v_add_i32_e64 v24, s[4:5], v28, v183107; GISEL-NEXT: v_sub_i32_e64 v22, s[4:5], 64, v283108; GISEL-NEXT: v_lshl_b64 v[16:17], v[4:5], v283109; GISEL-NEXT: v_lshl_b64 v[18:19], v[6:7], v283110; GISEL-NEXT: s_xor_b64 s[4:5], vcc, -13111; GISEL-NEXT: v_lshr_b64 v[22:23], v[4:5], v223112; GISEL-NEXT: v_lshl_b64 v[26:27], v[4:5], v243113; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v283114; GISEL-NEXT: v_cndmask_b32_e32 v24, 0, v16, vcc3115; GISEL-NEXT: v_cndmask_b32_e32 v25, 0, v17, vcc3116; GISEL-NEXT: v_or_b32_e32 v16, v22, v183117; GISEL-NEXT: v_or_b32_e32 v17, v23, v193118; GISEL-NEXT: v_cndmask_b32_e32 v16, v26, v16, vcc3119; GISEL-NEXT: v_cndmask_b32_e32 v17, v27, v17, vcc3120; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v283121; GISEL-NEXT: v_cndmask_b32_e32 v22, v16, v6, vcc3122; GISEL-NEXT: v_cndmask_b32_e32 v23, v17, v7, vcc3123; GISEL-NEXT: s_mov_b64 s[10:11], s[8:9]3124; GISEL-NEXT: v_mov_b32_e32 v19, s113125; GISEL-NEXT: v_mov_b32_e32 v18, s103126; GISEL-NEXT: v_mov_b32_e32 v17, s93127; GISEL-NEXT: v_mov_b32_e32 v16, s83128; GISEL-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]3129; GISEL-NEXT: s_xor_b64 s[8:9], exec, s[6:7]3130; GISEL-NEXT: s_cbranch_execz .LBB3_113131; GISEL-NEXT: ; %bb.8: ; %udiv-preheader3132; GISEL-NEXT: v_add_i32_e32 v28, vcc, 0xffffffc0, v343133; GISEL-NEXT: v_sub_i32_e32 v26, vcc, 64, v343134; GISEL-NEXT: v_lshr_b64 v[16:17], v[6:7], v343135; GISEL-NEXT: v_lshr_b64 v[18:19], v[4:5], v343136; GISEL-NEXT: s_mov_b64 s[4:5], 03137; GISEL-NEXT: v_add_i32_e32 v38, vcc, -1, v123138; GISEL-NEXT: v_addc_u32_e32 v39, vcc, -1, v13, vcc3139; GISEL-NEXT: v_lshl_b64 v[26:27], v[6:7], v263140; GISEL-NEXT: v_lshr_b64 v[28:29], v[6:7], v283141; GISEL-NEXT: v_addc_u32_e32 v48, vcc, -1, v14, vcc3142; GISEL-NEXT: v_addc_u32_e32 v49, vcc, -1, v15, vcc3143; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]3144; GISEL-NEXT: v_or_b32_e32 v18, v18, v263145; GISEL-NEXT: v_or_b32_e32 v19, v19, v273146; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v343147; GISEL-NEXT: v_cndmask_b32_e32 v18, v28, v18, vcc3148; GISEL-NEXT: v_cndmask_b32_e32 v19, v29, v19, vcc3149; GISEL-NEXT: v_cndmask_b32_e32 v30, 0, v16, vcc3150; GISEL-NEXT: v_cndmask_b32_e32 v31, 0, v17, vcc3151; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v343152; GISEL-NEXT: v_cndmask_b32_e32 v28, v18, v4, vcc3153; GISEL-NEXT: v_cndmask_b32_e32 v29, v19, v5, vcc3154; GISEL-NEXT: v_mov_b32_e32 v27, 03155; GISEL-NEXT: v_mov_b32_e32 v19, s73156; GISEL-NEXT: v_mov_b32_e32 v18, s63157; GISEL-NEXT: v_mov_b32_e32 v17, s53158; GISEL-NEXT: v_mov_b32_e32 v16, s43159; GISEL-NEXT: .LBB3_9: ; %udiv-do-while3160; GISEL-NEXT: ; =>This Inner Loop Header: Depth=13161; GISEL-NEXT: v_lshl_b64 v[18:19], v[24:25], 13162; GISEL-NEXT: v_lshrrev_b32_e32 v26, 31, v253163; GISEL-NEXT: v_lshl_b64 v[50:51], v[28:29], 13164; GISEL-NEXT: v_lshl_b64 v[30:31], v[30:31], 13165; GISEL-NEXT: v_lshrrev_b32_e32 v28, 31, v293166; GISEL-NEXT: v_lshrrev_b32_e32 v29, 31, v233167; GISEL-NEXT: v_lshl_b64 v[22:23], v[22:23], 13168; GISEL-NEXT: v_add_i32_e32 v34, vcc, -1, v343169; GISEL-NEXT: v_addc_u32_e32 v35, vcc, -1, v35, vcc3170; GISEL-NEXT: v_or_b32_e32 v24, v16, v183171; GISEL-NEXT: v_or_b32_e32 v25, v17, v193172; GISEL-NEXT: v_or_b32_e32 v18, v30, v283173; GISEL-NEXT: v_or_b32_e32 v19, v50, v293174; GISEL-NEXT: v_or_b32_e32 v22, v22, v263175; GISEL-NEXT: v_addc_u32_e32 v36, vcc, -1, v36, vcc3176; GISEL-NEXT: v_addc_u32_e32 v37, vcc, -1, v37, vcc3177; GISEL-NEXT: v_sub_i32_e32 v16, vcc, v38, v193178; GISEL-NEXT: v_subb_u32_e32 v16, vcc, v39, v51, vcc3179; GISEL-NEXT: v_or_b32_e32 v16, v34, v363180; GISEL-NEXT: v_or_b32_e32 v17, v35, v373181; GISEL-NEXT: v_subb_u32_e32 v26, vcc, v48, v18, vcc3182; GISEL-NEXT: v_subb_u32_e32 v26, vcc, v49, v31, vcc3183; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, 0, v[16:17]3184; GISEL-NEXT: v_ashrrev_i32_e32 v16, 31, v263185; GISEL-NEXT: s_or_b64 s[4:5], vcc, s[4:5]3186; GISEL-NEXT: v_and_b32_e32 v26, 1, v163187; GISEL-NEXT: v_and_b32_e32 v17, v16, v123188; GISEL-NEXT: v_and_b32_e32 v29, v16, v133189; GISEL-NEXT: v_and_b32_e32 v30, v16, v143190; GISEL-NEXT: v_and_b32_e32 v50, v16, v153191; GISEL-NEXT: v_sub_i32_e32 v28, vcc, v19, v173192; GISEL-NEXT: v_subb_u32_e32 v29, vcc, v51, v29, vcc3193; GISEL-NEXT: v_mov_b32_e32 v16, v263194; GISEL-NEXT: v_mov_b32_e32 v17, v273195; GISEL-NEXT: v_subb_u32_e32 v30, vcc, v18, v30, vcc3196; GISEL-NEXT: v_subb_u32_e32 v31, vcc, v31, v50, vcc3197; GISEL-NEXT: s_andn2_b64 exec, exec, s[4:5]3198; GISEL-NEXT: s_cbranch_execnz .LBB3_93199; GISEL-NEXT: ; %bb.10: ; %Flow3200; GISEL-NEXT: s_or_b64 exec, exec, s[4:5]3201; GISEL-NEXT: .LBB3_11: ; %Flow113202; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]3203; GISEL-NEXT: v_lshl_b64 v[26:27], v[24:25], 13204; GISEL-NEXT: v_lshl_b64 v[18:19], v[22:23], 13205; GISEL-NEXT: v_lshrrev_b32_e32 v22, 31, v253206; GISEL-NEXT: v_or_b32_e32 v18, v18, v223207; GISEL-NEXT: v_or_b32_e32 v24, v16, v263208; GISEL-NEXT: v_or_b32_e32 v25, v17, v273209; GISEL-NEXT: .LBB3_12: ; %Flow123210; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]3211; GISEL-NEXT: v_mad_u64_u32 v[16:17], s[4:5], v8, v32, 03212; GISEL-NEXT: v_mad_u64_u32 v[22:23], s[4:5], v8, v20, 03213; GISEL-NEXT: v_mul_lo_u32 v34, v8, v213214; GISEL-NEXT: v_mul_lo_u32 v35, v9, v203215; GISEL-NEXT: v_mad_u64_u32 v[20:21], s[4:5], v12, v24, 03216; GISEL-NEXT: v_mad_u64_u32 v[26:27], s[4:5], v12, v18, 03217; GISEL-NEXT: v_mul_lo_u32 v36, v12, v193218; GISEL-NEXT: v_mul_lo_u32 v37, v13, v183219; GISEL-NEXT: v_mad_u64_u32 v[28:29], s[4:5], v9, v33, v[22:23]3220; GISEL-NEXT: v_mad_u64_u32 v[30:31], s[4:5], v13, v25, v[26:27]3221; GISEL-NEXT: v_mad_u64_u32 v[18:19], s[4:5], v10, v32, v[28:29]3222; GISEL-NEXT: v_mad_u64_u32 v[22:23], s[4:5], v14, v24, v[30:31]3223; GISEL-NEXT: v_mad_u64_u32 v[26:27], vcc, v8, v33, v[17:18]3224; GISEL-NEXT: v_mad_u64_u32 v[17:18], s[4:5], v12, v25, v[21:22]3225; GISEL-NEXT: v_mad_u64_u32 v[21:22], s[6:7], v9, v32, v[26:27]3226; GISEL-NEXT: v_addc_u32_e64 v12, s[6:7], v19, v34, s[6:7]3227; GISEL-NEXT: v_mad_u64_u32 v[8:9], s[6:7], v13, v24, v[17:18]3228; GISEL-NEXT: v_addc_u32_e64 v13, s[6:7], v23, v36, s[6:7]3229; GISEL-NEXT: v_addc_u32_e32 v12, vcc, v12, v35, vcc3230; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v163231; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v1, v21, vcc3232; GISEL-NEXT: v_addc_u32_e64 v13, s[4:5], v13, v37, s[4:5]3233; GISEL-NEXT: v_sub_i32_e64 v4, s[4:5], v4, v203234; GISEL-NEXT: v_subb_u32_e64 v5, s[4:5], v5, v8, s[4:5]3235; GISEL-NEXT: v_mad_u64_u32 v[16:17], s[6:7], v10, v33, v[12:13]3236; GISEL-NEXT: v_mad_u64_u32 v[18:19], s[6:7], v14, v25, v[13:14]3237; GISEL-NEXT: v_mad_u64_u32 v[12:13], s[6:7], v11, v32, v[16:17]3238; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[6:7], v15, v24, v[18:19]3239; GISEL-NEXT: v_subb_u32_e32 v2, vcc, v2, v22, vcc3240; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v12, vcc3241; GISEL-NEXT: v_subb_u32_e64 v6, vcc, v6, v9, s[4:5]3242; GISEL-NEXT: v_subb_u32_e32 v7, vcc, v7, v10, vcc3243; GISEL-NEXT: s_setpc_b64 s[30:31]3244 %shl = urem <2 x i128> %lhs, %rhs3245 ret <2 x i128> %shl3246}3247