1110c22feSBevin Hansson; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 2110c22feSBevin Hansson; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,SDAG %s 3110c22feSBevin Hansson; RUN: not --crash llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s 2>&1 | FileCheck -check-prefix=GISEL %s 4110c22feSBevin Hansson 5110c22feSBevin Hansson; FIXME: GISEL can't handle the "fptrunc float to bfloat" that expand-large-fp-convert emits. 6110c22feSBevin Hansson 7110c22feSBevin Hansson; GISEL: unable to translate instruction: fptrunc 8110c22feSBevin Hansson 9110c22feSBevin Hanssondefine bfloat @sitofp_i128_to_bf16(i128 %x) { 10110c22feSBevin Hansson; GCN-LABEL: sitofp_i128_to_bf16: 11110c22feSBevin Hansson; GCN: ; %bb.0: ; %itofp-entry 12110c22feSBevin Hansson; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 13110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v5, v1, v3 14110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v4, v0, v2 15110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[4:5] 16110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v4, 0 17110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[6:7], vcc 18110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB0_14 19110c22feSBevin Hansson; GCN-NEXT: ; %bb.1: ; %itofp-if-end 20*af3ffff3SSimon Pilgrim; GCN-NEXT: v_sub_co_u32_e32 v4, vcc, 0, v0 21*af3ffff3SSimon Pilgrim; GCN-NEXT: v_subb_co_u32_e32 v5, vcc, 0, v1, vcc 22*af3ffff3SSimon Pilgrim; GCN-NEXT: v_subb_co_u32_e32 v6, vcc, 0, v2, vcc 23*af3ffff3SSimon Pilgrim; GCN-NEXT: v_subb_co_u32_e32 v7, vcc, 0, v3, vcc 24*af3ffff3SSimon Pilgrim; GCN-NEXT: v_cmp_gt_i64_e32 vcc, 0, v[2:3] 25*af3ffff3SSimon Pilgrim; GCN-NEXT: ; implicit-def: $vgpr8 26*af3ffff3SSimon Pilgrim; GCN-NEXT: v_cndmask_b32_e32 v0, v0, v4, vcc 27*af3ffff3SSimon Pilgrim; GCN-NEXT: v_cndmask_b32_e32 v4, v2, v6, vcc 28*af3ffff3SSimon Pilgrim; GCN-NEXT: v_cndmask_b32_e32 v1, v1, v5, vcc 29*af3ffff3SSimon Pilgrim; GCN-NEXT: v_cndmask_b32_e32 v5, v3, v7, vcc 30110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v2, v4 31110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v2, 32, v2 32110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v6, v5 33110c22feSBevin Hansson; GCN-NEXT: v_min_u32_e32 v2, v2, v6 34110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v6, v0 35110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v6, 32, v6 36110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v7, v1 37110c22feSBevin Hansson; GCN-NEXT: v_min_u32_e32 v6, v6, v7 38110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[4:5] 39110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v6, 64, v6 40110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v7, v6, v2, vcc 41110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v6, 0x80, v7 42110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v2, 0x7f, v7 43110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_i32_e32 vcc, 25, v6 44110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 45110c22feSBevin Hansson; GCN-NEXT: s_xor_b64 s[4:5], exec, s[4:5] 46110c22feSBevin Hansson; GCN-NEXT: ; %bb.2: ; %itofp-if-else 47110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v4, 0xffffff98, v7 48110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], v4, v[0:1] 49110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v4 50110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v8, 0, v0, vcc 51110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr6 52110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr0_vgpr1 53110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr7 54110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr4_vgpr5 55110c22feSBevin Hansson; GCN-NEXT: ; %bb.3: ; %Flow3 56110c22feSBevin Hansson; GCN-NEXT: s_andn2_saveexec_b64 s[8:9], s[4:5] 57110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB0_13 58110c22feSBevin Hansson; GCN-NEXT: ; %bb.4: ; %NodeBlock 59110c22feSBevin Hansson; GCN-NEXT: v_cmp_lt_i32_e32 vcc, 25, v6 60110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 61110c22feSBevin Hansson; GCN-NEXT: s_xor_b64 s[10:11], exec, s[4:5] 62110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB0_8 63110c22feSBevin Hansson; GCN-NEXT: ; %bb.5: ; %LeafBlock 64110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u32_e32 vcc, 26, v6 65110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[12:13], vcc 66110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB0_7 67110c22feSBevin Hansson; GCN-NEXT: ; %bb.6: ; %itofp-sw-default 68110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v12, 0x66, v7 69110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v10, 64, v12 70110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[8:9], v12, v[0:1] 71110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[10:11], v10, v[4:5] 72110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v13, 38, v7 73110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v11, v9, v11 74110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v10, v8, v10 75110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[8:9], v13, v[4:5] 76110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v12 77110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v14, 26, v7 78110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v9, v9, v11, vcc 79110c22feSBevin Hansson; GCN-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v12 80110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc 81110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[10:11], v13, v[0:1] 82110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[12:13], v14, v[4:5] 83110c22feSBevin Hansson; GCN-NEXT: v_subrev_u32_e32 v7, 38, v7 84110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v15, v8, v0, s[4:5] 85110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[7:8], v7, v[0:1] 86110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v9, v9, v1, s[4:5] 87110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v11, v13, v11 88110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v10, v12, v10 89110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v14 90110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], v14, v[0:1] 91110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v8, v8, v11, vcc 92110c22feSBevin Hansson; GCN-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v14 93110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v7, v7, v10, vcc 94110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v5, v8, v5, s[4:5] 95110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v4, v7, v4, s[4:5] 96110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc 97110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc 98110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v1, v1, v5 99110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v0, v0, v4 100110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1] 101110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 102110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v8, v15, v0 103110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v0, v8 104110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v1, v9 105110c22feSBevin Hansson; GCN-NEXT: .LBB0_7: ; %Flow1 106110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[12:13] 107110c22feSBevin Hansson; GCN-NEXT: .LBB0_8: ; %Flow2 108110c22feSBevin Hansson; GCN-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11] 109110c22feSBevin Hansson; GCN-NEXT: ; %bb.9: ; %itofp-sw-bb 110110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], 1, v[0:1] 111110c22feSBevin Hansson; GCN-NEXT: ; %bb.10: ; %itofp-sw-epilog 112110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[4:5] 113110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b32_e32 v4, 2, v0 114110c22feSBevin Hansson; GCN-NEXT: v_and_or_b32 v0, v4, 1, v0 115110c22feSBevin Hansson; GCN-NEXT: v_add_co_u32_e32 v0, vcc, 1, v0 116110c22feSBevin Hansson; GCN-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc 117110c22feSBevin Hansson; GCN-NEXT: v_and_b32_e32 v4, 0x4000000, v0 118110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u32_e32 vcc, 0, v4 119110c22feSBevin Hansson; GCN-NEXT: v_alignbit_b32 v8, v1, v0, 2 120110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 121110c22feSBevin Hansson; GCN-NEXT: ; %bb.11: ; %itofp-if-then20 122110c22feSBevin Hansson; GCN-NEXT: v_alignbit_b32 v8, v1, v0, 3 123110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v2, v6 124110c22feSBevin Hansson; GCN-NEXT: ; %bb.12: ; %Flow 125110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[4:5] 126110c22feSBevin Hansson; GCN-NEXT: .LBB0_13: ; %Flow4 127110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[8:9] 128110c22feSBevin Hansson; GCN-NEXT: v_and_b32_e32 v0, 0x80000000, v3 129110c22feSBevin Hansson; GCN-NEXT: v_lshl_add_u32 v1, v2, 23, 1.0 130110c22feSBevin Hansson; GCN-NEXT: v_and_b32_e32 v2, 0x7fffff, v8 131110c22feSBevin Hansson; GCN-NEXT: v_or3_b32 v0, v2, v0, v1 132110c22feSBevin Hansson; GCN-NEXT: v_bfe_u32 v1, v8, 16, 1 133110c22feSBevin Hansson; GCN-NEXT: s_movk_i32 s4, 0x7fff 134110c22feSBevin Hansson; GCN-NEXT: v_add3_u32 v1, v1, v0, s4 135110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v2, 0x400000, v0 136110c22feSBevin Hansson; GCN-NEXT: v_cmp_u_f32_e32 vcc, v0, v0 137110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v0, v1, v2, vcc 138110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b32_e32 v4, 16, v0 139110c22feSBevin Hansson; GCN-NEXT: .LBB0_14: ; %Flow5 140110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[6:7] 141110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v0, v4 142110c22feSBevin Hansson; GCN-NEXT: s_setpc_b64 s[30:31] 143110c22feSBevin Hansson %cvt = sitofp i128 %x to bfloat 144110c22feSBevin Hansson ret bfloat %cvt 145110c22feSBevin Hansson} 146110c22feSBevin Hansson 147110c22feSBevin Hanssondefine bfloat @uitofp_i128_to_bf16(i128 %x) { 148110c22feSBevin Hansson; GCN-LABEL: uitofp_i128_to_bf16: 149110c22feSBevin Hansson; GCN: ; %bb.0: ; %itofp-entry 150110c22feSBevin Hansson; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 151110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v5, v1, v3 152110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v4, v0, v2 153110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[4:5] 154110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v4, 0 155110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[6:7], vcc 156110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB1_14 157110c22feSBevin Hansson; GCN-NEXT: ; %bb.1: ; %itofp-if-end 158110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v4, v2 159110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v4, 32, v4 160110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v5, v3 161110c22feSBevin Hansson; GCN-NEXT: v_min_u32_e32 v4, v4, v5 162110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v5, v0 163110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v5, 32, v5 164110c22feSBevin Hansson; GCN-NEXT: v_ffbh_u32_e32 v6, v1 165110c22feSBevin Hansson; GCN-NEXT: v_min_u32_e32 v5, v5, v6 166110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[2:3] 167110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v5, 64, v5 168110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v6, v5, v4, vcc 169110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v5, 0x80, v6 170110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v4, 0x7f, v6 171110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_i32_e32 vcc, 25, v5 172110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr7 173110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 174110c22feSBevin Hansson; GCN-NEXT: s_xor_b64 s[4:5], exec, s[4:5] 175110c22feSBevin Hansson; GCN-NEXT: ; %bb.2: ; %itofp-if-else 176110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v2, 0xffffff98, v6 177110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], v2, v[0:1] 178110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v2 179110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v7, 0, v0, vcc 180110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr5 181110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr0_vgpr1 182110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr6 183110c22feSBevin Hansson; GCN-NEXT: ; implicit-def: $vgpr2_vgpr3 184110c22feSBevin Hansson; GCN-NEXT: ; %bb.3: ; %Flow3 185110c22feSBevin Hansson; GCN-NEXT: s_andn2_saveexec_b64 s[8:9], s[4:5] 186110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB1_13 187110c22feSBevin Hansson; GCN-NEXT: ; %bb.4: ; %NodeBlock 188110c22feSBevin Hansson; GCN-NEXT: v_cmp_lt_i32_e32 vcc, 25, v5 189110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 190110c22feSBevin Hansson; GCN-NEXT: s_xor_b64 s[10:11], exec, s[4:5] 191110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB1_8 192110c22feSBevin Hansson; GCN-NEXT: ; %bb.5: ; %LeafBlock 193110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u32_e32 vcc, 26, v5 194110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[12:13], vcc 195110c22feSBevin Hansson; GCN-NEXT: s_cbranch_execz .LBB1_7 196110c22feSBevin Hansson; GCN-NEXT: ; %bb.6: ; %itofp-sw-default 197110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v11, 0x66, v6 198110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v9, 64, v11 199110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[7:8], v11, v[0:1] 200110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[9:10], v9, v[2:3] 201110c22feSBevin Hansson; GCN-NEXT: v_sub_u32_e32 v12, 38, v6 202110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v10, v8, v10 203110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v9, v7, v9 204110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[7:8], v12, v[2:3] 205110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v11 206110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v13, 26, v6 207110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v8, v8, v10, vcc 208110c22feSBevin Hansson; GCN-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v11 209110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v7, v7, v9, vcc 210110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b64 v[9:10], v12, v[0:1] 211110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[11:12], v13, v[2:3] 212110c22feSBevin Hansson; GCN-NEXT: v_subrev_u32_e32 v6, 38, v6 213110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v14, v7, v0, s[4:5] 214110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[6:7], v6, v[0:1] 215110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v8, v8, v1, s[4:5] 216110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v10, v12, v10 217110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v9, v11, v9 218110c22feSBevin Hansson; GCN-NEXT: v_cmp_gt_u32_e32 vcc, 64, v13 219110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], v13, v[0:1] 220110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v7, v7, v10, vcc 221110c22feSBevin Hansson; GCN-NEXT: v_cmp_eq_u32_e64 s[4:5], 0, v13 222110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v6, v6, v9, vcc 223110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v3, v7, v3, s[4:5] 224110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v2, v6, v2, s[4:5] 225110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc 226110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc 227110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v1, v1, v3 228110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v0, v0, v2 229110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1] 230110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e64 v0, 0, 1, vcc 231110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v7, v14, v0 232110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v0, v7 233110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v1, v8 234110c22feSBevin Hansson; GCN-NEXT: .LBB1_7: ; %Flow1 235110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[12:13] 236110c22feSBevin Hansson; GCN-NEXT: .LBB1_8: ; %Flow2 237110c22feSBevin Hansson; GCN-NEXT: s_andn2_saveexec_b64 s[4:5], s[10:11] 238110c22feSBevin Hansson; GCN-NEXT: ; %bb.9: ; %itofp-sw-bb 239110c22feSBevin Hansson; GCN-NEXT: v_lshlrev_b64 v[0:1], 1, v[0:1] 240110c22feSBevin Hansson; GCN-NEXT: ; %bb.10: ; %itofp-sw-epilog 241110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[4:5] 242110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b32_e32 v2, 2, v0 243110c22feSBevin Hansson; GCN-NEXT: v_and_or_b32 v0, v2, 1, v0 244110c22feSBevin Hansson; GCN-NEXT: v_add_co_u32_e32 v0, vcc, 1, v0 245110c22feSBevin Hansson; GCN-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc 246110c22feSBevin Hansson; GCN-NEXT: v_and_b32_e32 v2, 0x4000000, v0 247110c22feSBevin Hansson; GCN-NEXT: v_cmp_ne_u32_e32 vcc, 0, v2 248110c22feSBevin Hansson; GCN-NEXT: v_alignbit_b32 v7, v1, v0, 2 249110c22feSBevin Hansson; GCN-NEXT: s_and_saveexec_b64 s[4:5], vcc 250110c22feSBevin Hansson; GCN-NEXT: ; %bb.11: ; %itofp-if-then20 251110c22feSBevin Hansson; GCN-NEXT: v_alignbit_b32 v7, v1, v0, 3 252110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v4, v5 253110c22feSBevin Hansson; GCN-NEXT: ; %bb.12: ; %Flow 254110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[4:5] 255110c22feSBevin Hansson; GCN-NEXT: .LBB1_13: ; %Flow4 256110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[8:9] 257110c22feSBevin Hansson; GCN-NEXT: v_and_b32_e32 v0, 0x7fffff, v7 258110c22feSBevin Hansson; GCN-NEXT: v_lshl_or_b32 v0, v4, 23, v0 259110c22feSBevin Hansson; GCN-NEXT: v_add_u32_e32 v0, 1.0, v0 260110c22feSBevin Hansson; GCN-NEXT: v_bfe_u32 v1, v0, 16, 1 261110c22feSBevin Hansson; GCN-NEXT: s_movk_i32 s4, 0x7fff 262110c22feSBevin Hansson; GCN-NEXT: v_add3_u32 v1, v1, v0, s4 263110c22feSBevin Hansson; GCN-NEXT: v_or_b32_e32 v2, 0x400000, v0 264110c22feSBevin Hansson; GCN-NEXT: v_cmp_u_f32_e32 vcc, v0, v0 265110c22feSBevin Hansson; GCN-NEXT: v_cndmask_b32_e32 v0, v1, v2, vcc 266110c22feSBevin Hansson; GCN-NEXT: v_lshrrev_b32_e32 v4, 16, v0 267110c22feSBevin Hansson; GCN-NEXT: .LBB1_14: ; %Flow5 268110c22feSBevin Hansson; GCN-NEXT: s_or_b64 exec, exec, s[6:7] 269110c22feSBevin Hansson; GCN-NEXT: v_mov_b32_e32 v0, v4 270110c22feSBevin Hansson; GCN-NEXT: s_setpc_b64 s[30:31] 271110c22feSBevin Hansson %cvt = uitofp i128 %x to bfloat 272110c22feSBevin Hansson ret bfloat %cvt 273110c22feSBevin Hansson} 274110c22feSBevin Hansson;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 275110c22feSBevin Hansson; SDAG: {{.*}} 276