# RUN: llc --mtriple=amdgcn--amdhsa -mcpu=fiji -verify-machineinstrs -run-pass si-fold-operands,si-shrink-instructions %s -o - | FileCheck %s
--- |
  define amdgpu_kernel void @add_f32_1.0_one_f16_use() #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f32.add = fadd float %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile float %f32.add, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f32_1.0_multi_f16_use() #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f32.add = fadd float %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile float %f32.add, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f32_1.0_one_f32_use_one_f16_use () #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f32.add = fadd float %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile float %f32.add, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f32_1.0_one_f32_use_multi_f16_use () #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f16.add1 = fadd half %f16.val1, 0xH3C00
    %f32.add = fadd float %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile half %f16.add1, half addrspace(1)* undef
    store volatile float %f32.add, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_i32_1_multi_f16_use() #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH0001
    %f16.add1 = fadd half %f16.val1, 0xH0001
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile half %f16.add1,half addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_i32_m2_one_f32_use_multi_f16_use () #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xHFFFE
    %f16.add1 = fadd half %f16.val1, 0xHFFFE
    %f32.add = fadd float %f32.val, 0xffffffffc0000000
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile half %f16.add1, half addrspace(1)* undef
    store volatile float %f32.add, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f16_1.0_multi_f32_use() #0 {
    %f32.val0 = load volatile float, float addrspace(1)* undef
    %f32.val1 = load volatile float, float addrspace(1)* undef
    %f32.val = load volatile float, float addrspace(1)* undef
    %f32.add0 = fadd float %f32.val0, 1.0
    %f32.add1 = fadd float %f32.val1, 1.0
    store volatile float %f32.add0, float addrspace(1)* undef
    store volatile float %f32.add1, float addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f16_1.0_other_high_bits_multi_f16_use() #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile half, half addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f32.add = fadd half %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile half %f32.add, half addrspace(1)* undef
    ret void
  }

  define amdgpu_kernel void @add_f16_1.0_other_high_bits_use_f16_f32() #0 {
    %f16.val0 = load volatile half, half addrspace(1)* undef
    %f16.val1 = load volatile half, half addrspace(1)* undef
    %f32.val = load volatile half, half addrspace(1)* undef
    %f16.add0 = fadd half %f16.val0, 0xH3C00
    %f32.add = fadd half %f32.val, 1.000000e+00
    store volatile half %f16.add0, half addrspace(1)* undef
    store volatile half %f32.add, half addrspace(1)* undef
    ret void
  }

  attributes #0 = { nounwind }

...
---

# f32 1.0 with a single use should be folded as the low 32-bits of a
#  literal constant.

# CHECK-LABEL: name: add_f32_1.0_one_f16_use
# CHECK: %13:vgpr_32 = V_ADD_F16_e32  1065353216, killed %11, implicit $mode, implicit $exec

name:            add_f32_1.0_one_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = V_MOV_B32_e32 1065353216, implicit $exec
    %13 = V_ADD_F16_e64 0, killed %11, 0, %12, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %13, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    S_ENDPGM 0

...
---
# Materialized f32 inline immediate should not be folded into the f16
# operands

# CHECK-LABEL: name: add_f32_1.0_multi_f16_use
# CHECK: %13:vgpr_32 = V_MOV_B32_e32 1065353216, implicit $exec
# CHECK: %14:vgpr_32 = V_ADD_F16_e32 killed %11, %13, implicit $mode, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 killed %12, killed %13, implicit $mode, implicit $exec


name:            add_f32_1.0_multi_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %13 = V_MOV_B32_e32 1065353216, implicit $exec
    %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
    %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# f32 1.0 should be folded into the single f32 use as an inline
#  immediate, and folded into the single f16 use as a literal constant

# CHECK-LABEL: name: add_f32_1.0_one_f32_use_one_f16_use
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 1065353216, %11, implicit $mode, implicit $exec
# CHECK: %16:vgpr_32 = V_ADD_F32_e32 1065353216, killed %13, implicit $mode, implicit $exec

