| Matt Arsenault | 8728c5f | 2017-08-07 14:58:04 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=SI %s | 
| Matt Arsenault | 7aad8fd | 2017-01-24 22:02:15 +0000 | [diff] [blame] | 2 | ; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VI %s | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 3 |  | 
|  | 4 | ; GCN-LABEL: {{^}}fadd_f16 | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 5 | ; GCN: {{buffer|flat}}_load_ushort v[[A_F16:[0-9]+]] | 
|  | 6 | ; GCN: {{buffer|flat}}_load_ushort v[[B_F16:[0-9]+]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 7 | ; SI:  v_cvt_f32_f16_e32 v[[A_F32:[0-9]+]], v[[A_F16]] | 
|  | 8 | ; SI:  v_cvt_f32_f16_e32 v[[B_F32:[0-9]+]], v[[B_F16]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 9 | ; SI:  v_add_f32_e32 v[[R_F32:[0-9]+]], v[[A_F32]], v[[B_F32]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 10 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16:[0-9]+]], v[[R_F32]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 11 | ; VI:  v_add_f16_e32 v[[R_F16:[0-9]+]], v[[A_F16]], v[[B_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 12 | ; GCN: buffer_store_short v[[R_F16]] | 
|  | 13 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 14 | define amdgpu_kernel void @fadd_f16( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 15 | half addrspace(1)* %r, | 
|  | 16 | half addrspace(1)* %a, | 
|  | 17 | half addrspace(1)* %b) { | 
|  | 18 | entry: | 
|  | 19 | %a.val = load half, half addrspace(1)* %a | 
|  | 20 | %b.val = load half, half addrspace(1)* %b | 
|  | 21 | %r.val = fadd half %a.val, %b.val | 
|  | 22 | store half %r.val, half addrspace(1)* %r | 
|  | 23 | ret void | 
|  | 24 | } | 
|  | 25 |  | 
|  | 26 | ; GCN-LABEL: {{^}}fadd_f16_imm_a | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 27 | ; GCN: {{buffer|flat}}_load_ushort v[[B_F16:[0-9]+]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 28 | ; SI:  v_cvt_f32_f16_e32 v[[B_F32:[0-9]+]], v[[B_F16]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 29 | ; SI:  v_add_f32_e32 v[[R_F32:[0-9]+]], 1.0, v[[B_F32]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 30 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16:[0-9]+]], v[[R_F32]] | 
| Matt Arsenault | 4bd7236 | 2016-12-10 00:39:12 +0000 | [diff] [blame] | 31 | ; VI:  v_add_f16_e32 v[[R_F16:[0-9]+]], 1.0, v[[B_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 32 | ; GCN: buffer_store_short v[[R_F16]] | 
|  | 33 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 34 | define amdgpu_kernel void @fadd_f16_imm_a( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 35 | half addrspace(1)* %r, | 
|  | 36 | half addrspace(1)* %b) { | 
|  | 37 | entry: | 
|  | 38 | %b.val = load half, half addrspace(1)* %b | 
|  | 39 | %r.val = fadd half 1.0, %b.val | 
|  | 40 | store half %r.val, half addrspace(1)* %r | 
|  | 41 | ret void | 
|  | 42 | } | 
|  | 43 |  | 
|  | 44 | ; GCN-LABEL: {{^}}fadd_f16_imm_b | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 45 | ; GCN: {{buffer|flat}}_load_ushort v[[A_F16:[0-9]+]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 46 | ; SI:  v_cvt_f32_f16_e32 v[[A_F32:[0-9]+]], v[[A_F16]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 47 | ; SI:  v_add_f32_e32 v[[R_F32:[0-9]+]], 2.0, v[[A_F32]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 48 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16:[0-9]+]], v[[R_F32]] | 
| Matt Arsenault | 4bd7236 | 2016-12-10 00:39:12 +0000 | [diff] [blame] | 49 | ; VI:  v_add_f16_e32 v[[R_F16:[0-9]+]], 2.0, v[[A_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 50 | ; GCN: buffer_store_short v[[R_F16]] | 
|  | 51 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 52 | define amdgpu_kernel void @fadd_f16_imm_b( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 53 | half addrspace(1)* %r, | 
|  | 54 | half addrspace(1)* %a) { | 
|  | 55 | entry: | 
|  | 56 | %a.val = load half, half addrspace(1)* %a | 
|  | 57 | %r.val = fadd half %a.val, 2.0 | 
|  | 58 | store half %r.val, half addrspace(1)* %r | 
|  | 59 | ret void | 
|  | 60 | } | 
|  | 61 |  | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 62 | ; GCN-LABEL: {{^}}fadd_v2f16: | 
| Stanislav Mekhanoshin | 7fe9a5d | 2017-09-13 22:20:47 +0000 | [diff] [blame] | 63 | ; SI: buffer_load_dword v[[A_V2_F16:[0-9]+]] | 
|  | 64 | ; SI: buffer_load_dword v[[B_V2_F16:[0-9]+]] | 
|  | 65 | ; VI: flat_load_dword v[[B_V2_F16:[0-9]+]] | 
|  | 66 | ; VI: flat_load_dword v[[A_V2_F16:[0-9]+]] | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 67 |  | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 68 | ; SI:  v_cvt_f32_f16_e32 v[[A_F32_0:[0-9]+]], v[[A_V2_F16]] | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 69 | ; SI: v_lshrrev_b32_e32 v[[A_F16_1:[0-9]+]], 16, v[[A_V2_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 70 | ; SI:  v_cvt_f32_f16_e32 v[[B_F32_0:[0-9]+]], v[[B_V2_F16]] | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 71 | ; SI: v_lshrrev_b32_e32 v[[B_F16_1:[0-9]+]], 16, v[[B_V2_F16]] | 
|  | 72 |  | 
|  | 73 | ; SI-DAG:  v_cvt_f32_f16_e32 v[[A_F32_1:[0-9]+]], v[[A_F16_1]] | 
|  | 74 | ; SI-DAG:  v_cvt_f32_f16_e32 v[[B_F32_1:[0-9]+]], v[[B_F16_1]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 75 | ; SI-DAG:  v_add_f32_e32 v[[R_F32_0:[0-9]+]], v[[A_F32_0]], v[[B_F32_0]] | 
|  | 76 | ; SI-DAG:  v_add_f32_e32 v[[R_F32_1:[0-9]+]], v[[A_F32_1]], v[[B_F32_1]] | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 77 | ; SI-DAG:  v_cvt_f16_f32_e32 v[[R_F16_0:[0-9]+]], v[[R_F32_0]] | 
|  | 78 | ; SI-DAG:  v_cvt_f16_f32_e32 v[[R_F16_1:[0-9]+]], v[[R_F32_1]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 79 | ; SI: v_lshlrev_b32_e32 v[[R_F16_HI:[0-9]+]], 16, v[[R_F16_1]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 80 | ; SI: v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_0]], v[[R_F16_HI]] | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 81 |  | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 82 | ; VI-DAG: v_add_f16_e32 v[[R_F16_LO:[0-9]+]], v[[A_V2_F16]], v[[B_V2_F16]] | 
| Stanislav Mekhanoshin | 0330660 | 2017-06-03 17:39:47 +0000 | [diff] [blame] | 83 | ; VI-DAG: v_add_f16_sdwa v[[R_F16_HI:[0-9]+]], v[[A_V2_F16]], v[[B_V2_F16]] dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:WORD_1 | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 84 | ; VI:     v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_LO]], v[[R_F16_HI]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 85 |  | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 86 | ; GCN: buffer_store_dword v[[R_V2_F16]] | 
|  | 87 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 88 | define amdgpu_kernel void @fadd_v2f16( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 89 | <2 x half> addrspace(1)* %r, | 
|  | 90 | <2 x half> addrspace(1)* %a, | 
|  | 91 | <2 x half> addrspace(1)* %b) { | 
|  | 92 | entry: | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 93 | %tid = call i32 @llvm.amdgcn.workitem.id.x() | 
|  | 94 | %gep.a = getelementptr inbounds <2 x half>, <2 x half> addrspace(1)* %a, i32 %tid | 
|  | 95 | %gep.b = getelementptr inbounds <2 x half>, <2 x half> addrspace(1)* %b, i32 %tid | 
|  | 96 | %a.val = load <2 x half>, <2 x half> addrspace(1)* %gep.a | 
|  | 97 | %b.val = load <2 x half>, <2 x half> addrspace(1)* %gep.b | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 98 | %r.val = fadd <2 x half> %a.val, %b.val | 
|  | 99 | store <2 x half> %r.val, <2 x half> addrspace(1)* %r | 
|  | 100 | ret void | 
|  | 101 | } | 
|  | 102 |  | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 103 | ; GCN-LABEL: {{^}}fadd_v2f16_imm_a: | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 104 | ; GCN-DAG: {{buffer|flat}}_load_dword v[[B_V2_F16:[0-9]+]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 105 | ; SI:  v_cvt_f32_f16_e32 v[[B_F32_0:[0-9]+]], v[[B_V2_F16]] | 
| Stanislav Mekhanoshin | 56ea488 | 2017-05-30 16:49:24 +0000 | [diff] [blame] | 106 | ; SI:  v_lshrrev_b32_e32 v[[B_F16_1:[0-9]+]], 16, v[[B_V2_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 107 | ; SI:  v_cvt_f32_f16_e32 v[[B_F32_1:[0-9]+]], v[[B_F16_1]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 108 | ; SI:  v_add_f32_e32 v[[R_F32_0:[0-9]+]], 1.0, v[[B_F32_0]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 109 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16_0:[0-9]+]], v[[R_F32_0]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 110 | ; SI:  v_add_f32_e32 v[[R_F32_1:[0-9]+]], 2.0, v[[B_F32_1]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 111 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16_1:[0-9]+]], v[[R_F32_1]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 112 | ; SI-DAG:  v_lshlrev_b32_e32 v[[R_F16_HI:[0-9]+]], 16, v[[R_F16_1]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 113 | ; SI:  v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_0]], v[[R_F16_HI]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 114 |  | 
| Stanislav Mekhanoshin | 56ea488 | 2017-05-30 16:49:24 +0000 | [diff] [blame] | 115 | ; VI-DAG: v_mov_b32_e32 v[[CONST2:[0-9]+]], 0x4000 | 
| Stanislav Mekhanoshin | 0330660 | 2017-06-03 17:39:47 +0000 | [diff] [blame] | 116 | ; VI-DAG: v_add_f16_sdwa v[[R_F16_HI:[0-9]+]], v[[B_V2_F16]], v[[CONST2]] dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 117 | ; VI-DAG: v_add_f16_e32 v[[R_F16_0:[0-9]+]], 1.0, v[[B_V2_F16]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 118 | ; VI:     v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_0]], v[[R_F16_HI]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 119 |  | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 120 | ; GCN: buffer_store_dword v[[R_V2_F16]] | 
|  | 121 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 122 | define amdgpu_kernel void @fadd_v2f16_imm_a( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 123 | <2 x half> addrspace(1)* %r, | 
|  | 124 | <2 x half> addrspace(1)* %b) { | 
|  | 125 | entry: | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 126 | %tid = call i32 @llvm.amdgcn.workitem.id.x() | 
|  | 127 | %gep.b = getelementptr inbounds <2 x half>, <2 x half> addrspace(1)* %b, i32 %tid | 
|  | 128 | %b.val = load <2 x half>, <2 x half> addrspace(1)* %gep.b | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 129 | %r.val = fadd <2 x half> <half 1.0, half 2.0>, %b.val | 
|  | 130 | store <2 x half> %r.val, <2 x half> addrspace(1)* %r | 
|  | 131 | ret void | 
|  | 132 | } | 
|  | 133 |  | 
| Matt Arsenault | 86e02ce | 2017-03-15 19:04:26 +0000 | [diff] [blame] | 134 | ; GCN-LABEL: {{^}}fadd_v2f16_imm_b: | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 135 | ; GCN-DAG: {{buffer|flat}}_load_dword v[[A_V2_F16:[0-9]+]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 136 | ; SI:  v_cvt_f32_f16_e32 v[[A_F32_0:[0-9]+]], v[[A_V2_F16]] | 
| Stanislav Mekhanoshin | 56ea488 | 2017-05-30 16:49:24 +0000 | [diff] [blame] | 137 | ; SI-DAG: v_lshrrev_b32_e32 v[[A_F16_1:[0-9]+]], 16, v[[A_V2_F16]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 138 | ; SI:  v_cvt_f32_f16_e32 v[[A_F32_1:[0-9]+]], v[[A_F16_1]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 139 | ; SI:  v_add_f32_e32 v[[R_F32_0:[0-9]+]], 2.0, v[[A_F32_0]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 140 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16_0:[0-9]+]], v[[R_F32_0]] | 
| Matt Arsenault | 0c68739 | 2017-01-30 16:57:41 +0000 | [diff] [blame] | 141 | ; SI:  v_add_f32_e32 v[[R_F32_1:[0-9]+]], 1.0, v[[A_F32_1]] | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 142 | ; SI:  v_cvt_f16_f32_e32 v[[R_F16_1:[0-9]+]], v[[R_F32_1]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 143 | ; SI-DAG:  v_lshlrev_b32_e32 v[[R_F16_HI:[0-9]+]], 16, v[[R_F16_1]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 144 | ; SI:  v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_0]], v[[R_F16_HI]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 145 |  | 
| Stanislav Mekhanoshin | 56ea488 | 2017-05-30 16:49:24 +0000 | [diff] [blame] | 146 | ; VI-DAG: v_mov_b32_e32 v[[CONST1:[0-9]+]], 0x3c00 | 
| Stanislav Mekhanoshin | 0330660 | 2017-06-03 17:39:47 +0000 | [diff] [blame] | 147 | ; VI-DAG: v_add_f16_sdwa v[[R_F16_0:[0-9]+]], v[[A_V2_F16]], v[[CONST1]] dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:WORD_1 src1_sel:DWORD | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 148 | ; VI-DAG: v_add_f16_e32 v[[R_F16_1:[0-9]+]], 2.0, v[[A_V2_F16]] | 
| Matt Arsenault | 6c29c5a | 2017-07-10 19:53:57 +0000 | [diff] [blame] | 149 | ; VI:     v_or_b32_e32 v[[R_V2_F16:[0-9]+]], v[[R_F16_1]], v[[R_F16_0]] | 
| Sam Kolton | 9fa1696 | 2017-04-06 15:03:28 +0000 | [diff] [blame] | 150 |  | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 151 | ; GCN: buffer_store_dword v[[R_V2_F16]] | 
|  | 152 | ; GCN: s_endpgm | 
| Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 153 | define amdgpu_kernel void @fadd_v2f16_imm_b( | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 154 | <2 x half> addrspace(1)* %r, | 
|  | 155 | <2 x half> addrspace(1)* %a) { | 
|  | 156 | entry: | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 157 | %tid = call i32 @llvm.amdgcn.workitem.id.x() | 
|  | 158 | %gep.a = getelementptr inbounds <2 x half>, <2 x half> addrspace(1)* %a, i32 %tid | 
|  | 159 | %a.val = load <2 x half>, <2 x half> addrspace(1)* %gep.a | 
| Konstantin Zhuravlyov | f86e4b7 | 2016-11-13 07:01:11 +0000 | [diff] [blame] | 160 | %r.val = fadd <2 x half> %a.val, <half 2.0, half 1.0> | 
|  | 161 | store <2 x half> %r.val, <2 x half> addrspace(1)* %r | 
|  | 162 | ret void | 
|  | 163 | } | 
| Alexander Timofeev | 982aee6 | 2017-07-04 17:32:00 +0000 | [diff] [blame] | 164 |  | 
|  | 165 | declare i32 @llvm.amdgcn.workitem.id.x() #1 | 
|  | 166 |  | 
|  | 167 | attributes #0 = { nounwind } | 
|  | 168 | attributes #1 = { nounwind readnone } |