1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=SI %s 2; RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VI %s 3 4; GCN-LABEL: {{^}}madak_f16 5; GCN: buffer_load_ushort v[[A_F16:[0-9]+]] 6; GCN: buffer_load_ushort v[[B_F16:[0-9]+]] 7; VI: v_madak_f16_e32 v[[R_F16:[0-9]+]], v[[A_F16]], v[[B_F16]], 0x4900{{$}} 8; VI: buffer_store_short v[[R_F16]] 9; GCN: s_endpgm 10define void @madak_f16( 11 half addrspace(1)* %r, 12 half addrspace(1)* %a, 13 half addrspace(1)* %b) { 14entry: 15 %a.val = load half, half addrspace(1)* %a 16 %b.val = load half, half addrspace(1)* %b 17 18 %t.val = fmul half %a.val, %b.val 19 %r.val = fadd half %t.val, 10.0 20 21 store half %r.val, half addrspace(1)* %r 22 ret void 23} 24 25; GCN-LABEL: {{^}}madak_f16_use_2 26; SI: v_mad_f32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 27; SI: v_mac_f32_e32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 28; VI: v_mad_f16 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 29; VI: v_mac_f16_e32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 30; GCN: s_endpgm 31define void @madak_f16_use_2( 32 half addrspace(1)* %r0, 33 half addrspace(1)* %r1, 34 half addrspace(1)* %a, 35 half addrspace(1)* %b, 36 half addrspace(1)* %c) { 37entry: 38 %a.val = load half, half addrspace(1)* %a 39 %b.val = load half, half addrspace(1)* %b 40 %c.val = load half, half addrspace(1)* %c 41 42 %t0.val = fmul half %a.val, %b.val 43 %t1.val = fmul half %a.val, %c.val 44 %r0.val = fadd half %t0.val, 10.0 45 %r1.val = fadd half %t1.val, 10.0 46 47 store half %r0.val, half addrspace(1)* %r0 48 store half %r1.val, half addrspace(1)* %r1 49 ret void 50} 51