name:            add_f32_1.0_one_f32_use_one_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
  - { id: 16, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %14 = V_MOV_B32_e32 1065353216, implicit $exec
    %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
    %16 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_DWORD_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# f32 1.0 should be folded for the single f32 use as an inline
#  constant, and not folded as a multi-use literal for the f16 cases

# CHECK-LABEL: name: add_f32_1.0_one_f32_use_multi_f16_use
# CHECK: %14:vgpr_32 = V_MOV_B32_e32 1065353216, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F16_e32  %11, %14, implicit $mode, implicit $exec
# CHECK: %16:vgpr_32 = V_ADD_F16_e32 %12,  %14, implicit $mode, implicit $exec
# CHECK: %17:vgpr_32 = V_ADD_F32_e32 1065353216, killed %13, implicit $mode, implicit $exec

name:            add_f32_1.0_one_f32_use_multi_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
  - { id: 16, class: vgpr_32 }
  - { id: 17, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %14 = V_MOV_B32_e32 1065353216, implicit $exec
    %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
    %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
    %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    S_ENDPGM 0

...
---
# CHECK-LABEL: name: add_i32_1_multi_f16_use
# CHECK: %14:vgpr_32 = V_ADD_F16_e32 1, killed %11, implicit $mode, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 1, killed %12, implicit $mode, implicit $exec


name:            add_i32_1_multi_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %13 = V_MOV_B32_e32 1, implicit $exec
    %14 = V_ADD_F16_e64 0, killed %11, 0, %13, 0, 0, implicit $mode, implicit $exec
    %15 = V_ADD_F16_e64 0, killed %12, 0, killed %13, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# CHECK-LABEL: name: add_i32_m2_one_f32_use_multi_f16_use
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 -2, %11, implicit $mode, implicit $exec
# CHECK: %16:vgpr_32 = V_ADD_F16_e32 -2, %12, implicit $mode, implicit $exec
# CHECK: %17:vgpr_32 = V_ADD_F32_e32 -2, killed %13, implicit $mode, implicit $exec

name:            add_i32_m2_one_f32_use_multi_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
  - { id: 16, class: vgpr_32 }
  - { id: 17, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %13 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %14 = V_MOV_B32_e32 -2, implicit $exec
    %15 = V_ADD_F16_e64 0, %11, 0, %14, 0, 0, implicit $mode, implicit $exec
    %16 = V_ADD_F16_e64 0, %12, 0, %14, 0, 0, implicit $mode, implicit $exec
    %17 = V_ADD_F32_e64 0, killed %13, 0, killed %14, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %16, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_DWORD_OFFSET killed %17, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# f32 1.0 should be folded for the single f32 use as an inline
#  constant, and not folded as a multi-use literal for the f16 cases

# CHECK-LABEL: name: add_f16_1.0_multi_f32_use
# CHECK: %13:vgpr_32 = V_MOV_B32_e32 15360, implicit $exec
# CHECK: %14:vgpr_32 = V_ADD_F32_e32 %11, %13, implicit $mode, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F32_e32 %12, %13, implicit $mode, implicit $exec

name:            add_f16_1.0_multi_f32_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %12 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %13 = V_MOV_B32_e32 15360, implicit $exec
    %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
    %15 = V_ADD_F32_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    BUFFER_STORE_DWORD_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# The low 16-bits are an inline immediate, but the high bits are junk
# FIXME: Should be able to fold this

# CHECK-LABEL: name: add_f16_1.0_other_high_bits_multi_f16_use
# CHECK: %13:vgpr_32 = V_MOV_B32_e32 80886784, implicit $exec
# CHECK: %14:vgpr_32 = V_ADD_F16_e32 %11, %13, implicit $mode, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 %12, %13, implicit $mode, implicit $exec

name:            add_f16_1.0_other_high_bits_multi_f16_use
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %13 = V_MOV_B32_e32 80886784, implicit $exec
    %14 = V_ADD_F16_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
    %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_SHORT_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    S_ENDPGM 0

...
---

# FIXME: Should fold inline immediate into f16 and literal use into
# f32 instruction.

# CHECK-LABEL: name: add_f16_1.0_other_high_bits_use_f16_f32
# CHECK: %13:vgpr_32 = V_MOV_B32_e32 305413120, implicit $exec
# CHECK: %14:vgpr_32 = V_ADD_F32_e32 %11, %13, implicit $mode, implicit $exec
# CHECK: %15:vgpr_32 = V_ADD_F16_e32 %12, %13, implicit $mode, implicit $exec
name:            add_f16_1.0_other_high_bits_use_f16_f32
alignment:       1
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
registers:
  - { id: 0, class: sreg_64 }
  - { id: 1, class: sreg_32 }
  - { id: 2, class: sgpr_32 }
  - { id: 3, class: vgpr_32 }
  - { id: 4, class: sreg_64 }
  - { id: 5, class: sreg_32 }
  - { id: 6, class: sreg_64 }
  - { id: 7, class: sreg_32 }
  - { id: 8, class: sreg_32 }
  - { id: 9, class: sreg_32 }
  - { id: 10, class: sgpr_128 }
  - { id: 11, class: vgpr_32 }
  - { id: 12, class: vgpr_32 }
  - { id: 13, class: vgpr_32 }
  - { id: 14, class: vgpr_32 }
  - { id: 15, class: vgpr_32 }
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    false
  hasCalls:        false
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0 (%ir-block.0):
    %4 = IMPLICIT_DEF
    %5 = COPY %4.sub1
    %6 = IMPLICIT_DEF
    %7 = COPY %6.sub0
    %8 = S_MOV_B32 61440
    %9 = S_MOV_B32 -1
    %10 = REG_SEQUENCE killed %7, 1, killed %5, 2, killed %9, 3, killed %8, 4
    %11 = BUFFER_LOAD_DWORD_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 4 from `float addrspace(1)* undef`)
    %12 = BUFFER_LOAD_USHORT_OFFSET %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile load 2 from `half addrspace(1)* undef`)
    %13 = V_MOV_B32_e32 305413120, implicit $exec
    %14 = V_ADD_F32_e64 0, %11, 0, %13, 0, 0, implicit $mode, implicit $exec
    %15 = V_ADD_F16_e64 0, %12, 0, %13, 0, 0, implicit $mode, implicit $exec
    BUFFER_STORE_DWORD_OFFSET killed %14, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 4 into `float addrspace(1)* undef`)
    BUFFER_STORE_SHORT_OFFSET killed %15, %10, 0, 0, 0, 0, 0, implicit $exec :: (volatile store 2 into `half addrspace(1)* undef`)
    S_ENDPGM 0

...
