2176 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GISEL %s4 5define i128 @fptosi_f64_to_i128(double %x) {6; SDAG-LABEL: fptosi_f64_to_i128:7; SDAG: ; %bb.0: ; %fp-to-i-entry8; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9; SDAG-NEXT: v_mov_b32_e32 v5, v110; SDAG-NEXT: v_bfe_u32 v6, v5, 20, 1111; SDAG-NEXT: v_mov_b32_e32 v7, 012; SDAG-NEXT: s_mov_b64 s[4:5], 0x3fe13; SDAG-NEXT: v_mov_b32_e32 v4, v014; SDAG-NEXT: v_mov_b32_e32 v0, 015; SDAG-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[6:7]16; SDAG-NEXT: v_mov_b32_e32 v2, 017; SDAG-NEXT: v_mov_b32_e32 v1, 018; SDAG-NEXT: v_mov_b32_e32 v3, 019; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc20; SDAG-NEXT: s_cbranch_execz .LBB0_1021; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end22; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffffb81, v623; SDAG-NEXT: v_mov_b32_e32 v1, -124; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc25; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v7, vcc26; SDAG-NEXT: s_movk_i32 s6, 0xff7f27; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v7, vcc28; SDAG-NEXT: s_mov_b32 s7, -129; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]30; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]31; SDAG-NEXT: v_cmp_lt_i64_e32 vcc, -1, v[4:5]32; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]33; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr134; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr335; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]36; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]37; SDAG-NEXT: s_cbranch_execz .LBB0_738; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end939; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc40; SDAG-NEXT: v_add_co_u32_e64 v9, s[4:5], -1, v041; SDAG-NEXT: s_mov_b64 s[4:5], 0x43242; SDAG-NEXT: v_and_b32_e32 v0, 0xfffff, v543; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[6:7]44; SDAG-NEXT: v_cndmask_b32_e64 v8, -1, 0, vcc45; SDAG-NEXT: v_cndmask_b32_e64 v10, -1, 1, vcc46; SDAG-NEXT: v_or_b32_e32 v5, 0x100000, v047; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr148; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr349; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]50; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]51; SDAG-NEXT: s_cbranch_execz .LBB0_452; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else53; SDAG-NEXT: v_sub_u32_e32 v0, 0x473, v654; SDAG-NEXT: v_add_u32_e32 v2, 0xfffffb8d, v655; SDAG-NEXT: v_add_u32_e32 v3, 0xfffffbcd, v656; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[4:5]57; SDAG-NEXT: v_lshlrev_b64 v[6:7], v2, v[4:5]58; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v359; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v360; SDAG-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]61; SDAG-NEXT: v_cndmask_b32_e64 v1, v7, v1, s[4:5]62; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, v1, s[6:7]63; SDAG-NEXT: v_cndmask_b32_e64 v0, v6, v0, s[4:5]64; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v3, s[4:5]65; SDAG-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[6:7]66; SDAG-NEXT: v_mul_lo_u32 v12, v10, v167; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v7, v10, 068; SDAG-NEXT: v_mov_b32_e32 v2, 069; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v4, s[4:5]70; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v13, v10, v[1:2]71; SDAG-NEXT: v_mul_lo_u32 v11, v8, v572; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[6:7], v10, v5, 073; SDAG-NEXT: v_mov_b32_e32 v1, v374; SDAG-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v7, v8, v[1:2]75; SDAG-NEXT: v_add3_u32 v6, v6, v12, v1176; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v9, v7, v[5:6]77; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v4, v278; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, s[4:5]79; SDAG-NEXT: v_mul_lo_u32 v10, v9, v1380; SDAG-NEXT: v_mul_lo_u32 v7, v9, v781; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v8, v[2:3]82; SDAG-NEXT: ; implicit-def: $vgpr883; SDAG-NEXT: ; implicit-def: $vgpr984; SDAG-NEXT: v_add3_u32 v4, v7, v6, v1085; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v2, v586; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v3, v4, s[4:5]87; SDAG-NEXT: ; implicit-def: $vgpr6_vgpr788; SDAG-NEXT: ; implicit-def: $vgpr4_vgpr589; SDAG-NEXT: ; implicit-def: $vgpr1090; SDAG-NEXT: .LBB0_4: ; %Flow91; SDAG-NEXT: s_andn2_saveexec_b64 s[12:13], s[12:13]92; SDAG-NEXT: s_cbranch_execz .LBB0_693; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then1294; SDAG-NEXT: v_sub_u32_e32 v2, 0x433, v695; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]96; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v297; SDAG-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v298; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]99; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, v1, s[4:5]100; SDAG-NEXT: v_cndmask_b32_e64 v6, v0, v4, s[6:7]101; SDAG-NEXT: v_cndmask_b32_e64 v5, v1, v5, s[6:7]102; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v10, 0103; SDAG-NEXT: v_mov_b32_e32 v2, 0104; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v5, v10, v[1:2]105; SDAG-NEXT: v_mov_b32_e32 v1, v3106; SDAG-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v6, v8, v[1:2]107; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v4, v2108; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, s[4:5]109; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v5, v8, v[2:3]110; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v9, v6, v[2:3]111; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v9, v6, v[3:4]112; SDAG-NEXT: v_mad_i32_i24 v3, v9, v5, v3113; SDAG-NEXT: .LBB0_6: ; %Flow1114; SDAG-NEXT: s_or_b64 exec, exec, s[12:13]115; SDAG-NEXT: .LBB0_7: ; %Flow2116; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]117; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then5118; SDAG-NEXT: v_bfrev_b32_e32 v0, 1119; SDAG-NEXT: v_bfrev_b32_e32 v1, -2120; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc121; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc122; SDAG-NEXT: v_mov_b32_e32 v3, v2123; SDAG-NEXT: v_mov_b32_e32 v0, v1124; SDAG-NEXT: v_mov_b32_e32 v2, v1125; SDAG-NEXT: ; %bb.9: ; %Flow3126; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]127; SDAG-NEXT: .LBB0_10: ; %fp-to-i-cleanup128; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]129; SDAG-NEXT: s_setpc_b64 s[30:31]130;131; GISEL-LABEL: fptosi_f64_to_i128:132; GISEL: ; %bb.0: ; %fp-to-i-entry133; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)134; GISEL-NEXT: v_mov_b32_e32 v5, v1135; GISEL-NEXT: v_mov_b32_e32 v4, v0136; GISEL-NEXT: v_lshrrev_b32_e32 v2, 20, v5137; GISEL-NEXT: v_mov_b32_e32 v0, 0x3ff138; GISEL-NEXT: s_mov_b64 s[4:5], 0139; GISEL-NEXT: v_mov_b32_e32 v7, 0140; GISEL-NEXT: v_mov_b32_e32 v1, 0141; GISEL-NEXT: v_and_b32_e32 v6, 0x7ff, v2142; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]143; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]144; GISEL-NEXT: v_mov_b32_e32 v0, s4145; GISEL-NEXT: v_mov_b32_e32 v1, s5146; GISEL-NEXT: v_mov_b32_e32 v2, s6147; GISEL-NEXT: v_mov_b32_e32 v3, s7148; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc149; GISEL-NEXT: s_cbranch_execz .LBB0_10150; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end151; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffffb81, v6152; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff80153; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc154; GISEL-NEXT: v_mov_b32_e32 v3, -1155; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]156; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]157; GISEL-NEXT: v_addc_co_u32_e64 v9, s[6:7], 0, -1, s[6:7]158; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc159; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[8:9]160; GISEL-NEXT: v_cmp_lt_i64_e64 s[4:5], -1, v[4:5]161; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc162; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[8:9]163; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc164; GISEL-NEXT: v_and_b32_e32 v0, 1, v0165; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0166; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3167; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc168; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]169; GISEL-NEXT: s_cbranch_execz .LBB0_7170; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end9171; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -1172; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]173; GISEL-NEXT: v_and_b32_e32 v0, 1, v0174; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]175; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v0176; GISEL-NEXT: v_or_b32_e32 v1, v1, v2177; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v0178; GISEL-NEXT: v_or_b32_e32 v2, v0, v2179; GISEL-NEXT: v_or_b32_e32 v1, v1, v3180; GISEL-NEXT: v_lshlrev_b16_e32 v8, 3, v0181; GISEL-NEXT: v_or_b32_e32 v2, v2, v3182; GISEL-NEXT: v_or_b32_e32 v1, v1, v8183; GISEL-NEXT: v_lshlrev_b16_e32 v9, 4, v0184; GISEL-NEXT: v_or_b32_e32 v2, v2, v8185; GISEL-NEXT: v_or_b32_e32 v1, v1, v9186; GISEL-NEXT: v_lshlrev_b16_e32 v10, 5, v0187; GISEL-NEXT: v_or_b32_e32 v2, v2, v9188; GISEL-NEXT: v_or_b32_e32 v1, v1, v10189; GISEL-NEXT: v_lshlrev_b16_e32 v11, 6, v0190; GISEL-NEXT: v_or_b32_e32 v2, v2, v10191; GISEL-NEXT: v_or_b32_e32 v1, v1, v11192; GISEL-NEXT: v_lshlrev_b16_e32 v12, 7, v0193; GISEL-NEXT: v_or_b32_e32 v2, v2, v11194; GISEL-NEXT: v_or_b32_e32 v1, v1, v12195; GISEL-NEXT: v_lshlrev_b16_e32 v13, 8, v0196; GISEL-NEXT: v_or_b32_e32 v2, v2, v12197; GISEL-NEXT: v_or_b32_e32 v1, v1, v13198; GISEL-NEXT: v_lshlrev_b16_e32 v14, 9, v0199; GISEL-NEXT: v_or_b32_e32 v2, v2, v13200; GISEL-NEXT: v_or_b32_e32 v1, v1, v14201; GISEL-NEXT: v_lshlrev_b16_e32 v15, 10, v0202; GISEL-NEXT: v_or_b32_e32 v2, v2, v14203; GISEL-NEXT: v_or_b32_e32 v1, v1, v15204; GISEL-NEXT: v_lshlrev_b16_e32 v16, 11, v0205; GISEL-NEXT: v_or_b32_e32 v2, v2, v15206; GISEL-NEXT: v_or_b32_e32 v1, v1, v16207; GISEL-NEXT: v_lshlrev_b16_e32 v17, 12, v0208; GISEL-NEXT: v_or_b32_e32 v2, v2, v16209; GISEL-NEXT: v_or_b32_e32 v1, v1, v17210; GISEL-NEXT: v_lshlrev_b16_e32 v18, 13, v0211; GISEL-NEXT: v_or_b32_e32 v2, v2, v17212; GISEL-NEXT: v_or_b32_e32 v1, v1, v18213; GISEL-NEXT: v_lshlrev_b16_e32 v19, 14, v0214; GISEL-NEXT: v_or_b32_e32 v2, v2, v18215; GISEL-NEXT: v_or_b32_e32 v1, v1, v19216; GISEL-NEXT: v_lshlrev_b16_e32 v0, 15, v0217; GISEL-NEXT: v_or_b32_e32 v2, v2, v19218; GISEL-NEXT: v_or_b32_e32 v1, v1, v0219; GISEL-NEXT: v_or_b32_e32 v0, v2, v0220; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0221; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1222; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v0223; GISEL-NEXT: v_lshl_or_b32 v9, v0, 16, v0224; GISEL-NEXT: v_or3_b32 v8, v1, v2, 1225; GISEL-NEXT: v_mov_b32_e32 v0, 0x433226; GISEL-NEXT: v_mov_b32_e32 v1, 0227; GISEL-NEXT: v_mov_b32_e32 v2, 0xfffff228; GISEL-NEXT: s_mov_b32 s6, 0x100000229; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]230; GISEL-NEXT: v_and_or_b32 v5, v5, v2, s6231; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3232; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc233; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]234; GISEL-NEXT: s_cbranch_execz .LBB0_4235; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else236; GISEL-NEXT: v_add_u32_e32 v2, 0xfffffbcd, v6237; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[4:5]238; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2239; GISEL-NEXT: v_cndmask_b32_e32 v10, 0, v0, vcc240; GISEL-NEXT: v_cndmask_b32_e32 v11, 0, v1, vcc241; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v10, v9, 0242; GISEL-NEXT: v_add_u32_e32 v3, 0xfffffb8d, v6243; GISEL-NEXT: v_sub_u32_e32 v6, 64, v2244; GISEL-NEXT: v_lshrrev_b64 v[6:7], v6, v[4:5]245; GISEL-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]246; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v2247; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc248; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v11, v9, v[0:1]249; GISEL-NEXT: v_cndmask_b32_e64 v12, v3, 0, s[6:7]250; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v10, v8, 0251; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v12, v8, v[5:6]252; GISEL-NEXT: v_mul_lo_u32 v13, v11, v9253; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v10, v9, v[1:2]254; GISEL-NEXT: v_mul_lo_u32 v10, v10, v9255; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v11, v8, v[5:6]256; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v10, s[10:11]257; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]258; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v12, v9, v[3:4]259; GISEL-NEXT: v_cndmask_b32_e32 v3, v4, v7, vcc260; GISEL-NEXT: v_cndmask_b32_e64 v7, v3, 0, s[6:7]261; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v7, v8, v[5:6]262; GISEL-NEXT: ; implicit-def: $vgpr6263; GISEL-NEXT: ; implicit-def: $vgpr4_vgpr5264; GISEL-NEXT: ; implicit-def: $vgpr8265; GISEL-NEXT: ; implicit-def: $vgpr9266; GISEL-NEXT: .LBB0_4: ; %Flow267; GISEL-NEXT: s_andn2_saveexec_b64 s[8:9], s[16:17]268; GISEL-NEXT: s_cbranch_execz .LBB0_6269; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then12270; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x433, v6271; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]272; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2273; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc274; GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc275; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v2276; GISEL-NEXT: v_cndmask_b32_e32 v6, v0, v4, vcc277; GISEL-NEXT: v_cndmask_b32_e32 v7, v1, v5, vcc278; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v6, v9, 0279; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v6, v8, 0280; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v7, v9, v[4:5]281; GISEL-NEXT: v_mul_lo_u32 v10, v7, v9282; GISEL-NEXT: v_mad_u64_u32 v[4:5], vcc, v6, v9, v[1:2]283; GISEL-NEXT: v_mul_lo_u32 v6, v6, v9284; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[6:7], v7, v8, v[4:5]285; GISEL-NEXT: v_addc_co_u32_e64 v3, s[6:7], v3, v6, s[6:7]286; GISEL-NEXT: v_addc_co_u32_e32 v3, vcc, v3, v10, vcc287; GISEL-NEXT: .LBB0_6: ; %Flow1288; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]289; GISEL-NEXT: .LBB0_7: ; %Flow2290; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]291; GISEL-NEXT: s_cbranch_execz .LBB0_9292; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then5293; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]294; GISEL-NEXT: v_and_b32_e32 v1, 1, v1295; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]296; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v1297; GISEL-NEXT: v_or_b32_e32 v0, v0, v2298; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v1299; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v1300; GISEL-NEXT: v_or_b32_e32 v2, v1, v2301; GISEL-NEXT: v_or3_b32 v0, v0, v3, v4302; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v1303; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v1304; GISEL-NEXT: v_or3_b32 v2, v2, v3, v4305; GISEL-NEXT: v_or3_b32 v0, v0, v5, v6306; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v1307; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v1308; GISEL-NEXT: v_or3_b32 v2, v2, v5, v6309; GISEL-NEXT: v_or3_b32 v0, v0, v7, v8310; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v1311; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v1312; GISEL-NEXT: v_or3_b32 v2, v2, v7, v8313; GISEL-NEXT: v_or3_b32 v0, v0, v9, v10314; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v1315; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v1316; GISEL-NEXT: v_or3_b32 v2, v2, v9, v10317; GISEL-NEXT: v_or3_b32 v0, v0, v11, v12318; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v1319; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v1320; GISEL-NEXT: v_or3_b32 v2, v2, v11, v12321; GISEL-NEXT: v_or3_b32 v0, v0, v13, v14322; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v1323; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v1324; GISEL-NEXT: v_or3_b32 v2, v2, v13, v14325; GISEL-NEXT: v_or3_b32 v0, v0, v15, v16326; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v1327; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v1328; GISEL-NEXT: v_or3_b32 v2, v2, v15, v16329; GISEL-NEXT: v_or3_b32 v0, v0, v17, v18330; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v1331; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v1332; GISEL-NEXT: v_or3_b32 v2, v2, v17, v18333; GISEL-NEXT: v_or3_b32 v0, v0, v19, v3334; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v1335; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v1336; GISEL-NEXT: v_or3_b32 v2, v2, v19, v3337; GISEL-NEXT: v_or3_b32 v0, v0, v4, v5338; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v1339; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v1340; GISEL-NEXT: v_or3_b32 v2, v2, v4, v5341; GISEL-NEXT: v_or3_b32 v0, v0, v6, v7342; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v1343; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v1344; GISEL-NEXT: v_or3_b32 v2, v2, v6, v7345; GISEL-NEXT: v_or3_b32 v0, v0, v8, v9346; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v1347; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v1348; GISEL-NEXT: v_or3_b32 v2, v2, v8, v9349; GISEL-NEXT: v_or3_b32 v0, v0, v10, v11350; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v1351; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v1352; GISEL-NEXT: v_or3_b32 v2, v2, v10, v11353; GISEL-NEXT: v_or3_b32 v0, v0, v12, v13354; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v1355; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v1356; GISEL-NEXT: v_or3_b32 v2, v2, v12, v13357; GISEL-NEXT: v_or3_b32 v0, v0, v14, v1358; GISEL-NEXT: v_or3_b32 v1, v2, v14, v1359; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v1360; GISEL-NEXT: v_mov_b32_e32 v2, v1361; GISEL-NEXT: .LBB0_9: ; %Flow3362; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]363; GISEL-NEXT: .LBB0_10: ; %fp-to-i-cleanup364; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]365; GISEL-NEXT: s_setpc_b64 s[30:31]366 %cvt = fptosi double %x to i128367 ret i128 %cvt368}369 370define i128 @fptoui_f64_to_i128(double %x) {371; SDAG-LABEL: fptoui_f64_to_i128:372; SDAG: ; %bb.0: ; %fp-to-i-entry373; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)374; SDAG-NEXT: v_mov_b32_e32 v5, v1375; SDAG-NEXT: v_bfe_u32 v6, v5, 20, 11376; SDAG-NEXT: v_mov_b32_e32 v7, 0377; SDAG-NEXT: s_mov_b64 s[4:5], 0x3fe378; SDAG-NEXT: v_mov_b32_e32 v4, v0379; SDAG-NEXT: v_mov_b32_e32 v0, 0380; SDAG-NEXT: v_cmp_lt_u64_e32 vcc, s[4:5], v[6:7]381; SDAG-NEXT: v_mov_b32_e32 v2, 0382; SDAG-NEXT: v_mov_b32_e32 v1, 0383; SDAG-NEXT: v_mov_b32_e32 v3, 0384; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc385; SDAG-NEXT: s_cbranch_execz .LBB1_10386; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end387; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffffb81, v6388; SDAG-NEXT: v_mov_b32_e32 v1, -1389; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc390; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v7, vcc391; SDAG-NEXT: s_movk_i32 s6, 0xff7f392; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v7, vcc393; SDAG-NEXT: s_mov_b32 s7, -1394; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]395; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]396; SDAG-NEXT: v_cmp_lt_i64_e32 vcc, -1, v[4:5]397; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]398; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr1399; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr3400; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]401; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]402; SDAG-NEXT: s_cbranch_execz .LBB1_7403; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end9404; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc405; SDAG-NEXT: v_add_co_u32_e64 v9, s[4:5], -1, v0406; SDAG-NEXT: s_mov_b64 s[4:5], 0x432407; SDAG-NEXT: v_and_b32_e32 v0, 0xfffff, v5408; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[6:7]409; SDAG-NEXT: v_cndmask_b32_e64 v8, -1, 0, vcc410; SDAG-NEXT: v_cndmask_b32_e64 v10, -1, 1, vcc411; SDAG-NEXT: v_or_b32_e32 v5, 0x100000, v0412; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr1413; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr3414; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]415; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]416; SDAG-NEXT: s_cbranch_execz .LBB1_4417; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else418; SDAG-NEXT: v_sub_u32_e32 v0, 0x473, v6419; SDAG-NEXT: v_add_u32_e32 v2, 0xfffffb8d, v6420; SDAG-NEXT: v_add_u32_e32 v3, 0xfffffbcd, v6421; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[4:5]422; SDAG-NEXT: v_lshlrev_b64 v[6:7], v2, v[4:5]423; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v3424; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v3425; SDAG-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]426; SDAG-NEXT: v_cndmask_b32_e64 v1, v7, v1, s[4:5]427; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, v1, s[6:7]428; SDAG-NEXT: v_cndmask_b32_e64 v0, v6, v0, s[4:5]429; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v3, s[4:5]430; SDAG-NEXT: v_cndmask_b32_e64 v5, 0, v0, s[6:7]431; SDAG-NEXT: v_mul_lo_u32 v12, v10, v1432; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v7, v10, 0433; SDAG-NEXT: v_mov_b32_e32 v2, 0434; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v4, s[4:5]435; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v13, v10, v[1:2]436; SDAG-NEXT: v_mul_lo_u32 v11, v8, v5437; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[6:7], v10, v5, 0438; SDAG-NEXT: v_mov_b32_e32 v1, v3439; SDAG-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v7, v8, v[1:2]440; SDAG-NEXT: v_add3_u32 v6, v6, v12, v11441; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v9, v7, v[5:6]442; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v4, v2443; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, s[4:5]444; SDAG-NEXT: v_mul_lo_u32 v10, v9, v13445; SDAG-NEXT: v_mul_lo_u32 v7, v9, v7446; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v13, v8, v[2:3]447; SDAG-NEXT: ; implicit-def: $vgpr8448; SDAG-NEXT: ; implicit-def: $vgpr9449; SDAG-NEXT: v_add3_u32 v4, v7, v6, v10450; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v2, v5451; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v3, v4, s[4:5]452; SDAG-NEXT: ; implicit-def: $vgpr6_vgpr7453; SDAG-NEXT: ; implicit-def: $vgpr4_vgpr5454; SDAG-NEXT: ; implicit-def: $vgpr10455; SDAG-NEXT: .LBB1_4: ; %Flow456; SDAG-NEXT: s_andn2_saveexec_b64 s[12:13], s[12:13]457; SDAG-NEXT: s_cbranch_execz .LBB1_6458; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then12459; SDAG-NEXT: v_sub_u32_e32 v2, 0x433, v6460; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]461; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v2462; SDAG-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v2463; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]464; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, v1, s[4:5]465; SDAG-NEXT: v_cndmask_b32_e64 v6, v0, v4, s[6:7]466; SDAG-NEXT: v_cndmask_b32_e64 v5, v1, v5, s[6:7]467; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v6, v10, 0468; SDAG-NEXT: v_mov_b32_e32 v2, 0469; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v5, v10, v[1:2]470; SDAG-NEXT: v_mov_b32_e32 v1, v3471; SDAG-NEXT: v_mad_u64_u32 v[1:2], s[4:5], v6, v8, v[1:2]472; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v4, v2473; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], 0, 0, s[4:5]474; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v5, v8, v[2:3]475; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v9, v6, v[2:3]476; SDAG-NEXT: v_mad_u64_u32 v[3:4], s[4:5], v9, v6, v[3:4]477; SDAG-NEXT: v_mad_i32_i24 v3, v9, v5, v3478; SDAG-NEXT: .LBB1_6: ; %Flow1479; SDAG-NEXT: s_or_b64 exec, exec, s[12:13]480; SDAG-NEXT: .LBB1_7: ; %Flow2481; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]482; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then5483; SDAG-NEXT: v_bfrev_b32_e32 v0, 1484; SDAG-NEXT: v_bfrev_b32_e32 v1, -2485; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc486; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc487; SDAG-NEXT: v_mov_b32_e32 v3, v2488; SDAG-NEXT: v_mov_b32_e32 v0, v1489; SDAG-NEXT: v_mov_b32_e32 v2, v1490; SDAG-NEXT: ; %bb.9: ; %Flow3491; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]492; SDAG-NEXT: .LBB1_10: ; %fp-to-i-cleanup493; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]494; SDAG-NEXT: s_setpc_b64 s[30:31]495;496; GISEL-LABEL: fptoui_f64_to_i128:497; GISEL: ; %bb.0: ; %fp-to-i-entry498; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GISEL-NEXT: v_mov_b32_e32 v5, v1500; GISEL-NEXT: v_mov_b32_e32 v4, v0501; GISEL-NEXT: v_lshrrev_b32_e32 v2, 20, v5502; GISEL-NEXT: v_mov_b32_e32 v0, 0x3ff503; GISEL-NEXT: s_mov_b64 s[4:5], 0504; GISEL-NEXT: v_mov_b32_e32 v7, 0505; GISEL-NEXT: v_mov_b32_e32 v1, 0506; GISEL-NEXT: v_and_b32_e32 v6, 0x7ff, v2507; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]508; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]509; GISEL-NEXT: v_mov_b32_e32 v0, s4510; GISEL-NEXT: v_mov_b32_e32 v1, s5511; GISEL-NEXT: v_mov_b32_e32 v2, s6512; GISEL-NEXT: v_mov_b32_e32 v3, s7513; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc514; GISEL-NEXT: s_cbranch_execz .LBB1_10515; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end516; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xfffffb81, v6517; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff80518; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc519; GISEL-NEXT: v_mov_b32_e32 v3, -1520; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]521; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]522; GISEL-NEXT: v_addc_co_u32_e64 v9, s[6:7], 0, -1, s[6:7]523; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc524; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[8:9]525; GISEL-NEXT: v_cmp_lt_i64_e64 s[4:5], -1, v[4:5]526; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc527; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[8:9]528; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc529; GISEL-NEXT: v_and_b32_e32 v0, 1, v0530; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0531; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3532; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc533; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]534; GISEL-NEXT: s_cbranch_execz .LBB1_7535; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end9536; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -1537; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]538; GISEL-NEXT: v_and_b32_e32 v0, 1, v0539; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]540; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v0541; GISEL-NEXT: v_or_b32_e32 v1, v1, v2542; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v0543; GISEL-NEXT: v_or_b32_e32 v2, v0, v2544; GISEL-NEXT: v_or_b32_e32 v1, v1, v3545; GISEL-NEXT: v_lshlrev_b16_e32 v8, 3, v0546; GISEL-NEXT: v_or_b32_e32 v2, v2, v3547; GISEL-NEXT: v_or_b32_e32 v1, v1, v8548; GISEL-NEXT: v_lshlrev_b16_e32 v9, 4, v0549; GISEL-NEXT: v_or_b32_e32 v2, v2, v8550; GISEL-NEXT: v_or_b32_e32 v1, v1, v9551; GISEL-NEXT: v_lshlrev_b16_e32 v10, 5, v0552; GISEL-NEXT: v_or_b32_e32 v2, v2, v9553; GISEL-NEXT: v_or_b32_e32 v1, v1, v10554; GISEL-NEXT: v_lshlrev_b16_e32 v11, 6, v0555; GISEL-NEXT: v_or_b32_e32 v2, v2, v10556; GISEL-NEXT: v_or_b32_e32 v1, v1, v11557; GISEL-NEXT: v_lshlrev_b16_e32 v12, 7, v0558; GISEL-NEXT: v_or_b32_e32 v2, v2, v11559; GISEL-NEXT: v_or_b32_e32 v1, v1, v12560; GISEL-NEXT: v_lshlrev_b16_e32 v13, 8, v0561; GISEL-NEXT: v_or_b32_e32 v2, v2, v12562; GISEL-NEXT: v_or_b32_e32 v1, v1, v13563; GISEL-NEXT: v_lshlrev_b16_e32 v14, 9, v0564; GISEL-NEXT: v_or_b32_e32 v2, v2, v13565; GISEL-NEXT: v_or_b32_e32 v1, v1, v14566; GISEL-NEXT: v_lshlrev_b16_e32 v15, 10, v0567; GISEL-NEXT: v_or_b32_e32 v2, v2, v14568; GISEL-NEXT: v_or_b32_e32 v1, v1, v15569; GISEL-NEXT: v_lshlrev_b16_e32 v16, 11, v0570; GISEL-NEXT: v_or_b32_e32 v2, v2, v15571; GISEL-NEXT: v_or_b32_e32 v1, v1, v16572; GISEL-NEXT: v_lshlrev_b16_e32 v17, 12, v0573; GISEL-NEXT: v_or_b32_e32 v2, v2, v16574; GISEL-NEXT: v_or_b32_e32 v1, v1, v17575; GISEL-NEXT: v_lshlrev_b16_e32 v18, 13, v0576; GISEL-NEXT: v_or_b32_e32 v2, v2, v17577; GISEL-NEXT: v_or_b32_e32 v1, v1, v18578; GISEL-NEXT: v_lshlrev_b16_e32 v19, 14, v0579; GISEL-NEXT: v_or_b32_e32 v2, v2, v18580; GISEL-NEXT: v_or_b32_e32 v1, v1, v19581; GISEL-NEXT: v_lshlrev_b16_e32 v0, 15, v0582; GISEL-NEXT: v_or_b32_e32 v2, v2, v19583; GISEL-NEXT: v_or_b32_e32 v1, v1, v0584; GISEL-NEXT: v_or_b32_e32 v0, v2, v0585; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0586; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1587; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v0588; GISEL-NEXT: v_lshl_or_b32 v9, v0, 16, v0589; GISEL-NEXT: v_or3_b32 v8, v1, v2, 1590; GISEL-NEXT: v_mov_b32_e32 v0, 0x433591; GISEL-NEXT: v_mov_b32_e32 v1, 0592; GISEL-NEXT: v_mov_b32_e32 v2, 0xfffff593; GISEL-NEXT: s_mov_b32 s6, 0x100000594; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]595; GISEL-NEXT: v_and_or_b32 v5, v5, v2, s6596; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3597; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc598; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]599; GISEL-NEXT: s_cbranch_execz .LBB1_4600; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else601; GISEL-NEXT: v_add_u32_e32 v2, 0xfffffbcd, v6602; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[4:5]603; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2604; GISEL-NEXT: v_cndmask_b32_e32 v10, 0, v0, vcc605; GISEL-NEXT: v_cndmask_b32_e32 v11, 0, v1, vcc606; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v10, v9, 0607; GISEL-NEXT: v_add_u32_e32 v3, 0xfffffb8d, v6608; GISEL-NEXT: v_sub_u32_e32 v6, 64, v2609; GISEL-NEXT: v_lshrrev_b64 v[6:7], v6, v[4:5]610; GISEL-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]611; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v2612; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc613; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v11, v9, v[0:1]614; GISEL-NEXT: v_cndmask_b32_e64 v12, v3, 0, s[6:7]615; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v10, v8, 0616; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v12, v8, v[5:6]617; GISEL-NEXT: v_mul_lo_u32 v13, v11, v9618; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v10, v9, v[1:2]619; GISEL-NEXT: v_mul_lo_u32 v10, v10, v9620; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v11, v8, v[5:6]621; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v10, s[10:11]622; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]623; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v12, v9, v[3:4]624; GISEL-NEXT: v_cndmask_b32_e32 v3, v4, v7, vcc625; GISEL-NEXT: v_cndmask_b32_e64 v7, v3, 0, s[6:7]626; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v7, v8, v[5:6]627; GISEL-NEXT: ; implicit-def: $vgpr6628; GISEL-NEXT: ; implicit-def: $vgpr4_vgpr5629; GISEL-NEXT: ; implicit-def: $vgpr8630; GISEL-NEXT: ; implicit-def: $vgpr9631; GISEL-NEXT: .LBB1_4: ; %Flow632; GISEL-NEXT: s_andn2_saveexec_b64 s[8:9], s[16:17]633; GISEL-NEXT: s_cbranch_execz .LBB1_6634; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then12635; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x433, v6636; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]637; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2638; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc639; GISEL-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc640; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v2641; GISEL-NEXT: v_cndmask_b32_e32 v6, v0, v4, vcc642; GISEL-NEXT: v_cndmask_b32_e32 v7, v1, v5, vcc643; GISEL-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v6, v9, 0644; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v6, v8, 0645; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v7, v9, v[4:5]646; GISEL-NEXT: v_mul_lo_u32 v10, v7, v9647; GISEL-NEXT: v_mad_u64_u32 v[4:5], vcc, v6, v9, v[1:2]648; GISEL-NEXT: v_mul_lo_u32 v6, v6, v9649; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[6:7], v7, v8, v[4:5]650; GISEL-NEXT: v_addc_co_u32_e64 v3, s[6:7], v3, v6, s[6:7]651; GISEL-NEXT: v_addc_co_u32_e32 v3, vcc, v3, v10, vcc652; GISEL-NEXT: .LBB1_6: ; %Flow1653; GISEL-NEXT: s_or_b64 exec, exec, s[8:9]654; GISEL-NEXT: .LBB1_7: ; %Flow2655; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]656; GISEL-NEXT: s_cbranch_execz .LBB1_9657; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then5658; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]659; GISEL-NEXT: v_and_b32_e32 v1, 1, v1660; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]661; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v1662; GISEL-NEXT: v_or_b32_e32 v0, v0, v2663; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v1664; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v1665; GISEL-NEXT: v_or_b32_e32 v2, v1, v2666; GISEL-NEXT: v_or3_b32 v0, v0, v3, v4667; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v1668; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v1669; GISEL-NEXT: v_or3_b32 v2, v2, v3, v4670; GISEL-NEXT: v_or3_b32 v0, v0, v5, v6671; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v1672; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v1673; GISEL-NEXT: v_or3_b32 v2, v2, v5, v6674; GISEL-NEXT: v_or3_b32 v0, v0, v7, v8675; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v1676; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v1677; GISEL-NEXT: v_or3_b32 v2, v2, v7, v8678; GISEL-NEXT: v_or3_b32 v0, v0, v9, v10679; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v1680; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v1681; GISEL-NEXT: v_or3_b32 v2, v2, v9, v10682; GISEL-NEXT: v_or3_b32 v0, v0, v11, v12683; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v1684; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v1685; GISEL-NEXT: v_or3_b32 v2, v2, v11, v12686; GISEL-NEXT: v_or3_b32 v0, v0, v13, v14687; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v1688; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v1689; GISEL-NEXT: v_or3_b32 v2, v2, v13, v14690; GISEL-NEXT: v_or3_b32 v0, v0, v15, v16691; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v1692; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v1693; GISEL-NEXT: v_or3_b32 v2, v2, v15, v16694; GISEL-NEXT: v_or3_b32 v0, v0, v17, v18695; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v1696; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v1697; GISEL-NEXT: v_or3_b32 v2, v2, v17, v18698; GISEL-NEXT: v_or3_b32 v0, v0, v19, v3699; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v1700; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v1701; GISEL-NEXT: v_or3_b32 v2, v2, v19, v3702; GISEL-NEXT: v_or3_b32 v0, v0, v4, v5703; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v1704; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v1705; GISEL-NEXT: v_or3_b32 v2, v2, v4, v5706; GISEL-NEXT: v_or3_b32 v0, v0, v6, v7707; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v1708; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v1709; GISEL-NEXT: v_or3_b32 v2, v2, v6, v7710; GISEL-NEXT: v_or3_b32 v0, v0, v8, v9711; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v1712; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v1713; GISEL-NEXT: v_or3_b32 v2, v2, v8, v9714; GISEL-NEXT: v_or3_b32 v0, v0, v10, v11715; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v1716; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v1717; GISEL-NEXT: v_or3_b32 v2, v2, v10, v11718; GISEL-NEXT: v_or3_b32 v0, v0, v12, v13719; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v1720; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v1721; GISEL-NEXT: v_or3_b32 v2, v2, v12, v13722; GISEL-NEXT: v_or3_b32 v0, v0, v14, v1723; GISEL-NEXT: v_or3_b32 v1, v2, v14, v1724; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v1725; GISEL-NEXT: v_mov_b32_e32 v2, v1726; GISEL-NEXT: .LBB1_9: ; %Flow3727; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]728; GISEL-NEXT: .LBB1_10: ; %fp-to-i-cleanup729; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]730; GISEL-NEXT: s_setpc_b64 s[30:31]731 %cvt = fptoui double %x to i128732 ret i128 %cvt733}734 735define i128 @fptosi_f32_to_i128(float %x) {736; SDAG-LABEL: fptosi_f32_to_i128:737; SDAG: ; %bb.0: ; %fp-to-i-entry738; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)739; SDAG-NEXT: v_mov_b32_e32 v4, v0740; SDAG-NEXT: v_mov_b32_e32 v0, 0741; SDAG-NEXT: v_bfe_u32 v5, v4, 23, 8742; SDAG-NEXT: s_movk_i32 s4, 0x7e743; SDAG-NEXT: v_mov_b32_e32 v2, 0744; SDAG-NEXT: v_mov_b32_e32 v1, 0745; SDAG-NEXT: v_mov_b32_e32 v3, 0746; SDAG-NEXT: v_cmp_lt_u32_e32 vcc, s4, v5747; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc748; SDAG-NEXT: s_cbranch_execz .LBB2_10749; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end750; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v5751; SDAG-NEXT: v_mov_b32_e32 v1, -1752; SDAG-NEXT: v_mov_b32_e32 v6, 0753; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc754; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v6, vcc755; SDAG-NEXT: s_movk_i32 s6, 0xff7f756; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v6, vcc757; SDAG-NEXT: s_mov_b32 s7, -1758; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]759; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]760; SDAG-NEXT: v_cmp_lt_i32_e32 vcc, -1, v4761; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]762; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr1763; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr3764; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]765; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]766; SDAG-NEXT: s_cbranch_execz .LBB2_7767; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end9768; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc769; SDAG-NEXT: v_add_co_u32_e64 v10, s[4:5], -1, v0770; SDAG-NEXT: s_mov_b64 s[4:5], 0x95771; SDAG-NEXT: v_and_b32_e32 v0, 0x7fffff, v4772; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[5:6]773; SDAG-NEXT: v_cndmask_b32_e64 v9, -1, 0, vcc774; SDAG-NEXT: v_cndmask_b32_e64 v11, -1, 1, vcc775; SDAG-NEXT: v_or_b32_e32 v7, 0x800000, v0776; SDAG-NEXT: v_mov_b32_e32 v8, v6777; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr1778; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr3779; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]780; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]781; SDAG-NEXT: s_cbranch_execz .LBB2_4782; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else783; SDAG-NEXT: v_sub_u32_e32 v0, 0xd6, v5784; SDAG-NEXT: v_add_u32_e32 v2, 0xffffff2a, v5785; SDAG-NEXT: v_add_u32_e32 v4, 0xffffff6a, v5786; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[7:8]787; SDAG-NEXT: v_lshlrev_b64 v[2:3], v2, v[7:8]788; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v4789; SDAG-NEXT: v_cndmask_b32_e64 v1, v3, v1, s[4:5]790; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v4791; SDAG-NEXT: v_cndmask_b32_e64 v3, 0, v1, s[6:7]792; SDAG-NEXT: v_cndmask_b32_e64 v2, v2, v0, s[4:5]793; SDAG-NEXT: v_lshlrev_b64 v[0:1], v4, v[7:8]794; SDAG-NEXT: v_cndmask_b32_e64 v2, 0, v2, s[6:7]795; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v0, s[4:5]796; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v7, v11, 0797; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v1, s[4:5]798; SDAG-NEXT: v_mul_lo_u32 v8, v9, v2799; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v11, v[5:6]800; SDAG-NEXT: v_mul_lo_u32 v12, v11, v3801; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v11, v2, 0802; SDAG-NEXT: v_mov_b32_e32 v5, v0803; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v7, v9, v[5:6]804; SDAG-NEXT: v_add3_u32 v3, v3, v12, v8805; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v10, v7, v[2:3]806; SDAG-NEXT: v_add_co_u32_e64 v0, s[4:5], v1, v6807; SDAG-NEXT: v_addc_co_u32_e64 v1, s[4:5], 0, 0, s[4:5]808; SDAG-NEXT: v_mul_lo_u32 v8, v10, v13809; SDAG-NEXT: v_mul_lo_u32 v7, v10, v7810; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v9, v[0:1]811; SDAG-NEXT: ; implicit-def: $vgpr11812; SDAG-NEXT: ; implicit-def: $vgpr9813; SDAG-NEXT: ; implicit-def: $vgpr10814; SDAG-NEXT: v_add3_u32 v3, v7, v3, v8815; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v0, v2816; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v1, v3, s[4:5]817; SDAG-NEXT: v_mov_b32_e32 v0, v4818; SDAG-NEXT: v_mov_b32_e32 v1, v5819; SDAG-NEXT: ; implicit-def: $vgpr5_vgpr6820; SDAG-NEXT: ; implicit-def: $vgpr7_vgpr8821; SDAG-NEXT: .LBB2_4: ; %Flow822; SDAG-NEXT: s_andn2_saveexec_b64 s[6:7], s[12:13]823; SDAG-NEXT: s_cbranch_execz .LBB2_6824; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then12825; SDAG-NEXT: v_sub_u32_e32 v2, 0x96, v5826; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[7:8]827; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v2828; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]829; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v2830; SDAG-NEXT: v_cndmask_b32_e64 v3, v0, v7, s[4:5]831; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v3, v11, 0832; SDAG-NEXT: v_mov_b32_e32 v2, 0833; SDAG-NEXT: v_mov_b32_e32 v6, v2834; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v3, v9, v[1:2]835; SDAG-NEXT: v_mad_i64_i32 v[2:3], s[4:5], v10, v3, v[5:6]836; SDAG-NEXT: v_mov_b32_e32 v1, v4837; SDAG-NEXT: .LBB2_6: ; %Flow1838; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]839; SDAG-NEXT: .LBB2_7: ; %Flow2840; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]841; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then5842; SDAG-NEXT: v_bfrev_b32_e32 v0, 1843; SDAG-NEXT: v_bfrev_b32_e32 v1, -2844; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc845; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc846; SDAG-NEXT: v_mov_b32_e32 v3, v2847; SDAG-NEXT: v_mov_b32_e32 v0, v1848; SDAG-NEXT: v_mov_b32_e32 v2, v1849; SDAG-NEXT: ; %bb.9: ; %Flow3850; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]851; SDAG-NEXT: .LBB2_10: ; %fp-to-i-cleanup852; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]853; SDAG-NEXT: s_setpc_b64 s[30:31]854;855; GISEL-LABEL: fptosi_f32_to_i128:856; GISEL: ; %bb.0: ; %fp-to-i-entry857; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)858; GISEL-NEXT: v_mov_b32_e32 v4, v0859; GISEL-NEXT: v_mov_b32_e32 v5, 0860; GISEL-NEXT: v_lshrrev_b64 v[0:1], 23, v[4:5]861; GISEL-NEXT: s_mov_b64 s[4:5], 0862; GISEL-NEXT: v_bfe_u32 v6, v0, 0, 8863; GISEL-NEXT: v_mov_b32_e32 v0, 0x7f864; GISEL-NEXT: v_mov_b32_e32 v1, 0865; GISEL-NEXT: v_mov_b32_e32 v7, v5866; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]867; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]868; GISEL-NEXT: v_mov_b32_e32 v0, s4869; GISEL-NEXT: v_mov_b32_e32 v1, s5870; GISEL-NEXT: v_mov_b32_e32 v2, s6871; GISEL-NEXT: v_mov_b32_e32 v3, s7872; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc873; GISEL-NEXT: s_cbranch_execz .LBB2_10874; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end875; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v6876; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff80877; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc878; GISEL-NEXT: v_mov_b32_e32 v3, -1879; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]880; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]881; GISEL-NEXT: v_addc_co_u32_e64 v9, s[6:7], 0, -1, s[6:7]882; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc883; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[8:9]884; GISEL-NEXT: v_cmp_lt_i32_e64 s[4:5], -1, v4885; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc886; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[8:9]887; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc888; GISEL-NEXT: v_and_b32_e32 v0, 1, v0889; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0890; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3891; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc892; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]893; GISEL-NEXT: s_cbranch_execz .LBB2_7894; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end9895; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -1896; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]897; GISEL-NEXT: v_and_b32_e32 v0, 1, v0898; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]899; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v0900; GISEL-NEXT: v_or_b32_e32 v1, v1, v2901; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v0902; GISEL-NEXT: v_or_b32_e32 v2, v0, v2903; GISEL-NEXT: v_or_b32_e32 v1, v1, v3904; GISEL-NEXT: v_lshlrev_b16_e32 v8, 3, v0905; GISEL-NEXT: v_or_b32_e32 v2, v2, v3906; GISEL-NEXT: v_or_b32_e32 v1, v1, v8907; GISEL-NEXT: v_lshlrev_b16_e32 v9, 4, v0908; GISEL-NEXT: v_or_b32_e32 v2, v2, v8909; GISEL-NEXT: v_or_b32_e32 v1, v1, v9910; GISEL-NEXT: v_lshlrev_b16_e32 v10, 5, v0911; GISEL-NEXT: v_or_b32_e32 v2, v2, v9912; GISEL-NEXT: v_or_b32_e32 v1, v1, v10913; GISEL-NEXT: v_lshlrev_b16_e32 v11, 6, v0914; GISEL-NEXT: v_or_b32_e32 v2, v2, v10915; GISEL-NEXT: v_or_b32_e32 v1, v1, v11916; GISEL-NEXT: v_lshlrev_b16_e32 v12, 7, v0917; GISEL-NEXT: v_or_b32_e32 v2, v2, v11918; GISEL-NEXT: v_or_b32_e32 v1, v1, v12919; GISEL-NEXT: v_lshlrev_b16_e32 v13, 8, v0920; GISEL-NEXT: v_or_b32_e32 v2, v2, v12921; GISEL-NEXT: v_or_b32_e32 v1, v1, v13922; GISEL-NEXT: v_lshlrev_b16_e32 v14, 9, v0923; GISEL-NEXT: v_or_b32_e32 v2, v2, v13924; GISEL-NEXT: v_or_b32_e32 v1, v1, v14925; GISEL-NEXT: v_lshlrev_b16_e32 v15, 10, v0926; GISEL-NEXT: v_or_b32_e32 v2, v2, v14927; GISEL-NEXT: v_or_b32_e32 v1, v1, v15928; GISEL-NEXT: v_lshlrev_b16_e32 v16, 11, v0929; GISEL-NEXT: v_or_b32_e32 v2, v2, v15930; GISEL-NEXT: v_or_b32_e32 v1, v1, v16931; GISEL-NEXT: v_lshlrev_b16_e32 v17, 12, v0932; GISEL-NEXT: v_or_b32_e32 v2, v2, v16933; GISEL-NEXT: v_or_b32_e32 v1, v1, v17934; GISEL-NEXT: v_lshlrev_b16_e32 v18, 13, v0935; GISEL-NEXT: v_or_b32_e32 v2, v2, v17936; GISEL-NEXT: v_or_b32_e32 v1, v1, v18937; GISEL-NEXT: v_lshlrev_b16_e32 v19, 14, v0938; GISEL-NEXT: v_or_b32_e32 v2, v2, v18939; GISEL-NEXT: v_or_b32_e32 v1, v1, v19940; GISEL-NEXT: v_lshlrev_b16_e32 v0, 15, v0941; GISEL-NEXT: v_or_b32_e32 v2, v2, v19942; GISEL-NEXT: v_or_b32_e32 v1, v1, v0943; GISEL-NEXT: v_or_b32_e32 v0, v2, v0944; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v0945; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v1946; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v0947; GISEL-NEXT: v_lshl_or_b32 v8, v0, 16, v0948; GISEL-NEXT: v_or3_b32 v9, v1, v2, 1949; GISEL-NEXT: v_mov_b32_e32 v0, 0x96950; GISEL-NEXT: v_mov_b32_e32 v1, 0951; GISEL-NEXT: v_and_b32_e32 v2, 0x7fffff, v4952; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]953; GISEL-NEXT: v_or_b32_e32 v4, 0x800000, v2954; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3955; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc956; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]957; GISEL-NEXT: s_cbranch_execz .LBB2_4958; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else959; GISEL-NEXT: v_add_u32_e32 v2, 0xffffff6a, v6960; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[4:5]961; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2962; GISEL-NEXT: v_cndmask_b32_e32 v10, 0, v0, vcc963; GISEL-NEXT: v_cndmask_b32_e32 v11, 0, v1, vcc964; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v10, v8, 0965; GISEL-NEXT: v_add_u32_e32 v3, 0xffffff2a, v6966; GISEL-NEXT: v_sub_u32_e32 v6, 64, v2967; GISEL-NEXT: v_lshrrev_b64 v[6:7], v6, v[4:5]968; GISEL-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]969; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v2970; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc971; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v11, v8, v[0:1]972; GISEL-NEXT: v_cndmask_b32_e64 v12, v3, 0, s[6:7]973; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v10, v9, 0974; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v12, v9, v[5:6]975; GISEL-NEXT: v_mul_lo_u32 v13, v11, v8976; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v10, v8, v[1:2]977; GISEL-NEXT: v_mul_lo_u32 v10, v10, v8978; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v11, v9, v[5:6]979; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v10, s[10:11]980; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]981; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v12, v8, v[3:4]982; GISEL-NEXT: v_cndmask_b32_e32 v3, v4, v7, vcc983; GISEL-NEXT: v_cndmask_b32_e64 v7, v3, 0, s[6:7]984; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v7, v9, v[5:6]985; GISEL-NEXT: ; implicit-def: $vgpr6986; GISEL-NEXT: ; implicit-def: $vgpr4_vgpr5987; GISEL-NEXT: ; implicit-def: $vgpr9988; GISEL-NEXT: ; implicit-def: $vgpr8989; GISEL-NEXT: .LBB2_4: ; %Flow990; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[16:17]991; GISEL-NEXT: s_cbranch_execz .LBB2_6992; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then12993; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x96, v6994; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]995; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2996; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc997; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v2998; GISEL-NEXT: v_cndmask_b32_e32 v6, v0, v4, vcc999; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v6, v9, 01000; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v6, v8, 01001; GISEL-NEXT: v_mul_lo_u32 v7, v6, v81002; GISEL-NEXT: v_mad_u64_u32 v[4:5], vcc, v6, v8, v[1:2]1003; GISEL-NEXT: v_addc_co_u32_e32 v3, vcc, v3, v7, vcc1004; GISEL-NEXT: v_mov_b32_e32 v1, v41005; GISEL-NEXT: v_mov_b32_e32 v2, v51006; GISEL-NEXT: .LBB2_6: ; %Flow11007; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1008; GISEL-NEXT: .LBB2_7: ; %Flow21009; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]1010; GISEL-NEXT: s_cbranch_execz .LBB2_91011; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then51012; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]1013; GISEL-NEXT: v_and_b32_e32 v1, 1, v11014; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]1015; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v11016; GISEL-NEXT: v_or_b32_e32 v0, v0, v21017; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v11018; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v11019; GISEL-NEXT: v_or_b32_e32 v2, v1, v21020; GISEL-NEXT: v_or3_b32 v0, v0, v3, v41021; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v11022; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v11023; GISEL-NEXT: v_or3_b32 v2, v2, v3, v41024; GISEL-NEXT: v_or3_b32 v0, v0, v5, v61025; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v11026; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v11027; GISEL-NEXT: v_or3_b32 v2, v2, v5, v61028; GISEL-NEXT: v_or3_b32 v0, v0, v7, v81029; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v11030; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v11031; GISEL-NEXT: v_or3_b32 v2, v2, v7, v81032; GISEL-NEXT: v_or3_b32 v0, v0, v9, v101033; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v11034; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v11035; GISEL-NEXT: v_or3_b32 v2, v2, v9, v101036; GISEL-NEXT: v_or3_b32 v0, v0, v11, v121037; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v11038; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v11039; GISEL-NEXT: v_or3_b32 v2, v2, v11, v121040; GISEL-NEXT: v_or3_b32 v0, v0, v13, v141041; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v11042; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v11043; GISEL-NEXT: v_or3_b32 v2, v2, v13, v141044; GISEL-NEXT: v_or3_b32 v0, v0, v15, v161045; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v11046; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v11047; GISEL-NEXT: v_or3_b32 v2, v2, v15, v161048; GISEL-NEXT: v_or3_b32 v0, v0, v17, v181049; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v11050; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v11051; GISEL-NEXT: v_or3_b32 v2, v2, v17, v181052; GISEL-NEXT: v_or3_b32 v0, v0, v19, v31053; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v11054; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v11055; GISEL-NEXT: v_or3_b32 v2, v2, v19, v31056; GISEL-NEXT: v_or3_b32 v0, v0, v4, v51057; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v11058; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v11059; GISEL-NEXT: v_or3_b32 v2, v2, v4, v51060; GISEL-NEXT: v_or3_b32 v0, v0, v6, v71061; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v11062; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v11063; GISEL-NEXT: v_or3_b32 v2, v2, v6, v71064; GISEL-NEXT: v_or3_b32 v0, v0, v8, v91065; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v11066; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v11067; GISEL-NEXT: v_or3_b32 v2, v2, v8, v91068; GISEL-NEXT: v_or3_b32 v0, v0, v10, v111069; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v11070; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v11071; GISEL-NEXT: v_or3_b32 v2, v2, v10, v111072; GISEL-NEXT: v_or3_b32 v0, v0, v12, v131073; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v11074; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v11075; GISEL-NEXT: v_or3_b32 v2, v2, v12, v131076; GISEL-NEXT: v_or3_b32 v0, v0, v14, v11077; GISEL-NEXT: v_or3_b32 v1, v2, v14, v11078; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v11079; GISEL-NEXT: v_mov_b32_e32 v2, v11080; GISEL-NEXT: .LBB2_9: ; %Flow31081; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1082; GISEL-NEXT: .LBB2_10: ; %fp-to-i-cleanup1083; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]1084; GISEL-NEXT: s_setpc_b64 s[30:31]1085 %cvt = fptosi float %x to i1281086 ret i128 %cvt1087}1088 1089define i128 @fptoui_f32_to_i128(float %x) {1090; SDAG-LABEL: fptoui_f32_to_i128:1091; SDAG: ; %bb.0: ; %fp-to-i-entry1092; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; SDAG-NEXT: v_mov_b32_e32 v4, v01094; SDAG-NEXT: v_mov_b32_e32 v0, 01095; SDAG-NEXT: v_bfe_u32 v5, v4, 23, 81096; SDAG-NEXT: s_movk_i32 s4, 0x7e1097; SDAG-NEXT: v_mov_b32_e32 v2, 01098; SDAG-NEXT: v_mov_b32_e32 v1, 01099; SDAG-NEXT: v_mov_b32_e32 v3, 01100; SDAG-NEXT: v_cmp_lt_u32_e32 vcc, s4, v51101; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc1102; SDAG-NEXT: s_cbranch_execz .LBB3_101103; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end1104; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v51105; SDAG-NEXT: v_mov_b32_e32 v1, -11106; SDAG-NEXT: v_mov_b32_e32 v6, 01107; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1108; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v6, vcc1109; SDAG-NEXT: s_movk_i32 s6, 0xff7f1110; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v6, vcc1111; SDAG-NEXT: s_mov_b32 s7, -11112; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]1113; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]1114; SDAG-NEXT: v_cmp_lt_i32_e32 vcc, -1, v41115; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]1116; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11117; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31118; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1119; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]1120; SDAG-NEXT: s_cbranch_execz .LBB3_71121; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end91122; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1123; SDAG-NEXT: v_add_co_u32_e64 v10, s[4:5], -1, v01124; SDAG-NEXT: s_mov_b64 s[4:5], 0x951125; SDAG-NEXT: v_and_b32_e32 v0, 0x7fffff, v41126; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[5:6]1127; SDAG-NEXT: v_cndmask_b32_e64 v9, -1, 0, vcc1128; SDAG-NEXT: v_cndmask_b32_e64 v11, -1, 1, vcc1129; SDAG-NEXT: v_or_b32_e32 v7, 0x800000, v01130; SDAG-NEXT: v_mov_b32_e32 v8, v61131; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11132; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31133; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1134; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]1135; SDAG-NEXT: s_cbranch_execz .LBB3_41136; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else1137; SDAG-NEXT: v_sub_u32_e32 v0, 0xd6, v51138; SDAG-NEXT: v_add_u32_e32 v2, 0xffffff2a, v51139; SDAG-NEXT: v_add_u32_e32 v4, 0xffffff6a, v51140; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[7:8]1141; SDAG-NEXT: v_lshlrev_b64 v[2:3], v2, v[7:8]1142; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v41143; SDAG-NEXT: v_cndmask_b32_e64 v1, v3, v1, s[4:5]1144; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v41145; SDAG-NEXT: v_cndmask_b32_e64 v3, 0, v1, s[6:7]1146; SDAG-NEXT: v_cndmask_b32_e64 v2, v2, v0, s[4:5]1147; SDAG-NEXT: v_lshlrev_b64 v[0:1], v4, v[7:8]1148; SDAG-NEXT: v_cndmask_b32_e64 v2, 0, v2, s[6:7]1149; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v0, s[4:5]1150; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v7, v11, 01151; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v1, s[4:5]1152; SDAG-NEXT: v_mul_lo_u32 v8, v9, v21153; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v11, v[5:6]1154; SDAG-NEXT: v_mul_lo_u32 v12, v11, v31155; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v11, v2, 01156; SDAG-NEXT: v_mov_b32_e32 v5, v01157; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v7, v9, v[5:6]1158; SDAG-NEXT: v_add3_u32 v3, v3, v12, v81159; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v10, v7, v[2:3]1160; SDAG-NEXT: v_add_co_u32_e64 v0, s[4:5], v1, v61161; SDAG-NEXT: v_addc_co_u32_e64 v1, s[4:5], 0, 0, s[4:5]1162; SDAG-NEXT: v_mul_lo_u32 v8, v10, v131163; SDAG-NEXT: v_mul_lo_u32 v7, v10, v71164; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v9, v[0:1]1165; SDAG-NEXT: ; implicit-def: $vgpr111166; SDAG-NEXT: ; implicit-def: $vgpr91167; SDAG-NEXT: ; implicit-def: $vgpr101168; SDAG-NEXT: v_add3_u32 v3, v7, v3, v81169; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v0, v21170; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v1, v3, s[4:5]1171; SDAG-NEXT: v_mov_b32_e32 v0, v41172; SDAG-NEXT: v_mov_b32_e32 v1, v51173; SDAG-NEXT: ; implicit-def: $vgpr5_vgpr61174; SDAG-NEXT: ; implicit-def: $vgpr7_vgpr81175; SDAG-NEXT: .LBB3_4: ; %Flow1176; SDAG-NEXT: s_andn2_saveexec_b64 s[6:7], s[12:13]1177; SDAG-NEXT: s_cbranch_execz .LBB3_61178; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then121179; SDAG-NEXT: v_sub_u32_e32 v2, 0x96, v51180; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[7:8]1181; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v21182; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]1183; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v21184; SDAG-NEXT: v_cndmask_b32_e64 v3, v0, v7, s[4:5]1185; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v3, v11, 01186; SDAG-NEXT: v_mov_b32_e32 v2, 01187; SDAG-NEXT: v_mov_b32_e32 v6, v21188; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[4:5], v3, v9, v[1:2]1189; SDAG-NEXT: v_mad_i64_i32 v[2:3], s[4:5], v10, v3, v[5:6]1190; SDAG-NEXT: v_mov_b32_e32 v1, v41191; SDAG-NEXT: .LBB3_6: ; %Flow11192; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1193; SDAG-NEXT: .LBB3_7: ; %Flow21194; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]1195; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then51196; SDAG-NEXT: v_bfrev_b32_e32 v0, 11197; SDAG-NEXT: v_bfrev_b32_e32 v1, -21198; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc1199; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc1200; SDAG-NEXT: v_mov_b32_e32 v3, v21201; SDAG-NEXT: v_mov_b32_e32 v0, v11202; SDAG-NEXT: v_mov_b32_e32 v2, v11203; SDAG-NEXT: ; %bb.9: ; %Flow31204; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]1205; SDAG-NEXT: .LBB3_10: ; %fp-to-i-cleanup1206; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1207; SDAG-NEXT: s_setpc_b64 s[30:31]1208;1209; GISEL-LABEL: fptoui_f32_to_i128:1210; GISEL: ; %bb.0: ; %fp-to-i-entry1211; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1212; GISEL-NEXT: v_mov_b32_e32 v4, v01213; GISEL-NEXT: v_mov_b32_e32 v5, 01214; GISEL-NEXT: v_lshrrev_b64 v[0:1], 23, v[4:5]1215; GISEL-NEXT: s_mov_b64 s[4:5], 01216; GISEL-NEXT: v_bfe_u32 v6, v0, 0, 81217; GISEL-NEXT: v_mov_b32_e32 v0, 0x7f1218; GISEL-NEXT: v_mov_b32_e32 v1, 01219; GISEL-NEXT: v_mov_b32_e32 v7, v51220; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]1221; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]1222; GISEL-NEXT: v_mov_b32_e32 v0, s41223; GISEL-NEXT: v_mov_b32_e32 v1, s51224; GISEL-NEXT: v_mov_b32_e32 v2, s61225; GISEL-NEXT: v_mov_b32_e32 v3, s71226; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc1227; GISEL-NEXT: s_cbranch_execz .LBB3_101228; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end1229; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v61230; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff801231; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc1232; GISEL-NEXT: v_mov_b32_e32 v3, -11233; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]1234; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]1235; GISEL-NEXT: v_addc_co_u32_e64 v9, s[6:7], 0, -1, s[6:7]1236; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1237; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[8:9]1238; GISEL-NEXT: v_cmp_lt_i32_e64 s[4:5], -1, v41239; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1240; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[8:9]1241; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc1242; GISEL-NEXT: v_and_b32_e32 v0, 1, v01243; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01244; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr31245; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc1246; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]1247; GISEL-NEXT: s_cbranch_execz .LBB3_71248; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end91249; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -11250; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]1251; GISEL-NEXT: v_and_b32_e32 v0, 1, v01252; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]1253; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v01254; GISEL-NEXT: v_or_b32_e32 v1, v1, v21255; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v01256; GISEL-NEXT: v_or_b32_e32 v2, v0, v21257; GISEL-NEXT: v_or_b32_e32 v1, v1, v31258; GISEL-NEXT: v_lshlrev_b16_e32 v8, 3, v01259; GISEL-NEXT: v_or_b32_e32 v2, v2, v31260; GISEL-NEXT: v_or_b32_e32 v1, v1, v81261; GISEL-NEXT: v_lshlrev_b16_e32 v9, 4, v01262; GISEL-NEXT: v_or_b32_e32 v2, v2, v81263; GISEL-NEXT: v_or_b32_e32 v1, v1, v91264; GISEL-NEXT: v_lshlrev_b16_e32 v10, 5, v01265; GISEL-NEXT: v_or_b32_e32 v2, v2, v91266; GISEL-NEXT: v_or_b32_e32 v1, v1, v101267; GISEL-NEXT: v_lshlrev_b16_e32 v11, 6, v01268; GISEL-NEXT: v_or_b32_e32 v2, v2, v101269; GISEL-NEXT: v_or_b32_e32 v1, v1, v111270; GISEL-NEXT: v_lshlrev_b16_e32 v12, 7, v01271; GISEL-NEXT: v_or_b32_e32 v2, v2, v111272; GISEL-NEXT: v_or_b32_e32 v1, v1, v121273; GISEL-NEXT: v_lshlrev_b16_e32 v13, 8, v01274; GISEL-NEXT: v_or_b32_e32 v2, v2, v121275; GISEL-NEXT: v_or_b32_e32 v1, v1, v131276; GISEL-NEXT: v_lshlrev_b16_e32 v14, 9, v01277; GISEL-NEXT: v_or_b32_e32 v2, v2, v131278; GISEL-NEXT: v_or_b32_e32 v1, v1, v141279; GISEL-NEXT: v_lshlrev_b16_e32 v15, 10, v01280; GISEL-NEXT: v_or_b32_e32 v2, v2, v141281; GISEL-NEXT: v_or_b32_e32 v1, v1, v151282; GISEL-NEXT: v_lshlrev_b16_e32 v16, 11, v01283; GISEL-NEXT: v_or_b32_e32 v2, v2, v151284; GISEL-NEXT: v_or_b32_e32 v1, v1, v161285; GISEL-NEXT: v_lshlrev_b16_e32 v17, 12, v01286; GISEL-NEXT: v_or_b32_e32 v2, v2, v161287; GISEL-NEXT: v_or_b32_e32 v1, v1, v171288; GISEL-NEXT: v_lshlrev_b16_e32 v18, 13, v01289; GISEL-NEXT: v_or_b32_e32 v2, v2, v171290; GISEL-NEXT: v_or_b32_e32 v1, v1, v181291; GISEL-NEXT: v_lshlrev_b16_e32 v19, 14, v01292; GISEL-NEXT: v_or_b32_e32 v2, v2, v181293; GISEL-NEXT: v_or_b32_e32 v1, v1, v191294; GISEL-NEXT: v_lshlrev_b16_e32 v0, 15, v01295; GISEL-NEXT: v_or_b32_e32 v2, v2, v191296; GISEL-NEXT: v_or_b32_e32 v1, v1, v01297; GISEL-NEXT: v_or_b32_e32 v0, v2, v01298; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01299; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11300; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v01301; GISEL-NEXT: v_lshl_or_b32 v8, v0, 16, v01302; GISEL-NEXT: v_or3_b32 v9, v1, v2, 11303; GISEL-NEXT: v_mov_b32_e32 v0, 0x961304; GISEL-NEXT: v_mov_b32_e32 v1, 01305; GISEL-NEXT: v_and_b32_e32 v2, 0x7fffff, v41306; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[6:7], v[0:1]1307; GISEL-NEXT: v_or_b32_e32 v4, 0x800000, v21308; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr31309; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc1310; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]1311; GISEL-NEXT: s_cbranch_execz .LBB3_41312; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else1313; GISEL-NEXT: v_add_u32_e32 v2, 0xffffff6a, v61314; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[4:5]1315; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v21316; GISEL-NEXT: v_cndmask_b32_e32 v10, 0, v0, vcc1317; GISEL-NEXT: v_cndmask_b32_e32 v11, 0, v1, vcc1318; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v10, v8, 01319; GISEL-NEXT: v_add_u32_e32 v3, 0xffffff2a, v61320; GISEL-NEXT: v_sub_u32_e32 v6, 64, v21321; GISEL-NEXT: v_lshrrev_b64 v[6:7], v6, v[4:5]1322; GISEL-NEXT: v_lshlrev_b64 v[3:4], v3, v[4:5]1323; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v21324; GISEL-NEXT: v_cndmask_b32_e32 v3, v3, v6, vcc1325; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v11, v8, v[0:1]1326; GISEL-NEXT: v_cndmask_b32_e64 v12, v3, 0, s[6:7]1327; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v10, v9, 01328; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v12, v9, v[5:6]1329; GISEL-NEXT: v_mul_lo_u32 v13, v11, v81330; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v10, v8, v[1:2]1331; GISEL-NEXT: v_mul_lo_u32 v10, v10, v81332; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v11, v9, v[5:6]1333; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v10, s[10:11]1334; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]1335; GISEL-NEXT: v_mad_u64_u32 v[5:6], s[8:9], v12, v8, v[3:4]1336; GISEL-NEXT: v_cndmask_b32_e32 v3, v4, v7, vcc1337; GISEL-NEXT: v_cndmask_b32_e64 v7, v3, 0, s[6:7]1338; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v7, v9, v[5:6]1339; GISEL-NEXT: ; implicit-def: $vgpr61340; GISEL-NEXT: ; implicit-def: $vgpr4_vgpr51341; GISEL-NEXT: ; implicit-def: $vgpr91342; GISEL-NEXT: ; implicit-def: $vgpr81343; GISEL-NEXT: .LBB3_4: ; %Flow1344; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[16:17]1345; GISEL-NEXT: s_cbranch_execz .LBB3_61346; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then121347; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x96, v61348; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[4:5]1349; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v21350; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc1351; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21352; GISEL-NEXT: v_cndmask_b32_e32 v6, v0, v4, vcc1353; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v6, v9, 01354; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v6, v8, 01355; GISEL-NEXT: v_mul_lo_u32 v7, v6, v81356; GISEL-NEXT: v_mad_u64_u32 v[4:5], vcc, v6, v8, v[1:2]1357; GISEL-NEXT: v_addc_co_u32_e32 v3, vcc, v3, v7, vcc1358; GISEL-NEXT: v_mov_b32_e32 v1, v41359; GISEL-NEXT: v_mov_b32_e32 v2, v51360; GISEL-NEXT: .LBB3_6: ; %Flow11361; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1362; GISEL-NEXT: .LBB3_7: ; %Flow21363; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]1364; GISEL-NEXT: s_cbranch_execz .LBB3_91365; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then51366; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]1367; GISEL-NEXT: v_and_b32_e32 v1, 1, v11368; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]1369; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v11370; GISEL-NEXT: v_or_b32_e32 v0, v0, v21371; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v11372; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v11373; GISEL-NEXT: v_or_b32_e32 v2, v1, v21374; GISEL-NEXT: v_or3_b32 v0, v0, v3, v41375; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v11376; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v11377; GISEL-NEXT: v_or3_b32 v2, v2, v3, v41378; GISEL-NEXT: v_or3_b32 v0, v0, v5, v61379; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v11380; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v11381; GISEL-NEXT: v_or3_b32 v2, v2, v5, v61382; GISEL-NEXT: v_or3_b32 v0, v0, v7, v81383; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v11384; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v11385; GISEL-NEXT: v_or3_b32 v2, v2, v7, v81386; GISEL-NEXT: v_or3_b32 v0, v0, v9, v101387; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v11388; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v11389; GISEL-NEXT: v_or3_b32 v2, v2, v9, v101390; GISEL-NEXT: v_or3_b32 v0, v0, v11, v121391; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v11392; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v11393; GISEL-NEXT: v_or3_b32 v2, v2, v11, v121394; GISEL-NEXT: v_or3_b32 v0, v0, v13, v141395; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v11396; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v11397; GISEL-NEXT: v_or3_b32 v2, v2, v13, v141398; GISEL-NEXT: v_or3_b32 v0, v0, v15, v161399; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v11400; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v11401; GISEL-NEXT: v_or3_b32 v2, v2, v15, v161402; GISEL-NEXT: v_or3_b32 v0, v0, v17, v181403; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v11404; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v11405; GISEL-NEXT: v_or3_b32 v2, v2, v17, v181406; GISEL-NEXT: v_or3_b32 v0, v0, v19, v31407; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v11408; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v11409; GISEL-NEXT: v_or3_b32 v2, v2, v19, v31410; GISEL-NEXT: v_or3_b32 v0, v0, v4, v51411; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v11412; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v11413; GISEL-NEXT: v_or3_b32 v2, v2, v4, v51414; GISEL-NEXT: v_or3_b32 v0, v0, v6, v71415; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v11416; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v11417; GISEL-NEXT: v_or3_b32 v2, v2, v6, v71418; GISEL-NEXT: v_or3_b32 v0, v0, v8, v91419; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v11420; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v11421; GISEL-NEXT: v_or3_b32 v2, v2, v8, v91422; GISEL-NEXT: v_or3_b32 v0, v0, v10, v111423; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v11424; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v11425; GISEL-NEXT: v_or3_b32 v2, v2, v10, v111426; GISEL-NEXT: v_or3_b32 v0, v0, v12, v131427; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v11428; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v11429; GISEL-NEXT: v_or3_b32 v2, v2, v12, v131430; GISEL-NEXT: v_or3_b32 v0, v0, v14, v11431; GISEL-NEXT: v_or3_b32 v1, v2, v14, v11432; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v11433; GISEL-NEXT: v_mov_b32_e32 v2, v11434; GISEL-NEXT: .LBB3_9: ; %Flow31435; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1436; GISEL-NEXT: .LBB3_10: ; %fp-to-i-cleanup1437; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]1438; GISEL-NEXT: s_setpc_b64 s[30:31]1439 %cvt = fptoui float %x to i1281440 ret i128 %cvt1441}1442 1443define i128 @fptosi_f16_to_i128(half %x) {1444; SDAG-LABEL: fptosi_f16_to_i128:1445; SDAG: ; %bb.0:1446; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1447; SDAG-NEXT: v_cvt_f32_f16_e32 v0, v01448; SDAG-NEXT: v_cvt_i32_f32_e32 v0, v01449; SDAG-NEXT: v_ashrrev_i32_e32 v1, 31, v01450; SDAG-NEXT: v_ashrrev_i32_e32 v2, 31, v11451; SDAG-NEXT: v_mov_b32_e32 v3, v21452; SDAG-NEXT: s_setpc_b64 s[30:31]1453;1454; GISEL-LABEL: fptosi_f16_to_i128:1455; GISEL: ; %bb.0:1456; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1457; GISEL-NEXT: v_cvt_f32_f16_e32 v0, v01458; GISEL-NEXT: v_cvt_i32_f32_e32 v0, v01459; GISEL-NEXT: v_ashrrev_i32_e32 v1, 31, v01460; GISEL-NEXT: v_mov_b32_e32 v2, v11461; GISEL-NEXT: v_mov_b32_e32 v3, v11462; GISEL-NEXT: s_setpc_b64 s[30:31]1463 %cvt = fptosi half %x to i1281464 ret i128 %cvt1465}1466 1467define i128 @fptoui_f16_to_i128(half %x) {1468; GCN-LABEL: fptoui_f16_to_i128:1469; GCN: ; %bb.0:1470; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; GCN-NEXT: v_cvt_f32_f16_e32 v0, v01472; GCN-NEXT: v_mov_b32_e32 v1, 01473; GCN-NEXT: v_mov_b32_e32 v2, 01474; GCN-NEXT: v_mov_b32_e32 v3, 01475; GCN-NEXT: v_cvt_u32_f32_e32 v0, v01476; GCN-NEXT: s_setpc_b64 s[30:31]1477 %cvt = fptoui half %x to i1281478 ret i128 %cvt1479}1480 1481define i128 @fptosi_bf16_to_i128(bfloat %x) {1482; SDAG-LABEL: fptosi_bf16_to_i128:1483; SDAG: ; %bb.0: ; %fp-to-i-entry1484; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; SDAG-NEXT: v_mov_b32_e32 v4, v01486; SDAG-NEXT: v_mov_b32_e32 v0, 01487; SDAG-NEXT: v_bfe_u32 v5, v4, 7, 81488; SDAG-NEXT: s_movk_i32 s4, 0x7e1489; SDAG-NEXT: v_mov_b32_e32 v2, 01490; SDAG-NEXT: v_mov_b32_e32 v1, 01491; SDAG-NEXT: v_mov_b32_e32 v3, 01492; SDAG-NEXT: v_cmp_lt_u32_e32 vcc, s4, v51493; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc1494; SDAG-NEXT: s_cbranch_execz .LBB6_101495; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end1496; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v51497; SDAG-NEXT: v_mov_b32_e32 v1, -11498; SDAG-NEXT: v_mov_b32_e32 v6, 01499; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1500; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v6, vcc1501; SDAG-NEXT: s_movk_i32 s6, 0xff7f1502; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v6, vcc1503; SDAG-NEXT: s_mov_b32 s7, -11504; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]1505; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]1506; SDAG-NEXT: v_cmp_lt_i16_e32 vcc, -1, v41507; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]1508; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11509; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31510; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1511; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]1512; SDAG-NEXT: s_cbranch_execz .LBB6_71513; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end91514; SDAG-NEXT: s_movk_i32 s4, 0x7f1515; SDAG-NEXT: v_and_b32_sdwa v0, v4, s4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD1516; SDAG-NEXT: s_mov_b64 s[4:5], 0x851517; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[5:6]1518; SDAG-NEXT: v_cndmask_b32_e64 v10, -1, 0, vcc1519; SDAG-NEXT: v_cndmask_b32_e64 v9, -1, 1, vcc1520; SDAG-NEXT: v_or_b32_e32 v7, 0x80, v01521; SDAG-NEXT: v_mov_b32_e32 v8, v61522; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11523; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31524; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1525; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]1526; SDAG-NEXT: s_cbranch_execz .LBB6_41527; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else1528; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1529; SDAG-NEXT: v_add_co_u32_e64 v11, s[4:5], -1, v01530; SDAG-NEXT: v_sub_u32_e32 v0, 0xc6, v51531; SDAG-NEXT: v_add_u32_e32 v2, 0xffffff3a, v51532; SDAG-NEXT: v_add_u32_e32 v4, 0xffffff7a, v51533; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[7:8]1534; SDAG-NEXT: v_lshlrev_b64 v[2:3], v2, v[7:8]1535; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v41536; SDAG-NEXT: v_cndmask_b32_e64 v1, v3, v1, s[4:5]1537; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v41538; SDAG-NEXT: v_cndmask_b32_e64 v3, 0, v1, s[6:7]1539; SDAG-NEXT: v_cndmask_b32_e64 v2, v2, v0, s[4:5]1540; SDAG-NEXT: v_lshlrev_b64 v[0:1], v4, v[7:8]1541; SDAG-NEXT: v_cndmask_b32_e64 v2, 0, v2, s[6:7]1542; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v0, s[4:5]1543; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v7, v9, 01544; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v1, s[4:5]1545; SDAG-NEXT: v_mul_lo_u32 v8, v10, v21546; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v9, v[5:6]1547; SDAG-NEXT: v_mul_lo_u32 v12, v9, v31548; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v9, v2, 01549; SDAG-NEXT: v_mov_b32_e32 v5, v01550; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v7, v10, v[5:6]1551; SDAG-NEXT: v_add3_u32 v3, v3, v12, v81552; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v11, v7, v[2:3]1553; SDAG-NEXT: v_add_co_u32_e64 v0, s[4:5], v1, v61554; SDAG-NEXT: v_addc_co_u32_e64 v1, s[4:5], 0, 0, s[4:5]1555; SDAG-NEXT: v_mul_lo_u32 v8, v11, v131556; SDAG-NEXT: v_mul_lo_u32 v7, v11, v71557; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v10, v[0:1]1558; SDAG-NEXT: ; implicit-def: $vgpr91559; SDAG-NEXT: v_add3_u32 v3, v7, v3, v81560; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v0, v21561; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v1, v3, s[4:5]1562; SDAG-NEXT: v_mov_b32_e32 v0, v41563; SDAG-NEXT: v_mov_b32_e32 v1, v51564; SDAG-NEXT: ; implicit-def: $vgpr5_vgpr61565; SDAG-NEXT: ; implicit-def: $vgpr7_vgpr81566; SDAG-NEXT: .LBB6_4: ; %Flow1567; SDAG-NEXT: s_andn2_saveexec_b64 s[6:7], s[12:13]1568; SDAG-NEXT: s_cbranch_execz .LBB6_61569; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then121570; SDAG-NEXT: v_sub_u32_e32 v2, 0x86, v51571; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[7:8]1572; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v21573; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]1574; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v21575; SDAG-NEXT: v_cndmask_b32_e64 v0, v0, v7, s[4:5]1576; SDAG-NEXT: v_mul_hi_i32_i24_e32 v1, v0, v91577; SDAG-NEXT: v_ashrrev_i32_e32 v2, 31, v11578; SDAG-NEXT: v_mul_i32_i24_e32 v0, v0, v91579; SDAG-NEXT: v_mov_b32_e32 v3, v21580; SDAG-NEXT: .LBB6_6: ; %Flow11581; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1582; SDAG-NEXT: .LBB6_7: ; %Flow21583; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]1584; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then51585; SDAG-NEXT: v_bfrev_b32_e32 v0, 11586; SDAG-NEXT: v_bfrev_b32_e32 v1, -21587; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc1588; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc1589; SDAG-NEXT: v_mov_b32_e32 v3, v21590; SDAG-NEXT: v_mov_b32_e32 v0, v11591; SDAG-NEXT: v_mov_b32_e32 v2, v11592; SDAG-NEXT: ; %bb.9: ; %Flow31593; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]1594; SDAG-NEXT: .LBB6_10: ; %fp-to-i-cleanup1595; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1596; SDAG-NEXT: s_setpc_b64 s[30:31]1597;1598; GISEL-LABEL: fptosi_bf16_to_i128:1599; GISEL: ; %bb.0: ; %fp-to-i-entry1600; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1601; GISEL-NEXT: v_mov_b32_e32 v4, v01602; GISEL-NEXT: v_and_b32_e32 v5, 0xffff, v41603; GISEL-NEXT: v_mov_b32_e32 v6, 01604; GISEL-NEXT: v_lshrrev_b64 v[0:1], 7, v[5:6]1605; GISEL-NEXT: v_mov_b32_e32 v1, 0x7f1606; GISEL-NEXT: s_mov_b64 s[4:5], 01607; GISEL-NEXT: v_mov_b32_e32 v2, 01608; GISEL-NEXT: v_bfe_u32 v5, v0, 0, 81609; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[5:6], v[1:2]1610; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]1611; GISEL-NEXT: v_mov_b32_e32 v0, s41612; GISEL-NEXT: v_mov_b32_e32 v1, s51613; GISEL-NEXT: v_mov_b32_e32 v2, s61614; GISEL-NEXT: v_mov_b32_e32 v3, s71615; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc1616; GISEL-NEXT: s_cbranch_execz .LBB6_101617; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end1618; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v51619; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff801620; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc1621; GISEL-NEXT: v_mov_b32_e32 v3, -11622; GISEL-NEXT: v_addc_co_u32_e64 v7, s[6:7], 0, -1, s[6:7]1623; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]1624; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]1625; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1626; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[7:8]1627; GISEL-NEXT: v_cmp_lt_i16_e64 s[4:5], -1, v41628; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1629; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[7:8]1630; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc1631; GISEL-NEXT: v_and_b32_e32 v0, 1, v01632; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01633; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr31634; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc1635; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]1636; GISEL-NEXT: s_cbranch_execz .LBB6_71637; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end91638; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -11639; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]1640; GISEL-NEXT: v_and_b32_e32 v0, 1, v01641; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v01642; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]1643; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v01644; GISEL-NEXT: v_lshlrev_b16_e32 v7, 3, v01645; GISEL-NEXT: v_lshlrev_b16_e32 v8, 4, v01646; GISEL-NEXT: v_lshlrev_b16_e32 v9, 5, v01647; GISEL-NEXT: v_lshlrev_b16_e32 v10, 6, v01648; GISEL-NEXT: v_lshlrev_b16_e32 v11, 7, v01649; GISEL-NEXT: v_lshlrev_b16_e32 v12, 8, v01650; GISEL-NEXT: v_lshlrev_b16_e32 v13, 9, v01651; GISEL-NEXT: v_lshlrev_b16_e32 v14, 10, v01652; GISEL-NEXT: v_lshlrev_b16_e32 v15, 11, v01653; GISEL-NEXT: v_lshlrev_b16_e32 v16, 12, v01654; GISEL-NEXT: v_lshlrev_b16_e32 v17, 13, v01655; GISEL-NEXT: v_lshlrev_b16_e32 v18, 14, v01656; GISEL-NEXT: v_lshlrev_b16_e32 v19, 15, v01657; GISEL-NEXT: v_or_b32_e32 v0, v0, v21658; GISEL-NEXT: v_or_b32_e32 v1, v1, v21659; GISEL-NEXT: v_or_b32_e32 v0, v0, v31660; GISEL-NEXT: v_or_b32_e32 v1, v1, v31661; GISEL-NEXT: v_or_b32_e32 v0, v0, v71662; GISEL-NEXT: v_or_b32_e32 v1, v1, v71663; GISEL-NEXT: v_or_b32_e32 v0, v0, v81664; GISEL-NEXT: v_or_b32_e32 v1, v1, v81665; GISEL-NEXT: v_or_b32_e32 v0, v0, v91666; GISEL-NEXT: v_or_b32_e32 v1, v1, v91667; GISEL-NEXT: v_or_b32_e32 v0, v0, v101668; GISEL-NEXT: v_or_b32_e32 v1, v1, v101669; GISEL-NEXT: v_or_b32_e32 v0, v0, v111670; GISEL-NEXT: v_or_b32_e32 v1, v1, v111671; GISEL-NEXT: v_or_b32_e32 v0, v0, v121672; GISEL-NEXT: v_or_b32_e32 v1, v1, v121673; GISEL-NEXT: v_or_b32_e32 v0, v0, v131674; GISEL-NEXT: v_or_b32_e32 v1, v1, v131675; GISEL-NEXT: v_or_b32_e32 v0, v0, v141676; GISEL-NEXT: v_or_b32_e32 v1, v1, v141677; GISEL-NEXT: v_or_b32_e32 v0, v0, v151678; GISEL-NEXT: v_or_b32_e32 v1, v1, v151679; GISEL-NEXT: v_or_b32_e32 v0, v0, v161680; GISEL-NEXT: v_or_b32_e32 v1, v1, v161681; GISEL-NEXT: v_or_b32_e32 v0, v0, v171682; GISEL-NEXT: v_or_b32_e32 v1, v1, v171683; GISEL-NEXT: v_or_b32_e32 v0, v0, v181684; GISEL-NEXT: v_or_b32_e32 v1, v1, v181685; GISEL-NEXT: v_or_b32_e32 v0, v0, v191686; GISEL-NEXT: v_or_b32_e32 v1, v1, v191687; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v01688; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v11689; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v01690; GISEL-NEXT: v_lshl_or_b32 v9, v0, 16, v01691; GISEL-NEXT: v_or3_b32 v8, v1, v2, 11692; GISEL-NEXT: v_mov_b32_e32 v0, 0x861693; GISEL-NEXT: v_mov_b32_e32 v1, 01694; GISEL-NEXT: v_and_b32_e32 v2, 0x7f, v41695; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[5:6], v[0:1]1696; GISEL-NEXT: v_mov_b32_e32 v7, 01697; GISEL-NEXT: v_or_b32_e32 v6, 0x80, v21698; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr31699; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc1700; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]1701; GISEL-NEXT: s_cbranch_execz .LBB6_41702; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else1703; GISEL-NEXT: v_add_u32_e32 v2, 0xffffff7a, v51704; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[6:7]1705; GISEL-NEXT: v_add_u32_e32 v5, 0xffffff3a, v51706; GISEL-NEXT: v_sub_u32_e32 v3, 64, v21707; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v21708; GISEL-NEXT: v_lshrrev_b64 v[3:4], v3, v[6:7]1709; GISEL-NEXT: v_lshlrev_b64 v[5:6], v5, v[6:7]1710; GISEL-NEXT: v_cndmask_b32_e32 v7, 0, v0, vcc1711; GISEL-NEXT: v_cndmask_b32_e32 v12, 0, v1, vcc1712; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v7, v9, 01713; GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc1714; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v21715; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v12, v9, v[0:1]1716; GISEL-NEXT: v_cndmask_b32_e64 v5, v3, 0, s[6:7]1717; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v7, v8, 01718; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v5, v8, v[10:11]1719; GISEL-NEXT: v_mul_lo_u32 v13, v12, v91720; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v7, v9, v[1:2]1721; GISEL-NEXT: v_mul_lo_u32 v7, v7, v91722; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v12, v8, v[10:11]1723; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v7, s[10:11]1724; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]1725; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v5, v9, v[3:4]1726; GISEL-NEXT: v_cndmask_b32_e32 v3, v6, v4, vcc1727; GISEL-NEXT: v_cndmask_b32_e64 v5, v3, 0, s[6:7]1728; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v5, v8, v[10:11]1729; GISEL-NEXT: ; implicit-def: $vgpr51730; GISEL-NEXT: ; implicit-def: $vgpr6_vgpr71731; GISEL-NEXT: ; implicit-def: $vgpr81732; GISEL-NEXT: .LBB6_4: ; %Flow1733; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[16:17]1734; GISEL-NEXT: s_cbranch_execz .LBB6_61735; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then121736; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x86, v51737; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[6:7]1738; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v21739; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc1740; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v21741; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v6, vcc1742; GISEL-NEXT: v_mul_hi_i32_i24_e32 v1, v0, v81743; GISEL-NEXT: v_ashrrev_i32_e32 v2, 31, v11744; GISEL-NEXT: v_mul_i32_i24_e32 v0, v0, v81745; GISEL-NEXT: v_mov_b32_e32 v3, v21746; GISEL-NEXT: .LBB6_6: ; %Flow11747; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1748; GISEL-NEXT: .LBB6_7: ; %Flow21749; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]1750; GISEL-NEXT: s_cbranch_execz .LBB6_91751; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then51752; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]1753; GISEL-NEXT: v_and_b32_e32 v1, 1, v11754; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]1755; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v11756; GISEL-NEXT: v_or_b32_e32 v0, v0, v21757; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v11758; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v11759; GISEL-NEXT: v_or_b32_e32 v2, v1, v21760; GISEL-NEXT: v_or3_b32 v0, v0, v3, v41761; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v11762; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v11763; GISEL-NEXT: v_or3_b32 v2, v2, v3, v41764; GISEL-NEXT: v_or3_b32 v0, v0, v5, v61765; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v11766; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v11767; GISEL-NEXT: v_or3_b32 v2, v2, v5, v61768; GISEL-NEXT: v_or3_b32 v0, v0, v7, v81769; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v11770; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v11771; GISEL-NEXT: v_or3_b32 v2, v2, v7, v81772; GISEL-NEXT: v_or3_b32 v0, v0, v9, v101773; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v11774; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v11775; GISEL-NEXT: v_or3_b32 v2, v2, v9, v101776; GISEL-NEXT: v_or3_b32 v0, v0, v11, v121777; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v11778; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v11779; GISEL-NEXT: v_or3_b32 v2, v2, v11, v121780; GISEL-NEXT: v_or3_b32 v0, v0, v13, v141781; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v11782; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v11783; GISEL-NEXT: v_or3_b32 v2, v2, v13, v141784; GISEL-NEXT: v_or3_b32 v0, v0, v15, v161785; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v11786; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v11787; GISEL-NEXT: v_or3_b32 v2, v2, v15, v161788; GISEL-NEXT: v_or3_b32 v0, v0, v17, v181789; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v11790; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v11791; GISEL-NEXT: v_or3_b32 v2, v2, v17, v181792; GISEL-NEXT: v_or3_b32 v0, v0, v19, v31793; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v11794; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v11795; GISEL-NEXT: v_or3_b32 v2, v2, v19, v31796; GISEL-NEXT: v_or3_b32 v0, v0, v4, v51797; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v11798; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v11799; GISEL-NEXT: v_or3_b32 v2, v2, v4, v51800; GISEL-NEXT: v_or3_b32 v0, v0, v6, v71801; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v11802; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v11803; GISEL-NEXT: v_or3_b32 v2, v2, v6, v71804; GISEL-NEXT: v_or3_b32 v0, v0, v8, v91805; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v11806; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v11807; GISEL-NEXT: v_or3_b32 v2, v2, v8, v91808; GISEL-NEXT: v_or3_b32 v0, v0, v10, v111809; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v11810; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v11811; GISEL-NEXT: v_or3_b32 v2, v2, v10, v111812; GISEL-NEXT: v_or3_b32 v0, v0, v12, v131813; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v11814; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v11815; GISEL-NEXT: v_or3_b32 v2, v2, v12, v131816; GISEL-NEXT: v_or3_b32 v0, v0, v14, v11817; GISEL-NEXT: v_or3_b32 v1, v2, v14, v11818; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v11819; GISEL-NEXT: v_mov_b32_e32 v2, v11820; GISEL-NEXT: .LBB6_9: ; %Flow31821; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]1822; GISEL-NEXT: .LBB6_10: ; %fp-to-i-cleanup1823; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]1824; GISEL-NEXT: s_setpc_b64 s[30:31]1825 %cvt = fptosi bfloat %x to i1281826 ret i128 %cvt1827}1828 1829define i128 @fptoui_bf16_to_i128(bfloat %x) {1830; SDAG-LABEL: fptoui_bf16_to_i128:1831; SDAG: ; %bb.0: ; %fp-to-i-entry1832; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1833; SDAG-NEXT: v_mov_b32_e32 v4, v01834; SDAG-NEXT: v_mov_b32_e32 v0, 01835; SDAG-NEXT: v_bfe_u32 v5, v4, 7, 81836; SDAG-NEXT: s_movk_i32 s4, 0x7e1837; SDAG-NEXT: v_mov_b32_e32 v2, 01838; SDAG-NEXT: v_mov_b32_e32 v1, 01839; SDAG-NEXT: v_mov_b32_e32 v3, 01840; SDAG-NEXT: v_cmp_lt_u32_e32 vcc, s4, v51841; SDAG-NEXT: s_and_saveexec_b64 s[8:9], vcc1842; SDAG-NEXT: s_cbranch_execz .LBB7_101843; SDAG-NEXT: ; %bb.1: ; %fp-to-i-if-end1844; SDAG-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v51845; SDAG-NEXT: v_mov_b32_e32 v1, -11846; SDAG-NEXT: v_mov_b32_e32 v6, 01847; SDAG-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1848; SDAG-NEXT: v_addc_co_u32_e32 v2, vcc, -1, v6, vcc1849; SDAG-NEXT: s_movk_i32 s6, 0xff7f1850; SDAG-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v6, vcc1851; SDAG-NEXT: s_mov_b32 s7, -11852; SDAG-NEXT: v_cmp_eq_u64_e64 s[4:5], -1, v[2:3]1853; SDAG-NEXT: v_cmp_lt_u64_e64 s[6:7], s[6:7], v[0:1]1854; SDAG-NEXT: v_cmp_lt_i16_e32 vcc, -1, v41855; SDAG-NEXT: s_and_b64 s[4:5], s[4:5], s[6:7]1856; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11857; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31858; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1859; SDAG-NEXT: s_xor_b64 s[10:11], exec, s[6:7]1860; SDAG-NEXT: s_cbranch_execz .LBB7_71861; SDAG-NEXT: ; %bb.2: ; %fp-to-i-if-end91862; SDAG-NEXT: s_movk_i32 s4, 0x7f1863; SDAG-NEXT: v_and_b32_sdwa v0, v4, s4 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD1864; SDAG-NEXT: s_mov_b64 s[4:5], 0x851865; SDAG-NEXT: v_cmp_lt_u64_e64 s[4:5], s[4:5], v[5:6]1866; SDAG-NEXT: v_cndmask_b32_e64 v10, -1, 0, vcc1867; SDAG-NEXT: v_cndmask_b32_e64 v9, -1, 1, vcc1868; SDAG-NEXT: v_or_b32_e32 v7, 0x80, v01869; SDAG-NEXT: v_mov_b32_e32 v8, v61870; SDAG-NEXT: ; implicit-def: $vgpr0_vgpr11871; SDAG-NEXT: ; implicit-def: $vgpr2_vgpr31872; SDAG-NEXT: s_and_saveexec_b64 s[6:7], s[4:5]1873; SDAG-NEXT: s_xor_b64 s[12:13], exec, s[6:7]1874; SDAG-NEXT: s_cbranch_execz .LBB7_41875; SDAG-NEXT: ; %bb.3: ; %fp-to-i-if-else1876; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1877; SDAG-NEXT: v_add_co_u32_e64 v11, s[4:5], -1, v01878; SDAG-NEXT: v_sub_u32_e32 v0, 0xc6, v51879; SDAG-NEXT: v_add_u32_e32 v2, 0xffffff3a, v51880; SDAG-NEXT: v_add_u32_e32 v4, 0xffffff7a, v51881; SDAG-NEXT: v_lshrrev_b64 v[0:1], v0, v[7:8]1882; SDAG-NEXT: v_lshlrev_b64 v[2:3], v2, v[7:8]1883; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v41884; SDAG-NEXT: v_cndmask_b32_e64 v1, v3, v1, s[4:5]1885; SDAG-NEXT: v_cmp_ne_u32_e64 s[6:7], 0, v41886; SDAG-NEXT: v_cndmask_b32_e64 v3, 0, v1, s[6:7]1887; SDAG-NEXT: v_cndmask_b32_e64 v2, v2, v0, s[4:5]1888; SDAG-NEXT: v_lshlrev_b64 v[0:1], v4, v[7:8]1889; SDAG-NEXT: v_cndmask_b32_e64 v2, 0, v2, s[6:7]1890; SDAG-NEXT: v_cndmask_b32_e64 v7, 0, v0, s[4:5]1891; SDAG-NEXT: v_mad_u64_u32 v[4:5], s[6:7], v7, v9, 01892; SDAG-NEXT: v_cndmask_b32_e64 v13, 0, v1, s[4:5]1893; SDAG-NEXT: v_mul_lo_u32 v8, v10, v21894; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v9, v[5:6]1895; SDAG-NEXT: v_mul_lo_u32 v12, v9, v31896; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[6:7], v9, v2, 01897; SDAG-NEXT: v_mov_b32_e32 v5, v01898; SDAG-NEXT: v_mad_u64_u32 v[5:6], s[4:5], v7, v10, v[5:6]1899; SDAG-NEXT: v_add3_u32 v3, v3, v12, v81900; SDAG-NEXT: v_mad_u64_u32 v[2:3], s[4:5], v11, v7, v[2:3]1901; SDAG-NEXT: v_add_co_u32_e64 v0, s[4:5], v1, v61902; SDAG-NEXT: v_addc_co_u32_e64 v1, s[4:5], 0, 0, s[4:5]1903; SDAG-NEXT: v_mul_lo_u32 v8, v11, v131904; SDAG-NEXT: v_mul_lo_u32 v7, v11, v71905; SDAG-NEXT: v_mad_u64_u32 v[0:1], s[4:5], v13, v10, v[0:1]1906; SDAG-NEXT: ; implicit-def: $vgpr91907; SDAG-NEXT: v_add3_u32 v3, v7, v3, v81908; SDAG-NEXT: v_add_co_u32_e64 v2, s[4:5], v0, v21909; SDAG-NEXT: v_addc_co_u32_e64 v3, s[4:5], v1, v3, s[4:5]1910; SDAG-NEXT: v_mov_b32_e32 v0, v41911; SDAG-NEXT: v_mov_b32_e32 v1, v51912; SDAG-NEXT: ; implicit-def: $vgpr5_vgpr61913; SDAG-NEXT: ; implicit-def: $vgpr7_vgpr81914; SDAG-NEXT: .LBB7_4: ; %Flow1915; SDAG-NEXT: s_andn2_saveexec_b64 s[6:7], s[12:13]1916; SDAG-NEXT: s_cbranch_execz .LBB7_61917; SDAG-NEXT: ; %bb.5: ; %fp-to-i-if-then121918; SDAG-NEXT: v_sub_u32_e32 v2, 0x86, v51919; SDAG-NEXT: v_lshrrev_b64 v[0:1], v2, v[7:8]1920; SDAG-NEXT: v_cmp_gt_u32_e64 s[4:5], 64, v21921; SDAG-NEXT: v_cndmask_b32_e64 v0, 0, v0, s[4:5]1922; SDAG-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v21923; SDAG-NEXT: v_cndmask_b32_e64 v0, v0, v7, s[4:5]1924; SDAG-NEXT: v_mul_hi_i32_i24_e32 v1, v0, v91925; SDAG-NEXT: v_ashrrev_i32_e32 v2, 31, v11926; SDAG-NEXT: v_mul_i32_i24_e32 v0, v0, v91927; SDAG-NEXT: v_mov_b32_e32 v3, v21928; SDAG-NEXT: .LBB7_6: ; %Flow11929; SDAG-NEXT: s_or_b64 exec, exec, s[6:7]1930; SDAG-NEXT: .LBB7_7: ; %Flow21931; SDAG-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11]1932; SDAG-NEXT: ; %bb.8: ; %fp-to-i-if-then51933; SDAG-NEXT: v_bfrev_b32_e32 v0, 11934; SDAG-NEXT: v_bfrev_b32_e32 v1, -21935; SDAG-NEXT: v_cndmask_b32_e32 v2, v0, v1, vcc1936; SDAG-NEXT: v_cndmask_b32_e64 v1, 0, -1, vcc1937; SDAG-NEXT: v_mov_b32_e32 v3, v21938; SDAG-NEXT: v_mov_b32_e32 v0, v11939; SDAG-NEXT: v_mov_b32_e32 v2, v11940; SDAG-NEXT: ; %bb.9: ; %Flow31941; SDAG-NEXT: s_or_b64 exec, exec, s[4:5]1942; SDAG-NEXT: .LBB7_10: ; %fp-to-i-cleanup1943; SDAG-NEXT: s_or_b64 exec, exec, s[8:9]1944; SDAG-NEXT: s_setpc_b64 s[30:31]1945;1946; GISEL-LABEL: fptoui_bf16_to_i128:1947; GISEL: ; %bb.0: ; %fp-to-i-entry1948; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1949; GISEL-NEXT: v_mov_b32_e32 v4, v01950; GISEL-NEXT: v_and_b32_e32 v5, 0xffff, v41951; GISEL-NEXT: v_mov_b32_e32 v6, 01952; GISEL-NEXT: v_lshrrev_b64 v[0:1], 7, v[5:6]1953; GISEL-NEXT: v_mov_b32_e32 v1, 0x7f1954; GISEL-NEXT: s_mov_b64 s[4:5], 01955; GISEL-NEXT: v_mov_b32_e32 v2, 01956; GISEL-NEXT: v_bfe_u32 v5, v0, 0, 81957; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[5:6], v[1:2]1958; GISEL-NEXT: s_mov_b64 s[6:7], s[4:5]1959; GISEL-NEXT: v_mov_b32_e32 v0, s41960; GISEL-NEXT: v_mov_b32_e32 v1, s51961; GISEL-NEXT: v_mov_b32_e32 v2, s61962; GISEL-NEXT: v_mov_b32_e32 v3, s71963; GISEL-NEXT: s_and_saveexec_b64 s[12:13], vcc1964; GISEL-NEXT: s_cbranch_execz .LBB7_101965; GISEL-NEXT: ; %bb.1: ; %fp-to-i-if-end1966; GISEL-NEXT: v_add_co_u32_e32 v0, vcc, 0xffffff01, v51967; GISEL-NEXT: v_mov_b32_e32 v2, 0xffffff801968; GISEL-NEXT: v_addc_co_u32_e64 v1, s[6:7], 0, -1, vcc1969; GISEL-NEXT: v_mov_b32_e32 v3, -11970; GISEL-NEXT: v_addc_co_u32_e64 v7, s[6:7], 0, -1, s[6:7]1971; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[0:1], v[2:3]1972; GISEL-NEXT: v_addc_co_u32_e64 v8, s[6:7], 0, -1, s[6:7]1973; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc1974; GISEL-NEXT: v_cmp_le_u64_e32 vcc, -1, v[7:8]1975; GISEL-NEXT: v_cmp_lt_i16_e64 s[4:5], -1, v41976; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, vcc1977; GISEL-NEXT: v_cmp_eq_u64_e32 vcc, -1, v[7:8]1978; GISEL-NEXT: v_cndmask_b32_e32 v0, v1, v0, vcc1979; GISEL-NEXT: v_and_b32_e32 v0, 1, v01980; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v01981; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr31982; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc1983; GISEL-NEXT: s_xor_b64 s[14:15], exec, s[6:7]1984; GISEL-NEXT: s_cbranch_execz .LBB7_71985; GISEL-NEXT: ; %bb.2: ; %fp-to-i-if-end91986; GISEL-NEXT: s_xor_b64 s[6:7], s[4:5], -11987; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, -1, s[6:7]1988; GISEL-NEXT: v_and_b32_e32 v0, 1, v01989; GISEL-NEXT: v_lshlrev_b16_e32 v2, 1, v01990; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, 1, s[6:7]1991; GISEL-NEXT: v_lshlrev_b16_e32 v3, 2, v01992; GISEL-NEXT: v_lshlrev_b16_e32 v7, 3, v01993; GISEL-NEXT: v_lshlrev_b16_e32 v8, 4, v01994; GISEL-NEXT: v_lshlrev_b16_e32 v9, 5, v01995; GISEL-NEXT: v_lshlrev_b16_e32 v10, 6, v01996; GISEL-NEXT: v_lshlrev_b16_e32 v11, 7, v01997; GISEL-NEXT: v_lshlrev_b16_e32 v12, 8, v01998; GISEL-NEXT: v_lshlrev_b16_e32 v13, 9, v01999; GISEL-NEXT: v_lshlrev_b16_e32 v14, 10, v02000; GISEL-NEXT: v_lshlrev_b16_e32 v15, 11, v02001; GISEL-NEXT: v_lshlrev_b16_e32 v16, 12, v02002; GISEL-NEXT: v_lshlrev_b16_e32 v17, 13, v02003; GISEL-NEXT: v_lshlrev_b16_e32 v18, 14, v02004; GISEL-NEXT: v_lshlrev_b16_e32 v19, 15, v02005; GISEL-NEXT: v_or_b32_e32 v0, v0, v22006; GISEL-NEXT: v_or_b32_e32 v1, v1, v22007; GISEL-NEXT: v_or_b32_e32 v0, v0, v32008; GISEL-NEXT: v_or_b32_e32 v1, v1, v32009; GISEL-NEXT: v_or_b32_e32 v0, v0, v72010; GISEL-NEXT: v_or_b32_e32 v1, v1, v72011; GISEL-NEXT: v_or_b32_e32 v0, v0, v82012; GISEL-NEXT: v_or_b32_e32 v1, v1, v82013; GISEL-NEXT: v_or_b32_e32 v0, v0, v92014; GISEL-NEXT: v_or_b32_e32 v1, v1, v92015; GISEL-NEXT: v_or_b32_e32 v0, v0, v102016; GISEL-NEXT: v_or_b32_e32 v1, v1, v102017; GISEL-NEXT: v_or_b32_e32 v0, v0, v112018; GISEL-NEXT: v_or_b32_e32 v1, v1, v112019; GISEL-NEXT: v_or_b32_e32 v0, v0, v122020; GISEL-NEXT: v_or_b32_e32 v1, v1, v122021; GISEL-NEXT: v_or_b32_e32 v0, v0, v132022; GISEL-NEXT: v_or_b32_e32 v1, v1, v132023; GISEL-NEXT: v_or_b32_e32 v0, v0, v142024; GISEL-NEXT: v_or_b32_e32 v1, v1, v142025; GISEL-NEXT: v_or_b32_e32 v0, v0, v152026; GISEL-NEXT: v_or_b32_e32 v1, v1, v152027; GISEL-NEXT: v_or_b32_e32 v0, v0, v162028; GISEL-NEXT: v_or_b32_e32 v1, v1, v162029; GISEL-NEXT: v_or_b32_e32 v0, v0, v172030; GISEL-NEXT: v_or_b32_e32 v1, v1, v172031; GISEL-NEXT: v_or_b32_e32 v0, v0, v182032; GISEL-NEXT: v_or_b32_e32 v1, v1, v182033; GISEL-NEXT: v_or_b32_e32 v0, v0, v192034; GISEL-NEXT: v_or_b32_e32 v1, v1, v192035; GISEL-NEXT: v_and_b32_e32 v0, 0xffff, v02036; GISEL-NEXT: v_and_b32_e32 v1, 0xffff, v12037; GISEL-NEXT: v_lshlrev_b32_e32 v2, 16, v02038; GISEL-NEXT: v_lshl_or_b32 v9, v0, 16, v02039; GISEL-NEXT: v_or3_b32 v8, v1, v2, 12040; GISEL-NEXT: v_mov_b32_e32 v0, 0x862041; GISEL-NEXT: v_mov_b32_e32 v1, 02042; GISEL-NEXT: v_and_b32_e32 v2, 0x7f, v42043; GISEL-NEXT: v_cmp_ge_u64_e32 vcc, v[5:6], v[0:1]2044; GISEL-NEXT: v_mov_b32_e32 v7, 02045; GISEL-NEXT: v_or_b32_e32 v6, 0x80, v22046; GISEL-NEXT: ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr32047; GISEL-NEXT: s_and_saveexec_b64 s[6:7], vcc2048; GISEL-NEXT: s_xor_b64 s[16:17], exec, s[6:7]2049; GISEL-NEXT: s_cbranch_execz .LBB7_42050; GISEL-NEXT: ; %bb.3: ; %fp-to-i-if-else2051; GISEL-NEXT: v_add_u32_e32 v2, 0xffffff7a, v52052; GISEL-NEXT: v_lshlrev_b64 v[0:1], v2, v[6:7]2053; GISEL-NEXT: v_add_u32_e32 v5, 0xffffff3a, v52054; GISEL-NEXT: v_sub_u32_e32 v3, 64, v22055; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v22056; GISEL-NEXT: v_lshrrev_b64 v[3:4], v3, v[6:7]2057; GISEL-NEXT: v_lshlrev_b64 v[5:6], v5, v[6:7]2058; GISEL-NEXT: v_cndmask_b32_e32 v7, 0, v0, vcc2059; GISEL-NEXT: v_cndmask_b32_e32 v12, 0, v1, vcc2060; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[6:7], v7, v9, 02061; GISEL-NEXT: v_cndmask_b32_e32 v3, v5, v3, vcc2062; GISEL-NEXT: v_cmp_eq_u32_e64 s[6:7], 0, v22063; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v12, v9, v[0:1]2064; GISEL-NEXT: v_cndmask_b32_e64 v5, v3, 0, s[6:7]2065; GISEL-NEXT: v_mad_u64_u32 v[0:1], s[8:9], v7, v8, 02066; GISEL-NEXT: v_mad_u64_u32 v[2:3], s[8:9], v5, v8, v[10:11]2067; GISEL-NEXT: v_mul_lo_u32 v13, v12, v92068; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v7, v9, v[1:2]2069; GISEL-NEXT: v_mul_lo_u32 v7, v7, v92070; GISEL-NEXT: v_mad_u64_u32 v[1:2], s[10:11], v12, v8, v[10:11]2071; GISEL-NEXT: v_addc_co_u32_e64 v3, s[10:11], v3, v7, s[10:11]2072; GISEL-NEXT: v_addc_co_u32_e64 v3, s[8:9], v3, v13, s[8:9]2073; GISEL-NEXT: v_mad_u64_u32 v[10:11], s[8:9], v5, v9, v[3:4]2074; GISEL-NEXT: v_cndmask_b32_e32 v3, v6, v4, vcc2075; GISEL-NEXT: v_cndmask_b32_e64 v5, v3, 0, s[6:7]2076; GISEL-NEXT: v_mad_u64_u32 v[3:4], s[6:7], v5, v8, v[10:11]2077; GISEL-NEXT: ; implicit-def: $vgpr52078; GISEL-NEXT: ; implicit-def: $vgpr6_vgpr72079; GISEL-NEXT: ; implicit-def: $vgpr82080; GISEL-NEXT: .LBB7_4: ; %Flow2081; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[16:17]2082; GISEL-NEXT: s_cbranch_execz .LBB7_62083; GISEL-NEXT: ; %bb.5: ; %fp-to-i-if-then122084; GISEL-NEXT: v_sub_co_u32_e32 v2, vcc, 0x86, v52085; GISEL-NEXT: v_lshrrev_b64 v[0:1], v2, v[6:7]2086; GISEL-NEXT: v_cmp_gt_u32_e32 vcc, 64, v22087; GISEL-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc2088; GISEL-NEXT: v_cmp_eq_u32_e32 vcc, 0, v22089; GISEL-NEXT: v_cndmask_b32_e32 v0, v0, v6, vcc2090; GISEL-NEXT: v_mul_hi_i32_i24_e32 v1, v0, v82091; GISEL-NEXT: v_ashrrev_i32_e32 v2, 31, v12092; GISEL-NEXT: v_mul_i32_i24_e32 v0, v0, v82093; GISEL-NEXT: v_mov_b32_e32 v3, v22094; GISEL-NEXT: .LBB7_6: ; %Flow12095; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]2096; GISEL-NEXT: .LBB7_7: ; %Flow22097; GISEL-NEXT: s_andn2_saveexec_b64 s[6:7], s[14:15]2098; GISEL-NEXT: s_cbranch_execz .LBB7_92099; GISEL-NEXT: ; %bb.8: ; %fp-to-i-if-then52100; GISEL-NEXT: v_cndmask_b32_e64 v1, 0, -1, s[4:5]2101; GISEL-NEXT: v_and_b32_e32 v1, 1, v12102; GISEL-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]2103; GISEL-NEXT: v_lshlrev_b32_e32 v2, 1, v12104; GISEL-NEXT: v_or_b32_e32 v0, v0, v22105; GISEL-NEXT: v_lshlrev_b32_e32 v3, 2, v12106; GISEL-NEXT: v_lshlrev_b32_e32 v4, 3, v12107; GISEL-NEXT: v_or_b32_e32 v2, v1, v22108; GISEL-NEXT: v_or3_b32 v0, v0, v3, v42109; GISEL-NEXT: v_lshlrev_b32_e32 v5, 4, v12110; GISEL-NEXT: v_lshlrev_b32_e32 v6, 5, v12111; GISEL-NEXT: v_or3_b32 v2, v2, v3, v42112; GISEL-NEXT: v_or3_b32 v0, v0, v5, v62113; GISEL-NEXT: v_lshlrev_b32_e32 v7, 6, v12114; GISEL-NEXT: v_lshlrev_b32_e32 v8, 7, v12115; GISEL-NEXT: v_or3_b32 v2, v2, v5, v62116; GISEL-NEXT: v_or3_b32 v0, v0, v7, v82117; GISEL-NEXT: v_lshlrev_b32_e32 v9, 8, v12118; GISEL-NEXT: v_lshlrev_b32_e32 v10, 9, v12119; GISEL-NEXT: v_or3_b32 v2, v2, v7, v82120; GISEL-NEXT: v_or3_b32 v0, v0, v9, v102121; GISEL-NEXT: v_lshlrev_b32_e32 v11, 10, v12122; GISEL-NEXT: v_lshlrev_b32_e32 v12, 11, v12123; GISEL-NEXT: v_or3_b32 v2, v2, v9, v102124; GISEL-NEXT: v_or3_b32 v0, v0, v11, v122125; GISEL-NEXT: v_lshlrev_b32_e32 v13, 12, v12126; GISEL-NEXT: v_lshlrev_b32_e32 v14, 13, v12127; GISEL-NEXT: v_or3_b32 v2, v2, v11, v122128; GISEL-NEXT: v_or3_b32 v0, v0, v13, v142129; GISEL-NEXT: v_lshlrev_b32_e32 v15, 14, v12130; GISEL-NEXT: v_lshlrev_b32_e32 v16, 15, v12131; GISEL-NEXT: v_or3_b32 v2, v2, v13, v142132; GISEL-NEXT: v_or3_b32 v0, v0, v15, v162133; GISEL-NEXT: v_lshlrev_b32_e32 v17, 16, v12134; GISEL-NEXT: v_lshlrev_b32_e32 v18, 17, v12135; GISEL-NEXT: v_or3_b32 v2, v2, v15, v162136; GISEL-NEXT: v_or3_b32 v0, v0, v17, v182137; GISEL-NEXT: v_lshlrev_b32_e32 v19, 18, v12138; GISEL-NEXT: v_lshlrev_b32_e32 v3, 19, v12139; GISEL-NEXT: v_or3_b32 v2, v2, v17, v182140; GISEL-NEXT: v_or3_b32 v0, v0, v19, v32141; GISEL-NEXT: v_lshlrev_b32_e32 v4, 20, v12142; GISEL-NEXT: v_lshlrev_b32_e32 v5, 21, v12143; GISEL-NEXT: v_or3_b32 v2, v2, v19, v32144; GISEL-NEXT: v_or3_b32 v0, v0, v4, v52145; GISEL-NEXT: v_lshlrev_b32_e32 v6, 22, v12146; GISEL-NEXT: v_lshlrev_b32_e32 v7, 23, v12147; GISEL-NEXT: v_or3_b32 v2, v2, v4, v52148; GISEL-NEXT: v_or3_b32 v0, v0, v6, v72149; GISEL-NEXT: v_lshlrev_b32_e32 v8, 24, v12150; GISEL-NEXT: v_lshlrev_b32_e32 v9, 25, v12151; GISEL-NEXT: v_or3_b32 v2, v2, v6, v72152; GISEL-NEXT: v_or3_b32 v0, v0, v8, v92153; GISEL-NEXT: v_lshlrev_b32_e32 v10, 26, v12154; GISEL-NEXT: v_lshlrev_b32_e32 v11, 27, v12155; GISEL-NEXT: v_or3_b32 v2, v2, v8, v92156; GISEL-NEXT: v_or3_b32 v0, v0, v10, v112157; GISEL-NEXT: v_lshlrev_b32_e32 v12, 28, v12158; GISEL-NEXT: v_lshlrev_b32_e32 v13, 29, v12159; GISEL-NEXT: v_or3_b32 v2, v2, v10, v112160; GISEL-NEXT: v_or3_b32 v0, v0, v12, v132161; GISEL-NEXT: v_lshlrev_b32_e32 v14, 30, v12162; GISEL-NEXT: v_lshlrev_b32_e32 v1, 31, v12163; GISEL-NEXT: v_or3_b32 v2, v2, v12, v132164; GISEL-NEXT: v_or3_b32 v0, v0, v14, v12165; GISEL-NEXT: v_or3_b32 v1, v2, v14, v12166; GISEL-NEXT: v_add_u32_e32 v3, 0x80000000, v12167; GISEL-NEXT: v_mov_b32_e32 v2, v12168; GISEL-NEXT: .LBB7_9: ; %Flow32169; GISEL-NEXT: s_or_b64 exec, exec, s[6:7]2170; GISEL-NEXT: .LBB7_10: ; %fp-to-i-cleanup2171; GISEL-NEXT: s_or_b64 exec, exec, s[12:13]2172; GISEL-NEXT: s_setpc_b64 s[30:31]2173 %cvt = fptoui bfloat %x to i1282174 ret i128 %cvt2175}2176