2172 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -amdgpu-codegenprepare-disable-idiv-expansion=1 -mtriple=amdgcn-amd-amdpal -denormal-fp-math-f32=preserve-sign -mattr=+mad-mac-f32-insts < %s | FileCheck -check-prefixes=CHECK,GISEL %s3; RUN: llc -global-isel -amdgpu-codegenprepare-disable-idiv-expansion=0 -mtriple=amdgcn-amd-amdpal -denormal-fp-math-f32=preserve-sign -mattr=+mad-mac-f32-insts < %s | FileCheck -check-prefixes=CHECK,CGP %s4 5; The same 32-bit expansion is implemented in the legalizer and in AMDGPUCodeGenPrepare.6 7define i64 @v_udiv_i64(i64 %num, i64 %den) {8; CHECK-LABEL: v_udiv_i64:9; CHECK: ; %bb.0:10; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; CHECK-NEXT: v_mov_b32_e32 v4, v012; CHECK-NEXT: v_mov_b32_e32 v5, v113; CHECK-NEXT: v_or_b32_e32 v1, v5, v314; CHECK-NEXT: v_mov_b32_e32 v0, 015; CHECK-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]16; CHECK-NEXT: v_cvt_f32_u32_e32 v6, v217; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr118; CHECK-NEXT: s_and_saveexec_b64 s[4:5], vcc19; CHECK-NEXT: s_xor_b64 s[6:7], exec, s[4:5]20; CHECK-NEXT: s_cbranch_execnz .LBB0_321; CHECK-NEXT: ; %bb.1: ; %Flow22; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]23; CHECK-NEXT: s_cbranch_execnz .LBB0_424; CHECK-NEXT: .LBB0_2:25; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]26; CHECK-NEXT: s_setpc_b64 s[30:31]27; CHECK-NEXT: .LBB0_3:28; CHECK-NEXT: v_cvt_f32_u32_e32 v0, v329; CHECK-NEXT: v_sub_i32_e32 v1, vcc, 0, v230; CHECK-NEXT: v_subb_u32_e32 v7, vcc, 0, v3, vcc31; CHECK-NEXT: v_mac_f32_e32 v6, 0x4f800000, v032; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v633; CHECK-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v034; CHECK-NEXT: v_mul_f32_e32 v6, 0x2f800000, v035; CHECK-NEXT: v_trunc_f32_e32 v6, v636; CHECK-NEXT: v_mac_f32_e32 v0, 0xcf800000, v637; CHECK-NEXT: v_cvt_u32_f32_e32 v6, v638; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v039; CHECK-NEXT: v_mul_lo_u32 v8, v1, v640; CHECK-NEXT: v_mul_lo_u32 v9, v1, v041; CHECK-NEXT: v_mul_lo_u32 v10, v7, v042; CHECK-NEXT: v_mul_hi_u32 v11, v1, v043; CHECK-NEXT: v_add_i32_e32 v8, vcc, v10, v844; CHECK-NEXT: v_mul_lo_u32 v10, v6, v945; CHECK-NEXT: v_mul_hi_u32 v12, v0, v946; CHECK-NEXT: v_mul_hi_u32 v9, v6, v947; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v1148; CHECK-NEXT: v_mul_lo_u32 v11, v0, v849; CHECK-NEXT: v_mul_lo_u32 v13, v6, v850; CHECK-NEXT: v_mul_hi_u32 v14, v0, v851; CHECK-NEXT: v_mul_hi_u32 v8, v6, v852; CHECK-NEXT: v_add_i32_e32 v10, vcc, v10, v1153; CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc54; CHECK-NEXT: v_add_i32_e32 v9, vcc, v13, v955; CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc56; CHECK-NEXT: v_add_i32_e32 v10, vcc, v10, v1257; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc58; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v1459; CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc60; CHECK-NEXT: v_add_i32_e32 v10, vcc, v11, v1061; CHECK-NEXT: v_add_i32_e32 v11, vcc, v13, v1262; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v1063; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc64; CHECK-NEXT: v_add_i32_e32 v10, vcc, v11, v1065; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v1066; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v967; CHECK-NEXT: v_addc_u32_e32 v6, vcc, v6, v8, vcc68; CHECK-NEXT: v_mul_lo_u32 v8, v1, v069; CHECK-NEXT: v_mul_lo_u32 v7, v7, v070; CHECK-NEXT: v_mul_hi_u32 v9, v1, v071; CHECK-NEXT: v_mul_lo_u32 v1, v1, v672; CHECK-NEXT: v_mul_lo_u32 v10, v6, v873; CHECK-NEXT: v_mul_hi_u32 v11, v0, v874; CHECK-NEXT: v_mul_hi_u32 v8, v6, v875; CHECK-NEXT: v_add_i32_e32 v1, vcc, v7, v176; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v977; CHECK-NEXT: v_mul_lo_u32 v7, v0, v178; CHECK-NEXT: v_mul_lo_u32 v9, v6, v179; CHECK-NEXT: v_mul_hi_u32 v12, v0, v180; CHECK-NEXT: v_mul_hi_u32 v1, v6, v181; CHECK-NEXT: v_add_i32_e32 v7, vcc, v10, v782; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc83; CHECK-NEXT: v_add_i32_e32 v8, vcc, v9, v884; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc85; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v1186; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc87; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v1288; CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc89; CHECK-NEXT: v_add_i32_e32 v7, vcc, v10, v790; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v1191; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v792; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc93; CHECK-NEXT: v_add_i32_e32 v8, vcc, v9, v894; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v895; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v796; CHECK-NEXT: v_addc_u32_e32 v1, vcc, v6, v1, vcc97; CHECK-NEXT: v_mul_lo_u32 v6, v5, v098; CHECK-NEXT: v_mul_hi_u32 v7, v4, v099; CHECK-NEXT: v_mul_hi_u32 v0, v5, v0100; CHECK-NEXT: v_mul_lo_u32 v8, v4, v1101; CHECK-NEXT: v_mul_lo_u32 v9, v5, v1102; CHECK-NEXT: v_mul_hi_u32 v10, v4, v1103; CHECK-NEXT: v_mul_hi_u32 v1, v5, v1104; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v8105; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc106; CHECK-NEXT: v_add_i32_e32 v0, vcc, v9, v0107; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc108; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v7109; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc110; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v10111; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc112; CHECK-NEXT: v_add_i32_e32 v6, vcc, v8, v6113; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v7114; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v6115; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc116; CHECK-NEXT: v_add_i32_e32 v6, vcc, v7, v6117; CHECK-NEXT: v_mul_lo_u32 v7, v2, v0118; CHECK-NEXT: v_mul_lo_u32 v8, v3, v0119; CHECK-NEXT: v_mul_hi_u32 v9, v2, v0120; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v6121; CHECK-NEXT: v_mul_lo_u32 v6, v2, v1122; CHECK-NEXT: v_add_i32_e32 v10, vcc, 1, v0123; CHECK-NEXT: v_addc_u32_e32 v11, vcc, 0, v1, vcc124; CHECK-NEXT: v_add_i32_e32 v6, vcc, v8, v6125; CHECK-NEXT: v_add_i32_e32 v8, vcc, 1, v10126; CHECK-NEXT: v_addc_u32_e32 v12, vcc, 0, v11, vcc127; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v9128; CHECK-NEXT: v_sub_i32_e32 v4, vcc, v4, v7129; CHECK-NEXT: v_subb_u32_e64 v7, s[4:5], v5, v6, vcc130; CHECK-NEXT: v_sub_i32_e64 v5, s[4:5], v5, v6131; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v4, v2132; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, -1, s[4:5]133; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v7, v3134; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]135; CHECK-NEXT: v_subb_u32_e32 v5, vcc, v5, v3, vcc136; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v7, v3137; CHECK-NEXT: v_cndmask_b32_e32 v6, v9, v6, vcc138; CHECK-NEXT: v_sub_i32_e32 v4, vcc, v4, v2139; CHECK-NEXT: v_subbrev_u32_e32 v5, vcc, 0, v5, vcc140; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v4, v2141; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc142; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v5, v3143; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc144; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v5, v3145; CHECK-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc146; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2147; CHECK-NEXT: v_cndmask_b32_e32 v2, v10, v8, vcc148; CHECK-NEXT: v_cndmask_b32_e32 v3, v11, v12, vcc149; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v6150; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc151; CHECK-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc152; CHECK-NEXT: ; implicit-def: $vgpr6153; CHECK-NEXT: ; implicit-def: $vgpr2154; CHECK-NEXT: ; implicit-def: $vgpr4155; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]156; CHECK-NEXT: s_cbranch_execz .LBB0_2157; CHECK-NEXT: .LBB0_4:158; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v6159; CHECK-NEXT: v_sub_i32_e32 v3, vcc, 0, v2160; CHECK-NEXT: v_mov_b32_e32 v1, 0161; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0162; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0163; CHECK-NEXT: v_mul_lo_u32 v3, v3, v0164; CHECK-NEXT: v_mul_hi_u32 v3, v0, v3165; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v3166; CHECK-NEXT: v_mul_hi_u32 v0, v4, v0167; CHECK-NEXT: v_mul_lo_u32 v3, v0, v2168; CHECK-NEXT: v_add_i32_e32 v5, vcc, 1, v0169; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v4, v3170; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2171; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v5, vcc172; CHECK-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v2173; CHECK-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc174; CHECK-NEXT: v_add_i32_e32 v4, vcc, 1, v0175; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v2176; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc177; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]178; CHECK-NEXT: s_setpc_b64 s[30:31]179 %result = udiv i64 %num, %den180 ret i64 %result181}182 183; FIXME: This is a workaround for not handling uniform VGPR case.184declare i32 @llvm.amdgcn.readfirstlane(i32)185 186define amdgpu_ps i64 @s_udiv_i64(i64 inreg %num, i64 inreg %den) {187; CHECK-LABEL: s_udiv_i64:188; CHECK: ; %bb.0:189; CHECK-NEXT: s_or_b64 s[4:5], s[0:1], s[2:3]190; CHECK-NEXT: s_mov_b32 s4, 0191; CHECK-NEXT: v_cmp_ne_u64_e64 vcc, s[4:5], 0192; CHECK-NEXT: s_mov_b32 s4, 1193; CHECK-NEXT: v_cvt_f32_u32_e32 v2, s2194; CHECK-NEXT: s_cbranch_vccz .LBB1_2195; CHECK-NEXT: ; %bb.1:196; CHECK-NEXT: v_mov_b32_e32 v0, s3197; CHECK-NEXT: v_cvt_f32_u32_e32 v1, s3198; CHECK-NEXT: s_sub_u32 s4, 0, s2199; CHECK-NEXT: v_mov_b32_e32 v3, s1200; CHECK-NEXT: v_madmk_f32 v1, v1, 0x4f800000, v2201; CHECK-NEXT: s_subb_u32 s5, 0, s3202; CHECK-NEXT: v_rcp_iflag_f32_e32 v1, v1203; CHECK-NEXT: v_mul_f32_e32 v1, 0x5f7ffffc, v1204; CHECK-NEXT: v_mul_f32_e32 v4, 0x2f800000, v1205; CHECK-NEXT: v_trunc_f32_e32 v4, v4206; CHECK-NEXT: v_mac_f32_e32 v1, 0xcf800000, v4207; CHECK-NEXT: v_cvt_u32_f32_e32 v4, v4208; CHECK-NEXT: v_cvt_u32_f32_e32 v1, v1209; CHECK-NEXT: v_mul_lo_u32 v5, s4, v4210; CHECK-NEXT: v_mul_lo_u32 v6, s4, v1211; CHECK-NEXT: v_mul_lo_u32 v7, s5, v1212; CHECK-NEXT: v_mul_hi_u32 v8, s4, v1213; CHECK-NEXT: v_add_i32_e32 v5, vcc, v7, v5214; CHECK-NEXT: v_mul_lo_u32 v7, v4, v6215; CHECK-NEXT: v_mul_hi_u32 v9, v1, v6216; CHECK-NEXT: v_mul_hi_u32 v6, v4, v6217; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v8218; CHECK-NEXT: v_mul_lo_u32 v8, v1, v5219; CHECK-NEXT: v_mul_lo_u32 v10, v4, v5220; CHECK-NEXT: v_mul_hi_u32 v11, v1, v5221; CHECK-NEXT: v_mul_hi_u32 v5, v4, v5222; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v8223; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc224; CHECK-NEXT: v_add_i32_e32 v6, vcc, v10, v6225; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc226; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v9227; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc228; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v11229; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc230; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v7231; CHECK-NEXT: v_add_i32_e32 v8, vcc, v10, v9232; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v7233; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc234; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v7235; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v7236; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v6237; CHECK-NEXT: v_addc_u32_e32 v4, vcc, v4, v5, vcc238; CHECK-NEXT: v_mul_lo_u32 v5, s4, v1239; CHECK-NEXT: v_mul_lo_u32 v6, s5, v1240; CHECK-NEXT: v_mul_hi_u32 v7, s4, v1241; CHECK-NEXT: v_mul_lo_u32 v8, s4, v4242; CHECK-NEXT: v_mul_lo_u32 v9, v4, v5243; CHECK-NEXT: v_mul_hi_u32 v10, v1, v5244; CHECK-NEXT: v_mul_hi_u32 v5, v4, v5245; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v8246; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v7247; CHECK-NEXT: v_mul_lo_u32 v7, v1, v6248; CHECK-NEXT: v_mul_lo_u32 v8, v4, v6249; CHECK-NEXT: v_mul_hi_u32 v11, v1, v6250; CHECK-NEXT: v_mul_hi_u32 v6, v4, v6251; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v7252; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc253; CHECK-NEXT: v_add_i32_e32 v5, vcc, v8, v5254; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc255; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v10256; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc257; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v11258; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc259; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v7260; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v10261; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v7262; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc263; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v7264; CHECK-NEXT: v_add_i32_e32 v6, vcc, v6, v7265; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v5266; CHECK-NEXT: v_addc_u32_e32 v4, vcc, v4, v6, vcc267; CHECK-NEXT: v_mul_lo_u32 v5, s1, v1268; CHECK-NEXT: v_mul_hi_u32 v6, s0, v1269; CHECK-NEXT: v_mul_hi_u32 v1, s1, v1270; CHECK-NEXT: v_mul_lo_u32 v7, s0, v4271; CHECK-NEXT: v_mul_lo_u32 v8, s1, v4272; CHECK-NEXT: v_mul_hi_u32 v9, s0, v4273; CHECK-NEXT: v_mul_hi_u32 v4, s1, v4274; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v7275; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc276; CHECK-NEXT: v_add_i32_e32 v1, vcc, v8, v1277; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc278; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v6279; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc280; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v9281; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc282; CHECK-NEXT: v_add_i32_e32 v5, vcc, v7, v5283; CHECK-NEXT: v_add_i32_e32 v6, vcc, v8, v6284; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v5285; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc286; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v5287; CHECK-NEXT: v_mul_lo_u32 v6, s2, v1288; CHECK-NEXT: v_mul_lo_u32 v7, s3, v1289; CHECK-NEXT: v_mul_hi_u32 v8, s2, v1290; CHECK-NEXT: v_add_i32_e32 v9, vcc, 1, v1291; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v5292; CHECK-NEXT: v_add_i32_e32 v5, vcc, 1, v9293; CHECK-NEXT: v_mul_lo_u32 v4, s2, v4294; CHECK-NEXT: v_add_i32_e32 v4, vcc, v7, v4295; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v8296; CHECK-NEXT: v_sub_i32_e32 v6, vcc, s0, v6297; CHECK-NEXT: v_subb_u32_e64 v3, s[4:5], v3, v4, vcc298; CHECK-NEXT: v_sub_i32_e64 v4, s[4:5], s1, v4299; CHECK-NEXT: v_cmp_le_u32_e64 s[4:5], s2, v6300; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]301; CHECK-NEXT: v_cmp_le_u32_e64 s[4:5], s3, v3302; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, -1, s[4:5]303; CHECK-NEXT: v_subb_u32_e32 v0, vcc, v4, v0, vcc304; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, s3, v3305; CHECK-NEXT: v_cndmask_b32_e32 v3, v8, v7, vcc306; CHECK-NEXT: v_subrev_i32_e32 v4, vcc, s2, v6307; CHECK-NEXT: v_subbrev_u32_e32 v0, vcc, 0, v0, vcc308; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s2, v4309; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc310; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s3, v0311; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, -1, vcc312; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, s3, v0313; CHECK-NEXT: v_cndmask_b32_e32 v0, v6, v4, vcc314; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0315; CHECK-NEXT: v_cndmask_b32_e32 v0, v9, v5, vcc316; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v3317; CHECK-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc318; CHECK-NEXT: s_mov_b32 s4, 0319; CHECK-NEXT: s_branch .LBB1_3320; CHECK-NEXT: .LBB1_2:321; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr1322; CHECK-NEXT: .LBB1_3: ; %Flow323; CHECK-NEXT: s_xor_b32 s1, s4, 1324; CHECK-NEXT: s_cmp_lg_u32 s1, 0325; CHECK-NEXT: s_cbranch_scc1 .LBB1_5326; CHECK-NEXT: ; %bb.4:327; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v2328; CHECK-NEXT: s_sub_i32 s1, 0, s2329; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0330; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v0331; CHECK-NEXT: v_mul_lo_u32 v1, s1, v0332; CHECK-NEXT: v_mul_hi_u32 v1, v0, v1333; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v1334; CHECK-NEXT: v_mul_hi_u32 v0, s0, v0335; CHECK-NEXT: v_mul_lo_u32 v1, v0, s2336; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v0337; CHECK-NEXT: v_sub_i32_e32 v1, vcc, s0, v1338; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s2, v1339; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc340; CHECK-NEXT: v_subrev_i32_e64 v2, s[0:1], s2, v1341; CHECK-NEXT: v_cndmask_b32_e32 v1, v1, v2, vcc342; CHECK-NEXT: v_add_i32_e32 v2, vcc, 1, v0343; CHECK-NEXT: v_cmp_le_u32_e32 vcc, s2, v1344; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc345; CHECK-NEXT: .LBB1_5:346; CHECK-NEXT: v_readfirstlane_b32 s0, v0347; CHECK-NEXT: s_mov_b32 s1, s0348; CHECK-NEXT: ; return to shader part epilog349 %result = udiv i64 %num, %den350 %cast = bitcast i64 %result to <2 x i32>351 %elt.0 = extractelement <2 x i32> %cast, i32 0352 %elt.1 = extractelement <2 x i32> %cast, i32 1353 %res.0 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.0)354 %res.1 = call i32 @llvm.amdgcn.readfirstlane(i32 %elt.1)355 %ins.0 = insertelement <2 x i32> poison, i32 %res.0, i32 0356 %ins.1 = insertelement <2 x i32> %ins.0, i32 %res.0, i32 1357 %cast.back = bitcast <2 x i32> %ins.1 to i64358 ret i64 %cast.back359}360 361define <2 x i64> @v_udiv_v2i64(<2 x i64> %num, <2 x i64> %den) {362; GISEL-LABEL: v_udiv_v2i64:363; GISEL: ; %bb.0:364; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GISEL-NEXT: v_cvt_f32_u32_e32 v8, v4366; GISEL-NEXT: v_cvt_f32_u32_e32 v9, v5367; GISEL-NEXT: v_mac_f32_e32 v8, 0x4f800000, v9368; GISEL-NEXT: v_rcp_iflag_f32_e32 v8, v8369; GISEL-NEXT: v_mul_f32_e32 v8, 0x5f7ffffc, v8370; GISEL-NEXT: v_mul_f32_e32 v9, 0x2f800000, v8371; GISEL-NEXT: v_trunc_f32_e32 v9, v9372; GISEL-NEXT: v_mac_f32_e32 v8, 0xcf800000, v9373; GISEL-NEXT: v_cvt_u32_f32_e32 v8, v8374; GISEL-NEXT: v_cvt_u32_f32_e32 v9, v9375; GISEL-NEXT: v_sub_i32_e32 v10, vcc, 0, v4376; GISEL-NEXT: v_subb_u32_e32 v11, vcc, 0, v5, vcc377; GISEL-NEXT: v_mul_lo_u32 v12, v10, v8378; GISEL-NEXT: v_mul_lo_u32 v13, v11, v8379; GISEL-NEXT: v_mul_lo_u32 v14, v10, v9380; GISEL-NEXT: v_mul_hi_u32 v15, v10, v8381; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v14382; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v15383; GISEL-NEXT: v_mul_lo_u32 v14, v9, v12384; GISEL-NEXT: v_mul_lo_u32 v15, v8, v13385; GISEL-NEXT: v_mul_hi_u32 v16, v8, v12386; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v15387; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc388; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v16389; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc390; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v14391; GISEL-NEXT: v_mul_lo_u32 v15, v9, v13392; GISEL-NEXT: v_mul_hi_u32 v12, v9, v12393; GISEL-NEXT: v_mul_hi_u32 v16, v8, v13394; GISEL-NEXT: v_add_i32_e32 v12, vcc, v15, v12395; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc396; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v16397; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc398; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v16399; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v14400; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc401; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v14402; GISEL-NEXT: v_mul_hi_u32 v13, v9, v13403; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v14404; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v12405; GISEL-NEXT: v_addc_u32_e32 v9, vcc, v9, v13, vcc406; GISEL-NEXT: v_mul_lo_u32 v12, v10, v8407; GISEL-NEXT: v_mul_lo_u32 v11, v11, v8408; GISEL-NEXT: v_mul_lo_u32 v13, v10, v9409; GISEL-NEXT: v_mul_hi_u32 v10, v10, v8410; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v13411; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v10412; GISEL-NEXT: v_mul_lo_u32 v11, v9, v12413; GISEL-NEXT: v_mul_lo_u32 v13, v8, v10414; GISEL-NEXT: v_mul_hi_u32 v14, v8, v12415; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v13416; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc417; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v14418; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc419; GISEL-NEXT: v_add_i32_e32 v11, vcc, v13, v11420; GISEL-NEXT: v_mul_lo_u32 v13, v9, v10421; GISEL-NEXT: v_mul_hi_u32 v12, v9, v12422; GISEL-NEXT: v_mul_hi_u32 v14, v8, v10423; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v12424; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc425; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v14426; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc427; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v14428; GISEL-NEXT: v_add_i32_e32 v11, vcc, v12, v11429; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc430; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v12431; GISEL-NEXT: v_mul_hi_u32 v10, v9, v10432; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v12433; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v11434; GISEL-NEXT: v_addc_u32_e32 v9, vcc, v9, v10, vcc435; GISEL-NEXT: v_mul_lo_u32 v10, v1, v8436; GISEL-NEXT: v_mul_lo_u32 v11, v0, v9437; GISEL-NEXT: v_mul_hi_u32 v12, v0, v8438; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v11439; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc440; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v12441; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc442; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v10443; GISEL-NEXT: v_mul_lo_u32 v11, v1, v9444; GISEL-NEXT: v_mul_hi_u32 v8, v1, v8445; GISEL-NEXT: v_mul_hi_u32 v12, v0, v9446; GISEL-NEXT: v_add_i32_e32 v8, vcc, v11, v8447; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc448; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v12449; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc450; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12451; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v10452; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc453; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v10454; GISEL-NEXT: v_mul_hi_u32 v9, v1, v9455; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v10456; GISEL-NEXT: v_mul_lo_u32 v10, v4, v8457; GISEL-NEXT: v_mul_lo_u32 v11, v5, v8458; GISEL-NEXT: v_mul_lo_u32 v12, v4, v9459; GISEL-NEXT: v_mul_hi_u32 v13, v4, v8460; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12461; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v13462; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v10463; GISEL-NEXT: v_subb_u32_e64 v10, s[4:5], v1, v11, vcc464; GISEL-NEXT: v_sub_i32_e64 v1, s[4:5], v1, v11465; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v10, v5466; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]467; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v4468; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, -1, s[4:5]469; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v10, v5470; GISEL-NEXT: v_cndmask_b32_e64 v10, v11, v12, s[4:5]471; GISEL-NEXT: v_sub_i32_e64 v0, s[4:5], v0, v4472; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v1, v5, vcc473; GISEL-NEXT: v_subbrev_u32_e64 v1, vcc, 0, v1, s[4:5]474; GISEL-NEXT: v_add_i32_e32 v11, vcc, 1, v8475; GISEL-NEXT: v_addc_u32_e32 v12, vcc, 0, v9, vcc476; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v1, v5477; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, -1, vcc478; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v4479; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc480; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v1, v5481; GISEL-NEXT: v_cndmask_b32_e32 v0, v13, v0, vcc482; GISEL-NEXT: v_add_i32_e32 v1, vcc, 1, v11483; GISEL-NEXT: v_addc_u32_e32 v4, vcc, 0, v12, vcc484; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0485; GISEL-NEXT: v_cndmask_b32_e32 v0, v11, v1, vcc486; GISEL-NEXT: v_cndmask_b32_e32 v1, v12, v4, vcc487; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v10488; GISEL-NEXT: v_cndmask_b32_e32 v0, v8, v0, vcc489; GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc490; GISEL-NEXT: v_cvt_f32_u32_e32 v4, v6491; GISEL-NEXT: v_cvt_f32_u32_e32 v5, v7492; GISEL-NEXT: v_mac_f32_e32 v4, 0x4f800000, v5493; GISEL-NEXT: v_rcp_iflag_f32_e32 v4, v4494; GISEL-NEXT: v_mul_f32_e32 v4, 0x5f7ffffc, v4495; GISEL-NEXT: v_mul_f32_e32 v5, 0x2f800000, v4496; GISEL-NEXT: v_trunc_f32_e32 v5, v5497; GISEL-NEXT: v_mac_f32_e32 v4, 0xcf800000, v5498; GISEL-NEXT: v_cvt_u32_f32_e32 v4, v4499; GISEL-NEXT: v_cvt_u32_f32_e32 v5, v5500; GISEL-NEXT: v_sub_i32_e32 v8, vcc, 0, v6501; GISEL-NEXT: v_subb_u32_e32 v9, vcc, 0, v7, vcc502; GISEL-NEXT: v_mul_lo_u32 v10, v8, v4503; GISEL-NEXT: v_mul_lo_u32 v11, v9, v4504; GISEL-NEXT: v_mul_lo_u32 v12, v8, v5505; GISEL-NEXT: v_mul_hi_u32 v13, v8, v4506; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12507; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v13508; GISEL-NEXT: v_mul_lo_u32 v12, v5, v10509; GISEL-NEXT: v_mul_lo_u32 v13, v4, v11510; GISEL-NEXT: v_mul_hi_u32 v14, v4, v10511; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v13512; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc513; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v14514; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc515; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v12516; GISEL-NEXT: v_mul_lo_u32 v13, v5, v11517; GISEL-NEXT: v_mul_hi_u32 v10, v5, v10518; GISEL-NEXT: v_mul_hi_u32 v14, v4, v11519; GISEL-NEXT: v_add_i32_e32 v10, vcc, v13, v10520; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc521; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v14522; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc523; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v14524; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v12525; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc526; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v12527; GISEL-NEXT: v_mul_hi_u32 v11, v5, v11528; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12529; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v10530; GISEL-NEXT: v_addc_u32_e32 v5, vcc, v5, v11, vcc531; GISEL-NEXT: v_mul_lo_u32 v10, v8, v4532; GISEL-NEXT: v_mul_lo_u32 v9, v9, v4533; GISEL-NEXT: v_mul_lo_u32 v11, v8, v5534; GISEL-NEXT: v_mul_hi_u32 v8, v8, v4535; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v11536; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v8537; GISEL-NEXT: v_mul_lo_u32 v9, v5, v10538; GISEL-NEXT: v_mul_lo_u32 v11, v4, v8539; GISEL-NEXT: v_mul_hi_u32 v12, v4, v10540; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v11541; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc542; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v12543; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc544; GISEL-NEXT: v_add_i32_e32 v9, vcc, v11, v9545; GISEL-NEXT: v_mul_lo_u32 v11, v5, v8546; GISEL-NEXT: v_mul_hi_u32 v10, v5, v10547; GISEL-NEXT: v_mul_hi_u32 v12, v4, v8548; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v10549; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc550; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v12551; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc552; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v12553; GISEL-NEXT: v_add_i32_e32 v9, vcc, v10, v9554; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc555; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v10556; GISEL-NEXT: v_mul_hi_u32 v8, v5, v8557; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v10558; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v9559; GISEL-NEXT: v_addc_u32_e32 v5, vcc, v5, v8, vcc560; GISEL-NEXT: v_mul_lo_u32 v8, v3, v4561; GISEL-NEXT: v_mul_lo_u32 v9, v2, v5562; GISEL-NEXT: v_mul_hi_u32 v10, v2, v4563; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v9564; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc565; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v10566; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc567; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v8568; GISEL-NEXT: v_mul_lo_u32 v9, v3, v5569; GISEL-NEXT: v_mul_hi_u32 v4, v3, v4570; GISEL-NEXT: v_mul_hi_u32 v10, v2, v5571; GISEL-NEXT: v_add_i32_e32 v4, vcc, v9, v4572; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc573; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v10574; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc575; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v10576; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v8577; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc578; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v8579; GISEL-NEXT: v_mul_hi_u32 v5, v3, v5580; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v8581; GISEL-NEXT: v_mul_lo_u32 v8, v6, v4582; GISEL-NEXT: v_mul_lo_u32 v9, v7, v4583; GISEL-NEXT: v_mul_lo_u32 v10, v6, v5584; GISEL-NEXT: v_mul_hi_u32 v11, v6, v4585; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v10586; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v11587; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v8588; GISEL-NEXT: v_subb_u32_e64 v8, s[4:5], v3, v9, vcc589; GISEL-NEXT: v_sub_i32_e64 v3, s[4:5], v3, v9590; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v8, v7591; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]592; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v6593; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]594; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v8, v7595; GISEL-NEXT: v_cndmask_b32_e64 v8, v9, v10, s[4:5]596; GISEL-NEXT: v_sub_i32_e64 v2, s[4:5], v2, v6597; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v7, vcc598; GISEL-NEXT: v_subbrev_u32_e64 v3, vcc, 0, v3, s[4:5]599; GISEL-NEXT: v_add_i32_e32 v9, vcc, 1, v4600; GISEL-NEXT: v_addc_u32_e32 v10, vcc, 0, v5, vcc601; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v3, v7602; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, vcc603; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v6604; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc605; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v3, v7606; GISEL-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc607; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v9608; GISEL-NEXT: v_addc_u32_e32 v6, vcc, 0, v10, vcc609; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2610; GISEL-NEXT: v_cndmask_b32_e32 v2, v9, v3, vcc611; GISEL-NEXT: v_cndmask_b32_e32 v3, v10, v6, vcc612; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v8613; GISEL-NEXT: v_cndmask_b32_e32 v2, v4, v2, vcc614; GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc615; GISEL-NEXT: s_setpc_b64 s[30:31]616;617; CGP-LABEL: v_udiv_v2i64:618; CGP: ; %bb.0:619; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; CGP-NEXT: v_mov_b32_e32 v10, v0621; CGP-NEXT: v_mov_b32_e32 v11, v1622; CGP-NEXT: v_mov_b32_e32 v8, v2623; CGP-NEXT: v_mov_b32_e32 v9, v3624; CGP-NEXT: v_or_b32_e32 v1, v11, v5625; CGP-NEXT: v_mov_b32_e32 v0, 0626; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]627; CGP-NEXT: v_cvt_f32_u32_e32 v2, v4628; CGP-NEXT: ; implicit-def: $vgpr0_vgpr1629; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc630; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]631; CGP-NEXT: s_cbranch_execz .LBB2_2632; CGP-NEXT: ; %bb.1:633; CGP-NEXT: v_cvt_f32_u32_e32 v0, v5634; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v4635; CGP-NEXT: v_subb_u32_e32 v3, vcc, 0, v5, vcc636; CGP-NEXT: v_mac_f32_e32 v2, 0x4f800000, v0637; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v2638; CGP-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v0639; CGP-NEXT: v_mul_f32_e32 v2, 0x2f800000, v0640; CGP-NEXT: v_trunc_f32_e32 v2, v2641; CGP-NEXT: v_mac_f32_e32 v0, 0xcf800000, v2642; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2643; CGP-NEXT: v_cvt_u32_f32_e32 v0, v0644; CGP-NEXT: v_mul_lo_u32 v12, v1, v2645; CGP-NEXT: v_mul_lo_u32 v13, v1, v0646; CGP-NEXT: v_mul_lo_u32 v14, v3, v0647; CGP-NEXT: v_mul_hi_u32 v15, v1, v0648; CGP-NEXT: v_add_i32_e32 v12, vcc, v14, v12649; CGP-NEXT: v_mul_lo_u32 v14, v2, v13650; CGP-NEXT: v_mul_hi_u32 v16, v0, v13651; CGP-NEXT: v_mul_hi_u32 v13, v2, v13652; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v15653; CGP-NEXT: v_mul_lo_u32 v15, v0, v12654; CGP-NEXT: v_mul_lo_u32 v17, v2, v12655; CGP-NEXT: v_mul_hi_u32 v18, v0, v12656; CGP-NEXT: v_mul_hi_u32 v12, v2, v12657; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v15658; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc659; CGP-NEXT: v_add_i32_e32 v13, vcc, v17, v13660; CGP-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc661; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v16662; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc663; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v18664; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc665; CGP-NEXT: v_add_i32_e32 v14, vcc, v15, v14666; CGP-NEXT: v_add_i32_e32 v15, vcc, v17, v16667; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v14668; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc669; CGP-NEXT: v_add_i32_e32 v14, vcc, v15, v14670; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v14671; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v13672; CGP-NEXT: v_addc_u32_e32 v2, vcc, v2, v12, vcc673; CGP-NEXT: v_mul_lo_u32 v12, v1, v0674; CGP-NEXT: v_mul_lo_u32 v3, v3, v0675; CGP-NEXT: v_mul_hi_u32 v13, v1, v0676; CGP-NEXT: v_mul_lo_u32 v1, v1, v2677; CGP-NEXT: v_mul_lo_u32 v14, v2, v12678; CGP-NEXT: v_mul_hi_u32 v15, v0, v12679; CGP-NEXT: v_mul_hi_u32 v12, v2, v12680; CGP-NEXT: v_add_i32_e32 v1, vcc, v3, v1681; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v13682; CGP-NEXT: v_mul_lo_u32 v3, v0, v1683; CGP-NEXT: v_mul_lo_u32 v13, v2, v1684; CGP-NEXT: v_mul_hi_u32 v16, v0, v1685; CGP-NEXT: v_mul_hi_u32 v1, v2, v1686; CGP-NEXT: v_add_i32_e32 v3, vcc, v14, v3687; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc688; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v12689; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc690; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v15691; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc692; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v16693; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc694; CGP-NEXT: v_add_i32_e32 v3, vcc, v14, v3695; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v15696; CGP-NEXT: v_add_i32_e32 v3, vcc, v12, v3697; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc698; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v12699; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v12700; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v3701; CGP-NEXT: v_addc_u32_e32 v1, vcc, v2, v1, vcc702; CGP-NEXT: v_mul_lo_u32 v2, v11, v0703; CGP-NEXT: v_mul_hi_u32 v3, v10, v0704; CGP-NEXT: v_mul_hi_u32 v0, v11, v0705; CGP-NEXT: v_mul_lo_u32 v12, v10, v1706; CGP-NEXT: v_mul_lo_u32 v13, v11, v1707; CGP-NEXT: v_mul_hi_u32 v14, v10, v1708; CGP-NEXT: v_mul_hi_u32 v1, v11, v1709; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v12710; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc711; CGP-NEXT: v_add_i32_e32 v0, vcc, v13, v0712; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc713; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v3714; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc715; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v14716; CGP-NEXT: v_cndmask_b32_e64 v3, 0, 1, vcc717; CGP-NEXT: v_add_i32_e32 v2, vcc, v12, v2718; CGP-NEXT: v_add_i32_e32 v3, vcc, v13, v3719; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v2720; CGP-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc721; CGP-NEXT: v_add_i32_e32 v2, vcc, v3, v2722; CGP-NEXT: v_mul_lo_u32 v3, v4, v0723; CGP-NEXT: v_mul_lo_u32 v12, v5, v0724; CGP-NEXT: v_mul_hi_u32 v13, v4, v0725; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v2726; CGP-NEXT: v_mul_lo_u32 v2, v4, v1727; CGP-NEXT: v_add_i32_e32 v14, vcc, 1, v0728; CGP-NEXT: v_addc_u32_e32 v15, vcc, 0, v1, vcc729; CGP-NEXT: v_add_i32_e32 v2, vcc, v12, v2730; CGP-NEXT: v_add_i32_e32 v12, vcc, 1, v14731; CGP-NEXT: v_addc_u32_e32 v16, vcc, 0, v15, vcc732; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v13733; CGP-NEXT: v_sub_i32_e32 v3, vcc, v10, v3734; CGP-NEXT: v_subb_u32_e64 v10, s[4:5], v11, v2, vcc735; CGP-NEXT: v_sub_i32_e64 v2, s[4:5], v11, v2736; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v4737; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]738; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v10, v5739; CGP-NEXT: v_cndmask_b32_e64 v13, 0, -1, s[4:5]740; CGP-NEXT: v_subb_u32_e32 v2, vcc, v2, v5, vcc741; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v10, v5742; CGP-NEXT: v_cndmask_b32_e32 v10, v13, v11, vcc743; CGP-NEXT: v_sub_i32_e32 v3, vcc, v3, v4744; CGP-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc745; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v4746; CGP-NEXT: v_cndmask_b32_e64 v3, 0, -1, vcc747; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v5748; CGP-NEXT: v_cndmask_b32_e64 v4, 0, -1, vcc749; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v2, v5750; CGP-NEXT: v_cndmask_b32_e32 v2, v4, v3, vcc751; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2752; CGP-NEXT: v_cndmask_b32_e32 v2, v14, v12, vcc753; CGP-NEXT: v_cndmask_b32_e32 v3, v15, v16, vcc754; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v10755; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc756; CGP-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc757; CGP-NEXT: ; implicit-def: $vgpr2758; CGP-NEXT: ; implicit-def: $vgpr4759; CGP-NEXT: ; implicit-def: $vgpr10760; CGP-NEXT: .LBB2_2: ; %Flow1761; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]762; CGP-NEXT: s_cbranch_execz .LBB2_4763; CGP-NEXT: ; %bb.3:764; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v2765; CGP-NEXT: v_sub_i32_e32 v2, vcc, 0, v4766; CGP-NEXT: v_mov_b32_e32 v1, 0767; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v0768; CGP-NEXT: v_cvt_u32_f32_e32 v0, v0769; CGP-NEXT: v_mul_lo_u32 v2, v2, v0770; CGP-NEXT: v_mul_hi_u32 v2, v0, v2771; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v2772; CGP-NEXT: v_mul_hi_u32 v0, v10, v0773; CGP-NEXT: v_mul_lo_u32 v2, v0, v4774; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0775; CGP-NEXT: v_sub_i32_e32 v2, vcc, v10, v2776; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v4777; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc778; CGP-NEXT: v_sub_i32_e64 v3, s[4:5], v2, v4779; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc780; CGP-NEXT: v_add_i32_e32 v3, vcc, 1, v0781; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v2, v4782; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc783; CGP-NEXT: .LBB2_4:784; CGP-NEXT: s_or_b64 exec, exec, s[6:7]785; CGP-NEXT: v_or_b32_e32 v3, v9, v7786; CGP-NEXT: v_mov_b32_e32 v2, 0787; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]788; CGP-NEXT: v_cvt_f32_u32_e32 v4, v6789; CGP-NEXT: ; implicit-def: $vgpr2_vgpr3790; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc791; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]792; CGP-NEXT: s_cbranch_execnz .LBB2_7793; CGP-NEXT: ; %bb.5: ; %Flow794; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]795; CGP-NEXT: s_cbranch_execnz .LBB2_8796; CGP-NEXT: .LBB2_6:797; CGP-NEXT: s_or_b64 exec, exec, s[6:7]798; CGP-NEXT: s_setpc_b64 s[30:31]799; CGP-NEXT: .LBB2_7:800; CGP-NEXT: v_cvt_f32_u32_e32 v2, v7801; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v6802; CGP-NEXT: v_subb_u32_e32 v5, vcc, 0, v7, vcc803; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v2804; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v4805; CGP-NEXT: v_mul_f32_e32 v2, 0x5f7ffffc, v2806; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v2807; CGP-NEXT: v_trunc_f32_e32 v4, v4808; CGP-NEXT: v_mac_f32_e32 v2, 0xcf800000, v4809; CGP-NEXT: v_cvt_u32_f32_e32 v4, v4810; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2811; CGP-NEXT: v_mul_lo_u32 v10, v3, v4812; CGP-NEXT: v_mul_lo_u32 v11, v3, v2813; CGP-NEXT: v_mul_lo_u32 v12, v5, v2814; CGP-NEXT: v_mul_hi_u32 v13, v3, v2815; CGP-NEXT: v_add_i32_e32 v10, vcc, v12, v10816; CGP-NEXT: v_mul_lo_u32 v12, v4, v11817; CGP-NEXT: v_mul_hi_u32 v14, v2, v11818; CGP-NEXT: v_mul_hi_u32 v11, v4, v11819; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v13820; CGP-NEXT: v_mul_lo_u32 v13, v2, v10821; CGP-NEXT: v_mul_lo_u32 v15, v4, v10822; CGP-NEXT: v_mul_hi_u32 v16, v2, v10823; CGP-NEXT: v_mul_hi_u32 v10, v4, v10824; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v13825; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc826; CGP-NEXT: v_add_i32_e32 v11, vcc, v15, v11827; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc828; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v14829; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc830; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v16831; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc832; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v12833; CGP-NEXT: v_add_i32_e32 v13, vcc, v15, v14834; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v12835; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc836; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v12837; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v12838; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v11839; CGP-NEXT: v_addc_u32_e32 v4, vcc, v4, v10, vcc840; CGP-NEXT: v_mul_lo_u32 v10, v3, v2841; CGP-NEXT: v_mul_lo_u32 v5, v5, v2842; CGP-NEXT: v_mul_hi_u32 v11, v3, v2843; CGP-NEXT: v_mul_lo_u32 v3, v3, v4844; CGP-NEXT: v_mul_lo_u32 v12, v4, v10845; CGP-NEXT: v_mul_hi_u32 v13, v2, v10846; CGP-NEXT: v_mul_hi_u32 v10, v4, v10847; CGP-NEXT: v_add_i32_e32 v3, vcc, v5, v3848; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v11849; CGP-NEXT: v_mul_lo_u32 v5, v2, v3850; CGP-NEXT: v_mul_lo_u32 v11, v4, v3851; CGP-NEXT: v_mul_hi_u32 v14, v2, v3852; CGP-NEXT: v_mul_hi_u32 v3, v4, v3853; CGP-NEXT: v_add_i32_e32 v5, vcc, v12, v5854; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc855; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v10856; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc857; CGP-NEXT: v_add_i32_e32 v5, vcc, v5, v13858; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc859; CGP-NEXT: v_add_i32_e32 v10, vcc, v10, v14860; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc861; CGP-NEXT: v_add_i32_e32 v5, vcc, v12, v5862; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v13863; CGP-NEXT: v_add_i32_e32 v5, vcc, v10, v5864; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc865; CGP-NEXT: v_add_i32_e32 v10, vcc, v11, v10866; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v10867; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v5868; CGP-NEXT: v_addc_u32_e32 v3, vcc, v4, v3, vcc869; CGP-NEXT: v_mul_lo_u32 v4, v9, v2870; CGP-NEXT: v_mul_hi_u32 v5, v8, v2871; CGP-NEXT: v_mul_hi_u32 v2, v9, v2872; CGP-NEXT: v_mul_lo_u32 v10, v8, v3873; CGP-NEXT: v_mul_lo_u32 v11, v9, v3874; CGP-NEXT: v_mul_hi_u32 v12, v8, v3875; CGP-NEXT: v_mul_hi_u32 v3, v9, v3876; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v10877; CGP-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc878; CGP-NEXT: v_add_i32_e32 v2, vcc, v11, v2879; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc880; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v5881; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc882; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v12883; CGP-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc884; CGP-NEXT: v_add_i32_e32 v4, vcc, v10, v4885; CGP-NEXT: v_add_i32_e32 v5, vcc, v11, v5886; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v4887; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc888; CGP-NEXT: v_add_i32_e32 v4, vcc, v5, v4889; CGP-NEXT: v_mul_lo_u32 v5, v6, v2890; CGP-NEXT: v_mul_lo_u32 v10, v7, v2891; CGP-NEXT: v_mul_hi_u32 v11, v6, v2892; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v4893; CGP-NEXT: v_mul_lo_u32 v4, v6, v3894; CGP-NEXT: v_add_i32_e32 v12, vcc, 1, v2895; CGP-NEXT: v_addc_u32_e32 v13, vcc, 0, v3, vcc896; CGP-NEXT: v_add_i32_e32 v4, vcc, v10, v4897; CGP-NEXT: v_add_i32_e32 v10, vcc, 1, v12898; CGP-NEXT: v_addc_u32_e32 v14, vcc, 0, v13, vcc899; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v11900; CGP-NEXT: v_sub_i32_e32 v5, vcc, v8, v5901; CGP-NEXT: v_subb_u32_e64 v8, s[4:5], v9, v4, vcc902; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v9, v4903; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v6904; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]905; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v8, v7906; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]907; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v7, vcc908; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v8, v7909; CGP-NEXT: v_cndmask_b32_e32 v8, v11, v9, vcc910; CGP-NEXT: v_sub_i32_e32 v5, vcc, v5, v6911; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc912; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v5, v6913; CGP-NEXT: v_cndmask_b32_e64 v5, 0, -1, vcc914; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v7915; CGP-NEXT: v_cndmask_b32_e64 v6, 0, -1, vcc916; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v7917; CGP-NEXT: v_cndmask_b32_e32 v4, v6, v5, vcc918; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v4919; CGP-NEXT: v_cndmask_b32_e32 v4, v12, v10, vcc920; CGP-NEXT: v_cndmask_b32_e32 v5, v13, v14, vcc921; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v8922; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc923; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v5, vcc924; CGP-NEXT: ; implicit-def: $vgpr4925; CGP-NEXT: ; implicit-def: $vgpr6926; CGP-NEXT: ; implicit-def: $vgpr8927; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]928; CGP-NEXT: s_cbranch_execz .LBB2_6929; CGP-NEXT: .LBB2_8:930; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v4931; CGP-NEXT: v_sub_i32_e32 v4, vcc, 0, v6932; CGP-NEXT: v_mov_b32_e32 v3, 0933; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v2934; CGP-NEXT: v_cvt_u32_f32_e32 v2, v2935; CGP-NEXT: v_mul_lo_u32 v4, v4, v2936; CGP-NEXT: v_mul_hi_u32 v4, v2, v4937; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v4938; CGP-NEXT: v_mul_hi_u32 v2, v8, v2939; CGP-NEXT: v_mul_lo_u32 v4, v2, v6940; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v2941; CGP-NEXT: v_sub_i32_e32 v4, vcc, v8, v4942; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v6943; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc944; CGP-NEXT: v_sub_i32_e64 v5, s[4:5], v4, v6945; CGP-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc946; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v2947; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v6948; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc949; CGP-NEXT: s_or_b64 exec, exec, s[6:7]950; CGP-NEXT: s_setpc_b64 s[30:31]951 %result = udiv <2 x i64> %num, %den952 ret <2 x i64> %result953}954 955define i64 @v_udiv_i64_pow2k_denom(i64 %num) {956; CHECK-LABEL: v_udiv_i64_pow2k_denom:957; CHECK: ; %bb.0:958; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; CHECK-NEXT: v_lshr_b64 v[0:1], v[0:1], 12960; CHECK-NEXT: s_setpc_b64 s[30:31]961 %result = udiv i64 %num, 4096962 ret i64 %result963}964 965define <2 x i64> @v_udiv_v2i64_pow2k_denom(<2 x i64> %num) {966; CHECK-LABEL: v_udiv_v2i64_pow2k_denom:967; CHECK: ; %bb.0:968; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)969; CHECK-NEXT: v_lshr_b64 v[0:1], v[0:1], 12970; CHECK-NEXT: v_lshr_b64 v[2:3], v[2:3], 12971; CHECK-NEXT: s_setpc_b64 s[30:31]972 %result = udiv <2 x i64> %num, <i64 4096, i64 4096>973 ret <2 x i64> %result974}975 976define i64 @v_udiv_i64_oddk_denom(i64 %num) {977; CHECK-LABEL: v_udiv_i64_oddk_denom:978; CHECK: ; %bb.0:979; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)980; CHECK-NEXT: v_mov_b32_e32 v2, 0x1fb03c31981; CHECK-NEXT: v_mov_b32_e32 v3, 0xd9528440982; CHECK-NEXT: v_mul_lo_u32 v4, v1, v2983; CHECK-NEXT: v_mul_lo_u32 v5, v0, v3984; CHECK-NEXT: v_mul_hi_u32 v6, v0, v2985; CHECK-NEXT: v_mul_lo_u32 v7, v1, v3986; CHECK-NEXT: v_mul_hi_u32 v2, v1, v2987; CHECK-NEXT: v_mul_hi_u32 v0, v0, v3988; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v5989; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc990; CHECK-NEXT: v_add_i32_e32 v2, vcc, v7, v2991; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc992; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v6993; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc994; CHECK-NEXT: v_add_i32_e32 v0, vcc, v2, v0995; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc996; CHECK-NEXT: v_add_i32_e32 v4, vcc, v5, v4997; CHECK-NEXT: v_add_i32_e32 v2, vcc, v7, v2998; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v4999; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1000; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v41001; CHECK-NEXT: v_mul_hi_u32 v1, v1, v31002; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v21003; CHECK-NEXT: v_lshr_b64 v[0:1], v[0:1], 201004; CHECK-NEXT: s_setpc_b64 s[30:31]1005 %result = udiv i64 %num, 12351951006 ret i64 %result1007}1008 1009define <2 x i64> @v_udiv_v2i64_oddk_denom(<2 x i64> %num) {1010; CHECK-LABEL: v_udiv_v2i64_oddk_denom:1011; CHECK: ; %bb.0:1012; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; CHECK-NEXT: v_mov_b32_e32 v4, 0x1fb03c311014; CHECK-NEXT: v_mov_b32_e32 v5, 0xd95284401015; CHECK-NEXT: v_mul_lo_u32 v6, v1, v41016; CHECK-NEXT: v_mul_lo_u32 v7, v0, v51017; CHECK-NEXT: v_mul_hi_u32 v8, v0, v41018; CHECK-NEXT: v_mul_lo_u32 v9, v1, v51019; CHECK-NEXT: v_mul_hi_u32 v10, v1, v41020; CHECK-NEXT: v_mul_hi_u32 v0, v0, v51021; CHECK-NEXT: v_mul_hi_u32 v1, v1, v51022; CHECK-NEXT: v_mul_lo_u32 v11, v3, v41023; CHECK-NEXT: v_mul_lo_u32 v12, v2, v51024; CHECK-NEXT: v_mul_hi_u32 v13, v2, v41025; CHECK-NEXT: v_mul_lo_u32 v14, v3, v51026; CHECK-NEXT: v_mul_hi_u32 v4, v3, v41027; CHECK-NEXT: v_mul_hi_u32 v2, v2, v51028; CHECK-NEXT: v_mul_hi_u32 v3, v3, v51029; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v71030; CHECK-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1031; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v101032; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1033; CHECK-NEXT: v_add_i32_e32 v10, vcc, v11, v121034; CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1035; CHECK-NEXT: v_add_i32_e32 v4, vcc, v14, v41036; CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1037; CHECK-NEXT: v_add_i32_e32 v5, vcc, v5, v81038; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1039; CHECK-NEXT: v_add_i32_e32 v0, vcc, v7, v01040; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1041; CHECK-NEXT: v_add_i32_e32 v8, vcc, v10, v131042; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1043; CHECK-NEXT: v_add_i32_e32 v2, vcc, v4, v21044; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1045; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v51046; CHECK-NEXT: v_add_i32_e32 v6, vcc, v9, v71047; CHECK-NEXT: v_add_i32_e32 v7, vcc, v11, v81048; CHECK-NEXT: v_add_i32_e32 v4, vcc, v12, v41049; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v51050; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, 1, vcc1051; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v71052; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1053; CHECK-NEXT: v_add_i32_e32 v5, vcc, v6, v51054; CHECK-NEXT: v_add_i32_e32 v4, vcc, v4, v71055; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v51056; CHECK-NEXT: v_add_i32_e32 v3, vcc, v3, v41057; CHECK-NEXT: v_lshr_b64 v[0:1], v[0:1], 201058; CHECK-NEXT: v_lshr_b64 v[2:3], v[2:3], 201059; CHECK-NEXT: s_setpc_b64 s[30:31]1060 %result = udiv <2 x i64> %num, <i64 1235195, i64 1235195>1061 ret <2 x i64> %result1062}1063 1064define i64 @v_udiv_i64_pow2_shl_denom(i64 %x, i64 %y) {1065; CHECK-LABEL: v_udiv_i64_pow2_shl_denom:1066; CHECK: ; %bb.0:1067; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; CHECK-NEXT: v_mov_b32_e32 v3, v01069; CHECK-NEXT: v_mov_b32_e32 v4, v11070; CHECK-NEXT: v_mov_b32_e32 v0, 0x10001071; CHECK-NEXT: v_mov_b32_e32 v1, 01072; CHECK-NEXT: v_mov_b32_e32 v7, 01073; CHECK-NEXT: v_lshl_b64 v[5:6], v[0:1], v21074; CHECK-NEXT: v_or_b32_e32 v8, v4, v61075; CHECK-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[7:8]1076; CHECK-NEXT: v_cvt_f32_u32_e32 v2, v51077; CHECK-NEXT: ; implicit-def: $vgpr0_vgpr11078; CHECK-NEXT: s_and_saveexec_b64 s[4:5], vcc1079; CHECK-NEXT: s_xor_b64 s[6:7], exec, s[4:5]1080; CHECK-NEXT: s_cbranch_execnz .LBB7_31081; CHECK-NEXT: ; %bb.1: ; %Flow1082; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1083; CHECK-NEXT: s_cbranch_execnz .LBB7_41084; CHECK-NEXT: .LBB7_2:1085; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]1086; CHECK-NEXT: s_setpc_b64 s[30:31]1087; CHECK-NEXT: .LBB7_3:1088; CHECK-NEXT: v_cvt_f32_u32_e32 v0, v61089; CHECK-NEXT: v_sub_i32_e32 v1, vcc, 0, v51090; CHECK-NEXT: v_subb_u32_e32 v7, vcc, 0, v6, vcc1091; CHECK-NEXT: v_mac_f32_e32 v2, 0x4f800000, v01092; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v21093; CHECK-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v01094; CHECK-NEXT: v_mul_f32_e32 v2, 0x2f800000, v01095; CHECK-NEXT: v_trunc_f32_e32 v2, v21096; CHECK-NEXT: v_mac_f32_e32 v0, 0xcf800000, v21097; CHECK-NEXT: v_cvt_u32_f32_e32 v2, v21098; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v01099; CHECK-NEXT: v_mul_lo_u32 v8, v1, v21100; CHECK-NEXT: v_mul_lo_u32 v9, v1, v01101; CHECK-NEXT: v_mul_lo_u32 v10, v7, v01102; CHECK-NEXT: v_mul_hi_u32 v11, v1, v01103; CHECK-NEXT: v_add_i32_e32 v8, vcc, v10, v81104; CHECK-NEXT: v_mul_lo_u32 v10, v2, v91105; CHECK-NEXT: v_mul_hi_u32 v12, v0, v91106; CHECK-NEXT: v_mul_hi_u32 v9, v2, v91107; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v111108; CHECK-NEXT: v_mul_lo_u32 v11, v0, v81109; CHECK-NEXT: v_mul_lo_u32 v13, v2, v81110; CHECK-NEXT: v_mul_hi_u32 v14, v0, v81111; CHECK-NEXT: v_mul_hi_u32 v8, v2, v81112; CHECK-NEXT: v_add_i32_e32 v10, vcc, v10, v111113; CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1114; CHECK-NEXT: v_add_i32_e32 v9, vcc, v13, v91115; CHECK-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1116; CHECK-NEXT: v_add_i32_e32 v10, vcc, v10, v121117; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1118; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v141119; CHECK-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1120; CHECK-NEXT: v_add_i32_e32 v10, vcc, v11, v101121; CHECK-NEXT: v_add_i32_e32 v11, vcc, v13, v121122; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v101123; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1124; CHECK-NEXT: v_add_i32_e32 v10, vcc, v11, v101125; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v101126; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v91127; CHECK-NEXT: v_addc_u32_e32 v2, vcc, v2, v8, vcc1128; CHECK-NEXT: v_mul_lo_u32 v8, v1, v01129; CHECK-NEXT: v_mul_lo_u32 v7, v7, v01130; CHECK-NEXT: v_mul_hi_u32 v9, v1, v01131; CHECK-NEXT: v_mul_lo_u32 v1, v1, v21132; CHECK-NEXT: v_mul_lo_u32 v10, v2, v81133; CHECK-NEXT: v_mul_hi_u32 v11, v0, v81134; CHECK-NEXT: v_mul_hi_u32 v8, v2, v81135; CHECK-NEXT: v_add_i32_e32 v1, vcc, v7, v11136; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v91137; CHECK-NEXT: v_mul_lo_u32 v7, v0, v11138; CHECK-NEXT: v_mul_lo_u32 v9, v2, v11139; CHECK-NEXT: v_mul_hi_u32 v12, v0, v11140; CHECK-NEXT: v_mul_hi_u32 v1, v2, v11141; CHECK-NEXT: v_add_i32_e32 v7, vcc, v10, v71142; CHECK-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1143; CHECK-NEXT: v_add_i32_e32 v8, vcc, v9, v81144; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1145; CHECK-NEXT: v_add_i32_e32 v7, vcc, v7, v111146; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1147; CHECK-NEXT: v_add_i32_e32 v8, vcc, v8, v121148; CHECK-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1149; CHECK-NEXT: v_add_i32_e32 v7, vcc, v10, v71150; CHECK-NEXT: v_add_i32_e32 v9, vcc, v9, v111151; CHECK-NEXT: v_add_i32_e32 v7, vcc, v8, v71152; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1153; CHECK-NEXT: v_add_i32_e32 v8, vcc, v9, v81154; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v81155; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v71156; CHECK-NEXT: v_addc_u32_e32 v1, vcc, v2, v1, vcc1157; CHECK-NEXT: v_mul_lo_u32 v2, v4, v01158; CHECK-NEXT: v_mul_hi_u32 v7, v3, v01159; CHECK-NEXT: v_mul_hi_u32 v0, v4, v01160; CHECK-NEXT: v_mul_lo_u32 v8, v3, v11161; CHECK-NEXT: v_mul_lo_u32 v9, v4, v11162; CHECK-NEXT: v_mul_hi_u32 v10, v3, v11163; CHECK-NEXT: v_mul_hi_u32 v1, v4, v11164; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v81165; CHECK-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1166; CHECK-NEXT: v_add_i32_e32 v0, vcc, v9, v01167; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1168; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v71169; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1170; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v101171; CHECK-NEXT: v_cndmask_b32_e64 v7, 0, 1, vcc1172; CHECK-NEXT: v_add_i32_e32 v2, vcc, v8, v21173; CHECK-NEXT: v_add_i32_e32 v7, vcc, v9, v71174; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v21175; CHECK-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc1176; CHECK-NEXT: v_add_i32_e32 v2, vcc, v7, v21177; CHECK-NEXT: v_mul_lo_u32 v7, v5, v01178; CHECK-NEXT: v_mul_lo_u32 v8, v6, v01179; CHECK-NEXT: v_mul_hi_u32 v9, v5, v01180; CHECK-NEXT: v_add_i32_e32 v1, vcc, v1, v21181; CHECK-NEXT: v_mul_lo_u32 v2, v5, v11182; CHECK-NEXT: v_add_i32_e32 v10, vcc, 1, v01183; CHECK-NEXT: v_addc_u32_e32 v11, vcc, 0, v1, vcc1184; CHECK-NEXT: v_add_i32_e32 v2, vcc, v8, v21185; CHECK-NEXT: v_add_i32_e32 v8, vcc, 1, v101186; CHECK-NEXT: v_addc_u32_e32 v12, vcc, 0, v11, vcc1187; CHECK-NEXT: v_add_i32_e32 v2, vcc, v2, v91188; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v3, v71189; CHECK-NEXT: v_subb_u32_e64 v7, s[4:5], v4, v2, vcc1190; CHECK-NEXT: v_sub_i32_e64 v2, s[4:5], v4, v21191; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v3, v51192; CHECK-NEXT: v_cndmask_b32_e64 v4, 0, -1, s[4:5]1193; CHECK-NEXT: v_cmp_ge_u32_e64 s[4:5], v7, v61194; CHECK-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]1195; CHECK-NEXT: v_subb_u32_e32 v2, vcc, v2, v6, vcc1196; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v7, v61197; CHECK-NEXT: v_cndmask_b32_e32 v4, v9, v4, vcc1198; CHECK-NEXT: v_sub_i32_e32 v3, vcc, v3, v51199; CHECK-NEXT: v_subbrev_u32_e32 v2, vcc, 0, v2, vcc1200; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v3, v51201; CHECK-NEXT: v_cndmask_b32_e64 v3, 0, -1, vcc1202; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v2, v61203; CHECK-NEXT: v_cndmask_b32_e64 v5, 0, -1, vcc1204; CHECK-NEXT: v_cmp_eq_u32_e32 vcc, v2, v61205; CHECK-NEXT: v_cndmask_b32_e32 v2, v5, v3, vcc1206; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v21207; CHECK-NEXT: v_cndmask_b32_e32 v2, v10, v8, vcc1208; CHECK-NEXT: v_cndmask_b32_e32 v3, v11, v12, vcc1209; CHECK-NEXT: v_cmp_ne_u32_e32 vcc, 0, v41210; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc1211; CHECK-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc1212; CHECK-NEXT: ; implicit-def: $vgpr21213; CHECK-NEXT: ; implicit-def: $vgpr5_vgpr61214; CHECK-NEXT: ; implicit-def: $vgpr31215; CHECK-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1216; CHECK-NEXT: s_cbranch_execz .LBB7_21217; CHECK-NEXT: .LBB7_4:1218; CHECK-NEXT: v_rcp_iflag_f32_e32 v0, v21219; CHECK-NEXT: v_sub_i32_e32 v2, vcc, 0, v51220; CHECK-NEXT: v_mov_b32_e32 v1, 01221; CHECK-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v01222; CHECK-NEXT: v_cvt_u32_f32_e32 v0, v01223; CHECK-NEXT: v_mul_lo_u32 v2, v2, v01224; CHECK-NEXT: v_mul_hi_u32 v2, v0, v21225; CHECK-NEXT: v_add_i32_e32 v0, vcc, v0, v21226; CHECK-NEXT: v_mul_hi_u32 v0, v3, v01227; CHECK-NEXT: v_mul_lo_u32 v2, v0, v51228; CHECK-NEXT: v_add_i32_e32 v4, vcc, 1, v01229; CHECK-NEXT: v_sub_i32_e32 v2, vcc, v3, v21230; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v2, v51231; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc1232; CHECK-NEXT: v_sub_i32_e64 v3, s[4:5], v2, v51233; CHECK-NEXT: v_cndmask_b32_e32 v2, v2, v3, vcc1234; CHECK-NEXT: v_add_i32_e32 v3, vcc, 1, v01235; CHECK-NEXT: v_cmp_ge_u32_e32 vcc, v2, v51236; CHECK-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc1237; CHECK-NEXT: s_or_b64 exec, exec, s[6:7]1238; CHECK-NEXT: s_setpc_b64 s[30:31]1239 %shl.y = shl i64 4096, %y1240 %r = udiv i64 %x, %shl.y1241 ret i64 %r1242}1243 1244define <2 x i64> @v_udiv_v2i64_pow2_shl_denom(<2 x i64> %x, <2 x i64> %y) {1245; GISEL-LABEL: v_udiv_v2i64_pow2_shl_denom:1246; GISEL: ; %bb.0:1247; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1248; GISEL-NEXT: v_mov_b32_e32 v9, 0x10001249; GISEL-NEXT: v_mov_b32_e32 v10, 01250; GISEL-NEXT: v_lshl_b64 v[7:8], v[9:10], v41251; GISEL-NEXT: v_lshl_b64 v[4:5], v[9:10], v61252; GISEL-NEXT: v_cvt_f32_u32_e32 v6, v71253; GISEL-NEXT: v_cvt_f32_u32_e32 v9, v81254; GISEL-NEXT: v_mac_f32_e32 v6, 0x4f800000, v91255; GISEL-NEXT: v_rcp_iflag_f32_e32 v6, v61256; GISEL-NEXT: v_mul_f32_e32 v6, 0x5f7ffffc, v61257; GISEL-NEXT: v_mul_f32_e32 v9, 0x2f800000, v61258; GISEL-NEXT: v_trunc_f32_e32 v9, v91259; GISEL-NEXT: v_mac_f32_e32 v6, 0xcf800000, v91260; GISEL-NEXT: v_cvt_u32_f32_e32 v6, v61261; GISEL-NEXT: v_cvt_u32_f32_e32 v9, v91262; GISEL-NEXT: v_sub_i32_e32 v10, vcc, 0, v71263; GISEL-NEXT: v_subb_u32_e32 v11, vcc, 0, v8, vcc1264; GISEL-NEXT: v_mul_lo_u32 v12, v10, v61265; GISEL-NEXT: v_mul_lo_u32 v13, v11, v61266; GISEL-NEXT: v_mul_lo_u32 v14, v10, v91267; GISEL-NEXT: v_mul_hi_u32 v15, v10, v61268; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v141269; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v151270; GISEL-NEXT: v_mul_lo_u32 v14, v9, v121271; GISEL-NEXT: v_mul_lo_u32 v15, v6, v131272; GISEL-NEXT: v_mul_hi_u32 v16, v6, v121273; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v151274; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1275; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v161276; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1277; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141278; GISEL-NEXT: v_mul_lo_u32 v15, v9, v131279; GISEL-NEXT: v_mul_hi_u32 v12, v9, v121280; GISEL-NEXT: v_mul_hi_u32 v16, v6, v131281; GISEL-NEXT: v_add_i32_e32 v12, vcc, v15, v121282; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1283; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v161284; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc1285; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v161286; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v141287; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1288; GISEL-NEXT: v_add_i32_e32 v14, vcc, v15, v141289; GISEL-NEXT: v_mul_hi_u32 v13, v9, v131290; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v141291; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v121292; GISEL-NEXT: v_addc_u32_e32 v9, vcc, v9, v13, vcc1293; GISEL-NEXT: v_mul_lo_u32 v12, v10, v61294; GISEL-NEXT: v_mul_lo_u32 v11, v11, v61295; GISEL-NEXT: v_mul_lo_u32 v13, v10, v91296; GISEL-NEXT: v_mul_hi_u32 v10, v10, v61297; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v131298; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101299; GISEL-NEXT: v_mul_lo_u32 v11, v9, v121300; GISEL-NEXT: v_mul_lo_u32 v13, v6, v101301; GISEL-NEXT: v_mul_hi_u32 v14, v6, v121302; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v131303; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1304; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v141305; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1306; GISEL-NEXT: v_add_i32_e32 v11, vcc, v13, v111307; GISEL-NEXT: v_mul_lo_u32 v13, v9, v101308; GISEL-NEXT: v_mul_hi_u32 v12, v9, v121309; GISEL-NEXT: v_mul_hi_u32 v14, v6, v101310; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v121311; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1312; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v141313; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1314; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v141315; GISEL-NEXT: v_add_i32_e32 v11, vcc, v12, v111316; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1317; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v121318; GISEL-NEXT: v_mul_hi_u32 v10, v9, v101319; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v121320; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v111321; GISEL-NEXT: v_addc_u32_e32 v9, vcc, v9, v10, vcc1322; GISEL-NEXT: v_mul_lo_u32 v10, v1, v61323; GISEL-NEXT: v_mul_lo_u32 v11, v0, v91324; GISEL-NEXT: v_mul_hi_u32 v12, v0, v61325; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v111326; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1327; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v121328; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1329; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101330; GISEL-NEXT: v_mul_lo_u32 v11, v1, v91331; GISEL-NEXT: v_mul_hi_u32 v6, v1, v61332; GISEL-NEXT: v_mul_hi_u32 v12, v0, v91333; GISEL-NEXT: v_add_i32_e32 v6, vcc, v11, v61334; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1335; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v121336; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1337; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v121338; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v101339; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1340; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101341; GISEL-NEXT: v_mul_hi_u32 v9, v1, v91342; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v101343; GISEL-NEXT: v_mul_lo_u32 v10, v7, v61344; GISEL-NEXT: v_mul_lo_u32 v11, v8, v61345; GISEL-NEXT: v_mul_lo_u32 v12, v7, v91346; GISEL-NEXT: v_mul_hi_u32 v13, v7, v61347; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v121348; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v131349; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v101350; GISEL-NEXT: v_subb_u32_e64 v10, s[4:5], v1, v11, vcc1351; GISEL-NEXT: v_sub_i32_e64 v1, s[4:5], v1, v111352; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v10, v81353; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]1354; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v0, v71355; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, -1, s[4:5]1356; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v10, v81357; GISEL-NEXT: v_cndmask_b32_e64 v10, v11, v12, s[4:5]1358; GISEL-NEXT: v_sub_i32_e64 v0, s[4:5], v0, v71359; GISEL-NEXT: v_subb_u32_e32 v1, vcc, v1, v8, vcc1360; GISEL-NEXT: v_subbrev_u32_e64 v1, vcc, 0, v1, s[4:5]1361; GISEL-NEXT: v_add_i32_e32 v11, vcc, 1, v61362; GISEL-NEXT: v_addc_u32_e32 v12, vcc, 0, v9, vcc1363; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v1, v81364; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, -1, vcc1365; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v71366; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc1367; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v1, v81368; GISEL-NEXT: v_cndmask_b32_e32 v0, v13, v0, vcc1369; GISEL-NEXT: v_add_i32_e32 v1, vcc, 1, v111370; GISEL-NEXT: v_addc_u32_e32 v7, vcc, 0, v12, vcc1371; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01372; GISEL-NEXT: v_cndmask_b32_e32 v0, v11, v1, vcc1373; GISEL-NEXT: v_cndmask_b32_e32 v1, v12, v7, vcc1374; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v101375; GISEL-NEXT: v_cndmask_b32_e32 v0, v6, v0, vcc1376; GISEL-NEXT: v_cndmask_b32_e32 v1, v9, v1, vcc1377; GISEL-NEXT: v_cvt_f32_u32_e32 v6, v41378; GISEL-NEXT: v_cvt_f32_u32_e32 v7, v51379; GISEL-NEXT: v_mac_f32_e32 v6, 0x4f800000, v71380; GISEL-NEXT: v_rcp_iflag_f32_e32 v6, v61381; GISEL-NEXT: v_mul_f32_e32 v6, 0x5f7ffffc, v61382; GISEL-NEXT: v_mul_f32_e32 v7, 0x2f800000, v61383; GISEL-NEXT: v_trunc_f32_e32 v7, v71384; GISEL-NEXT: v_mac_f32_e32 v6, 0xcf800000, v71385; GISEL-NEXT: v_cvt_u32_f32_e32 v6, v61386; GISEL-NEXT: v_cvt_u32_f32_e32 v7, v71387; GISEL-NEXT: v_sub_i32_e32 v8, vcc, 0, v41388; GISEL-NEXT: v_subb_u32_e32 v9, vcc, 0, v5, vcc1389; GISEL-NEXT: v_mul_lo_u32 v10, v8, v61390; GISEL-NEXT: v_mul_lo_u32 v11, v9, v61391; GISEL-NEXT: v_mul_lo_u32 v12, v8, v71392; GISEL-NEXT: v_mul_hi_u32 v13, v8, v61393; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v121394; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v131395; GISEL-NEXT: v_mul_lo_u32 v12, v7, v101396; GISEL-NEXT: v_mul_lo_u32 v13, v6, v111397; GISEL-NEXT: v_mul_hi_u32 v14, v6, v101398; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v131399; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1400; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v141401; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1402; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v121403; GISEL-NEXT: v_mul_lo_u32 v13, v7, v111404; GISEL-NEXT: v_mul_hi_u32 v10, v7, v101405; GISEL-NEXT: v_mul_hi_u32 v14, v6, v111406; GISEL-NEXT: v_add_i32_e32 v10, vcc, v13, v101407; GISEL-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1408; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v141409; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1410; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v141411; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v121412; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1413; GISEL-NEXT: v_add_i32_e32 v12, vcc, v13, v121414; GISEL-NEXT: v_mul_hi_u32 v11, v7, v111415; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v121416; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v101417; GISEL-NEXT: v_addc_u32_e32 v7, vcc, v7, v11, vcc1418; GISEL-NEXT: v_mul_lo_u32 v10, v8, v61419; GISEL-NEXT: v_mul_lo_u32 v9, v9, v61420; GISEL-NEXT: v_mul_lo_u32 v11, v8, v71421; GISEL-NEXT: v_mul_hi_u32 v8, v8, v61422; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v111423; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v81424; GISEL-NEXT: v_mul_lo_u32 v9, v7, v101425; GISEL-NEXT: v_mul_lo_u32 v11, v6, v81426; GISEL-NEXT: v_mul_hi_u32 v12, v6, v101427; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v111428; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1429; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v121430; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1431; GISEL-NEXT: v_add_i32_e32 v9, vcc, v11, v91432; GISEL-NEXT: v_mul_lo_u32 v11, v7, v81433; GISEL-NEXT: v_mul_hi_u32 v10, v7, v101434; GISEL-NEXT: v_mul_hi_u32 v12, v6, v81435; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101436; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1437; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v121438; GISEL-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1439; GISEL-NEXT: v_add_i32_e32 v11, vcc, v11, v121440; GISEL-NEXT: v_add_i32_e32 v9, vcc, v10, v91441; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1442; GISEL-NEXT: v_add_i32_e32 v10, vcc, v11, v101443; GISEL-NEXT: v_mul_hi_u32 v8, v7, v81444; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v101445; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v91446; GISEL-NEXT: v_addc_u32_e32 v7, vcc, v7, v8, vcc1447; GISEL-NEXT: v_mul_lo_u32 v8, v3, v61448; GISEL-NEXT: v_mul_lo_u32 v9, v2, v71449; GISEL-NEXT: v_mul_hi_u32 v10, v2, v61450; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v91451; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1452; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v101453; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1454; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v81455; GISEL-NEXT: v_mul_lo_u32 v9, v3, v71456; GISEL-NEXT: v_mul_hi_u32 v6, v3, v61457; GISEL-NEXT: v_mul_hi_u32 v10, v2, v71458; GISEL-NEXT: v_add_i32_e32 v6, vcc, v9, v61459; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc1460; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v101461; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, vcc1462; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v101463; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v81464; GISEL-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1465; GISEL-NEXT: v_add_i32_e32 v8, vcc, v9, v81466; GISEL-NEXT: v_mul_hi_u32 v7, v3, v71467; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v81468; GISEL-NEXT: v_mul_lo_u32 v8, v4, v61469; GISEL-NEXT: v_mul_lo_u32 v9, v5, v61470; GISEL-NEXT: v_mul_lo_u32 v10, v4, v71471; GISEL-NEXT: v_mul_hi_u32 v11, v4, v61472; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v101473; GISEL-NEXT: v_add_i32_e32 v9, vcc, v9, v111474; GISEL-NEXT: v_sub_i32_e32 v2, vcc, v2, v81475; GISEL-NEXT: v_subb_u32_e64 v8, s[4:5], v3, v9, vcc1476; GISEL-NEXT: v_sub_i32_e64 v3, s[4:5], v3, v91477; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v8, v51478; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]1479; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v2, v41480; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]1481; GISEL-NEXT: v_cmp_eq_u32_e64 s[4:5], v8, v51482; GISEL-NEXT: v_cndmask_b32_e64 v8, v9, v10, s[4:5]1483; GISEL-NEXT: v_sub_i32_e64 v2, s[4:5], v2, v41484; GISEL-NEXT: v_subb_u32_e32 v3, vcc, v3, v5, vcc1485; GISEL-NEXT: v_subbrev_u32_e64 v3, vcc, 0, v3, s[4:5]1486; GISEL-NEXT: v_add_i32_e32 v9, vcc, 1, v61487; GISEL-NEXT: v_addc_u32_e32 v10, vcc, 0, v7, vcc1488; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v3, v51489; GISEL-NEXT: v_cndmask_b32_e64 v11, 0, -1, vcc1490; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v2, v41491; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc1492; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, v3, v51493; GISEL-NEXT: v_cndmask_b32_e32 v2, v11, v2, vcc1494; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v91495; GISEL-NEXT: v_addc_u32_e32 v4, vcc, 0, v10, vcc1496; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v21497; GISEL-NEXT: v_cndmask_b32_e32 v2, v9, v3, vcc1498; GISEL-NEXT: v_cndmask_b32_e32 v3, v10, v4, vcc1499; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v81500; GISEL-NEXT: v_cndmask_b32_e32 v2, v6, v2, vcc1501; GISEL-NEXT: v_cndmask_b32_e32 v3, v7, v3, vcc1502; GISEL-NEXT: s_setpc_b64 s[30:31]1503;1504; CGP-LABEL: v_udiv_v2i64_pow2_shl_denom:1505; CGP: ; %bb.0:1506; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1507; CGP-NEXT: v_mov_b32_e32 v8, v01508; CGP-NEXT: v_mov_b32_e32 v9, v11509; CGP-NEXT: v_mov_b32_e32 v5, v21510; CGP-NEXT: v_mov_b32_e32 v7, v31511; CGP-NEXT: v_mov_b32_e32 v10, 0x10001512; CGP-NEXT: v_mov_b32_e32 v11, 01513; CGP-NEXT: v_mov_b32_e32 v0, 01514; CGP-NEXT: v_lshl_b64 v[2:3], v[10:11], v41515; CGP-NEXT: v_or_b32_e32 v1, v9, v31516; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]1517; CGP-NEXT: v_cvt_f32_u32_e32 v4, v21518; CGP-NEXT: ; implicit-def: $vgpr0_vgpr11519; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc1520; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]1521; CGP-NEXT: s_cbranch_execz .LBB8_21522; CGP-NEXT: ; %bb.1:1523; CGP-NEXT: v_cvt_f32_u32_e32 v0, v31524; CGP-NEXT: v_sub_i32_e32 v1, vcc, 0, v21525; CGP-NEXT: v_subb_u32_e32 v12, vcc, 0, v3, vcc1526; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v01527; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v41528; CGP-NEXT: v_mul_f32_e32 v0, 0x5f7ffffc, v01529; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v01530; CGP-NEXT: v_trunc_f32_e32 v4, v41531; CGP-NEXT: v_mac_f32_e32 v0, 0xcf800000, v41532; CGP-NEXT: v_cvt_u32_f32_e32 v4, v41533; CGP-NEXT: v_cvt_u32_f32_e32 v0, v01534; CGP-NEXT: v_mul_lo_u32 v13, v1, v41535; CGP-NEXT: v_mul_lo_u32 v14, v1, v01536; CGP-NEXT: v_mul_lo_u32 v15, v12, v01537; CGP-NEXT: v_mul_hi_u32 v16, v1, v01538; CGP-NEXT: v_add_i32_e32 v13, vcc, v15, v131539; CGP-NEXT: v_mul_lo_u32 v15, v4, v141540; CGP-NEXT: v_mul_hi_u32 v17, v0, v141541; CGP-NEXT: v_mul_hi_u32 v14, v4, v141542; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v161543; CGP-NEXT: v_mul_lo_u32 v16, v0, v131544; CGP-NEXT: v_mul_lo_u32 v18, v4, v131545; CGP-NEXT: v_mul_hi_u32 v19, v0, v131546; CGP-NEXT: v_mul_hi_u32 v13, v4, v131547; CGP-NEXT: v_add_i32_e32 v15, vcc, v15, v161548; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc1549; CGP-NEXT: v_add_i32_e32 v14, vcc, v18, v141550; CGP-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc1551; CGP-NEXT: v_add_i32_e32 v15, vcc, v15, v171552; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1553; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v191554; CGP-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc1555; CGP-NEXT: v_add_i32_e32 v15, vcc, v16, v151556; CGP-NEXT: v_add_i32_e32 v16, vcc, v18, v171557; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v151558; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1559; CGP-NEXT: v_add_i32_e32 v15, vcc, v16, v151560; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v151561; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v141562; CGP-NEXT: v_addc_u32_e32 v4, vcc, v4, v13, vcc1563; CGP-NEXT: v_mul_lo_u32 v13, v1, v01564; CGP-NEXT: v_mul_lo_u32 v12, v12, v01565; CGP-NEXT: v_mul_hi_u32 v14, v1, v01566; CGP-NEXT: v_mul_lo_u32 v1, v1, v41567; CGP-NEXT: v_mul_lo_u32 v15, v4, v131568; CGP-NEXT: v_mul_hi_u32 v16, v0, v131569; CGP-NEXT: v_mul_hi_u32 v13, v4, v131570; CGP-NEXT: v_add_i32_e32 v1, vcc, v12, v11571; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v141572; CGP-NEXT: v_mul_lo_u32 v12, v0, v11573; CGP-NEXT: v_mul_lo_u32 v14, v4, v11574; CGP-NEXT: v_mul_hi_u32 v17, v0, v11575; CGP-NEXT: v_mul_hi_u32 v1, v4, v11576; CGP-NEXT: v_add_i32_e32 v12, vcc, v15, v121577; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1578; CGP-NEXT: v_add_i32_e32 v13, vcc, v14, v131579; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1580; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v161581; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1582; CGP-NEXT: v_add_i32_e32 v13, vcc, v13, v171583; CGP-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc1584; CGP-NEXT: v_add_i32_e32 v12, vcc, v15, v121585; CGP-NEXT: v_add_i32_e32 v14, vcc, v14, v161586; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v121587; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1588; CGP-NEXT: v_add_i32_e32 v13, vcc, v14, v131589; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v131590; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v121591; CGP-NEXT: v_addc_u32_e32 v1, vcc, v4, v1, vcc1592; CGP-NEXT: v_mul_lo_u32 v4, v9, v01593; CGP-NEXT: v_mul_hi_u32 v12, v8, v01594; CGP-NEXT: v_mul_hi_u32 v0, v9, v01595; CGP-NEXT: v_mul_lo_u32 v13, v8, v11596; CGP-NEXT: v_mul_lo_u32 v14, v9, v11597; CGP-NEXT: v_mul_hi_u32 v15, v8, v11598; CGP-NEXT: v_mul_hi_u32 v1, v9, v11599; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v131600; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1601; CGP-NEXT: v_add_i32_e32 v0, vcc, v14, v01602; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1603; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v121604; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1605; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v151606; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1607; CGP-NEXT: v_add_i32_e32 v4, vcc, v13, v41608; CGP-NEXT: v_add_i32_e32 v12, vcc, v14, v121609; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v41610; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1611; CGP-NEXT: v_add_i32_e32 v4, vcc, v12, v41612; CGP-NEXT: v_mul_lo_u32 v12, v2, v01613; CGP-NEXT: v_mul_lo_u32 v13, v3, v01614; CGP-NEXT: v_mul_hi_u32 v14, v2, v01615; CGP-NEXT: v_add_i32_e32 v1, vcc, v1, v41616; CGP-NEXT: v_mul_lo_u32 v4, v2, v11617; CGP-NEXT: v_add_i32_e32 v15, vcc, 1, v01618; CGP-NEXT: v_addc_u32_e32 v16, vcc, 0, v1, vcc1619; CGP-NEXT: v_add_i32_e32 v4, vcc, v13, v41620; CGP-NEXT: v_add_i32_e32 v13, vcc, 1, v151621; CGP-NEXT: v_addc_u32_e32 v17, vcc, 0, v16, vcc1622; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v141623; CGP-NEXT: v_sub_i32_e32 v8, vcc, v8, v121624; CGP-NEXT: v_subb_u32_e64 v12, s[4:5], v9, v4, vcc1625; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v9, v41626; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v8, v21627; CGP-NEXT: v_cndmask_b32_e64 v9, 0, -1, s[4:5]1628; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v12, v31629; CGP-NEXT: v_cndmask_b32_e64 v14, 0, -1, s[4:5]1630; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v3, vcc1631; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v12, v31632; CGP-NEXT: v_cndmask_b32_e32 v9, v14, v9, vcc1633; CGP-NEXT: v_sub_i32_e32 v8, vcc, v8, v21634; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc1635; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v8, v21636; CGP-NEXT: v_cndmask_b32_e64 v2, 0, -1, vcc1637; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v31638; CGP-NEXT: v_cndmask_b32_e64 v8, 0, -1, vcc1639; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v31640; CGP-NEXT: v_cndmask_b32_e32 v2, v8, v2, vcc1641; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v21642; CGP-NEXT: v_cndmask_b32_e32 v2, v15, v13, vcc1643; CGP-NEXT: v_cndmask_b32_e32 v3, v16, v17, vcc1644; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v91645; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v2, vcc1646; CGP-NEXT: v_cndmask_b32_e32 v1, v1, v3, vcc1647; CGP-NEXT: ; implicit-def: $vgpr41648; CGP-NEXT: ; implicit-def: $vgpr2_vgpr31649; CGP-NEXT: ; implicit-def: $vgpr81650; CGP-NEXT: .LBB8_2: ; %Flow11651; CGP-NEXT: s_or_saveexec_b64 s[6:7], s[6:7]1652; CGP-NEXT: v_lshl_b64 v[9:10], v[10:11], v61653; CGP-NEXT: s_xor_b64 exec, exec, s[6:7]1654; CGP-NEXT: s_cbranch_execz .LBB8_41655; CGP-NEXT: ; %bb.3:1656; CGP-NEXT: v_rcp_iflag_f32_e32 v0, v41657; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v21658; CGP-NEXT: v_mov_b32_e32 v1, 01659; CGP-NEXT: v_mul_f32_e32 v0, 0x4f7ffffe, v01660; CGP-NEXT: v_cvt_u32_f32_e32 v0, v01661; CGP-NEXT: v_mul_lo_u32 v3, v3, v01662; CGP-NEXT: v_mul_hi_u32 v3, v0, v31663; CGP-NEXT: v_add_i32_e32 v0, vcc, v0, v31664; CGP-NEXT: v_mul_hi_u32 v0, v8, v01665; CGP-NEXT: v_mul_lo_u32 v3, v0, v21666; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v01667; CGP-NEXT: v_sub_i32_e32 v3, vcc, v8, v31668; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v21669; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc1670; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v3, v21671; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v4, vcc1672; CGP-NEXT: v_add_i32_e32 v4, vcc, 1, v01673; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v3, v21674; CGP-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc1675; CGP-NEXT: .LBB8_4:1676; CGP-NEXT: s_or_b64 exec, exec, s[6:7]1677; CGP-NEXT: v_or_b32_e32 v3, v7, v101678; CGP-NEXT: v_mov_b32_e32 v2, 01679; CGP-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3]1680; CGP-NEXT: v_cvt_f32_u32_e32 v4, v91681; CGP-NEXT: ; implicit-def: $vgpr2_vgpr31682; CGP-NEXT: s_and_saveexec_b64 s[4:5], vcc1683; CGP-NEXT: s_xor_b64 s[6:7], exec, s[4:5]1684; CGP-NEXT: s_cbranch_execnz .LBB8_71685; CGP-NEXT: ; %bb.5: ; %Flow1686; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1687; CGP-NEXT: s_cbranch_execnz .LBB8_81688; CGP-NEXT: .LBB8_6:1689; CGP-NEXT: s_or_b64 exec, exec, s[6:7]1690; CGP-NEXT: s_setpc_b64 s[30:31]1691; CGP-NEXT: .LBB8_7:1692; CGP-NEXT: v_cvt_f32_u32_e32 v2, v101693; CGP-NEXT: v_sub_i32_e32 v3, vcc, 0, v91694; CGP-NEXT: v_subb_u32_e32 v6, vcc, 0, v10, vcc1695; CGP-NEXT: v_mac_f32_e32 v4, 0x4f800000, v21696; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v41697; CGP-NEXT: v_mul_f32_e32 v2, 0x5f7ffffc, v21698; CGP-NEXT: v_mul_f32_e32 v4, 0x2f800000, v21699; CGP-NEXT: v_trunc_f32_e32 v4, v41700; CGP-NEXT: v_mac_f32_e32 v2, 0xcf800000, v41701; CGP-NEXT: v_cvt_u32_f32_e32 v4, v41702; CGP-NEXT: v_cvt_u32_f32_e32 v2, v21703; CGP-NEXT: v_mul_lo_u32 v8, v3, v41704; CGP-NEXT: v_mul_lo_u32 v11, v3, v21705; CGP-NEXT: v_mul_lo_u32 v12, v6, v21706; CGP-NEXT: v_mul_hi_u32 v13, v3, v21707; CGP-NEXT: v_add_i32_e32 v8, vcc, v12, v81708; CGP-NEXT: v_mul_lo_u32 v12, v4, v111709; CGP-NEXT: v_mul_hi_u32 v14, v2, v111710; CGP-NEXT: v_mul_hi_u32 v11, v4, v111711; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v131712; CGP-NEXT: v_mul_lo_u32 v13, v2, v81713; CGP-NEXT: v_mul_lo_u32 v15, v4, v81714; CGP-NEXT: v_mul_hi_u32 v16, v2, v81715; CGP-NEXT: v_mul_hi_u32 v8, v4, v81716; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v131717; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1718; CGP-NEXT: v_add_i32_e32 v11, vcc, v15, v111719; CGP-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1720; CGP-NEXT: v_add_i32_e32 v12, vcc, v12, v141721; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1722; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v161723; CGP-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1724; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v121725; CGP-NEXT: v_add_i32_e32 v13, vcc, v15, v141726; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v121727; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1728; CGP-NEXT: v_add_i32_e32 v12, vcc, v13, v121729; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v121730; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v111731; CGP-NEXT: v_addc_u32_e32 v4, vcc, v4, v8, vcc1732; CGP-NEXT: v_mul_lo_u32 v8, v3, v21733; CGP-NEXT: v_mul_lo_u32 v6, v6, v21734; CGP-NEXT: v_mul_hi_u32 v11, v3, v21735; CGP-NEXT: v_mul_lo_u32 v3, v3, v41736; CGP-NEXT: v_mul_lo_u32 v12, v4, v81737; CGP-NEXT: v_mul_hi_u32 v13, v2, v81738; CGP-NEXT: v_mul_hi_u32 v8, v4, v81739; CGP-NEXT: v_add_i32_e32 v3, vcc, v6, v31740; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v111741; CGP-NEXT: v_mul_lo_u32 v6, v2, v31742; CGP-NEXT: v_mul_lo_u32 v11, v4, v31743; CGP-NEXT: v_mul_hi_u32 v14, v2, v31744; CGP-NEXT: v_mul_hi_u32 v3, v4, v31745; CGP-NEXT: v_add_i32_e32 v6, vcc, v12, v61746; CGP-NEXT: v_cndmask_b32_e64 v12, 0, 1, vcc1747; CGP-NEXT: v_add_i32_e32 v8, vcc, v11, v81748; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1749; CGP-NEXT: v_add_i32_e32 v6, vcc, v6, v131750; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1751; CGP-NEXT: v_add_i32_e32 v8, vcc, v8, v141752; CGP-NEXT: v_cndmask_b32_e64 v13, 0, 1, vcc1753; CGP-NEXT: v_add_i32_e32 v6, vcc, v12, v61754; CGP-NEXT: v_add_i32_e32 v11, vcc, v11, v131755; CGP-NEXT: v_add_i32_e32 v6, vcc, v8, v61756; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1757; CGP-NEXT: v_add_i32_e32 v8, vcc, v11, v81758; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v81759; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v61760; CGP-NEXT: v_addc_u32_e32 v3, vcc, v4, v3, vcc1761; CGP-NEXT: v_mul_lo_u32 v4, v7, v21762; CGP-NEXT: v_mul_hi_u32 v6, v5, v21763; CGP-NEXT: v_mul_hi_u32 v2, v7, v21764; CGP-NEXT: v_mul_lo_u32 v8, v5, v31765; CGP-NEXT: v_mul_lo_u32 v11, v7, v31766; CGP-NEXT: v_mul_hi_u32 v12, v5, v31767; CGP-NEXT: v_mul_hi_u32 v3, v7, v31768; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v81769; CGP-NEXT: v_cndmask_b32_e64 v8, 0, 1, vcc1770; CGP-NEXT: v_add_i32_e32 v2, vcc, v11, v21771; CGP-NEXT: v_cndmask_b32_e64 v11, 0, 1, vcc1772; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v61773; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1774; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v121775; CGP-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1776; CGP-NEXT: v_add_i32_e32 v4, vcc, v8, v41777; CGP-NEXT: v_add_i32_e32 v6, vcc, v11, v61778; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v41779; CGP-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc1780; CGP-NEXT: v_add_i32_e32 v4, vcc, v6, v41781; CGP-NEXT: v_mul_lo_u32 v6, v9, v21782; CGP-NEXT: v_mul_lo_u32 v8, v10, v21783; CGP-NEXT: v_mul_hi_u32 v11, v9, v21784; CGP-NEXT: v_add_i32_e32 v3, vcc, v3, v41785; CGP-NEXT: v_mul_lo_u32 v4, v9, v31786; CGP-NEXT: v_add_i32_e32 v12, vcc, 1, v21787; CGP-NEXT: v_addc_u32_e32 v13, vcc, 0, v3, vcc1788; CGP-NEXT: v_add_i32_e32 v4, vcc, v8, v41789; CGP-NEXT: v_add_i32_e32 v8, vcc, 1, v121790; CGP-NEXT: v_addc_u32_e32 v14, vcc, 0, v13, vcc1791; CGP-NEXT: v_add_i32_e32 v4, vcc, v4, v111792; CGP-NEXT: v_sub_i32_e32 v5, vcc, v5, v61793; CGP-NEXT: v_subb_u32_e64 v6, s[4:5], v7, v4, vcc1794; CGP-NEXT: v_sub_i32_e64 v4, s[4:5], v7, v41795; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v5, v91796; CGP-NEXT: v_cndmask_b32_e64 v7, 0, -1, s[4:5]1797; CGP-NEXT: v_cmp_ge_u32_e64 s[4:5], v6, v101798; CGP-NEXT: v_cndmask_b32_e64 v11, 0, -1, s[4:5]1799; CGP-NEXT: v_subb_u32_e32 v4, vcc, v4, v10, vcc1800; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v6, v101801; CGP-NEXT: v_cndmask_b32_e32 v6, v11, v7, vcc1802; CGP-NEXT: v_sub_i32_e32 v5, vcc, v5, v91803; CGP-NEXT: v_subbrev_u32_e32 v4, vcc, 0, v4, vcc1804; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v5, v91805; CGP-NEXT: v_cndmask_b32_e64 v5, 0, -1, vcc1806; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v101807; CGP-NEXT: v_cndmask_b32_e64 v7, 0, -1, vcc1808; CGP-NEXT: v_cmp_eq_u32_e32 vcc, v4, v101809; CGP-NEXT: v_cndmask_b32_e32 v4, v7, v5, vcc1810; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v41811; CGP-NEXT: v_cndmask_b32_e32 v4, v12, v8, vcc1812; CGP-NEXT: v_cndmask_b32_e32 v5, v13, v14, vcc1813; CGP-NEXT: v_cmp_ne_u32_e32 vcc, 0, v61814; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc1815; CGP-NEXT: v_cndmask_b32_e32 v3, v3, v5, vcc1816; CGP-NEXT: ; implicit-def: $vgpr41817; CGP-NEXT: ; implicit-def: $vgpr9_vgpr101818; CGP-NEXT: ; implicit-def: $vgpr51819; CGP-NEXT: s_andn2_saveexec_b64 s[6:7], s[6:7]1820; CGP-NEXT: s_cbranch_execz .LBB8_61821; CGP-NEXT: .LBB8_8:1822; CGP-NEXT: v_rcp_iflag_f32_e32 v2, v41823; CGP-NEXT: v_sub_i32_e32 v4, vcc, 0, v91824; CGP-NEXT: v_mov_b32_e32 v3, 01825; CGP-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v21826; CGP-NEXT: v_cvt_u32_f32_e32 v2, v21827; CGP-NEXT: v_mul_lo_u32 v4, v4, v21828; CGP-NEXT: v_mul_hi_u32 v4, v2, v41829; CGP-NEXT: v_add_i32_e32 v2, vcc, v2, v41830; CGP-NEXT: v_mul_hi_u32 v2, v5, v21831; CGP-NEXT: v_mul_lo_u32 v4, v2, v91832; CGP-NEXT: v_add_i32_e32 v6, vcc, 1, v21833; CGP-NEXT: v_sub_i32_e32 v4, vcc, v5, v41834; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v91835; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v6, vcc1836; CGP-NEXT: v_sub_i32_e64 v5, s[4:5], v4, v91837; CGP-NEXT: v_cndmask_b32_e32 v4, v4, v5, vcc1838; CGP-NEXT: v_add_i32_e32 v5, vcc, 1, v21839; CGP-NEXT: v_cmp_ge_u32_e32 vcc, v4, v91840; CGP-NEXT: v_cndmask_b32_e32 v2, v2, v5, vcc1841; CGP-NEXT: s_or_b64 exec, exec, s[6:7]1842; CGP-NEXT: s_setpc_b64 s[30:31]1843 %shl.y = shl <2 x i64> <i64 4096, i64 4096>, %y1844 %r = udiv <2 x i64> %x, %shl.y1845 ret <2 x i64> %r1846}1847 1848define i64 @v_udiv_i64_24bit(i64 %num, i64 %den) {1849; GISEL-LABEL: v_udiv_i64_24bit:1850; GISEL: ; %bb.0:1851; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GISEL-NEXT: v_and_b32_e32 v0, 0xffffff, v01853; GISEL-NEXT: v_and_b32_e32 v1, 0xffffff, v21854; GISEL-NEXT: v_cvt_f32_u32_e32 v2, v11855; GISEL-NEXT: v_sub_i32_e32 v3, vcc, 0, v11856; GISEL-NEXT: v_rcp_iflag_f32_e32 v2, v21857; GISEL-NEXT: v_mul_f32_e32 v2, 0x4f7ffffe, v21858; GISEL-NEXT: v_cvt_u32_f32_e32 v2, v21859; GISEL-NEXT: v_mul_lo_u32 v3, v3, v21860; GISEL-NEXT: v_mul_hi_u32 v3, v2, v31861; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v31862; GISEL-NEXT: v_mul_hi_u32 v2, v0, v21863; GISEL-NEXT: v_mul_lo_u32 v3, v2, v11864; GISEL-NEXT: v_add_i32_e32 v4, vcc, 1, v21865; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v31866; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v11867; GISEL-NEXT: v_cndmask_b32_e32 v2, v2, v4, vcc1868; GISEL-NEXT: v_sub_i32_e64 v3, s[4:5], v0, v11869; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v3, vcc1870; GISEL-NEXT: v_add_i32_e32 v3, vcc, 1, v21871; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v11872; GISEL-NEXT: v_cndmask_b32_e32 v0, v2, v3, vcc1873; GISEL-NEXT: v_mov_b32_e32 v1, 01874; GISEL-NEXT: s_setpc_b64 s[30:31]1875;1876; CGP-LABEL: v_udiv_i64_24bit:1877; CGP: ; %bb.0:1878; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1879; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v01880; CGP-NEXT: v_and_b32_e32 v1, 0xffffff, v21881; CGP-NEXT: v_cvt_f32_u32_e32 v0, v01882; CGP-NEXT: v_cvt_f32_u32_e32 v1, v11883; CGP-NEXT: v_rcp_f32_e32 v2, v11884; CGP-NEXT: v_mul_f32_e32 v2, v0, v21885; CGP-NEXT: v_trunc_f32_e32 v2, v21886; CGP-NEXT: v_mad_f32 v0, -v2, v1, v01887; CGP-NEXT: v_cvt_u32_f32_e32 v2, v21888; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v0|, v11889; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]1890; CGP-NEXT: v_add_i32_e32 v0, vcc, v2, v01891; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v01892; CGP-NEXT: v_mov_b32_e32 v1, 01893; CGP-NEXT: s_setpc_b64 s[30:31]1894 %num.mask = and i64 %num, 167772151895 %den.mask = and i64 %den, 167772151896 %result = udiv i64 %num.mask, %den.mask1897 ret i64 %result1898}1899 1900define <2 x i64> @v_udiv_v2i64_24bit(<2 x i64> %num, <2 x i64> %den) {1901; GISEL-LABEL: v_udiv_v2i64_24bit:1902; GISEL: ; %bb.0:1903; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1904; GISEL-NEXT: v_and_b32_e32 v3, 0xffffff, v41905; GISEL-NEXT: v_and_b32_e32 v1, 0xffffff, v61906; GISEL-NEXT: v_cvt_f32_ubyte0_e32 v6, 01907; GISEL-NEXT: v_cvt_f32_u32_e32 v7, v31908; GISEL-NEXT: v_sub_i32_e32 v4, vcc, 0, v31909; GISEL-NEXT: v_subb_u32_e64 v5, s[4:5], 0, 0, vcc1910; GISEL-NEXT: v_cvt_f32_u32_e32 v8, v11911; GISEL-NEXT: v_sub_i32_e32 v9, vcc, 0, v11912; GISEL-NEXT: v_subb_u32_e64 v10, s[4:5], 0, 0, vcc1913; GISEL-NEXT: v_mac_f32_e32 v7, 0x4f800000, v61914; GISEL-NEXT: v_mac_f32_e32 v8, 0x4f800000, v61915; GISEL-NEXT: v_rcp_iflag_f32_e32 v6, v71916; GISEL-NEXT: v_rcp_iflag_f32_e32 v7, v81917; GISEL-NEXT: v_mul_f32_e32 v6, 0x5f7ffffc, v61918; GISEL-NEXT: v_mul_f32_e32 v7, 0x5f7ffffc, v71919; GISEL-NEXT: v_mul_f32_e32 v8, 0x2f800000, v61920; GISEL-NEXT: v_mul_f32_e32 v11, 0x2f800000, v71921; GISEL-NEXT: v_trunc_f32_e32 v8, v81922; GISEL-NEXT: v_trunc_f32_e32 v11, v111923; GISEL-NEXT: v_mac_f32_e32 v6, 0xcf800000, v81924; GISEL-NEXT: v_cvt_u32_f32_e32 v8, v81925; GISEL-NEXT: v_mac_f32_e32 v7, 0xcf800000, v111926; GISEL-NEXT: v_cvt_u32_f32_e32 v11, v111927; GISEL-NEXT: v_cvt_u32_f32_e32 v12, v61928; GISEL-NEXT: v_mul_lo_u32 v6, v4, v81929; GISEL-NEXT: v_cvt_u32_f32_e32 v7, v71930; GISEL-NEXT: v_mul_lo_u32 v13, v9, v111931; GISEL-NEXT: v_mul_lo_u32 v14, v4, v121932; GISEL-NEXT: v_mul_lo_u32 v15, v5, v121933; GISEL-NEXT: v_mul_hi_u32 v16, v4, v121934; GISEL-NEXT: v_mul_lo_u32 v17, v9, v71935; GISEL-NEXT: v_mul_lo_u32 v18, v10, v71936; GISEL-NEXT: v_mul_hi_u32 v19, v9, v71937; GISEL-NEXT: v_add_i32_e32 v6, vcc, v15, v61938; GISEL-NEXT: v_mul_lo_u32 v15, v8, v141939; GISEL-NEXT: v_add_i32_e32 v13, vcc, v18, v131940; GISEL-NEXT: v_mul_hi_u32 v18, v12, v141941; GISEL-NEXT: v_mul_hi_u32 v14, v8, v141942; GISEL-NEXT: v_add_i32_e32 v16, vcc, v6, v161943; GISEL-NEXT: v_mul_lo_u32 v6, v12, v161944; GISEL-NEXT: v_add_i32_e32 v6, vcc, v15, v61945; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, vcc1946; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v181947; GISEL-NEXT: v_mul_lo_u32 v6, v11, v171948; GISEL-NEXT: v_mul_hi_u32 v18, v7, v171949; GISEL-NEXT: v_mul_hi_u32 v17, v11, v171950; GISEL-NEXT: v_add_i32_e64 v13, s[4:5], v13, v191951; GISEL-NEXT: v_mul_lo_u32 v19, v7, v131952; GISEL-NEXT: v_add_i32_e64 v6, s[4:5], v6, v191953; GISEL-NEXT: v_cndmask_b32_e64 v19, 0, 1, s[4:5]1954; GISEL-NEXT: v_add_i32_e64 v6, s[4:5], v6, v181955; GISEL-NEXT: v_mul_lo_u32 v6, v8, v161956; GISEL-NEXT: v_mul_lo_u32 v18, v11, v131957; GISEL-NEXT: v_add_i32_e64 v17, s[6:7], v18, v171958; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc1959; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v181960; GISEL-NEXT: v_mul_hi_u32 v18, v12, v161961; GISEL-NEXT: v_add_i32_e32 v6, vcc, v6, v141962; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc1963; GISEL-NEXT: v_add_i32_e32 v18, vcc, v6, v181964; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1965; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v61966; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, s[4:5]1967; GISEL-NEXT: v_add_i32_e32 v19, vcc, v19, v61968; GISEL-NEXT: v_mul_hi_u32 v6, v7, v131969; GISEL-NEXT: v_cndmask_b32_e64 v20, 0, 1, s[6:7]1970; GISEL-NEXT: v_add_i32_e32 v17, vcc, v17, v61971; GISEL-NEXT: v_cndmask_b32_e64 v6, 0, 1, vcc1972; GISEL-NEXT: v_add_i32_e32 v20, vcc, v20, v61973; GISEL-NEXT: v_and_b32_e32 v6, 0xffffff, v01974; GISEL-NEXT: v_and_b32_e32 v0, 0xffffff, v21975; GISEL-NEXT: v_mul_hi_u32 v2, v8, v161976; GISEL-NEXT: v_mul_hi_u32 v13, v11, v131977; GISEL-NEXT: v_add_i32_e32 v15, vcc, v18, v151978; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, vcc1979; GISEL-NEXT: v_add_i32_e32 v17, vcc, v17, v191980; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc1981; GISEL-NEXT: v_add_i32_e32 v14, vcc, v14, v161982; GISEL-NEXT: v_add_i32_e32 v16, vcc, v20, v181983; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v141984; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v161985; GISEL-NEXT: v_add_i32_e32 v12, vcc, v12, v151986; GISEL-NEXT: v_addc_u32_e32 v2, vcc, v8, v2, vcc1987; GISEL-NEXT: v_mul_lo_u32 v8, v4, v121988; GISEL-NEXT: v_mul_lo_u32 v5, v5, v121989; GISEL-NEXT: v_mul_hi_u32 v14, v4, v121990; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v171991; GISEL-NEXT: v_addc_u32_e32 v11, vcc, v11, v13, vcc1992; GISEL-NEXT: v_mul_lo_u32 v13, v9, v71993; GISEL-NEXT: v_mul_lo_u32 v10, v10, v71994; GISEL-NEXT: v_mul_hi_u32 v15, v9, v71995; GISEL-NEXT: v_mul_lo_u32 v4, v4, v21996; GISEL-NEXT: v_mul_lo_u32 v16, v2, v81997; GISEL-NEXT: v_mul_hi_u32 v17, v12, v81998; GISEL-NEXT: v_mul_hi_u32 v8, v2, v81999; GISEL-NEXT: v_mul_lo_u32 v9, v9, v112000; GISEL-NEXT: v_mul_lo_u32 v18, v11, v132001; GISEL-NEXT: v_mul_hi_u32 v19, v7, v132002; GISEL-NEXT: v_mul_hi_u32 v13, v11, v132003; GISEL-NEXT: v_add_i32_e32 v4, vcc, v5, v42004; GISEL-NEXT: v_add_i32_e32 v5, vcc, v10, v92005; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v142006; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v152007; GISEL-NEXT: v_mul_lo_u32 v9, v12, v42008; GISEL-NEXT: v_mul_lo_u32 v10, v2, v42009; GISEL-NEXT: v_mul_hi_u32 v14, v12, v42010; GISEL-NEXT: v_mul_hi_u32 v4, v2, v42011; GISEL-NEXT: v_mul_lo_u32 v15, v7, v52012; GISEL-NEXT: v_add_i32_e32 v15, vcc, v18, v152013; GISEL-NEXT: v_cndmask_b32_e64 v18, 0, 1, vcc2014; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v192015; GISEL-NEXT: v_mul_lo_u32 v15, v11, v52016; GISEL-NEXT: v_mul_hi_u32 v19, v7, v52017; GISEL-NEXT: v_mul_hi_u32 v5, v11, v52018; GISEL-NEXT: v_add_i32_e64 v9, s[4:5], v16, v92019; GISEL-NEXT: v_cndmask_b32_e64 v16, 0, 1, s[4:5]2020; GISEL-NEXT: v_add_i32_e64 v8, s[4:5], v10, v82021; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, 1, s[4:5]2022; GISEL-NEXT: v_add_i32_e64 v13, s[4:5], v15, v132023; GISEL-NEXT: v_cndmask_b32_e64 v15, 0, 1, s[4:5]2024; GISEL-NEXT: v_add_i32_e64 v9, s[4:5], v9, v172025; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, s[4:5]2026; GISEL-NEXT: v_add_i32_e64 v8, s[4:5], v8, v142027; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, s[4:5]2028; GISEL-NEXT: v_cndmask_b32_e64 v17, 0, 1, vcc2029; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v192030; GISEL-NEXT: v_cndmask_b32_e64 v19, 0, 1, vcc2031; GISEL-NEXT: v_add_i32_e32 v9, vcc, v16, v92032; GISEL-NEXT: v_add_i32_e32 v10, vcc, v10, v142033; GISEL-NEXT: v_add_i32_e32 v14, vcc, v18, v172034; GISEL-NEXT: v_add_i32_e32 v15, vcc, v15, v192035; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v92036; GISEL-NEXT: v_cndmask_b32_e64 v9, 0, 1, vcc2037; GISEL-NEXT: v_add_i32_e32 v13, vcc, v13, v142038; GISEL-NEXT: v_cndmask_b32_e64 v14, 0, 1, vcc2039; GISEL-NEXT: v_add_i32_e32 v9, vcc, v10, v92040; GISEL-NEXT: v_add_i32_e32 v10, vcc, v15, v142041; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v92042; GISEL-NEXT: v_add_i32_e32 v5, vcc, v5, v102043; GISEL-NEXT: v_add_i32_e32 v8, vcc, v12, v82044; GISEL-NEXT: v_addc_u32_e32 v2, vcc, v2, v4, vcc2045; GISEL-NEXT: v_mul_lo_u32 v4, 0, v82046; GISEL-NEXT: v_mul_hi_u32 v9, v6, v82047; GISEL-NEXT: v_mul_hi_u32 v8, 0, v82048; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v132049; GISEL-NEXT: v_addc_u32_e32 v5, vcc, v11, v5, vcc2050; GISEL-NEXT: v_mul_lo_u32 v10, 0, v72051; GISEL-NEXT: v_mul_hi_u32 v11, v0, v72052; GISEL-NEXT: v_mul_hi_u32 v7, 0, v72053; GISEL-NEXT: v_mul_lo_u32 v12, v6, v22054; GISEL-NEXT: v_mul_lo_u32 v13, 0, v22055; GISEL-NEXT: v_mul_hi_u32 v14, v6, v22056; GISEL-NEXT: v_mul_hi_u32 v15, 0, v22057; GISEL-NEXT: v_mul_lo_u32 v2, v0, v52058; GISEL-NEXT: v_mul_lo_u32 v16, 0, v52059; GISEL-NEXT: v_mul_hi_u32 v17, v0, v52060; GISEL-NEXT: v_mul_hi_u32 v5, 0, v52061; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v122062; GISEL-NEXT: v_add_i32_e32 v8, vcc, v13, v82063; GISEL-NEXT: v_mul_lo_u32 v12, v3, v152064; GISEL-NEXT: v_add_i32_e32 v2, vcc, v10, v22065; GISEL-NEXT: v_add_i32_e32 v7, vcc, v16, v72066; GISEL-NEXT: v_mul_lo_u32 v10, v1, v52067; GISEL-NEXT: v_add_i32_e32 v4, vcc, v4, v92068; GISEL-NEXT: v_cndmask_b32_e64 v4, 0, 1, vcc2069; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v142070; GISEL-NEXT: v_add_i32_e32 v2, vcc, v2, v112071; GISEL-NEXT: v_cndmask_b32_e64 v2, 0, 1, vcc2072; GISEL-NEXT: v_add_i32_e32 v7, vcc, v7, v172073; GISEL-NEXT: v_add_i32_e32 v4, vcc, v8, v42074; GISEL-NEXT: v_add_i32_e32 v2, vcc, v7, v22075; GISEL-NEXT: v_mul_lo_u32 v7, v3, v42076; GISEL-NEXT: v_mul_lo_u32 v8, 0, v42077; GISEL-NEXT: v_mul_hi_u32 v9, v3, v42078; GISEL-NEXT: v_add_i32_e32 v11, vcc, 1, v42079; GISEL-NEXT: v_addc_u32_e32 v13, vcc, 0, v15, vcc2080; GISEL-NEXT: v_mul_lo_u32 v14, v1, v22081; GISEL-NEXT: v_mul_lo_u32 v16, 0, v22082; GISEL-NEXT: v_mul_hi_u32 v17, v1, v22083; GISEL-NEXT: v_add_i32_e32 v18, vcc, 1, v22084; GISEL-NEXT: v_addc_u32_e32 v19, vcc, 0, v5, vcc2085; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v122086; GISEL-NEXT: v_add_i32_e32 v10, vcc, v16, v102087; GISEL-NEXT: v_add_i32_e32 v12, vcc, 1, v112088; GISEL-NEXT: v_addc_u32_e32 v16, vcc, 0, v13, vcc2089; GISEL-NEXT: v_add_i32_e32 v8, vcc, v8, v92090; GISEL-NEXT: v_add_i32_e32 v9, vcc, v10, v172091; GISEL-NEXT: v_sub_i32_e32 v6, vcc, v6, v72092; GISEL-NEXT: v_subb_u32_e64 v7, s[4:5], 0, v8, vcc2093; GISEL-NEXT: v_cmp_ge_u32_e64 s[4:5], v6, v32094; GISEL-NEXT: v_cndmask_b32_e64 v10, 0, -1, s[4:5]2095; GISEL-NEXT: v_sub_i32_e64 v0, s[4:5], v0, v142096; GISEL-NEXT: v_subb_u32_e64 v14, s[6:7], 0, v9, s[4:5]2097; GISEL-NEXT: v_cmp_ge_u32_e64 s[6:7], v0, v12098; GISEL-NEXT: v_cndmask_b32_e64 v17, 0, -1, s[6:7]2099; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v72100; GISEL-NEXT: v_cmp_eq_u32_e64 s[8:9], 0, v142101; GISEL-NEXT: v_add_i32_e64 v7, s[10:11], 1, v182102; GISEL-NEXT: v_addc_u32_e64 v14, s[10:11], 0, v19, s[10:11]2103; GISEL-NEXT: v_sub_i32_e64 v8, s[10:11], 0, v82104; GISEL-NEXT: v_sub_i32_e64 v9, s[10:11], 0, v92105; GISEL-NEXT: v_cndmask_b32_e64 v10, -1, v10, s[6:7]2106; GISEL-NEXT: v_subbrev_u32_e32 v8, vcc, 0, v8, vcc2107; GISEL-NEXT: v_cndmask_b32_e64 v17, -1, v17, s[8:9]2108; GISEL-NEXT: v_subbrev_u32_e64 v9, vcc, 0, v9, s[4:5]2109; GISEL-NEXT: v_sub_i32_e32 v6, vcc, v6, v32110; GISEL-NEXT: v_subbrev_u32_e32 v8, vcc, 0, v8, vcc2111; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v6, v32112; GISEL-NEXT: v_cndmask_b32_e64 v3, 0, -1, vcc2113; GISEL-NEXT: v_sub_i32_e32 v0, vcc, v0, v12114; GISEL-NEXT: v_subbrev_u32_e32 v6, vcc, 0, v9, vcc2115; GISEL-NEXT: v_cmp_ge_u32_e32 vcc, v0, v12116; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, vcc2117; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v82118; GISEL-NEXT: v_cndmask_b32_e32 v1, -1, v3, vcc2119; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v62120; GISEL-NEXT: v_cndmask_b32_e32 v0, -1, v0, vcc2121; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v12122; GISEL-NEXT: v_cndmask_b32_e32 v1, v11, v12, vcc2123; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v02124; GISEL-NEXT: v_cndmask_b32_e64 v3, v18, v7, s[4:5]2125; GISEL-NEXT: v_cndmask_b32_e32 v6, v13, v16, vcc2126; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v102127; GISEL-NEXT: v_cndmask_b32_e32 v0, v4, v1, vcc2128; GISEL-NEXT: v_cndmask_b32_e64 v4, v19, v14, s[4:5]2129; GISEL-NEXT: v_cmp_ne_u32_e64 s[4:5], 0, v172130; GISEL-NEXT: v_cndmask_b32_e64 v2, v2, v3, s[4:5]2131; GISEL-NEXT: v_cndmask_b32_e32 v1, v15, v6, vcc2132; GISEL-NEXT: v_cndmask_b32_e64 v3, v5, v4, s[4:5]2133; GISEL-NEXT: s_setpc_b64 s[30:31]2134;2135; CGP-LABEL: v_udiv_v2i64_24bit:2136; CGP: ; %bb.0:2137; CGP-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2138; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v02139; CGP-NEXT: v_and_b32_e32 v1, 0xffffff, v42140; CGP-NEXT: v_and_b32_e32 v2, 0xffffff, v22141; CGP-NEXT: v_and_b32_e32 v3, 0xffffff, v62142; CGP-NEXT: v_cvt_f32_u32_e32 v0, v02143; CGP-NEXT: v_cvt_f32_u32_e32 v1, v12144; CGP-NEXT: v_cvt_f32_u32_e32 v2, v22145; CGP-NEXT: v_cvt_f32_u32_e32 v3, v32146; CGP-NEXT: v_rcp_f32_e32 v4, v12147; CGP-NEXT: v_rcp_f32_e32 v5, v32148; CGP-NEXT: v_mul_f32_e32 v4, v0, v42149; CGP-NEXT: v_mul_f32_e32 v5, v2, v52150; CGP-NEXT: v_trunc_f32_e32 v4, v42151; CGP-NEXT: v_trunc_f32_e32 v5, v52152; CGP-NEXT: v_mad_f32 v0, -v4, v1, v02153; CGP-NEXT: v_cvt_u32_f32_e32 v4, v42154; CGP-NEXT: v_mad_f32 v2, -v5, v3, v22155; CGP-NEXT: v_cvt_u32_f32_e32 v5, v52156; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v0|, v12157; CGP-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]2158; CGP-NEXT: v_cmp_ge_f32_e64 s[4:5], |v2|, v32159; CGP-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[4:5]2160; CGP-NEXT: v_add_i32_e32 v0, vcc, v4, v02161; CGP-NEXT: v_add_i32_e32 v1, vcc, v5, v12162; CGP-NEXT: v_and_b32_e32 v0, 0xffffff, v02163; CGP-NEXT: v_and_b32_e32 v2, 0xffffff, v12164; CGP-NEXT: v_mov_b32_e32 v1, 02165; CGP-NEXT: v_mov_b32_e32 v3, 02166; CGP-NEXT: s_setpc_b64 s[30:31]2167 %num.mask = and <2 x i64> %num, <i64 16777215, i64 16777215>2168 %den.mask = and <2 x i64> %den, <i64 16777215, i64 16777215>2169 %result = udiv <2 x i64> %num.mask, %den.mask2170 ret <2 x i64> %result2171}2172