|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=-flat-for-global -mattr=-flat-for-global -show-mc-encoding < %s | FileCheck -check-prefix=GFX10 %s | 
|  | ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx1100 -mattr=+real-true16 -mattr=-flat-for-global -mattr=-flat-for-global -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s | 
|  | ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=gfx1100 -mattr=-real-true16 -mattr=-flat-for-global -mattr=-flat-for-global -show-mc-encoding < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s | 
|  | ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=tonga -mattr=-flat-for-global -mattr=-flat-for-global -show-mc-encoding < %s | FileCheck -check-prefix=VI %s | 
|  | ; RUN: llc -mtriple=amdgcn -mcpu=tahiti < %s | FileCheck -check-prefix=SI %s | 
|  |  | 
|  | ; FIXME: Merge into imm.ll | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_neg_0.0_i16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_neg_0.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0 ; encoding: [0x00,0x00,0xfd,0xbb] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_neg_0.0_i16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 dlc ; encoding: [0x00,0x20,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0 ; encoding: [0x00,0x00,0x7c,0xbc] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_neg_0.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_neg_0.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x8000 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store volatile i16 -32768, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_0.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_0.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_0.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_0.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0 ; encoding: [0x80,0x02,0x00,0x7e] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_0.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 0.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_imm_neg_0.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_imm_neg_0.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_imm_neg_0.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_imm_neg_0.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffff8000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x80,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_imm_neg_0.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x8000 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half -0.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_0.5_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_0.5_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x3800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x38,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_0.5_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x3800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x38,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_0.5_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x3800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x38,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_0.5_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x3800 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 0.5, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_m_0.5_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_m_0.5_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffffb800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xb8,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_m_0.5_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffffb800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xb8,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_m_0.5_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffffb800 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xb8,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_m_0.5_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0xb800 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half -0.5, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_1.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_1.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x3c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x3c,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_1.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x3c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x3c,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_1.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x3c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x3c,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_1.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x3c00 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 1.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_m_1.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_m_1.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffffbc00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xbc,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_m_1.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffffbc00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xbc,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_m_1.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffffbc00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xbc,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_m_1.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0xbc00 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half -1.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_2.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_2.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x4000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x40,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_2.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x4000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x40,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_2.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x4000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x40,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_2.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x4000 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 2.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_m_2.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_m_2.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffffc000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc0,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_m_2.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffffc000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc0,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_m_2.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffffc000 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc0,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_m_2.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0xc000 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half -2.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_4.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_4.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x4400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x44,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_4.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x4400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x44,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_4.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x4400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x44,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_4.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x4400 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 4.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_m_4.0_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_m_4.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffffc400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc4,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_m_4.0_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffffc400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc4,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_m_4.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffffc400 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0xc4,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_m_4.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0xc400 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half -4.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_inv_2pi_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_inv_2pi_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x3118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0x31,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_inv_2pi_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x3118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0x31,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_inv_2pi_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x3118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0x31,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_inv_2pi_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x3118 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 0xH3118, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_inline_imm_m_inv_2pi_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_inline_imm_m_inv_2pi_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0xffffb118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0xb1,0xff,0xff] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_inline_imm_m_inv_2pi_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0xffffb118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0xb1,0xff,0xff] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_inline_imm_m_inv_2pi_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0xffffb118 ; encoding: [0xff,0x02,0x00,0x7e,0x18,0xb1,0xff,0xff] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_inline_imm_m_inv_2pi_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0xb118 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 0xHB118, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @store_literal_imm_f16(ptr addrspace(1) %out) { | 
|  | ; GFX10-LABEL: store_literal_imm_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    v_mov_b32_e32 v0, 0x6c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x6c,0x00,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: store_literal_imm_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    v_mov_b32_e32 v0, 0x6c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x6c,0x00,0x00] | 
|  | ; GFX11-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: store_literal_imm_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    v_mov_b32_e32 v0, 0x6c00 ; encoding: [0xff,0x02,0x00,0x7e,0x00,0x6c,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: store_literal_imm_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    v_mov_b32_e32 v0, 0x6c00 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | store half 4096.0, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_0.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_0.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x00,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_0.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x00,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_0.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x00,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_0.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x00,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_0.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_0.5_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_0.5_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe0,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_0.5_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe0,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_0.5_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe0,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_0.5_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 0.5 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xe0,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_0.5_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0.5, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0.5 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_0.5_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_0.5_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, -0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe2,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_neg_0.5_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, -0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe2,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_neg_0.5_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, -0.5 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe2,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_0.5_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, -0.5 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xe2,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_0.5_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, -0.5, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, -0.5 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_1.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_1.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe4,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_1.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe4,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_1.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe4,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_1.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 1.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xe4,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_1.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 1.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 1.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_1.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_1.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, -1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe6,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_neg_1.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, -1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe6,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_neg_1.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, -1.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe6,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_1.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, -1.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xe6,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_1.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, -1.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, -1.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_2.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_2.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe8,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_2.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe8,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_2.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xe8,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_2.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 2.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xe8,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_2.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 2.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 2.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_2.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_2.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, -2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xea,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_neg_2.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, -2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xea,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_neg_2.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, -2.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xea,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_2.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, -2.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xea,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_2.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, -2.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, -2.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_4.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_4.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xec,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_4.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xec,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_4.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xec,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_4.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 4.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xec,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_4.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 4.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 4.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_4.0_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_4.0_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, -4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xee,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_neg_4.0_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, -4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xee,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_neg_4.0_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, -4.0 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0xee,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_4.0_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, -4.0 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0xee,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_4.0_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, -4.0, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, -4.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @commute_add_inline_imm_0.5_f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { | 
|  | ; GFX10-LABEL: commute_add_inline_imm_0.5_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x08,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x03,0x86,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x03,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x03,0x8a,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x03,0x8b,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x03,0x88,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x03,0x89,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x03,0x84,0xbe] | 
|  | ; GFX10-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX10-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x03,0x85,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e32 v0, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x64] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: commute_add_inline_imm_0.5_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e32 v0.l, 0.5, v0.l ; encoding: [0xf0,0x00,0x00,0x64] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: commute_add_inline_imm_0.5_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e32 v0, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x64] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: commute_add_inline_imm_0.5_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x0a,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s7, 0x1100f000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; VI-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e32 v0, 0.5, v0 ; encoding: [0xf0,0x00,0x00,0x3e] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: commute_add_inline_imm_0.5_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s6, -1 | 
|  | ; SI-NEXT:    s_mov_b32 s10, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s11, s7 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s8, s2 | 
|  | ; SI-NEXT:    s_mov_b32 s9, s3 | 
|  | ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s0 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s1 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0.5, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %x = load half, ptr addrspace(1) %in | 
|  | %y = fadd half %x, 0.5 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @commute_add_literal_f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { | 
|  | ; GFX10-LABEL: commute_add_literal_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x08,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x03,0x86,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x03,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x03,0x8a,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x03,0x8b,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x03,0x88,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x03,0x89,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x03,0x84,0xbe] | 
|  | ; GFX10-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX10-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x03,0x85,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e32 v0, 0x6400, v0 ; encoding: [0xff,0x00,0x00,0x64,0x00,0x64,0x00,0x00] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: commute_add_literal_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e32 v0.l, 0x6400, v0.l ; encoding: [0xff,0x00,0x00,0x64,0x00,0x64,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: commute_add_literal_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e32 v0, 0x6400, v0 ; encoding: [0xff,0x00,0x00,0x64,0x00,0x64,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: commute_add_literal_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x0a,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s7, 0x1100f000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; VI-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e32 v0, 0x6400, v0 ; encoding: [0xff,0x00,0x00,0x3e,0x00,0x64,0x00,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: commute_add_literal_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s6, -1 | 
|  | ; SI-NEXT:    s_mov_b32 s10, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s11, s7 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s8, s2 | 
|  | ; SI-NEXT:    s_mov_b32 s9, s3 | 
|  | ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s0 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s1 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, v0 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x44800000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %x = load half, ptr addrspace(1) %in | 
|  | %y = fadd half %x, 1024.0 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_1_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_1_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 1 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x02,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_1_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 1 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x02,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_1_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 1 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x02,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_1_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 1 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x02,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_1_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x33800000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0xH0001 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_2_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_2_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 2 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x04,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_2_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 2 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x04,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_2_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 2 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x04,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_2_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 2 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x04,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_2_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x34000000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0xH0002 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_16_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_16_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 16 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x20,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_16_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 16 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x20,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_16_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 16 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x20,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_16_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 16 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x20,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_16_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x35800000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0xH0010 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_1_f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_1_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x08,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x03,0x86,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x03,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x03,0x8a,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x03,0x8b,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x03,0x88,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x03,0x89,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x03,0x84,0xbe] | 
|  | ; GFX10-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX10-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x03,0x85,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_nc_u32_e32 v0, -1, v0 ; encoding: [0xc1,0x00,0x00,0x4a] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: add_inline_imm_neg_1_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-NEXT:    v_add_nc_u32_e32 v0, -1, v0 ; encoding: [0xc1,0x00,0x00,0x4a] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_1_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x0a,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s7, 0x1100f000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; VI-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_u32_e32 v0, vcc, -1, v0 ; encoding: [0xc1,0x00,0x00,0x32] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_1_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s6, -1 | 
|  | ; SI-NEXT:    s_mov_b32 s10, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s11, s7 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s8, s2 | 
|  | ; SI-NEXT:    s_mov_b32 s9, s3 | 
|  | ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s0 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s1 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    v_add_i32_e32 v0, vcc, -1, v0 | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %x = load i16, ptr addrspace(1) %in | 
|  | %y = add i16 %x, -1 | 
|  | %ybc = bitcast i16 %y to half | 
|  | store half %ybc, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_2_f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_2_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x08,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x03,0x86,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x03,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x03,0x8a,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x03,0x8b,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x03,0x88,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x03,0x89,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x03,0x84,0xbe] | 
|  | ; GFX10-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX10-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x03,0x85,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_nc_u32_e32 v0, 0xfffe, v0 ; encoding: [0xff,0x00,0x00,0x4a,0xfe,0xff,0x00,0x00] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: add_inline_imm_neg_2_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 0xfffe, v0 ; encoding: [0xff,0x00,0x00,0x4a,0xfe,0xff,0x00,0x00] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_2_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x0a,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s7, 0x1100f000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; VI-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0xfffe, v0 ; encoding: [0xff,0x00,0x00,0x32,0xfe,0xff,0x00,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_2_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s6, -1 | 
|  | ; SI-NEXT:    s_mov_b32 s10, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s11, s7 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s8, s2 | 
|  | ; SI-NEXT:    s_mov_b32 s9, s3 | 
|  | ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s0 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s1 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    v_add_i32_e32 v0, vcc, -2, v0 | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %x = load i16, ptr addrspace(1) %in | 
|  | %y = add i16 %x, -2 | 
|  | %ybc = bitcast i16 %y to half | 
|  | store half %ybc, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_neg_16_f16(ptr addrspace(1) %out, ptr addrspace(1) %in) { | 
|  | ; GFX10-LABEL: add_inline_imm_neg_16_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x08,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x03,0x86,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x03,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x03,0x8a,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x03,0x8b,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x03,0x88,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x03,0x89,0xbe] | 
|  | ; GFX10-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x03,0x84,0xbe] | 
|  | ; GFX10-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX10-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x03,0x85,0xbe] | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x3f,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_nc_u32_e32 v0, 0xfff0, v0 ; encoding: [0xff,0x00,0x00,0x4a,0xf0,0xff,0x00,0x00] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-LABEL: add_inline_imm_neg_16_f16: | 
|  | ; GFX11:       ; %bb.0: | 
|  | ; GFX11-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0 ; encoding: [0x02,0x00,0x08,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s7, 0x31016000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; GFX11-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; GFX11-NEXT:    buffer_load_u16 v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; GFX11-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; GFX11-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0xf7,0x03,0x89,0xbf] | 
|  | ; GFX11-NEXT:    v_add_nc_u32_e32 v0, 0xfff0, v0 ; encoding: [0xff,0x00,0x00,0x4a,0xf0,0xff,0x00,0x00] | 
|  | ; GFX11-NEXT:    buffer_store_b16 v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; GFX11-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_neg_16_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0 ; encoding: [0x04,0x00,0x0a,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s7, 0x1100f000 ; encoding: [0xff,0x00,0x87,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s6, -1 ; encoding: [0xc1,0x00,0x86,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s10, s6 ; encoding: [0x06,0x00,0x8a,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s11, s7 ; encoding: [0x07,0x00,0x8b,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_mov_b32 s8, s2 ; encoding: [0x02,0x00,0x88,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s9, s3 ; encoding: [0x03,0x00,0x89,0xbe] | 
|  | ; VI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x00,0x02,0x80] | 
|  | ; VI-NEXT:    s_mov_b32 s4, s0 ; encoding: [0x00,0x00,0x84,0xbe] | 
|  | ; VI-NEXT:    s_mov_b32 s5, s1 ; encoding: [0x01,0x00,0x85,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_u32_e32 v0, vcc, 0xfff0, v0 ; encoding: [0xff,0x00,0x00,0x32,0xf0,0xff,0x00,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[4:7], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x01,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_neg_16_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s6, -1 | 
|  | ; SI-NEXT:    s_mov_b32 s10, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s11, s7 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s8, s2 | 
|  | ; SI-NEXT:    s_mov_b32 s9, s3 | 
|  | ; SI-NEXT:    buffer_load_ushort v0, off, s[8:11], 0 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s0 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s1 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) | 
|  | ; SI-NEXT:    v_add_i32_e32 v0, vcc, -16, v0 | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[4:7], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %x = load i16, ptr addrspace(1) %in | 
|  | %y = add i16 %x, -16 | 
|  | %ybc = bitcast i16 %y to half | 
|  | store half %ybc, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_63_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_63_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 63 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x7e,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_63_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 63 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x7e,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_63_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 63 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x7e,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_63_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 63 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x7e,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_63_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x367c0000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0xH003F | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define amdgpu_kernel void @add_inline_imm_64_f16(ptr addrspace(1) %out, half %x) { | 
|  | ; GFX10-LABEL: add_inline_imm_64_f16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0xa1,0xbf] | 
|  | ; GFX10-NEXT:    s_load_dword s2, s[8:9], 0x8 ; encoding: [0x84,0x00,0x00,0xf4,0x08,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x04,0xf4,0x00,0x00,0x00,0xfa] | 
|  | ; GFX10-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x03,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX10-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0xc0,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_add_f16_e64 v0, s2, 64 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x80,0x01,0x00] | 
|  | ; GFX10-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x03,0x82,0xbe] | 
|  | ; GFX10-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX10-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: add_inline_imm_64_f16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_add_f16_e64 v0.l, s2, 64 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x80,0x01,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-TRUE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: add_inline_imm_64_f16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_clause 0x1 ; encoding: [0x01,0x00,0x85,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b32 s2, s[4:5], 0x8 ; encoding: [0x82,0x00,0x00,0xf4,0x08,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_load_b64 s[0:1], s[4:5], 0x0 ; encoding: [0x02,0x00,0x04,0xf4,0x00,0x00,0x00,0xf8] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s3, 0x31016000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0x60,0x01,0x31] | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x07,0xfc,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_add_f16_e64 v0, s2, 64 ; encoding: [0x00,0x00,0x32,0xd5,0x02,0x80,0x01,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x64,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; GFX11-FAKE16-NEXT:    s_endpgm ; encoding: [0x00,0x00,0xb0,0xbf] | 
|  | ; | 
|  | ; VI-LABEL: add_inline_imm_64_f16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_load_dword s4, s[8:9], 0x8 ; encoding: [0x04,0x01,0x02,0xc0,0x08,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_load_dwordx2 s[0:1], s[8:9], 0x0 ; encoding: [0x04,0x00,0x06,0xc0,0x00,0x00,0x00,0x00] | 
|  | ; VI-NEXT:    s_mov_b32 s3, 0x1100f000 ; encoding: [0xff,0x00,0x83,0xbe,0x00,0xf0,0x00,0x11] | 
|  | ; VI-NEXT:    s_mov_b32 s2, -1 ; encoding: [0xc1,0x00,0x82,0xbe] | 
|  | ; VI-NEXT:    s_waitcnt lgkmcnt(0) ; encoding: [0x7f,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_add_f16_e64 v0, s4, 64 ; encoding: [0x00,0x00,0x1f,0xd1,0x04,0x80,0x01,0x00] | 
|  | ; VI-NEXT:    buffer_store_short v0, off, s[0:3], 0 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x00,0x00,0x80] | 
|  | ; VI-NEXT:    s_endpgm ; encoding: [0x00,0x00,0x81,0xbf] | 
|  | ; | 
|  | ; SI-LABEL: add_inline_imm_64_f16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_load_dword s0, s[4:5], 0xb | 
|  | ; SI-NEXT:    s_mov_b32 s3, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s2, -1 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    v_cvt_f32_f16_e32 v0, s0 | 
|  | ; SI-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x9 | 
|  | ; SI-NEXT:    v_add_f32_e32 v0, 0x36800000, v0 | 
|  | ; SI-NEXT:    v_cvt_f16_f32_e32 v0, v0 | 
|  | ; SI-NEXT:    s_waitcnt lgkmcnt(0) | 
|  | ; SI-NEXT:    buffer_store_short v0, off, s[0:3], 0 | 
|  | ; SI-NEXT:    s_endpgm | 
|  | %y = fadd half %x, 0xH0040 | 
|  | store half %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | ; This needs to be emitted as a literal constant since the 16-bit | 
|  | ; float values do not work for 16-bit integer operations. | 
|  | define void @mul_inline_imm_0.5_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_0.5_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0x3800, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x38,0x00,0x00] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_0.5_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0x3800, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x38,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_0.5_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0x3800, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x38,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_0.5_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0x3800, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0x38,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_0.5_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0x3800, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half 0.5 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_neg_0.5_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_neg_0.5_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0xb800, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xb8,0xff,0xff] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_neg_0.5_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0xb800, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xb8,0xff,0xff] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_neg_0.5_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0xb800, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xb8,0xff,0xff] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_neg_0.5_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0xb800, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0xb8,0xff,0xff] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_neg_0.5_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0xb800, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half -0.5 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_1.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_1.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0x3c00, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x3c,0x00,0x00] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_1.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0x3c00, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x3c,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_1.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0x3c00, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x3c,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_1.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0x3c00, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0x3c,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_1.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0x3c00, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half 1.0 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_neg_1.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_neg_1.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0xbc00, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xbc,0xff,0xff] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_neg_1.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0xbc00, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xbc,0xff,0xff] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_neg_1.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0xbc00, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xbc,0xff,0xff] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_neg_1.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0xbc00, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0xbc,0xff,0xff] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_neg_1.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0xbc00, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half -1.0 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @shl_inline_imm_2.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: shl_inline_imm_2.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_lshlrev_b16 v2, v2, 0x4000 ; encoding: [0x02,0x00,0x14,0xd7,0x02,0xff,0x01,0x00,0x00,0x40,0x00,0x00] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: shl_inline_imm_2.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_lshlrev_b16 v2.l, v2.l, 0x4000 ; encoding: [0x02,0x00,0x38,0xd7,0x02,0xff,0x01,0x00,0x00,0x40,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: shl_inline_imm_2.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_lshlrev_b16 v2, v2, 0x4000 ; encoding: [0x02,0x00,0x38,0xd7,0x02,0xff,0x01,0x00,0x00,0x40,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: shl_inline_imm_2.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_movk_i32 s4, 0x4000 ; encoding: [0x00,0x40,0x04,0xb0] | 
|  | ; VI-NEXT:    v_lshlrev_b16_e64 v2, v2, s4 ; encoding: [0x02,0x00,0x2a,0xd1,0x02,0x09,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: shl_inline_imm_2.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_lshl_b32_e32 v2, 0x4000, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = shl i16 bitcast (half 2.0 to i16), %x | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @shl_inline_imm_neg_2.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: shl_inline_imm_neg_2.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_lshlrev_b16 v2, v2, 0xc000 ; encoding: [0x02,0x00,0x14,0xd7,0x02,0xff,0x01,0x00,0x00,0xc0,0xff,0xff] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: shl_inline_imm_neg_2.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_lshlrev_b16 v2.l, v2.l, 0xc000 ; encoding: [0x02,0x00,0x38,0xd7,0x02,0xff,0x01,0x00,0x00,0xc0,0xff,0xff] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: shl_inline_imm_neg_2.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_lshlrev_b16 v2, v2, 0xc000 ; encoding: [0x02,0x00,0x38,0xd7,0x02,0xff,0x01,0x00,0x00,0xc0,0xff,0xff] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: shl_inline_imm_neg_2.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_movk_i32 s4, 0xc000 ; encoding: [0x00,0xc0,0x04,0xb0] | 
|  | ; VI-NEXT:    v_lshlrev_b16_e64 v2, v2, s4 ; encoding: [0x02,0x00,0x2a,0xd1,0x02,0x09,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: shl_inline_imm_neg_2.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_lshl_b32_e32 v2, 0xffffc000, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = shl i16 bitcast (half -2.0 to i16), %x | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_4.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_4.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0x4400, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x44,0x00,0x00] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_4.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0x4400, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x44,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_4.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0x4400, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0x44,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_4.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0x4400, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0x44,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_4.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0x4400, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half 4.0 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_neg_4.0_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_neg_4.0_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0xc400, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xc4,0xff,0xff] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_neg_4.0_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0xc400, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xc4,0xff,0xff] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_neg_4.0_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0xc400, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x00,0xc4,0xff,0xff] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_neg_4.0_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0xc400, v2 ; encoding: [0xff,0x04,0x04,0x52,0x00,0xc4,0xff,0xff] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_neg_4.0_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0xc400, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half -4.0 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } | 
|  |  | 
|  | define void @mul_inline_imm_inv2pi_i16(ptr addrspace(1) %out, i16 %x) { | 
|  | ; GFX10-LABEL: mul_inline_imm_inv2pi_i16: | 
|  | ; GFX10:       ; %bb.0: | 
|  | ; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; GFX10-NEXT:    v_mul_lo_u16 v2, 0x3118, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x18,0x31,0x00,0x00] | 
|  | ; GFX10-NEXT:    global_store_short v[0:1], v2, off ; encoding: [0x00,0x80,0x68,0xdc,0x00,0x02,0x7d,0x00] | 
|  | ; GFX10-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x20,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-TRUE16-LABEL: mul_inline_imm_inv2pi_i16: | 
|  | ; GFX11-TRUE16:       ; %bb.0: | 
|  | ; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-TRUE16-NEXT:    v_mul_lo_u16 v2.l, 0x3118, v2.l ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x18,0x31,0x00,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; GFX11-FAKE16-LABEL: mul_inline_imm_inv2pi_i16: | 
|  | ; GFX11-FAKE16:       ; %bb.0: | 
|  | ; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf] | 
|  | ; GFX11-FAKE16-NEXT:    v_mul_lo_u16 v2, 0x3118, v2 ; encoding: [0x02,0x00,0x05,0xd7,0xff,0x04,0x02,0x00,0x18,0x31,0x00,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    global_store_b16 v[0:1], v2, off ; encoding: [0x00,0x00,0x66,0xdc,0x00,0x02,0x7c,0x00] | 
|  | ; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x48,0x80,0xbe] | 
|  | ; | 
|  | ; VI-LABEL: mul_inline_imm_inv2pi_i16: | 
|  | ; VI:       ; %bb.0: | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x8c,0xbf] | 
|  | ; VI-NEXT:    v_mul_lo_u16_e32 v2, 0x3118, v2 ; encoding: [0xff,0x04,0x04,0x52,0x18,0x31,0x00,0x00] | 
|  | ; VI-NEXT:    flat_store_short v[0:1], v2 ; encoding: [0x00,0x00,0x68,0xdc,0x00,0x02,0x00,0x00] | 
|  | ; VI-NEXT:    s_waitcnt vmcnt(0) ; encoding: [0x70,0x0f,0x8c,0xbf] | 
|  | ; VI-NEXT:    s_setpc_b64 s[30:31] ; encoding: [0x1e,0x1d,0x80,0xbe] | 
|  | ; | 
|  | ; SI-LABEL: mul_inline_imm_inv2pi_i16: | 
|  | ; SI:       ; %bb.0: | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) | 
|  | ; SI-NEXT:    s_mov_b32 s6, 0 | 
|  | ; SI-NEXT:    v_and_b32_e32 v2, 0xffff, v2 | 
|  | ; SI-NEXT:    s_mov_b32 s7, 0xf000 | 
|  | ; SI-NEXT:    s_mov_b32 s4, s6 | 
|  | ; SI-NEXT:    s_mov_b32 s5, s6 | 
|  | ; SI-NEXT:    v_mul_u32_u24_e32 v2, 0x3118, v2 | 
|  | ; SI-NEXT:    buffer_store_short v2, v[0:1], s[4:7], 0 addr64 | 
|  | ; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) | 
|  | ; SI-NEXT:    s_setpc_b64 s[30:31] | 
|  | %y = mul i16 %x, bitcast (half 0xH3118 to i16) | 
|  | store i16 %y, ptr addrspace(1) %out | 
|  | ret void | 
|  | } |