brintos

brintos / llvm-project-archived public Read only

0
0
Text · 69.0 KiB · 2f9182e Raw
1608 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 float @sitofp_i128_to_f32(i128 %x) {6; SDAG-LABEL: sitofp_i128_to_f32:7; SDAG:       ; %bb.0: ; %itofp-entry8; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9; SDAG-NEXT:    v_or_b32_e32 v5, v1, v310; SDAG-NEXT:    v_or_b32_e32 v4, v0, v211; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]12; SDAG-NEXT:    v_mov_b32_e32 v4, 013; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc14; SDAG-NEXT:    s_cbranch_execz .LBB0_1415; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end16; SDAG-NEXT:    v_sub_co_u32_e32 v4, vcc, 0, v017; SDAG-NEXT:    v_subb_co_u32_e32 v5, vcc, 0, v1, vcc18; SDAG-NEXT:    v_subb_co_u32_e32 v6, vcc, 0, v2, vcc19; SDAG-NEXT:    v_subb_co_u32_e32 v7, vcc, 0, v3, vcc20; SDAG-NEXT:    v_cmp_gt_i64_e32 vcc, 0, v[2:3]21; SDAG-NEXT:    ; implicit-def: $vgpr822; SDAG-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc23; SDAG-NEXT:    v_cndmask_b32_e32 v4, v2, v6, vcc24; SDAG-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc25; SDAG-NEXT:    v_cndmask_b32_e32 v5, v3, v7, vcc26; SDAG-NEXT:    v_ffbh_u32_e32 v2, v427; SDAG-NEXT:    v_add_u32_e32 v2, 32, v228; SDAG-NEXT:    v_ffbh_u32_e32 v6, v529; SDAG-NEXT:    v_min_u32_e32 v2, v2, v630; SDAG-NEXT:    v_ffbh_u32_e32 v6, v031; SDAG-NEXT:    v_add_u32_e32 v6, 32, v632; SDAG-NEXT:    v_ffbh_u32_e32 v7, v133; SDAG-NEXT:    v_min_u32_e32 v6, v6, v734; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]35; SDAG-NEXT:    v_add_u32_e32 v6, 64, v636; SDAG-NEXT:    v_cndmask_b32_e32 v7, v6, v2, vcc37; SDAG-NEXT:    v_sub_u32_e32 v2, 0x80, v738; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 25, v239; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc40; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]41; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else42; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffff98, v743; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]44; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v245; SDAG-NEXT:    v_cndmask_b32_e32 v8, 0, v0, vcc46; SDAG-NEXT:    ; implicit-def: $vgpr247; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr148; SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr549; SDAG-NEXT:  ; %bb.3: ; %Flow350; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]51; SDAG-NEXT:    v_sub_u32_e32 v6, 0x7f, v752; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]53; SDAG-NEXT:    s_cbranch_execz .LBB0_1354; SDAG-NEXT:  ; %bb.4: ; %NodeBlock55; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 25, v256; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc57; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]58; SDAG-NEXT:    s_cbranch_execz .LBB0_859; SDAG-NEXT:  ; %bb.5: ; %LeafBlock60; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v261; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc62; SDAG-NEXT:    s_cbranch_execz .LBB0_763; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default64; SDAG-NEXT:    v_sub_u32_e32 v12, 0x66, v765; SDAG-NEXT:    v_sub_u32_e32 v10, 64, v1266; SDAG-NEXT:    v_lshrrev_b64 v[8:9], v12, v[0:1]67; SDAG-NEXT:    v_lshlrev_b64 v[10:11], v10, v[4:5]68; SDAG-NEXT:    v_sub_u32_e32 v13, 38, v769; SDAG-NEXT:    v_or_b32_e32 v11, v9, v1170; SDAG-NEXT:    v_or_b32_e32 v10, v8, v1071; SDAG-NEXT:    v_lshrrev_b64 v[8:9], v13, v[4:5]72; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v1273; SDAG-NEXT:    v_add_u32_e32 v14, 26, v774; SDAG-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc75; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v1276; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc77; SDAG-NEXT:    v_lshrrev_b64 v[10:11], v13, v[0:1]78; SDAG-NEXT:    v_lshlrev_b64 v[12:13], v14, v[4:5]79; SDAG-NEXT:    v_subrev_u32_e32 v7, 38, v780; SDAG-NEXT:    v_cndmask_b32_e64 v15, v8, v0, s[4:5]81; SDAG-NEXT:    v_lshlrev_b64 v[7:8], v7, v[0:1]82; SDAG-NEXT:    v_cndmask_b32_e64 v9, v9, v1, s[4:5]83; SDAG-NEXT:    v_or_b32_e32 v11, v13, v1184; SDAG-NEXT:    v_or_b32_e32 v10, v12, v1085; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v1486; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v14, v[0:1]87; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc88; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v1489; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc90; SDAG-NEXT:    v_cndmask_b32_e64 v5, v8, v5, s[4:5]91; SDAG-NEXT:    v_cndmask_b32_e64 v4, v7, v4, s[4:5]92; SDAG-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc93; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc94; SDAG-NEXT:    v_or_b32_e32 v1, v1, v595; SDAG-NEXT:    v_or_b32_e32 v0, v0, v496; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]97; SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc98; SDAG-NEXT:    v_or_b32_e32 v8, v15, v099; SDAG-NEXT:    v_mov_b32_e32 v0, v8100; SDAG-NEXT:    v_mov_b32_e32 v1, v9101; SDAG-NEXT:  .LBB0_7: ; %Flow1102; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]103; SDAG-NEXT:  .LBB0_8: ; %Flow2104; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]105; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb106; SDAG-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]107; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog108; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]109; SDAG-NEXT:    v_lshrrev_b32_e32 v4, 2, v0110; SDAG-NEXT:    v_and_or_b32 v0, v4, 1, v0111; SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0112; SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc113; SDAG-NEXT:    v_and_b32_e32 v4, 0x4000000, v0114; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v4115; SDAG-NEXT:    v_alignbit_b32 v8, v1, v0, 2116; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc117; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then20118; SDAG-NEXT:    v_alignbit_b32 v8, v1, v0, 3119; SDAG-NEXT:    v_mov_b32_e32 v6, v2120; SDAG-NEXT:  ; %bb.12: ; %Flow121; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]122; SDAG-NEXT:  .LBB0_13: ; %Flow4123; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]124; SDAG-NEXT:    v_and_b32_e32 v0, 0x80000000, v3125; SDAG-NEXT:    v_lshl_add_u32 v1, v6, 23, 1.0126; SDAG-NEXT:    v_and_b32_e32 v2, 0x7fffff, v8127; SDAG-NEXT:    v_or3_b32 v4, v2, v0, v1128; SDAG-NEXT:  .LBB0_14: ; %Flow5129; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]130; SDAG-NEXT:    v_mov_b32_e32 v0, v4131; SDAG-NEXT:    s_setpc_b64 s[30:31]132;133; GISEL-LABEL: sitofp_i128_to_f32:134; GISEL:       ; %bb.0: ; %itofp-entry135; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)136; GISEL-NEXT:    v_or_b32_e32 v4, v0, v2137; GISEL-NEXT:    v_or_b32_e32 v5, v1, v3138; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]139; GISEL-NEXT:    s_mov_b32 s4, 0140; GISEL-NEXT:    v_mov_b32_e32 v4, s4141; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc142; GISEL-NEXT:    s_cbranch_execz .LBB0_14143; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end144; GISEL-NEXT:    v_ashrrev_i32_e32 v6, 31, v3145; GISEL-NEXT:    v_xor_b32_e32 v0, v6, v0146; GISEL-NEXT:    v_xor_b32_e32 v1, v6, v1147; GISEL-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v6148; GISEL-NEXT:    v_xor_b32_e32 v2, v6, v2149; GISEL-NEXT:    v_subb_co_u32_e32 v1, vcc, v1, v6, vcc150; GISEL-NEXT:    v_xor_b32_e32 v3, v6, v3151; GISEL-NEXT:    v_subb_co_u32_e32 v2, vcc, v2, v6, vcc152; GISEL-NEXT:    v_ffbh_u32_e32 v5, v0153; GISEL-NEXT:    v_subb_co_u32_e32 v3, vcc, v3, v6, vcc154; GISEL-NEXT:    v_ffbh_u32_e32 v4, v1155; GISEL-NEXT:    v_add_u32_e32 v5, 32, v5156; GISEL-NEXT:    v_ffbh_u32_e32 v7, v2157; GISEL-NEXT:    v_min_u32_e32 v4, v4, v5158; GISEL-NEXT:    v_ffbh_u32_e32 v5, v3159; GISEL-NEXT:    v_add_u32_e32 v7, 32, v7160; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[2:3]161; GISEL-NEXT:    v_add_u32_e32 v4, 64, v4162; GISEL-NEXT:    v_min_u32_e32 v5, v5, v7163; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v4, vcc164; GISEL-NEXT:    v_sub_u32_e32 v7, 0x80, v5165; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 24, v7166; GISEL-NEXT:    ; implicit-def: $vgpr4167; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc168; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]169; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else170; GISEL-NEXT:    v_add_u32_e32 v2, 0xffffff98, v5171; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]172; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2173; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc174; GISEL-NEXT:    ; implicit-def: $vgpr7175; GISEL-NEXT:    ; implicit-def: $vgpr0176; GISEL-NEXT:    ; implicit-def: $vgpr2177; GISEL-NEXT:  ; %bb.3: ; %Flow3178; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]179; GISEL-NEXT:    v_sub_u32_e32 v8, 0x7f, v5180; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]181; GISEL-NEXT:    s_cbranch_execz .LBB0_13182; GISEL-NEXT:  ; %bb.4: ; %NodeBlock183; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 26, v7184; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc185; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]186; GISEL-NEXT:    s_cbranch_execz .LBB0_8187; GISEL-NEXT:  ; %bb.5: ; %LeafBlock188; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v7189; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc190; GISEL-NEXT:    s_cbranch_execz .LBB0_7191; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default192; GISEL-NEXT:    v_sub_u32_e32 v4, 0x66, v5193; GISEL-NEXT:    v_sub_u32_e32 v11, 64, v4194; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v4, v[0:1]195; GISEL-NEXT:    v_lshlrev_b64 v[11:12], v11, v[2:3]196; GISEL-NEXT:    v_add_u32_e32 v13, 0xffffffc0, v4197; GISEL-NEXT:    v_or_b32_e32 v11, v9, v11198; GISEL-NEXT:    v_or_b32_e32 v12, v10, v12199; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v13, v[2:3]200; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v4201; GISEL-NEXT:    v_add_u32_e32 v14, 26, v5202; GISEL-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc203; GISEL-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc204; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v4205; GISEL-NEXT:    v_sub_u32_e32 v11, 64, v14206; GISEL-NEXT:    v_cndmask_b32_e32 v13, v9, v0, vcc207; GISEL-NEXT:    v_cndmask_b32_e32 v4, v10, v1, vcc208; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v14, -1209; GISEL-NEXT:    v_lshlrev_b64 v[11:12], v11, -1210; GISEL-NEXT:    v_add_u32_e32 v5, 0xffffffda, v5211; GISEL-NEXT:    v_or_b32_e32 v15, v9, v11212; GISEL-NEXT:    v_or_b32_e32 v16, v10, v12213; GISEL-NEXT:    v_lshrrev_b64 v[11:12], v5, -1214; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v14215; GISEL-NEXT:    v_cndmask_b32_e32 v5, v11, v15, vcc216; GISEL-NEXT:    v_cndmask_b32_e32 v11, v12, v16, vcc217; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v14218; GISEL-NEXT:    v_cndmask_b32_e32 v9, 0, v9, vcc219; GISEL-NEXT:    v_cndmask_b32_e32 v10, 0, v10, vcc220; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, -1, s[4:5]221; GISEL-NEXT:    v_cndmask_b32_e64 v11, v11, -1, s[4:5]222; GISEL-NEXT:    v_and_b32_e32 v2, v9, v2223; GISEL-NEXT:    v_and_b32_e32 v3, v10, v3224; GISEL-NEXT:    v_and_or_b32 v0, v5, v0, v2225; GISEL-NEXT:    v_and_or_b32 v1, v11, v1, v3226; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]227; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc228; GISEL-NEXT:    v_or_b32_e32 v3, v13, v0229; GISEL-NEXT:    v_mov_b32_e32 v0, v3230; GISEL-NEXT:    v_mov_b32_e32 v1, v4231; GISEL-NEXT:    v_mov_b32_e32 v2, v5232; GISEL-NEXT:    v_mov_b32_e32 v3, v6233; GISEL-NEXT:  .LBB0_7: ; %Flow1234; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]235; GISEL-NEXT:  .LBB0_8: ; %Flow2236; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]237; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb238; GISEL-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]239; GISEL-NEXT:  ; %bb.10: ; %itofp-sw-epilog240; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]241; GISEL-NEXT:    v_bfe_u32 v2, v0, 2, 1242; GISEL-NEXT:    v_or_b32_e32 v0, v0, v2243; GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0244; GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc245; GISEL-NEXT:    v_and_b32_e32 v2, 0x4000000, v0246; GISEL-NEXT:    v_mov_b32_e32 v3, 0247; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]248; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]249; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc250; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then20251; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]252; GISEL-NEXT:    v_mov_b32_e32 v8, v7253; GISEL-NEXT:  ; %bb.12: ; %Flow254; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]255; GISEL-NEXT:  .LBB0_13: ; %Flow4256; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]257; GISEL-NEXT:    v_and_b32_e32 v0, 0x80000000, v6258; GISEL-NEXT:    v_lshl_add_u32 v1, v8, 23, 1.0259; GISEL-NEXT:    v_and_b32_e32 v2, 0x7fffff, v4260; GISEL-NEXT:    v_or3_b32 v4, v2, v0, v1261; GISEL-NEXT:  .LBB0_14: ; %Flow5262; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]263; GISEL-NEXT:    v_mov_b32_e32 v0, v4264; GISEL-NEXT:    s_setpc_b64 s[30:31]265  %cvt = sitofp i128 %x to float266  ret float %cvt267}268 269define float @uitofp_i128_to_f32(i128 %x) {270; SDAG-LABEL: uitofp_i128_to_f32:271; SDAG:       ; %bb.0: ; %itofp-entry272; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)273; SDAG-NEXT:    v_or_b32_e32 v5, v1, v3274; SDAG-NEXT:    v_or_b32_e32 v4, v0, v2275; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]276; SDAG-NEXT:    v_mov_b32_e32 v4, 0277; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc278; SDAG-NEXT:    s_cbranch_execz .LBB1_14279; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end280; SDAG-NEXT:    v_ffbh_u32_e32 v4, v2281; SDAG-NEXT:    v_add_u32_e32 v4, 32, v4282; SDAG-NEXT:    v_ffbh_u32_e32 v5, v3283; SDAG-NEXT:    v_min_u32_e32 v4, v4, v5284; SDAG-NEXT:    v_ffbh_u32_e32 v5, v0285; SDAG-NEXT:    v_add_u32_e32 v5, 32, v5286; SDAG-NEXT:    v_ffbh_u32_e32 v6, v1287; SDAG-NEXT:    v_min_u32_e32 v5, v5, v6288; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]289; SDAG-NEXT:    v_add_u32_e32 v5, 64, v5290; SDAG-NEXT:    v_cndmask_b32_e32 v6, v5, v4, vcc291; SDAG-NEXT:    v_sub_u32_e32 v4, 0x80, v6292; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 25, v4293; SDAG-NEXT:    ; implicit-def: $vgpr7294; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc295; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]296; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else297; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffff98, v6298; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]299; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2300; SDAG-NEXT:    v_cndmask_b32_e32 v7, 0, v0, vcc301; SDAG-NEXT:    ; implicit-def: $vgpr4302; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1303; SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3304; SDAG-NEXT:  ; %bb.3: ; %Flow3305; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]306; SDAG-NEXT:    v_sub_u32_e32 v5, 0x7f, v6307; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]308; SDAG-NEXT:    s_cbranch_execz .LBB1_13309; SDAG-NEXT:  ; %bb.4: ; %NodeBlock310; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 25, v4311; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc312; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]313; SDAG-NEXT:    s_cbranch_execz .LBB1_8314; SDAG-NEXT:  ; %bb.5: ; %LeafBlock315; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v4316; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc317; SDAG-NEXT:    s_cbranch_execz .LBB1_7318; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default319; SDAG-NEXT:    v_sub_u32_e32 v11, 0x66, v6320; SDAG-NEXT:    v_sub_u32_e32 v9, 64, v11321; SDAG-NEXT:    v_lshrrev_b64 v[7:8], v11, v[0:1]322; SDAG-NEXT:    v_lshlrev_b64 v[9:10], v9, v[2:3]323; SDAG-NEXT:    v_sub_u32_e32 v12, 38, v6324; SDAG-NEXT:    v_or_b32_e32 v10, v8, v10325; SDAG-NEXT:    v_or_b32_e32 v9, v7, v9326; SDAG-NEXT:    v_lshrrev_b64 v[7:8], v12, v[2:3]327; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v11328; SDAG-NEXT:    v_add_u32_e32 v13, 26, v6329; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc330; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v11331; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc332; SDAG-NEXT:    v_lshrrev_b64 v[9:10], v12, v[0:1]333; SDAG-NEXT:    v_lshlrev_b64 v[11:12], v13, v[2:3]334; SDAG-NEXT:    v_subrev_u32_e32 v6, 38, v6335; SDAG-NEXT:    v_cndmask_b32_e64 v14, v7, v0, s[4:5]336; SDAG-NEXT:    v_lshlrev_b64 v[6:7], v6, v[0:1]337; SDAG-NEXT:    v_cndmask_b32_e64 v8, v8, v1, s[4:5]338; SDAG-NEXT:    v_or_b32_e32 v10, v12, v10339; SDAG-NEXT:    v_or_b32_e32 v9, v11, v9340; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v13341; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v13, v[0:1]342; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc343; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v13344; SDAG-NEXT:    v_cndmask_b32_e32 v6, v6, v9, vcc345; SDAG-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s[4:5]346; SDAG-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s[4:5]347; SDAG-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc348; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc349; SDAG-NEXT:    v_or_b32_e32 v1, v1, v3350; SDAG-NEXT:    v_or_b32_e32 v0, v0, v2351; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]352; SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc353; SDAG-NEXT:    v_or_b32_e32 v7, v14, v0354; SDAG-NEXT:    v_mov_b32_e32 v0, v7355; SDAG-NEXT:    v_mov_b32_e32 v1, v8356; SDAG-NEXT:  .LBB1_7: ; %Flow1357; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]358; SDAG-NEXT:  .LBB1_8: ; %Flow2359; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]360; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb361; SDAG-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]362; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog363; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]364; SDAG-NEXT:    v_lshrrev_b32_e32 v2, 2, v0365; SDAG-NEXT:    v_and_or_b32 v0, v2, 1, v0366; SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0367; SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc368; SDAG-NEXT:    v_and_b32_e32 v2, 0x4000000, v0369; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v2370; SDAG-NEXT:    v_alignbit_b32 v7, v1, v0, 2371; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc372; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then20373; SDAG-NEXT:    v_alignbit_b32 v7, v1, v0, 3374; SDAG-NEXT:    v_mov_b32_e32 v5, v4375; SDAG-NEXT:  ; %bb.12: ; %Flow376; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]377; SDAG-NEXT:  .LBB1_13: ; %Flow4378; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]379; SDAG-NEXT:    v_and_b32_e32 v0, 0x7fffff, v7380; SDAG-NEXT:    v_lshl_or_b32 v0, v5, 23, v0381; SDAG-NEXT:    v_add_u32_e32 v4, 1.0, v0382; SDAG-NEXT:  .LBB1_14: ; %Flow5383; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]384; SDAG-NEXT:    v_mov_b32_e32 v0, v4385; SDAG-NEXT:    s_setpc_b64 s[30:31]386;387; GISEL-LABEL: uitofp_i128_to_f32:388; GISEL:       ; %bb.0: ; %itofp-entry389; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)390; GISEL-NEXT:    v_or_b32_e32 v4, v0, v2391; GISEL-NEXT:    v_or_b32_e32 v5, v1, v3392; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]393; GISEL-NEXT:    s_mov_b32 s4, 0394; GISEL-NEXT:    v_mov_b32_e32 v4, s4395; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc396; GISEL-NEXT:    s_cbranch_execz .LBB1_14397; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end398; GISEL-NEXT:    v_ffbh_u32_e32 v5, v0399; GISEL-NEXT:    v_ffbh_u32_e32 v4, v1400; GISEL-NEXT:    v_add_u32_e32 v5, 32, v5401; GISEL-NEXT:    v_ffbh_u32_e32 v6, v2402; GISEL-NEXT:    v_min_u32_e32 v4, v4, v5403; GISEL-NEXT:    v_ffbh_u32_e32 v5, v3404; GISEL-NEXT:    v_add_u32_e32 v6, 32, v6405; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[2:3]406; GISEL-NEXT:    v_add_u32_e32 v4, 64, v4407; GISEL-NEXT:    v_min_u32_e32 v5, v5, v6408; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v4, vcc409; GISEL-NEXT:    v_sub_u32_e32 v6, 0x80, v5410; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 24, v6411; GISEL-NEXT:    ; implicit-def: $vgpr4412; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc413; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]414; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else415; GISEL-NEXT:    v_add_u32_e32 v2, 0xffffff98, v5416; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]417; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2418; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc419; GISEL-NEXT:    ; implicit-def: $vgpr6420; GISEL-NEXT:    ; implicit-def: $vgpr0421; GISEL-NEXT:    ; implicit-def: $vgpr2422; GISEL-NEXT:  ; %bb.3: ; %Flow3423; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]424; GISEL-NEXT:    v_sub_u32_e32 v7, 0x7f, v5425; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]426; GISEL-NEXT:    s_cbranch_execz .LBB1_13427; GISEL-NEXT:  ; %bb.4: ; %NodeBlock428; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 26, v6429; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc430; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]431; GISEL-NEXT:    s_cbranch_execz .LBB1_8432; GISEL-NEXT:  ; %bb.5: ; %LeafBlock433; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v6434; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc435; GISEL-NEXT:    s_cbranch_execz .LBB1_7436; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default437; GISEL-NEXT:    v_sub_u32_e32 v4, 0x66, v5438; GISEL-NEXT:    v_sub_u32_e32 v10, 64, v4439; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v4, v[0:1]440; GISEL-NEXT:    v_lshlrev_b64 v[10:11], v10, v[2:3]441; GISEL-NEXT:    v_add_u32_e32 v12, 0xffffffc0, v4442; GISEL-NEXT:    v_or_b32_e32 v10, v8, v10443; GISEL-NEXT:    v_or_b32_e32 v11, v9, v11444; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v12, v[2:3]445; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v4446; GISEL-NEXT:    v_add_u32_e32 v13, 26, v5447; GISEL-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc448; GISEL-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc449; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v4450; GISEL-NEXT:    v_sub_u32_e32 v10, 64, v13451; GISEL-NEXT:    v_cndmask_b32_e32 v12, v8, v0, vcc452; GISEL-NEXT:    v_cndmask_b32_e32 v4, v9, v1, vcc453; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v13, -1454; GISEL-NEXT:    v_lshlrev_b64 v[10:11], v10, -1455; GISEL-NEXT:    v_add_u32_e32 v5, 0xffffffda, v5456; GISEL-NEXT:    v_or_b32_e32 v14, v8, v10457; GISEL-NEXT:    v_or_b32_e32 v15, v9, v11458; GISEL-NEXT:    v_lshrrev_b64 v[10:11], v5, -1459; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v13460; GISEL-NEXT:    v_cndmask_b32_e32 v5, v10, v14, vcc461; GISEL-NEXT:    v_cndmask_b32_e32 v10, v11, v15, vcc462; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v13463; GISEL-NEXT:    v_cndmask_b32_e32 v8, 0, v8, vcc464; GISEL-NEXT:    v_cndmask_b32_e32 v9, 0, v9, vcc465; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, -1, s[4:5]466; GISEL-NEXT:    v_cndmask_b32_e64 v10, v10, -1, s[4:5]467; GISEL-NEXT:    v_and_b32_e32 v2, v8, v2468; GISEL-NEXT:    v_and_b32_e32 v3, v9, v3469; GISEL-NEXT:    v_and_or_b32 v0, v5, v0, v2470; GISEL-NEXT:    v_and_or_b32 v1, v10, v1, v3471; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]472; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc473; GISEL-NEXT:    v_or_b32_e32 v3, v12, v0474; GISEL-NEXT:    v_mov_b32_e32 v0, v3475; GISEL-NEXT:    v_mov_b32_e32 v1, v4476; GISEL-NEXT:    v_mov_b32_e32 v2, v5477; GISEL-NEXT:    v_mov_b32_e32 v3, v6478; GISEL-NEXT:  .LBB1_7: ; %Flow1479; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]480; GISEL-NEXT:  .LBB1_8: ; %Flow2481; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]482; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb483; GISEL-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]484; GISEL-NEXT:  ; %bb.10: ; %itofp-sw-epilog485; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]486; GISEL-NEXT:    v_bfe_u32 v2, v0, 2, 1487; GISEL-NEXT:    v_or_b32_e32 v0, v0, v2488; GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0489; GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc490; GISEL-NEXT:    v_and_b32_e32 v2, 0x4000000, v0491; GISEL-NEXT:    v_mov_b32_e32 v3, 0492; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]493; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]494; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc495; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then20496; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]497; GISEL-NEXT:    v_mov_b32_e32 v7, v6498; GISEL-NEXT:  ; %bb.12: ; %Flow499; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]500; GISEL-NEXT:  .LBB1_13: ; %Flow4501; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]502; GISEL-NEXT:    v_lshl_add_u32 v0, v7, 23, 1.0503; GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fffff504; GISEL-NEXT:    v_and_or_b32 v4, v4, v1, v0505; GISEL-NEXT:  .LBB1_14: ; %Flow5506; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]507; GISEL-NEXT:    v_mov_b32_e32 v0, v4508; GISEL-NEXT:    s_setpc_b64 s[30:31]509  %cvt = uitofp i128 %x to float510  ret float %cvt511}512 513define double @sitofp_i128_to_f64(i128 %x) {514; SDAG-LABEL: sitofp_i128_to_f64:515; SDAG:       ; %bb.0: ; %itofp-entry516; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)517; SDAG-NEXT:    v_mov_b32_e32 v5, v1518; SDAG-NEXT:    v_mov_b32_e32 v4, v0519; SDAG-NEXT:    v_or_b32_e32 v1, v5, v3520; SDAG-NEXT:    v_or_b32_e32 v0, v4, v2521; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]522; SDAG-NEXT:    v_mov_b32_e32 v0, 0523; SDAG-NEXT:    v_mov_b32_e32 v1, 0524; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc525; SDAG-NEXT:    s_cbranch_execz .LBB2_14526; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end527; SDAG-NEXT:    v_sub_co_u32_e32 v0, vcc, 0, v4528; SDAG-NEXT:    v_subb_co_u32_e32 v1, vcc, 0, v5, vcc529; SDAG-NEXT:    v_subb_co_u32_e32 v6, vcc, 0, v2, vcc530; SDAG-NEXT:    v_subb_co_u32_e32 v7, vcc, 0, v3, vcc531; SDAG-NEXT:    v_cmp_gt_i64_e32 vcc, 0, v[2:3]532; SDAG-NEXT:    ; implicit-def: $vgpr10533; SDAG-NEXT:    v_cndmask_b32_e32 v6, v2, v6, vcc534; SDAG-NEXT:    v_cndmask_b32_e32 v4, v4, v0, vcc535; SDAG-NEXT:    v_cndmask_b32_e32 v7, v3, v7, vcc536; SDAG-NEXT:    v_ffbh_u32_e32 v0, v6537; SDAG-NEXT:    v_cndmask_b32_e32 v5, v5, v1, vcc538; SDAG-NEXT:    v_add_u32_e32 v0, 32, v0539; SDAG-NEXT:    v_ffbh_u32_e32 v1, v7540; SDAG-NEXT:    v_min_u32_e32 v0, v0, v1541; SDAG-NEXT:    v_ffbh_u32_e32 v1, v4542; SDAG-NEXT:    v_add_u32_e32 v1, 32, v1543; SDAG-NEXT:    v_ffbh_u32_e32 v2, v5544; SDAG-NEXT:    v_min_u32_e32 v1, v1, v2545; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[6:7]546; SDAG-NEXT:    v_add_u32_e32 v1, 64, v1547; SDAG-NEXT:    v_cndmask_b32_e32 v9, v1, v0, vcc548; SDAG-NEXT:    v_sub_u32_e32 v2, 0x80, v9549; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 54, v2550; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1551; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc552; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]553; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else554; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffffb5, v9555; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[4:5]556; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2557; SDAG-NEXT:    v_cndmask_b32_e32 v10, 0, v1, vcc558; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc559; SDAG-NEXT:    ; implicit-def: $vgpr2560; SDAG-NEXT:    ; implicit-def: $vgpr6_vgpr7561; SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5562; SDAG-NEXT:  ; %bb.3: ; %Flow3563; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]564; SDAG-NEXT:    v_sub_u32_e32 v8, 0x7f, v9565; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]566; SDAG-NEXT:    s_cbranch_execz .LBB2_13567; SDAG-NEXT:  ; %bb.4: ; %NodeBlock568; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 54, v2569; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc570; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]571; SDAG-NEXT:    s_cbranch_execz .LBB2_8572; SDAG-NEXT:  ; %bb.5: ; %LeafBlock573; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 55, v2574; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc575; SDAG-NEXT:    s_cbranch_execz .LBB2_7576; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default577; SDAG-NEXT:    v_sub_u32_e32 v12, 0x49, v9578; SDAG-NEXT:    v_sub_u32_e32 v10, 64, v12579; SDAG-NEXT:    v_lshrrev_b64 v[0:1], v12, v[4:5]580; SDAG-NEXT:    v_lshlrev_b64 v[10:11], v10, v[6:7]581; SDAG-NEXT:    v_sub_u32_e32 v13, 9, v9582; SDAG-NEXT:    v_or_b32_e32 v11, v1, v11583; SDAG-NEXT:    v_or_b32_e32 v10, v0, v10584; SDAG-NEXT:    v_lshrrev_b64 v[0:1], v13, v[6:7]585; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v12586; SDAG-NEXT:    v_add_u32_e32 v16, 55, v9587; SDAG-NEXT:    v_cndmask_b32_e32 v1, v1, v11, vcc588; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v12589; SDAG-NEXT:    v_cndmask_b32_e32 v0, v0, v10, vcc590; SDAG-NEXT:    v_lshrrev_b64 v[10:11], v12, v[6:7]591; SDAG-NEXT:    v_lshrrev_b64 v[12:13], v13, v[4:5]592; SDAG-NEXT:    v_lshlrev_b64 v[14:15], v16, v[6:7]593; SDAG-NEXT:    v_add_u32_e32 v9, -9, v9594; SDAG-NEXT:    v_or_b32_e32 v15, v15, v13595; SDAG-NEXT:    v_or_b32_e32 v14, v14, v12596; SDAG-NEXT:    v_lshlrev_b64 v[12:13], v9, v[4:5]597; SDAG-NEXT:    v_cndmask_b32_e32 v11, 0, v11, vcc598; SDAG-NEXT:    v_cndmask_b32_e32 v10, 0, v10, vcc599; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v16600; SDAG-NEXT:    v_cndmask_b32_e64 v1, v1, v5, s[4:5]601; SDAG-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[4:5]602; SDAG-NEXT:    v_cndmask_b32_e32 v9, v13, v15, vcc603; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v16604; SDAG-NEXT:    v_lshlrev_b64 v[4:5], v16, v[4:5]605; SDAG-NEXT:    v_cndmask_b32_e64 v7, v9, v7, s[4:5]606; SDAG-NEXT:    v_cndmask_b32_e32 v9, v12, v14, vcc607; SDAG-NEXT:    v_cndmask_b32_e64 v6, v9, v6, s[4:5]608; SDAG-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc609; SDAG-NEXT:    v_cndmask_b32_e32 v4, 0, v4, vcc610; SDAG-NEXT:    v_or_b32_e32 v5, v5, v7611; SDAG-NEXT:    v_or_b32_e32 v4, v4, v6612; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]613; SDAG-NEXT:    v_mov_b32_e32 v6, v10614; SDAG-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc615; SDAG-NEXT:    v_or_b32_e32 v0, v0, v4616; SDAG-NEXT:    v_mov_b32_e32 v5, v1617; SDAG-NEXT:    v_mov_b32_e32 v4, v0618; SDAG-NEXT:    v_mov_b32_e32 v7, v11619; SDAG-NEXT:  .LBB2_7: ; %Flow1620; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]621; SDAG-NEXT:  .LBB2_8: ; %Flow2622; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]623; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb624; SDAG-NEXT:    v_lshlrev_b64 v[6:7], 1, v[6:7]625; SDAG-NEXT:    v_lshrrev_b32_e32 v0, 31, v5626; SDAG-NEXT:    v_lshlrev_b64 v[4:5], 1, v[4:5]627; SDAG-NEXT:    v_or_b32_e32 v6, v6, v0628; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog629; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]630; SDAG-NEXT:    v_lshrrev_b32_e32 v0, 2, v4631; SDAG-NEXT:    v_and_or_b32 v0, v0, 1, v4632; SDAG-NEXT:    v_add_co_u32_e32 v4, vcc, 1, v0633; SDAG-NEXT:    v_addc_co_u32_e32 v5, vcc, 0, v5, vcc634; SDAG-NEXT:    v_addc_co_u32_e32 v6, vcc, 0, v6, vcc635; SDAG-NEXT:    v_lshrrev_b64 v[0:1], 2, v[4:5]636; SDAG-NEXT:    v_lshlrev_b32_e32 v7, 30, v6637; SDAG-NEXT:    v_or_b32_e32 v10, v1, v7638; SDAG-NEXT:    v_and_b32_e32 v1, 0x800000, v5639; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v1640; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc641; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then20642; SDAG-NEXT:    v_lshrrev_b64 v[0:1], 3, v[4:5]643; SDAG-NEXT:    v_lshlrev_b32_e32 v4, 29, v6644; SDAG-NEXT:    v_or_b32_e32 v10, v1, v4645; SDAG-NEXT:    v_mov_b32_e32 v8, v2646; SDAG-NEXT:  ; %bb.12: ; %Flow647; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]648; SDAG-NEXT:  .LBB2_13: ; %Flow4649; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]650; SDAG-NEXT:    v_mov_b32_e32 v2, 0x3ff00000651; SDAG-NEXT:    v_and_b32_e32 v1, 0x80000000, v3652; SDAG-NEXT:    v_lshl_add_u32 v2, v8, 20, v2653; SDAG-NEXT:    v_and_b32_e32 v3, 0xfffff, v10654; SDAG-NEXT:    v_or3_b32 v1, v3, v1, v2655; SDAG-NEXT:  .LBB2_14: ; %Flow5656; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]657; SDAG-NEXT:    s_setpc_b64 s[30:31]658;659; GISEL-LABEL: sitofp_i128_to_f64:660; GISEL:       ; %bb.0: ; %itofp-entry661; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GISEL-NEXT:    v_mov_b32_e32 v4, v0663; GISEL-NEXT:    v_mov_b32_e32 v5, v1664; GISEL-NEXT:    s_mov_b64 s[4:5], 0665; GISEL-NEXT:    v_or_b32_e32 v0, v4, v2666; GISEL-NEXT:    v_or_b32_e32 v1, v5, v3667; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]668; GISEL-NEXT:    v_mov_b32_e32 v0, s4669; GISEL-NEXT:    v_mov_b32_e32 v1, s5670; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc671; GISEL-NEXT:    s_cbranch_execz .LBB2_14672; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end673; GISEL-NEXT:    v_ashrrev_i32_e32 v6, 31, v3674; GISEL-NEXT:    v_xor_b32_e32 v0, v6, v4675; GISEL-NEXT:    v_xor_b32_e32 v1, v6, v5676; GISEL-NEXT:    v_xor_b32_e32 v4, v6, v2677; GISEL-NEXT:    v_sub_co_u32_e32 v2, vcc, v0, v6678; GISEL-NEXT:    v_xor_b32_e32 v5, v6, v3679; GISEL-NEXT:    v_subb_co_u32_e32 v3, vcc, v1, v6, vcc680; GISEL-NEXT:    v_subb_co_u32_e32 v4, vcc, v4, v6, vcc681; GISEL-NEXT:    v_ffbh_u32_e32 v1, v2682; GISEL-NEXT:    v_subb_co_u32_e32 v5, vcc, v5, v6, vcc683; GISEL-NEXT:    v_ffbh_u32_e32 v0, v3684; GISEL-NEXT:    v_add_u32_e32 v1, 32, v1685; GISEL-NEXT:    v_ffbh_u32_e32 v7, v4686; GISEL-NEXT:    v_min_u32_e32 v0, v0, v1687; GISEL-NEXT:    v_ffbh_u32_e32 v1, v5688; GISEL-NEXT:    v_add_u32_e32 v7, 32, v7689; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[4:5]690; GISEL-NEXT:    v_add_u32_e32 v0, 64, v0691; GISEL-NEXT:    v_min_u32_e32 v1, v1, v7692; GISEL-NEXT:    v_cndmask_b32_e32 v9, v1, v0, vcc693; GISEL-NEXT:    v_sub_u32_e32 v7, 0x80, v9694; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 53, v7695; GISEL-NEXT:    ; implicit-def: $vgpr10696; GISEL-NEXT:    ; implicit-def: $vgpr0_vgpr1697; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc698; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]699; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else700; GISEL-NEXT:    v_add_u32_e32 v4, 0xffffffb5, v9701; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v4, v[2:3]702; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v4703; GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc704; GISEL-NEXT:    v_cndmask_b32_e32 v10, 0, v1, vcc705; GISEL-NEXT:    ; implicit-def: $vgpr7706; GISEL-NEXT:    ; implicit-def: $vgpr2707; GISEL-NEXT:  ; %bb.3: ; %Flow3708; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]709; GISEL-NEXT:    v_sub_u32_e32 v8, 0x7f, v9710; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]711; GISEL-NEXT:    s_cbranch_execz .LBB2_13712; GISEL-NEXT:  ; %bb.4: ; %NodeBlock713; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 55, v7714; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc715; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]716; GISEL-NEXT:    s_cbranch_execz .LBB2_8717; GISEL-NEXT:  ; %bb.5: ; %LeafBlock718; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 55, v7719; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc720; GISEL-NEXT:    s_cbranch_execz .LBB2_7721; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default722; GISEL-NEXT:    v_sub_u32_e32 v14, 0x49, v9723; GISEL-NEXT:    v_sub_u32_e32 v10, 64, v14724; GISEL-NEXT:    v_lshrrev_b64 v[0:1], v14, v[2:3]725; GISEL-NEXT:    v_lshlrev_b64 v[10:11], v10, v[4:5]726; GISEL-NEXT:    v_add_u32_e32 v15, 0xffffffc0, v14727; GISEL-NEXT:    v_lshrrev_b64 v[12:13], v14, v[4:5]728; GISEL-NEXT:    v_or_b32_e32 v10, v0, v10729; GISEL-NEXT:    v_or_b32_e32 v11, v1, v11730; GISEL-NEXT:    v_lshrrev_b64 v[0:1], v15, v[4:5]731; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v14732; GISEL-NEXT:    v_add_u32_e32 v15, 55, v9733; GISEL-NEXT:    v_cndmask_b32_e32 v0, v0, v10, vcc734; GISEL-NEXT:    v_cndmask_b32_e32 v1, v1, v11, vcc735; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v14736; GISEL-NEXT:    v_cndmask_b32_e32 v11, 0, v12, vcc737; GISEL-NEXT:    v_sub_u32_e32 v12, 64, v15738; GISEL-NEXT:    v_cndmask_b32_e64 v14, v0, v2, s[4:5]739; GISEL-NEXT:    v_cndmask_b32_e64 v10, v1, v3, s[4:5]740; GISEL-NEXT:    v_lshrrev_b64 v[0:1], v15, -1741; GISEL-NEXT:    v_lshlrev_b64 v[12:13], v12, -1742; GISEL-NEXT:    v_add_u32_e32 v9, -9, v9743; GISEL-NEXT:    v_or_b32_e32 v16, v0, v12744; GISEL-NEXT:    v_or_b32_e32 v17, v1, v13745; GISEL-NEXT:    v_lshrrev_b64 v[12:13], v9, -1746; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v15747; GISEL-NEXT:    v_cndmask_b32_e32 v9, v12, v16, vcc748; GISEL-NEXT:    v_cndmask_b32_e32 v12, v13, v17, vcc749; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v15750; GISEL-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc751; GISEL-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc752; GISEL-NEXT:    v_cndmask_b32_e64 v9, v9, -1, s[4:5]753; GISEL-NEXT:    v_cndmask_b32_e64 v12, v12, -1, s[4:5]754; GISEL-NEXT:    v_and_b32_e32 v0, v0, v4755; GISEL-NEXT:    v_and_b32_e32 v1, v1, v5756; GISEL-NEXT:    v_and_or_b32 v0, v9, v2, v0757; GISEL-NEXT:    v_and_or_b32 v1, v12, v3, v1758; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]759; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc760; GISEL-NEXT:    v_or_b32_e32 v9, v14, v0761; GISEL-NEXT:    v_mov_b32_e32 v2, v9762; GISEL-NEXT:    v_mov_b32_e32 v3, v10763; GISEL-NEXT:    v_mov_b32_e32 v4, v11764; GISEL-NEXT:    v_mov_b32_e32 v5, v12765; GISEL-NEXT:  .LBB2_7: ; %Flow1766; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]767; GISEL-NEXT:  .LBB2_8: ; %Flow2768; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]769; GISEL-NEXT:    s_cbranch_execz .LBB2_10770; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb771; GISEL-NEXT:    v_lshlrev_b64 v[4:5], 1, v[4:5]772; GISEL-NEXT:    v_lshlrev_b64 v[0:1], 1, v[2:3]773; GISEL-NEXT:    v_lshrrev_b32_e32 v2, 31, v3774; GISEL-NEXT:    v_or_b32_e32 v2, v4, v2775; GISEL-NEXT:    v_mov_b32_e32 v5, v3776; GISEL-NEXT:    v_mov_b32_e32 v4, v2777; GISEL-NEXT:    v_mov_b32_e32 v3, v1778; GISEL-NEXT:    v_mov_b32_e32 v2, v0779; GISEL-NEXT:  .LBB2_10: ; %itofp-sw-epilog780; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]781; GISEL-NEXT:    v_bfe_u32 v0, v2, 2, 1782; GISEL-NEXT:    v_or_b32_e32 v0, v2, v0783; GISEL-NEXT:    v_add_co_u32_e32 v2, vcc, 1, v0784; GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, 0, v3, vcc785; GISEL-NEXT:    v_addc_co_u32_e32 v4, vcc, 0, v4, vcc786; GISEL-NEXT:    v_lshrrev_b64 v[0:1], 2, v[2:3]787; GISEL-NEXT:    v_mov_b32_e32 v9, 0788; GISEL-NEXT:    v_and_b32_e32 v10, 0x800000, v3789; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[9:10]790; GISEL-NEXT:    v_lshl_or_b32 v10, v4, 30, v1791; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc792; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then20793; GISEL-NEXT:    v_lshrrev_b64 v[0:1], 3, v[2:3]794; GISEL-NEXT:    v_mov_b32_e32 v8, v7795; GISEL-NEXT:    v_lshl_or_b32 v10, v4, 29, v1796; GISEL-NEXT:  ; %bb.12: ; %Flow797; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]798; GISEL-NEXT:  .LBB2_13: ; %Flow4799; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]800; GISEL-NEXT:    v_mov_b32_e32 v2, 0x3ff00000801; GISEL-NEXT:    v_and_b32_e32 v1, 0x80000000, v6802; GISEL-NEXT:    v_lshl_add_u32 v2, v8, 20, v2803; GISEL-NEXT:    v_and_b32_e32 v3, 0xfffff, v10804; GISEL-NEXT:    v_or3_b32 v1, v3, v1, v2805; GISEL-NEXT:  .LBB2_14: ; %Flow5806; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]807; GISEL-NEXT:    s_setpc_b64 s[30:31]808  %cvt = sitofp i128 %x to double809  ret double %cvt810}811 812define double @uitofp_i128_to_f64(i128 %x) {813; SDAG-LABEL: uitofp_i128_to_f64:814; SDAG:       ; %bb.0: ; %itofp-entry815; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; SDAG-NEXT:    v_or_b32_e32 v5, v1, v3817; SDAG-NEXT:    v_or_b32_e32 v4, v0, v2818; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]819; SDAG-NEXT:    v_mov_b32_e32 v4, 0820; SDAG-NEXT:    v_mov_b32_e32 v5, 0821; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc822; SDAG-NEXT:    s_cbranch_execz .LBB3_14823; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end824; SDAG-NEXT:    v_ffbh_u32_e32 v4, v2825; SDAG-NEXT:    v_add_u32_e32 v4, 32, v4826; SDAG-NEXT:    v_ffbh_u32_e32 v5, v3827; SDAG-NEXT:    v_min_u32_e32 v4, v4, v5828; SDAG-NEXT:    v_ffbh_u32_e32 v5, v0829; SDAG-NEXT:    v_add_u32_e32 v5, 32, v5830; SDAG-NEXT:    v_ffbh_u32_e32 v6, v1831; SDAG-NEXT:    v_min_u32_e32 v5, v5, v6832; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]833; SDAG-NEXT:    v_add_u32_e32 v5, 64, v5834; SDAG-NEXT:    v_cndmask_b32_e32 v8, v5, v4, vcc835; SDAG-NEXT:    v_sub_u32_e32 v6, 0x80, v8836; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 54, v6837; SDAG-NEXT:    ; implicit-def: $vgpr9838; SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5839; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc840; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]841; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else842; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffffb5, v8843; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]844; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2845; SDAG-NEXT:    v_cndmask_b32_e32 v9, 0, v1, vcc846; SDAG-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc847; SDAG-NEXT:    ; implicit-def: $vgpr6848; SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr3849; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1850; SDAG-NEXT:  ; %bb.3: ; %Flow3851; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]852; SDAG-NEXT:    v_sub_u32_e32 v7, 0x7f, v8853; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]854; SDAG-NEXT:    s_cbranch_execz .LBB3_13855; SDAG-NEXT:  ; %bb.4: ; %NodeBlock856; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 54, v6857; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc858; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]859; SDAG-NEXT:    s_cbranch_execz .LBB3_8860; SDAG-NEXT:  ; %bb.5: ; %LeafBlock861; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 55, v6862; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc863; SDAG-NEXT:    s_cbranch_execz .LBB3_7864; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default865; SDAG-NEXT:    v_sub_u32_e32 v11, 0x49, v8866; SDAG-NEXT:    v_sub_u32_e32 v9, 64, v11867; SDAG-NEXT:    v_lshrrev_b64 v[4:5], v11, v[0:1]868; SDAG-NEXT:    v_lshlrev_b64 v[9:10], v9, v[2:3]869; SDAG-NEXT:    v_sub_u32_e32 v12, 9, v8870; SDAG-NEXT:    v_or_b32_e32 v10, v5, v10871; SDAG-NEXT:    v_or_b32_e32 v9, v4, v9872; SDAG-NEXT:    v_lshrrev_b64 v[4:5], v12, v[2:3]873; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v11874; SDAG-NEXT:    v_add_u32_e32 v15, 55, v8875; SDAG-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc876; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v11877; SDAG-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc878; SDAG-NEXT:    v_lshrrev_b64 v[9:10], v11, v[2:3]879; SDAG-NEXT:    v_lshrrev_b64 v[11:12], v12, v[0:1]880; SDAG-NEXT:    v_lshlrev_b64 v[13:14], v15, v[2:3]881; SDAG-NEXT:    v_add_u32_e32 v8, -9, v8882; SDAG-NEXT:    v_or_b32_e32 v14, v14, v12883; SDAG-NEXT:    v_or_b32_e32 v13, v13, v11884; SDAG-NEXT:    v_lshlrev_b64 v[11:12], v8, v[0:1]885; SDAG-NEXT:    v_cndmask_b32_e32 v10, 0, v10, vcc886; SDAG-NEXT:    v_cndmask_b32_e32 v9, 0, v9, vcc887; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v15888; SDAG-NEXT:    v_cndmask_b32_e64 v5, v5, v1, s[4:5]889; SDAG-NEXT:    v_cndmask_b32_e64 v4, v4, v0, s[4:5]890; SDAG-NEXT:    v_cndmask_b32_e32 v8, v12, v14, vcc891; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v15892; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v15, v[0:1]893; SDAG-NEXT:    v_cndmask_b32_e64 v3, v8, v3, s[4:5]894; SDAG-NEXT:    v_cndmask_b32_e32 v8, v11, v13, vcc895; SDAG-NEXT:    v_cndmask_b32_e64 v2, v8, v2, s[4:5]896; SDAG-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc897; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc898; SDAG-NEXT:    v_or_b32_e32 v1, v1, v3899; SDAG-NEXT:    v_or_b32_e32 v0, v0, v2900; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]901; SDAG-NEXT:    v_mov_b32_e32 v2, v9902; SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc903; SDAG-NEXT:    v_or_b32_e32 v4, v4, v0904; SDAG-NEXT:    v_mov_b32_e32 v0, v4905; SDAG-NEXT:    v_mov_b32_e32 v1, v5906; SDAG-NEXT:    v_mov_b32_e32 v3, v10907; SDAG-NEXT:  .LBB3_7: ; %Flow1908; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]909; SDAG-NEXT:  .LBB3_8: ; %Flow2910; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]911; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb912; SDAG-NEXT:    v_lshlrev_b64 v[2:3], 1, v[2:3]913; SDAG-NEXT:    v_lshrrev_b32_e32 v3, 31, v1914; SDAG-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]915; SDAG-NEXT:    v_or_b32_e32 v2, v2, v3916; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog917; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]918; SDAG-NEXT:    v_lshrrev_b32_e32 v3, 2, v0919; SDAG-NEXT:    v_and_or_b32 v0, v3, 1, v0920; SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v0921; SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc922; SDAG-NEXT:    v_addc_co_u32_e32 v2, vcc, 0, v2, vcc923; SDAG-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]924; SDAG-NEXT:    v_and_b32_e32 v3, 0x800000, v1925; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v3926; SDAG-NEXT:    v_alignbit_b32 v9, v2, v1, 2927; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc928; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then20929; SDAG-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]930; SDAG-NEXT:    v_alignbit_b32 v9, v2, v1, 3931; SDAG-NEXT:    v_mov_b32_e32 v7, v6932; SDAG-NEXT:  ; %bb.12: ; %Flow933; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]934; SDAG-NEXT:  .LBB3_13: ; %Flow4935; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]936; SDAG-NEXT:    v_and_b32_e32 v0, 0xfffff, v9937; SDAG-NEXT:    v_lshl_or_b32 v0, v7, 20, v0938; SDAG-NEXT:    v_add_u32_e32 v5, 0x3ff00000, v0939; SDAG-NEXT:  .LBB3_14: ; %Flow5940; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]941; SDAG-NEXT:    v_mov_b32_e32 v0, v4942; SDAG-NEXT:    v_mov_b32_e32 v1, v5943; SDAG-NEXT:    s_setpc_b64 s[30:31]944;945; GISEL-LABEL: uitofp_i128_to_f64:946; GISEL:       ; %bb.0: ; %itofp-entry947; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)948; GISEL-NEXT:    s_mov_b64 s[4:5], 0949; GISEL-NEXT:    v_or_b32_e32 v4, v0, v2950; GISEL-NEXT:    v_or_b32_e32 v5, v1, v3951; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]952; GISEL-NEXT:    v_mov_b32_e32 v4, s4953; GISEL-NEXT:    v_mov_b32_e32 v5, s5954; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc955; GISEL-NEXT:    s_cbranch_execz .LBB3_14956; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end957; GISEL-NEXT:    v_ffbh_u32_e32 v5, v0958; GISEL-NEXT:    v_ffbh_u32_e32 v4, v1959; GISEL-NEXT:    v_add_u32_e32 v5, 32, v5960; GISEL-NEXT:    v_ffbh_u32_e32 v6, v2961; GISEL-NEXT:    v_min_u32_e32 v4, v4, v5962; GISEL-NEXT:    v_ffbh_u32_e32 v5, v3963; GISEL-NEXT:    v_add_u32_e32 v6, 32, v6964; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[2:3]965; GISEL-NEXT:    v_add_u32_e32 v4, 64, v4966; GISEL-NEXT:    v_min_u32_e32 v5, v5, v6967; GISEL-NEXT:    v_cndmask_b32_e32 v8, v5, v4, vcc968; GISEL-NEXT:    v_sub_u32_e32 v6, 0x80, v8969; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 53, v6970; GISEL-NEXT:    ; implicit-def: $vgpr9971; GISEL-NEXT:    ; implicit-def: $vgpr4_vgpr5972; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc973; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]974; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else975; GISEL-NEXT:    v_add_u32_e32 v2, 0xffffffb5, v8976; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]977; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v2978; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc979; GISEL-NEXT:    v_cndmask_b32_e32 v9, 0, v1, vcc980; GISEL-NEXT:    ; implicit-def: $vgpr6981; GISEL-NEXT:    ; implicit-def: $vgpr0982; GISEL-NEXT:  ; %bb.3: ; %Flow3983; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]984; GISEL-NEXT:    v_sub_u32_e32 v7, 0x7f, v8985; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]986; GISEL-NEXT:    s_cbranch_execz .LBB3_13987; GISEL-NEXT:  ; %bb.4: ; %NodeBlock988; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 55, v6989; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc990; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]991; GISEL-NEXT:    s_cbranch_execz .LBB3_8992; GISEL-NEXT:  ; %bb.5: ; %LeafBlock993; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 55, v6994; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc995; GISEL-NEXT:    s_cbranch_execz .LBB3_7996; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default997; GISEL-NEXT:    v_sub_u32_e32 v13, 0x49, v8998; GISEL-NEXT:    v_sub_u32_e32 v9, 64, v13999; GISEL-NEXT:    v_lshrrev_b64 v[4:5], v13, v[0:1]1000; GISEL-NEXT:    v_lshlrev_b64 v[9:10], v9, v[2:3]1001; GISEL-NEXT:    v_add_u32_e32 v14, 0xffffffc0, v131002; GISEL-NEXT:    v_lshrrev_b64 v[11:12], v13, v[2:3]1003; GISEL-NEXT:    v_or_b32_e32 v9, v4, v91004; GISEL-NEXT:    v_or_b32_e32 v10, v5, v101005; GISEL-NEXT:    v_lshrrev_b64 v[4:5], v14, v[2:3]1006; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v131007; GISEL-NEXT:    v_add_u32_e32 v15, 55, v81008; GISEL-NEXT:    v_cndmask_b32_e32 v4, v4, v9, vcc1009; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v10, vcc1010; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v131011; GISEL-NEXT:    v_cndmask_b32_e32 v10, 0, v11, vcc1012; GISEL-NEXT:    v_cndmask_b32_e32 v11, 0, v12, vcc1013; GISEL-NEXT:    v_sub_u32_e32 v12, 64, v151014; GISEL-NEXT:    v_cndmask_b32_e64 v14, v4, v0, s[4:5]1015; GISEL-NEXT:    v_cndmask_b32_e64 v9, v5, v1, s[4:5]1016; GISEL-NEXT:    v_lshrrev_b64 v[4:5], v15, -11017; GISEL-NEXT:    v_lshlrev_b64 v[12:13], v12, -11018; GISEL-NEXT:    v_add_u32_e32 v8, -9, v81019; GISEL-NEXT:    v_or_b32_e32 v16, v4, v121020; GISEL-NEXT:    v_or_b32_e32 v17, v5, v131021; GISEL-NEXT:    v_lshrrev_b64 v[12:13], v8, -11022; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v151023; GISEL-NEXT:    v_cndmask_b32_e32 v8, v12, v16, vcc1024; GISEL-NEXT:    v_cndmask_b32_e32 v12, v13, v17, vcc1025; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v151026; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v4, vcc1027; GISEL-NEXT:    v_cndmask_b32_e32 v5, 0, v5, vcc1028; GISEL-NEXT:    v_cndmask_b32_e64 v8, v8, -1, s[4:5]1029; GISEL-NEXT:    v_cndmask_b32_e64 v12, v12, -1, s[4:5]1030; GISEL-NEXT:    v_and_b32_e32 v2, v4, v21031; GISEL-NEXT:    v_and_b32_e32 v3, v5, v31032; GISEL-NEXT:    v_and_or_b32 v0, v8, v0, v21033; GISEL-NEXT:    v_and_or_b32 v1, v12, v1, v31034; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1035; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1036; GISEL-NEXT:    v_or_b32_e32 v8, v14, v01037; GISEL-NEXT:    v_mov_b32_e32 v0, v81038; GISEL-NEXT:    v_mov_b32_e32 v1, v91039; GISEL-NEXT:    v_mov_b32_e32 v2, v101040; GISEL-NEXT:    v_mov_b32_e32 v3, v111041; GISEL-NEXT:  .LBB3_7: ; %Flow11042; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]1043; GISEL-NEXT:  .LBB3_8: ; %Flow21044; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]1045; GISEL-NEXT:    s_cbranch_execz .LBB3_101046; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb1047; GISEL-NEXT:    v_lshlrev_b64 v[8:9], 1, v[0:1]1048; GISEL-NEXT:    v_lshlrev_b64 v[10:11], 1, v[2:3]1049; GISEL-NEXT:    v_lshrrev_b32_e32 v0, 31, v11050; GISEL-NEXT:    v_or_b32_e32 v10, v10, v01051; GISEL-NEXT:    v_mov_b32_e32 v0, v81052; GISEL-NEXT:    v_mov_b32_e32 v1, v91053; GISEL-NEXT:    v_mov_b32_e32 v2, v101054; GISEL-NEXT:    v_mov_b32_e32 v3, v111055; GISEL-NEXT:  .LBB3_10: ; %itofp-sw-epilog1056; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1057; GISEL-NEXT:    v_bfe_u32 v4, v0, 2, 11058; GISEL-NEXT:    v_or_b32_e32 v0, v0, v41059; GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v01060; GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1061; GISEL-NEXT:    v_addc_co_u32_e32 v2, vcc, 0, v2, vcc1062; GISEL-NEXT:    v_addc_co_u32_e32 v3, vcc, 0, v3, vcc1063; GISEL-NEXT:    v_mov_b32_e32 v8, 01064; GISEL-NEXT:    v_and_b32_e32 v9, 0x800000, v11065; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]1066; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[8:9]1067; GISEL-NEXT:    v_lshlrev_b64 v[8:9], 30, v[2:3]1068; GISEL-NEXT:    v_lshrrev_b32_e32 v5, 2, v11069; GISEL-NEXT:    v_or_b32_e32 v9, v8, v51070; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1071; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then201072; GISEL-NEXT:    v_lshlrev_b64 v[2:3], 29, v[2:3]1073; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]1074; GISEL-NEXT:    v_lshrrev_b32_e32 v0, 3, v11075; GISEL-NEXT:    v_or_b32_e32 v9, v2, v01076; GISEL-NEXT:    v_mov_b32_e32 v7, v61077; GISEL-NEXT:  ; %bb.12: ; %Flow1078; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1079; GISEL-NEXT:  .LBB3_13: ; %Flow41080; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]1081; GISEL-NEXT:    v_mov_b32_e32 v0, 0x3ff000001082; GISEL-NEXT:    v_lshl_add_u32 v0, v7, 20, v01083; GISEL-NEXT:    v_mov_b32_e32 v1, 0xfffff1084; GISEL-NEXT:    v_and_or_b32 v5, v9, v1, v01085; GISEL-NEXT:  .LBB3_14: ; %Flow51086; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]1087; GISEL-NEXT:    v_mov_b32_e32 v0, v41088; GISEL-NEXT:    v_mov_b32_e32 v1, v51089; GISEL-NEXT:    s_setpc_b64 s[30:31]1090  %cvt = uitofp i128 %x to double1091  ret double %cvt1092}1093 1094define half @sitofp_i128_to_f16(i128 %x) {1095; SDAG-LABEL: sitofp_i128_to_f16:1096; SDAG:       ; %bb.0: ; %itofp-entry1097; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1098; SDAG-NEXT:    v_or_b32_e32 v5, v1, v31099; SDAG-NEXT:    v_or_b32_e32 v4, v0, v21100; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]1101; SDAG-NEXT:    v_mov_b32_e32 v4, 01102; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc1103; SDAG-NEXT:    s_cbranch_execz .LBB4_141104; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end1105; SDAG-NEXT:    v_sub_co_u32_e32 v4, vcc, 0, v01106; SDAG-NEXT:    v_subb_co_u32_e32 v5, vcc, 0, v1, vcc1107; SDAG-NEXT:    v_subb_co_u32_e32 v6, vcc, 0, v2, vcc1108; SDAG-NEXT:    v_subb_co_u32_e32 v7, vcc, 0, v3, vcc1109; SDAG-NEXT:    v_cmp_gt_i64_e32 vcc, 0, v[2:3]1110; SDAG-NEXT:    ; implicit-def: $vgpr81111; SDAG-NEXT:    v_cndmask_b32_e32 v0, v0, v4, vcc1112; SDAG-NEXT:    v_cndmask_b32_e32 v4, v2, v6, vcc1113; SDAG-NEXT:    v_cndmask_b32_e32 v1, v1, v5, vcc1114; SDAG-NEXT:    v_cndmask_b32_e32 v5, v3, v7, vcc1115; SDAG-NEXT:    v_ffbh_u32_e32 v2, v41116; SDAG-NEXT:    v_add_u32_e32 v2, 32, v21117; SDAG-NEXT:    v_ffbh_u32_e32 v6, v51118; SDAG-NEXT:    v_min_u32_e32 v2, v2, v61119; SDAG-NEXT:    v_ffbh_u32_e32 v6, v01120; SDAG-NEXT:    v_add_u32_e32 v6, 32, v61121; SDAG-NEXT:    v_ffbh_u32_e32 v7, v11122; SDAG-NEXT:    v_min_u32_e32 v6, v6, v71123; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]1124; SDAG-NEXT:    v_add_u32_e32 v6, 64, v61125; SDAG-NEXT:    v_cndmask_b32_e32 v7, v6, v2, vcc1126; SDAG-NEXT:    v_sub_u32_e32 v2, 0x80, v71127; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 25, v21128; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1129; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1130; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else1131; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffff98, v71132; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]1133; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v21134; SDAG-NEXT:    v_cndmask_b32_e32 v8, 0, v0, vcc1135; SDAG-NEXT:    ; implicit-def: $vgpr21136; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr11137; SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr51138; SDAG-NEXT:  ; %bb.3: ; %Flow31139; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]1140; SDAG-NEXT:    v_sub_u32_e32 v6, 0x7f, v71141; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]1142; SDAG-NEXT:    s_cbranch_execz .LBB4_131143; SDAG-NEXT:  ; %bb.4: ; %NodeBlock1144; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 25, v21145; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1146; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]1147; SDAG-NEXT:    s_cbranch_execz .LBB4_81148; SDAG-NEXT:  ; %bb.5: ; %LeafBlock1149; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v21150; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc1151; SDAG-NEXT:    s_cbranch_execz .LBB4_71152; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default1153; SDAG-NEXT:    v_sub_u32_e32 v12, 0x66, v71154; SDAG-NEXT:    v_sub_u32_e32 v10, 64, v121155; SDAG-NEXT:    v_lshrrev_b64 v[8:9], v12, v[0:1]1156; SDAG-NEXT:    v_lshlrev_b64 v[10:11], v10, v[4:5]1157; SDAG-NEXT:    v_sub_u32_e32 v13, 38, v71158; SDAG-NEXT:    v_or_b32_e32 v11, v9, v111159; SDAG-NEXT:    v_or_b32_e32 v10, v8, v101160; SDAG-NEXT:    v_lshrrev_b64 v[8:9], v13, v[4:5]1161; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v121162; SDAG-NEXT:    v_add_u32_e32 v14, 26, v71163; SDAG-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc1164; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v121165; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc1166; SDAG-NEXT:    v_lshrrev_b64 v[10:11], v13, v[0:1]1167; SDAG-NEXT:    v_lshlrev_b64 v[12:13], v14, v[4:5]1168; SDAG-NEXT:    v_subrev_u32_e32 v7, 38, v71169; SDAG-NEXT:    v_cndmask_b32_e64 v15, v8, v0, s[4:5]1170; SDAG-NEXT:    v_lshlrev_b64 v[7:8], v7, v[0:1]1171; SDAG-NEXT:    v_cndmask_b32_e64 v9, v9, v1, s[4:5]1172; SDAG-NEXT:    v_or_b32_e32 v11, v13, v111173; SDAG-NEXT:    v_or_b32_e32 v10, v12, v101174; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v141175; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v14, v[0:1]1176; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v11, vcc1177; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v141178; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc1179; SDAG-NEXT:    v_cndmask_b32_e64 v5, v8, v5, s[4:5]1180; SDAG-NEXT:    v_cndmask_b32_e64 v4, v7, v4, s[4:5]1181; SDAG-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc1182; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc1183; SDAG-NEXT:    v_or_b32_e32 v1, v1, v51184; SDAG-NEXT:    v_or_b32_e32 v0, v0, v41185; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1186; SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1187; SDAG-NEXT:    v_or_b32_e32 v8, v15, v01188; SDAG-NEXT:    v_mov_b32_e32 v0, v81189; SDAG-NEXT:    v_mov_b32_e32 v1, v91190; SDAG-NEXT:  .LBB4_7: ; %Flow11191; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]1192; SDAG-NEXT:  .LBB4_8: ; %Flow21193; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]1194; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb1195; SDAG-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]1196; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog1197; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]1198; SDAG-NEXT:    v_lshrrev_b32_e32 v4, 2, v01199; SDAG-NEXT:    v_and_or_b32 v0, v4, 1, v01200; SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v01201; SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1202; SDAG-NEXT:    v_and_b32_e32 v4, 0x4000000, v01203; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v41204; SDAG-NEXT:    v_alignbit_b32 v8, v1, v0, 21205; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1206; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then201207; SDAG-NEXT:    v_alignbit_b32 v8, v1, v0, 31208; SDAG-NEXT:    v_mov_b32_e32 v6, v21209; SDAG-NEXT:  ; %bb.12: ; %Flow1210; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]1211; SDAG-NEXT:  .LBB4_13: ; %Flow41212; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]1213; SDAG-NEXT:    v_and_b32_e32 v0, 0x80000000, v31214; SDAG-NEXT:    v_lshl_add_u32 v1, v6, 23, 1.01215; SDAG-NEXT:    v_and_b32_e32 v2, 0x7fffff, v81216; SDAG-NEXT:    v_or3_b32 v0, v2, v0, v11217; SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v01218; SDAG-NEXT:  .LBB4_14: ; %Flow51219; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]1220; SDAG-NEXT:    v_mov_b32_e32 v0, v41221; SDAG-NEXT:    s_setpc_b64 s[30:31]1222;1223; GISEL-LABEL: sitofp_i128_to_f16:1224; GISEL:       ; %bb.0: ; %itofp-entry1225; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1226; GISEL-NEXT:    v_or_b32_e32 v4, v0, v21227; GISEL-NEXT:    v_or_b32_e32 v5, v1, v31228; GISEL-NEXT:    s_mov_b32 s4, 01229; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]1230; GISEL-NEXT:    v_mov_b32_e32 v4, s41231; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc1232; GISEL-NEXT:    s_cbranch_execz .LBB4_141233; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end1234; GISEL-NEXT:    v_ashrrev_i32_e32 v6, 31, v31235; GISEL-NEXT:    v_xor_b32_e32 v0, v6, v01236; GISEL-NEXT:    v_xor_b32_e32 v1, v6, v11237; GISEL-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v61238; GISEL-NEXT:    v_xor_b32_e32 v2, v6, v21239; GISEL-NEXT:    v_subb_co_u32_e32 v1, vcc, v1, v6, vcc1240; GISEL-NEXT:    v_xor_b32_e32 v3, v6, v31241; GISEL-NEXT:    v_subb_co_u32_e32 v2, vcc, v2, v6, vcc1242; GISEL-NEXT:    v_ffbh_u32_e32 v5, v01243; GISEL-NEXT:    v_subb_co_u32_e32 v3, vcc, v3, v6, vcc1244; GISEL-NEXT:    v_ffbh_u32_e32 v4, v11245; GISEL-NEXT:    v_add_u32_e32 v5, 32, v51246; GISEL-NEXT:    v_ffbh_u32_e32 v7, v21247; GISEL-NEXT:    v_min_u32_e32 v4, v4, v51248; GISEL-NEXT:    v_ffbh_u32_e32 v5, v31249; GISEL-NEXT:    v_add_u32_e32 v7, 32, v71250; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[2:3]1251; GISEL-NEXT:    v_add_u32_e32 v4, 64, v41252; GISEL-NEXT:    v_min_u32_e32 v5, v5, v71253; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v4, vcc1254; GISEL-NEXT:    v_sub_u32_e32 v7, 0x80, v51255; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 24, v71256; GISEL-NEXT:    ; implicit-def: $vgpr41257; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1258; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1259; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else1260; GISEL-NEXT:    v_add_u32_e32 v2, 0xffffff98, v51261; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]1262; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v21263; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc1264; GISEL-NEXT:    ; implicit-def: $vgpr71265; GISEL-NEXT:    ; implicit-def: $vgpr01266; GISEL-NEXT:    ; implicit-def: $vgpr21267; GISEL-NEXT:  ; %bb.3: ; %Flow31268; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]1269; GISEL-NEXT:    v_sub_u32_e32 v8, 0x7f, v51270; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]1271; GISEL-NEXT:    s_cbranch_execz .LBB4_131272; GISEL-NEXT:  ; %bb.4: ; %NodeBlock1273; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 26, v71274; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1275; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]1276; GISEL-NEXT:    s_cbranch_execz .LBB4_81277; GISEL-NEXT:  ; %bb.5: ; %LeafBlock1278; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v71279; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc1280; GISEL-NEXT:    s_cbranch_execz .LBB4_71281; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default1282; GISEL-NEXT:    v_sub_u32_e32 v4, 0x66, v51283; GISEL-NEXT:    v_sub_u32_e32 v11, 64, v41284; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v4, v[0:1]1285; GISEL-NEXT:    v_lshlrev_b64 v[11:12], v11, v[2:3]1286; GISEL-NEXT:    v_add_u32_e32 v13, 0xffffffc0, v41287; GISEL-NEXT:    v_or_b32_e32 v11, v9, v111288; GISEL-NEXT:    v_or_b32_e32 v12, v10, v121289; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v13, v[2:3]1290; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v41291; GISEL-NEXT:    v_add_u32_e32 v14, 26, v51292; GISEL-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc1293; GISEL-NEXT:    v_cndmask_b32_e32 v10, v10, v12, vcc1294; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v41295; GISEL-NEXT:    v_sub_u32_e32 v11, 64, v141296; GISEL-NEXT:    v_cndmask_b32_e32 v13, v9, v0, vcc1297; GISEL-NEXT:    v_cndmask_b32_e32 v4, v10, v1, vcc1298; GISEL-NEXT:    v_lshrrev_b64 v[9:10], v14, -11299; GISEL-NEXT:    v_lshlrev_b64 v[11:12], v11, -11300; GISEL-NEXT:    v_add_u32_e32 v5, 0xffffffda, v51301; GISEL-NEXT:    v_or_b32_e32 v15, v9, v111302; GISEL-NEXT:    v_or_b32_e32 v16, v10, v121303; GISEL-NEXT:    v_lshrrev_b64 v[11:12], v5, -11304; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v141305; GISEL-NEXT:    v_cndmask_b32_e32 v5, v11, v15, vcc1306; GISEL-NEXT:    v_cndmask_b32_e32 v11, v12, v16, vcc1307; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v141308; GISEL-NEXT:    v_cndmask_b32_e32 v9, 0, v9, vcc1309; GISEL-NEXT:    v_cndmask_b32_e32 v10, 0, v10, vcc1310; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, -1, s[4:5]1311; GISEL-NEXT:    v_cndmask_b32_e64 v11, v11, -1, s[4:5]1312; GISEL-NEXT:    v_and_b32_e32 v2, v9, v21313; GISEL-NEXT:    v_and_b32_e32 v3, v10, v31314; GISEL-NEXT:    v_and_or_b32 v0, v5, v0, v21315; GISEL-NEXT:    v_and_or_b32 v1, v11, v1, v31316; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1317; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1318; GISEL-NEXT:    v_or_b32_e32 v3, v13, v01319; GISEL-NEXT:    v_mov_b32_e32 v0, v31320; GISEL-NEXT:    v_mov_b32_e32 v1, v41321; GISEL-NEXT:    v_mov_b32_e32 v2, v51322; GISEL-NEXT:    v_mov_b32_e32 v3, v61323; GISEL-NEXT:  .LBB4_7: ; %Flow11324; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]1325; GISEL-NEXT:  .LBB4_8: ; %Flow21326; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]1327; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb1328; GISEL-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]1329; GISEL-NEXT:  ; %bb.10: ; %itofp-sw-epilog1330; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1331; GISEL-NEXT:    v_bfe_u32 v2, v0, 2, 11332; GISEL-NEXT:    v_or_b32_e32 v0, v0, v21333; GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v01334; GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1335; GISEL-NEXT:    v_and_b32_e32 v2, 0x4000000, v01336; GISEL-NEXT:    v_mov_b32_e32 v3, 01337; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]1338; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]1339; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1340; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then201341; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]1342; GISEL-NEXT:    v_mov_b32_e32 v8, v71343; GISEL-NEXT:  ; %bb.12: ; %Flow1344; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1345; GISEL-NEXT:  .LBB4_13: ; %Flow41346; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]1347; GISEL-NEXT:    v_and_b32_e32 v0, 0x80000000, v61348; GISEL-NEXT:    v_lshl_add_u32 v1, v8, 23, 1.01349; GISEL-NEXT:    v_and_b32_e32 v2, 0x7fffff, v41350; GISEL-NEXT:    v_or3_b32 v0, v2, v0, v11351; GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v01352; GISEL-NEXT:  .LBB4_14: ; %Flow51353; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]1354; GISEL-NEXT:    v_mov_b32_e32 v0, v41355; GISEL-NEXT:    s_setpc_b64 s[30:31]1356  %cvt = sitofp i128 %x to half1357  ret half %cvt1358}1359 1360define half @uitofp_i128_to_f16(i128 %x) {1361; SDAG-LABEL: uitofp_i128_to_f16:1362; SDAG:       ; %bb.0: ; %itofp-entry1363; SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1364; SDAG-NEXT:    v_or_b32_e32 v5, v1, v31365; SDAG-NEXT:    v_or_b32_e32 v4, v0, v21366; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]1367; SDAG-NEXT:    v_mov_b32_e32 v4, 01368; SDAG-NEXT:    s_and_saveexec_b64 s[6:7], vcc1369; SDAG-NEXT:    s_cbranch_execz .LBB5_141370; SDAG-NEXT:  ; %bb.1: ; %itofp-if-end1371; SDAG-NEXT:    v_ffbh_u32_e32 v4, v21372; SDAG-NEXT:    v_add_u32_e32 v4, 32, v41373; SDAG-NEXT:    v_ffbh_u32_e32 v5, v31374; SDAG-NEXT:    v_min_u32_e32 v4, v4, v51375; SDAG-NEXT:    v_ffbh_u32_e32 v5, v01376; SDAG-NEXT:    v_add_u32_e32 v5, 32, v51377; SDAG-NEXT:    v_ffbh_u32_e32 v6, v11378; SDAG-NEXT:    v_min_u32_e32 v5, v5, v61379; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]1380; SDAG-NEXT:    v_add_u32_e32 v5, 64, v51381; SDAG-NEXT:    v_cndmask_b32_e32 v6, v5, v4, vcc1382; SDAG-NEXT:    v_sub_u32_e32 v4, 0x80, v61383; SDAG-NEXT:    v_cmp_gt_i32_e32 vcc, 25, v41384; SDAG-NEXT:    ; implicit-def: $vgpr71385; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1386; SDAG-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1387; SDAG-NEXT:  ; %bb.2: ; %itofp-if-else1388; SDAG-NEXT:    v_add_u32_e32 v2, 0xffffff98, v61389; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]1390; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v21391; SDAG-NEXT:    v_cndmask_b32_e32 v7, 0, v0, vcc1392; SDAG-NEXT:    ; implicit-def: $vgpr41393; SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr11394; SDAG-NEXT:    ; implicit-def: $vgpr2_vgpr31395; SDAG-NEXT:  ; %bb.3: ; %Flow31396; SDAG-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]1397; SDAG-NEXT:    v_sub_u32_e32 v5, 0x7f, v61398; SDAG-NEXT:    s_xor_b64 exec, exec, s[8:9]1399; SDAG-NEXT:    s_cbranch_execz .LBB5_131400; SDAG-NEXT:  ; %bb.4: ; %NodeBlock1401; SDAG-NEXT:    v_cmp_lt_i32_e32 vcc, 25, v41402; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1403; SDAG-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]1404; SDAG-NEXT:    s_cbranch_execz .LBB5_81405; SDAG-NEXT:  ; %bb.5: ; %LeafBlock1406; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v41407; SDAG-NEXT:    s_and_saveexec_b64 s[12:13], vcc1408; SDAG-NEXT:    s_cbranch_execz .LBB5_71409; SDAG-NEXT:  ; %bb.6: ; %itofp-sw-default1410; SDAG-NEXT:    v_sub_u32_e32 v11, 0x66, v61411; SDAG-NEXT:    v_sub_u32_e32 v9, 64, v111412; SDAG-NEXT:    v_lshrrev_b64 v[7:8], v11, v[0:1]1413; SDAG-NEXT:    v_lshlrev_b64 v[9:10], v9, v[2:3]1414; SDAG-NEXT:    v_sub_u32_e32 v12, 38, v61415; SDAG-NEXT:    v_or_b32_e32 v10, v8, v101416; SDAG-NEXT:    v_or_b32_e32 v9, v7, v91417; SDAG-NEXT:    v_lshrrev_b64 v[7:8], v12, v[2:3]1418; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v111419; SDAG-NEXT:    v_add_u32_e32 v13, 26, v61420; SDAG-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc1421; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v111422; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v9, vcc1423; SDAG-NEXT:    v_lshrrev_b64 v[9:10], v12, v[0:1]1424; SDAG-NEXT:    v_lshlrev_b64 v[11:12], v13, v[2:3]1425; SDAG-NEXT:    v_subrev_u32_e32 v6, 38, v61426; SDAG-NEXT:    v_cndmask_b32_e64 v14, v7, v0, s[4:5]1427; SDAG-NEXT:    v_lshlrev_b64 v[6:7], v6, v[0:1]1428; SDAG-NEXT:    v_cndmask_b32_e64 v8, v8, v1, s[4:5]1429; SDAG-NEXT:    v_or_b32_e32 v10, v12, v101430; SDAG-NEXT:    v_or_b32_e32 v9, v11, v91431; SDAG-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v131432; SDAG-NEXT:    v_lshlrev_b64 v[0:1], v13, v[0:1]1433; SDAG-NEXT:    v_cndmask_b32_e32 v7, v7, v10, vcc1434; SDAG-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v131435; SDAG-NEXT:    v_cndmask_b32_e32 v6, v6, v9, vcc1436; SDAG-NEXT:    v_cndmask_b32_e64 v3, v7, v3, s[4:5]1437; SDAG-NEXT:    v_cndmask_b32_e64 v2, v6, v2, s[4:5]1438; SDAG-NEXT:    v_cndmask_b32_e32 v1, 0, v1, vcc1439; SDAG-NEXT:    v_cndmask_b32_e32 v0, 0, v0, vcc1440; SDAG-NEXT:    v_or_b32_e32 v1, v1, v31441; SDAG-NEXT:    v_or_b32_e32 v0, v0, v21442; SDAG-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1443; SDAG-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1444; SDAG-NEXT:    v_or_b32_e32 v7, v14, v01445; SDAG-NEXT:    v_mov_b32_e32 v0, v71446; SDAG-NEXT:    v_mov_b32_e32 v1, v81447; SDAG-NEXT:  .LBB5_7: ; %Flow11448; SDAG-NEXT:    s_or_b64 exec, exec, s[12:13]1449; SDAG-NEXT:  .LBB5_8: ; %Flow21450; SDAG-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]1451; SDAG-NEXT:  ; %bb.9: ; %itofp-sw-bb1452; SDAG-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]1453; SDAG-NEXT:  ; %bb.10: ; %itofp-sw-epilog1454; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]1455; SDAG-NEXT:    v_lshrrev_b32_e32 v2, 2, v01456; SDAG-NEXT:    v_and_or_b32 v0, v2, 1, v01457; SDAG-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v01458; SDAG-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1459; SDAG-NEXT:    v_and_b32_e32 v2, 0x4000000, v01460; SDAG-NEXT:    v_cmp_ne_u32_e32 vcc, 0, v21461; SDAG-NEXT:    v_alignbit_b32 v7, v1, v0, 21462; SDAG-NEXT:    s_and_saveexec_b64 s[4:5], vcc1463; SDAG-NEXT:  ; %bb.11: ; %itofp-if-then201464; SDAG-NEXT:    v_alignbit_b32 v7, v1, v0, 31465; SDAG-NEXT:    v_mov_b32_e32 v5, v41466; SDAG-NEXT:  ; %bb.12: ; %Flow1467; SDAG-NEXT:    s_or_b64 exec, exec, s[4:5]1468; SDAG-NEXT:  .LBB5_13: ; %Flow41469; SDAG-NEXT:    s_or_b64 exec, exec, s[8:9]1470; SDAG-NEXT:    v_and_b32_e32 v0, 0x7fffff, v71471; SDAG-NEXT:    v_lshl_or_b32 v0, v5, 23, v01472; SDAG-NEXT:    v_add_u32_e32 v0, 1.0, v01473; SDAG-NEXT:    v_cvt_f16_f32_e32 v4, v01474; SDAG-NEXT:  .LBB5_14: ; %Flow51475; SDAG-NEXT:    s_or_b64 exec, exec, s[6:7]1476; SDAG-NEXT:    v_mov_b32_e32 v0, v41477; SDAG-NEXT:    s_setpc_b64 s[30:31]1478;1479; GISEL-LABEL: uitofp_i128_to_f16:1480; GISEL:       ; %bb.0: ; %itofp-entry1481; GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1482; GISEL-NEXT:    v_or_b32_e32 v4, v0, v21483; GISEL-NEXT:    v_or_b32_e32 v5, v1, v31484; GISEL-NEXT:    s_mov_b32 s4, 01485; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[4:5]1486; GISEL-NEXT:    v_mov_b32_e32 v4, s41487; GISEL-NEXT:    s_and_saveexec_b64 s[6:7], vcc1488; GISEL-NEXT:    s_cbranch_execz .LBB5_141489; GISEL-NEXT:  ; %bb.1: ; %itofp-if-end1490; GISEL-NEXT:    v_ffbh_u32_e32 v5, v01491; GISEL-NEXT:    v_ffbh_u32_e32 v4, v11492; GISEL-NEXT:    v_add_u32_e32 v5, 32, v51493; GISEL-NEXT:    v_ffbh_u32_e32 v6, v21494; GISEL-NEXT:    v_min_u32_e32 v4, v4, v51495; GISEL-NEXT:    v_ffbh_u32_e32 v5, v31496; GISEL-NEXT:    v_add_u32_e32 v6, 32, v61497; GISEL-NEXT:    v_cmp_eq_u64_e32 vcc, 0, v[2:3]1498; GISEL-NEXT:    v_add_u32_e32 v4, 64, v41499; GISEL-NEXT:    v_min_u32_e32 v5, v5, v61500; GISEL-NEXT:    v_cndmask_b32_e32 v5, v5, v4, vcc1501; GISEL-NEXT:    v_sub_u32_e32 v6, 0x80, v51502; GISEL-NEXT:    v_cmp_ge_i32_e32 vcc, 24, v61503; GISEL-NEXT:    ; implicit-def: $vgpr41504; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1505; GISEL-NEXT:    s_xor_b64 s[4:5], exec, s[4:5]1506; GISEL-NEXT:  ; %bb.2: ; %itofp-if-else1507; GISEL-NEXT:    v_add_u32_e32 v2, 0xffffff98, v51508; GISEL-NEXT:    v_lshlrev_b64 v[0:1], v2, v[0:1]1509; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v21510; GISEL-NEXT:    v_cndmask_b32_e32 v4, 0, v0, vcc1511; GISEL-NEXT:    ; implicit-def: $vgpr61512; GISEL-NEXT:    ; implicit-def: $vgpr01513; GISEL-NEXT:    ; implicit-def: $vgpr21514; GISEL-NEXT:  ; %bb.3: ; %Flow31515; GISEL-NEXT:    s_or_saveexec_b64 s[8:9], s[4:5]1516; GISEL-NEXT:    v_sub_u32_e32 v7, 0x7f, v51517; GISEL-NEXT:    s_xor_b64 exec, exec, s[8:9]1518; GISEL-NEXT:    s_cbranch_execz .LBB5_131519; GISEL-NEXT:  ; %bb.4: ; %NodeBlock1520; GISEL-NEXT:    v_cmp_le_i32_e32 vcc, 26, v61521; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1522; GISEL-NEXT:    s_xor_b64 s[10:11], exec, s[4:5]1523; GISEL-NEXT:    s_cbranch_execz .LBB5_81524; GISEL-NEXT:  ; %bb.5: ; %LeafBlock1525; GISEL-NEXT:    v_cmp_ne_u32_e32 vcc, 26, v61526; GISEL-NEXT:    s_and_saveexec_b64 s[12:13], vcc1527; GISEL-NEXT:    s_cbranch_execz .LBB5_71528; GISEL-NEXT:  ; %bb.6: ; %itofp-sw-default1529; GISEL-NEXT:    v_sub_u32_e32 v4, 0x66, v51530; GISEL-NEXT:    v_sub_u32_e32 v10, 64, v41531; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v4, v[0:1]1532; GISEL-NEXT:    v_lshlrev_b64 v[10:11], v10, v[2:3]1533; GISEL-NEXT:    v_add_u32_e32 v12, 0xffffffc0, v41534; GISEL-NEXT:    v_or_b32_e32 v10, v8, v101535; GISEL-NEXT:    v_or_b32_e32 v11, v9, v111536; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v12, v[2:3]1537; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v41538; GISEL-NEXT:    v_add_u32_e32 v13, 26, v51539; GISEL-NEXT:    v_cndmask_b32_e32 v8, v8, v10, vcc1540; GISEL-NEXT:    v_cndmask_b32_e32 v9, v9, v11, vcc1541; GISEL-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v41542; GISEL-NEXT:    v_sub_u32_e32 v10, 64, v131543; GISEL-NEXT:    v_cndmask_b32_e32 v12, v8, v0, vcc1544; GISEL-NEXT:    v_cndmask_b32_e32 v4, v9, v1, vcc1545; GISEL-NEXT:    v_lshrrev_b64 v[8:9], v13, -11546; GISEL-NEXT:    v_lshlrev_b64 v[10:11], v10, -11547; GISEL-NEXT:    v_add_u32_e32 v5, 0xffffffda, v51548; GISEL-NEXT:    v_or_b32_e32 v14, v8, v101549; GISEL-NEXT:    v_or_b32_e32 v15, v9, v111550; GISEL-NEXT:    v_lshrrev_b64 v[10:11], v5, -11551; GISEL-NEXT:    v_cmp_gt_u32_e32 vcc, 64, v131552; GISEL-NEXT:    v_cndmask_b32_e32 v5, v10, v14, vcc1553; GISEL-NEXT:    v_cndmask_b32_e32 v10, v11, v15, vcc1554; GISEL-NEXT:    v_cmp_eq_u32_e64 s[4:5], 0, v131555; GISEL-NEXT:    v_cndmask_b32_e32 v8, 0, v8, vcc1556; GISEL-NEXT:    v_cndmask_b32_e32 v9, 0, v9, vcc1557; GISEL-NEXT:    v_cndmask_b32_e64 v5, v5, -1, s[4:5]1558; GISEL-NEXT:    v_cndmask_b32_e64 v10, v10, -1, s[4:5]1559; GISEL-NEXT:    v_and_b32_e32 v2, v8, v21560; GISEL-NEXT:    v_and_b32_e32 v3, v9, v31561; GISEL-NEXT:    v_and_or_b32 v0, v5, v0, v21562; GISEL-NEXT:    v_and_or_b32 v1, v10, v1, v31563; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[0:1]1564; GISEL-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1565; GISEL-NEXT:    v_or_b32_e32 v3, v12, v01566; GISEL-NEXT:    v_mov_b32_e32 v0, v31567; GISEL-NEXT:    v_mov_b32_e32 v1, v41568; GISEL-NEXT:    v_mov_b32_e32 v2, v51569; GISEL-NEXT:    v_mov_b32_e32 v3, v61570; GISEL-NEXT:  .LBB5_7: ; %Flow11571; GISEL-NEXT:    s_or_b64 exec, exec, s[12:13]1572; GISEL-NEXT:  .LBB5_8: ; %Flow21573; GISEL-NEXT:    s_andn2_saveexec_b64 s[4:5], s[10:11]1574; GISEL-NEXT:  ; %bb.9: ; %itofp-sw-bb1575; GISEL-NEXT:    v_lshlrev_b64 v[0:1], 1, v[0:1]1576; GISEL-NEXT:  ; %bb.10: ; %itofp-sw-epilog1577; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1578; GISEL-NEXT:    v_bfe_u32 v2, v0, 2, 11579; GISEL-NEXT:    v_or_b32_e32 v0, v0, v21580; GISEL-NEXT:    v_add_co_u32_e32 v0, vcc, 1, v01581; GISEL-NEXT:    v_addc_co_u32_e32 v1, vcc, 0, v1, vcc1582; GISEL-NEXT:    v_and_b32_e32 v2, 0x4000000, v01583; GISEL-NEXT:    v_mov_b32_e32 v3, 01584; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 2, v[0:1]1585; GISEL-NEXT:    v_cmp_ne_u64_e32 vcc, 0, v[2:3]1586; GISEL-NEXT:    s_and_saveexec_b64 s[4:5], vcc1587; GISEL-NEXT:  ; %bb.11: ; %itofp-if-then201588; GISEL-NEXT:    v_lshrrev_b64 v[4:5], 3, v[0:1]1589; GISEL-NEXT:    v_mov_b32_e32 v7, v61590; GISEL-NEXT:  ; %bb.12: ; %Flow1591; GISEL-NEXT:    s_or_b64 exec, exec, s[4:5]1592; GISEL-NEXT:  .LBB5_13: ; %Flow41593; GISEL-NEXT:    s_or_b64 exec, exec, s[8:9]1594; GISEL-NEXT:    v_lshl_add_u32 v0, v7, 23, 1.01595; GISEL-NEXT:    v_mov_b32_e32 v1, 0x7fffff1596; GISEL-NEXT:    v_and_or_b32 v0, v4, v1, v01597; GISEL-NEXT:    v_cvt_f16_f32_e32 v4, v01598; GISEL-NEXT:  .LBB5_14: ; %Flow51599; GISEL-NEXT:    s_or_b64 exec, exec, s[6:7]1600; GISEL-NEXT:    v_mov_b32_e32 v0, v41601; GISEL-NEXT:    s_setpc_b64 s[30:31]1602  %cvt = uitofp i128 %x to half1603  ret half %cvt1604}1605 1606;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1607; GCN: {{.*}}1608