1193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn -mcpu=gfx908 -stop-after=si-fix-sgpr-copies < %s | FileCheck -check-prefix=GFX908 %s3 4;; Older intrinsics that take <4 x i32>5 6define float @llvm_amdgcn_raw_buffer_load_f32(i32 %voffset, i32 %soffset) {7 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_load_f328 ; GFX908: bb.0 (%ir-block.0):9 ; GFX908-NEXT: successors: %bb.1(0x80000000)10 ; GFX908-NEXT: liveins: $vgpr0, $vgpr111 ; GFX908-NEXT: {{ $}}12 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr113 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr014 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF15 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec16 ; GFX908-NEXT: {{ $}}17 ; GFX908-NEXT: bb.1:18 ; GFX908-NEXT: successors: %bb.2(0x80000000)19 ; GFX908-NEXT: {{ $}}20 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec21 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec22 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec23 ; GFX908-NEXT: {{ $}}24 ; GFX908-NEXT: bb.2:25 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)26 ; GFX908-NEXT: {{ $}}27 ; GFX908-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 8)28 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc29 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec30 ; GFX908-NEXT: {{ $}}31 ; GFX908-NEXT: bb.3:32 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]33 ; GFX908-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]34 ; GFX908-NEXT: SI_RETURN implicit $vgpr035 %val = call float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)36 ret float %val37}38 39define float @llvm_amdgcn_raw_tbuffer_load_f32(i32 %voffset, i32 %soffset) {40 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_load_f3241 ; GFX908: bb.0 (%ir-block.0):42 ; GFX908-NEXT: successors: %bb.1(0x80000000)43 ; GFX908-NEXT: liveins: $vgpr0, $vgpr144 ; GFX908-NEXT: {{ $}}45 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr146 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr047 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF48 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec49 ; GFX908-NEXT: {{ $}}50 ; GFX908-NEXT: bb.1:51 ; GFX908-NEXT: successors: %bb.2(0x80000000)52 ; GFX908-NEXT: {{ $}}53 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec54 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec55 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec56 ; GFX908-NEXT: {{ $}}57 ; GFX908-NEXT: bb.2:58 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)59 ; GFX908-NEXT: {{ $}}60 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_X_OFFEN:%[0-9]+]]:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32), align 1, addrspace 8)61 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc62 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec63 ; GFX908-NEXT: {{ $}}64 ; GFX908-NEXT: bb.3:65 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]66 ; GFX908-NEXT: $vgpr0 = COPY [[TBUFFER_LOAD_FORMAT_X_OFFEN]]67 ; GFX908-NEXT: SI_RETURN implicit $vgpr068 %val = call float @llvm.amdgcn.raw.tbuffer.load.f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)69 ret float %val70}71 72define <2 x float> @llvm_amdgcn_raw_buffer_load_v2f32(i32 %voffset, i32 %soffset) {73 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_load_v2f3274 ; GFX908: bb.0 (%ir-block.0):75 ; GFX908-NEXT: successors: %bb.1(0x80000000)76 ; GFX908-NEXT: liveins: $vgpr0, $vgpr177 ; GFX908-NEXT: {{ $}}78 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr179 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr080 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF81 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec82 ; GFX908-NEXT: {{ $}}83 ; GFX908-NEXT: bb.1:84 ; GFX908-NEXT: successors: %bb.2(0x80000000)85 ; GFX908-NEXT: {{ $}}86 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec87 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec88 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec89 ; GFX908-NEXT: {{ $}}90 ; GFX908-NEXT: bb.2:91 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)92 ; GFX908-NEXT: {{ $}}93 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX2_OFFEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 8)94 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc95 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec96 ; GFX908-NEXT: {{ $}}97 ; GFX908-NEXT: bb.3:98 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]99 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_OFFEN]].sub0100 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_OFFEN]].sub1101 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]102 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]103 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1104 %val = call <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)105 ret <2 x float> %val106}107 108define <2 x float> @llvm_amdgcn_raw_tbuffer_load_v2f32(i32 %voffset, i32 %soffset) {109 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_load_v2f32110 ; GFX908: bb.0 (%ir-block.0):111 ; GFX908-NEXT: successors: %bb.1(0x80000000)112 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1113 ; GFX908-NEXT: {{ $}}114 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1115 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0116 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF117 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec118 ; GFX908-NEXT: {{ $}}119 ; GFX908-NEXT: bb.1:120 ; GFX908-NEXT: successors: %bb.2(0x80000000)121 ; GFX908-NEXT: {{ $}}122 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec123 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec124 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec125 ; GFX908-NEXT: {{ $}}126 ; GFX908-NEXT: bb.2:127 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)128 ; GFX908-NEXT: {{ $}}129 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XY_OFFEN:%[0-9]+]]:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64), align 1, addrspace 8)130 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc131 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec132 ; GFX908-NEXT: {{ $}}133 ; GFX908-NEXT: bb.3:134 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]135 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XY_OFFEN]].sub0136 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XY_OFFEN]].sub1137 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]138 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]139 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1140 %val = call <2 x float> @llvm.amdgcn.raw.tbuffer.load.v2f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)141 ret <2 x float> %val142}143 144define <3 x float> @llvm_amdgcn_raw_buffer_load_v3f32(i32 %voffset, i32 %soffset) {145 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_load_v3f32146 ; GFX908: bb.0 (%ir-block.0):147 ; GFX908-NEXT: successors: %bb.1(0x80000000)148 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1149 ; GFX908-NEXT: {{ $}}150 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1151 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0152 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF153 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec154 ; GFX908-NEXT: {{ $}}155 ; GFX908-NEXT: bb.1:156 ; GFX908-NEXT: successors: %bb.2(0x80000000)157 ; GFX908-NEXT: {{ $}}158 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec159 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec160 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec161 ; GFX908-NEXT: {{ $}}162 ; GFX908-NEXT: bb.2:163 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)164 ; GFX908-NEXT: {{ $}}165 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX3_OFFEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 8)166 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc167 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec168 ; GFX908-NEXT: {{ $}}169 ; GFX908-NEXT: bb.3:170 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]171 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub0172 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub1173 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub2174 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]175 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]176 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]177 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2178 %val = call <3 x float> @llvm.amdgcn.raw.buffer.load.v3f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)179 ret <3 x float> %val180}181 182define <3 x float> @llvm_amdgcn_raw_tbuffer_load_v3f32(i32 %voffset, i32 %soffset) {183 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_load_v3f32184 ; GFX908: bb.0 (%ir-block.0):185 ; GFX908-NEXT: successors: %bb.1(0x80000000)186 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1187 ; GFX908-NEXT: {{ $}}188 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1189 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0190 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF191 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec192 ; GFX908-NEXT: {{ $}}193 ; GFX908-NEXT: bb.1:194 ; GFX908-NEXT: successors: %bb.2(0x80000000)195 ; GFX908-NEXT: {{ $}}196 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec197 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec198 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec199 ; GFX908-NEXT: {{ $}}200 ; GFX908-NEXT: bb.2:201 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)202 ; GFX908-NEXT: {{ $}}203 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN:%[0-9]+]]:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96), align 1, addrspace 8)204 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc205 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec206 ; GFX908-NEXT: {{ $}}207 ; GFX908-NEXT: bb.3:208 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]209 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub0210 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub1211 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub2212 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]213 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]214 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]215 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2216 %val = call <3 x float> @llvm.amdgcn.raw.tbuffer.load.v3f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)217 ret <3 x float> %val218}219 220define <4 x float> @llvm_amdgcn_raw_buffer_load_v4f32(i32 %voffset, i32 %soffset) {221 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_load_v4f32222 ; GFX908: bb.0 (%ir-block.0):223 ; GFX908-NEXT: successors: %bb.1(0x80000000)224 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1225 ; GFX908-NEXT: {{ $}}226 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1227 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0228 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF229 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec230 ; GFX908-NEXT: {{ $}}231 ; GFX908-NEXT: bb.1:232 ; GFX908-NEXT: successors: %bb.2(0x80000000)233 ; GFX908-NEXT: {{ $}}234 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec235 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec236 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec237 ; GFX908-NEXT: {{ $}}238 ; GFX908-NEXT: bb.2:239 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)240 ; GFX908-NEXT: {{ $}}241 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX4_OFFEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 8)242 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc243 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec244 ; GFX908-NEXT: {{ $}}245 ; GFX908-NEXT: bb.3:246 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]247 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub0248 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub1249 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub2250 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub3251 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]252 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]253 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]254 ; GFX908-NEXT: $vgpr3 = COPY [[COPY5]]255 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3256 %val = call <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)257 ret <4 x float> %val258}259 260define <4 x float> @llvm_amdgcn_raw_tbuffer_load_v4f32(i32 %voffset, i32 %soffset) {261 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_load_v4f32262 ; GFX908: bb.0 (%ir-block.0):263 ; GFX908-NEXT: successors: %bb.1(0x80000000)264 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1265 ; GFX908-NEXT: {{ $}}266 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1267 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0268 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF269 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec270 ; GFX908-NEXT: {{ $}}271 ; GFX908-NEXT: bb.1:272 ; GFX908-NEXT: successors: %bb.2(0x80000000)273 ; GFX908-NEXT: {{ $}}274 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec275 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec276 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec277 ; GFX908-NEXT: {{ $}}278 ; GFX908-NEXT: bb.2:279 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)280 ; GFX908-NEXT: {{ $}}281 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN:%[0-9]+]]:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128), align 1, addrspace 8)282 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc283 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec284 ; GFX908-NEXT: {{ $}}285 ; GFX908-NEXT: bb.3:286 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]287 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub0288 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub1289 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub2290 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub3291 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]292 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]293 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]294 ; GFX908-NEXT: $vgpr3 = COPY [[COPY5]]295 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3296 %val = call <4 x float> @llvm.amdgcn.raw.tbuffer.load.v4f32(<4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)297 ret <4 x float> %val298}299 300define void @llvm_amdgcn_raw_buffer_store_f32(float %val, i32 %voffset, i32 %soffset) {301 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_store_f32302 ; GFX908: bb.0 (%ir-block.0):303 ; GFX908-NEXT: successors: %bb.1(0x80000000)304 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2305 ; GFX908-NEXT: {{ $}}306 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2307 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1308 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0309 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF310 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec311 ; GFX908-NEXT: {{ $}}312 ; GFX908-NEXT: bb.1:313 ; GFX908-NEXT: successors: %bb.2(0x80000000)314 ; GFX908-NEXT: {{ $}}315 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec316 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec317 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec318 ; GFX908-NEXT: {{ $}}319 ; GFX908-NEXT: bb.2:320 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)321 ; GFX908-NEXT: {{ $}}322 ; GFX908-NEXT: BUFFER_STORE_DWORD_OFFEN_exact [[COPY2]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)323 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc324 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec325 ; GFX908-NEXT: {{ $}}326 ; GFX908-NEXT: bb.3:327 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]328 ; GFX908-NEXT: SI_RETURN329 call void @llvm.amdgcn.raw.buffer.store.f32(float %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)330 ret void331}332 333define void @llvm_amdgcn_raw_tbuffer_store_f32(float %val, i32 %voffset, i32 %soffset) {334 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_store_f32335 ; GFX908: bb.0 (%ir-block.0):336 ; GFX908-NEXT: successors: %bb.1(0x80000000)337 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2338 ; GFX908-NEXT: {{ $}}339 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2340 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1341 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0342 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF343 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec344 ; GFX908-NEXT: {{ $}}345 ; GFX908-NEXT: bb.1:346 ; GFX908-NEXT: successors: %bb.2(0x80000000)347 ; GFX908-NEXT: {{ $}}348 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec349 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec350 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec351 ; GFX908-NEXT: {{ $}}352 ; GFX908-NEXT: bb.2:353 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)354 ; GFX908-NEXT: {{ $}}355 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_X_OFFEN_exact [[COPY2]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s32), align 1, addrspace 8)356 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc357 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec358 ; GFX908-NEXT: {{ $}}359 ; GFX908-NEXT: bb.3:360 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]361 ; GFX908-NEXT: SI_RETURN362 call void @llvm.amdgcn.raw.tbuffer.store.f32(float %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)363 ret void364}365 366define void @llvm_amdgcn_raw_buffer_store_v2f32(<2 x float> %val, i32 %voffset, i32 %soffset) {367 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_store_v2f32368 ; GFX908: bb.0 (%ir-block.0):369 ; GFX908-NEXT: successors: %bb.1(0x80000000)370 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3371 ; GFX908-NEXT: {{ $}}372 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3373 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2374 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1375 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0376 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1377 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF378 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec379 ; GFX908-NEXT: {{ $}}380 ; GFX908-NEXT: bb.1:381 ; GFX908-NEXT: successors: %bb.2(0x80000000)382 ; GFX908-NEXT: {{ $}}383 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec384 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec385 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec386 ; GFX908-NEXT: {{ $}}387 ; GFX908-NEXT: bb.2:388 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)389 ; GFX908-NEXT: {{ $}}390 ; GFX908-NEXT: BUFFER_STORE_DWORDX2_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 8)391 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc392 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec393 ; GFX908-NEXT: {{ $}}394 ; GFX908-NEXT: bb.3:395 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]396 ; GFX908-NEXT: SI_RETURN397 call void @llvm.amdgcn.raw.buffer.store.v2f32(<2 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)398 ret void399}400 401define void @llvm_amdgcn_raw_tbuffer_store_v2f32(<2 x float> %val, i32 %voffset, i32 %soffset) {402 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_store_v2f32403 ; GFX908: bb.0 (%ir-block.0):404 ; GFX908-NEXT: successors: %bb.1(0x80000000)405 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3406 ; GFX908-NEXT: {{ $}}407 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3408 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2409 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1410 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0411 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1412 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF413 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec414 ; GFX908-NEXT: {{ $}}415 ; GFX908-NEXT: bb.1:416 ; GFX908-NEXT: successors: %bb.2(0x80000000)417 ; GFX908-NEXT: {{ $}}418 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec419 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec420 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec421 ; GFX908-NEXT: {{ $}}422 ; GFX908-NEXT: bb.2:423 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)424 ; GFX908-NEXT: {{ $}}425 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XY_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s64), align 1, addrspace 8)426 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc427 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec428 ; GFX908-NEXT: {{ $}}429 ; GFX908-NEXT: bb.3:430 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]431 ; GFX908-NEXT: SI_RETURN432 call void @llvm.amdgcn.raw.tbuffer.store.v2f32(<2 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)433 ret void434}435 436define void @llvm_amdgcn_raw_buffer_store_v3f32(<3 x float> %val, i32 %voffset, i32 %soffset) {437 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_store_v3f32438 ; GFX908: bb.0 (%ir-block.0):439 ; GFX908-NEXT: successors: %bb.1(0x80000000)440 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4441 ; GFX908-NEXT: {{ $}}442 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr4443 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr3444 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2445 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr1446 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0447 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY3]], %subreg.sub1, [[COPY2]], %subreg.sub2448 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF449 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec450 ; GFX908-NEXT: {{ $}}451 ; GFX908-NEXT: bb.1:452 ; GFX908-NEXT: successors: %bb.2(0x80000000)453 ; GFX908-NEXT: {{ $}}454 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec455 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec456 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec457 ; GFX908-NEXT: {{ $}}458 ; GFX908-NEXT: bb.2:459 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)460 ; GFX908-NEXT: {{ $}}461 ; GFX908-NEXT: BUFFER_STORE_DWORDX3_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 8)462 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc463 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec464 ; GFX908-NEXT: {{ $}}465 ; GFX908-NEXT: bb.3:466 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]467 ; GFX908-NEXT: SI_RETURN468 call void @llvm.amdgcn.raw.buffer.store.v3f32(<3 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)469 ret void470}471 472define void @llvm_amdgcn_raw_tbuffer_store_v3f32(<3 x float> %val, i32 %voffset, i32 %soffset) {473 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_store_v3f32474 ; GFX908: bb.0 (%ir-block.0):475 ; GFX908-NEXT: successors: %bb.1(0x80000000)476 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4477 ; GFX908-NEXT: {{ $}}478 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr4479 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr3480 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2481 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr1482 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0483 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY3]], %subreg.sub1, [[COPY2]], %subreg.sub2484 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF485 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec486 ; GFX908-NEXT: {{ $}}487 ; GFX908-NEXT: bb.1:488 ; GFX908-NEXT: successors: %bb.2(0x80000000)489 ; GFX908-NEXT: {{ $}}490 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec491 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec492 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec493 ; GFX908-NEXT: {{ $}}494 ; GFX908-NEXT: bb.2:495 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)496 ; GFX908-NEXT: {{ $}}497 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XYZ_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s96), align 1, addrspace 8)498 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc499 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec500 ; GFX908-NEXT: {{ $}}501 ; GFX908-NEXT: bb.3:502 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]503 ; GFX908-NEXT: SI_RETURN504 call void @llvm.amdgcn.raw.tbuffer.store.v3f32(<3 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)505 ret void506}507 508define void @llvm_amdgcn_raw_buffer_store_v4f32(<4 x float> %val, i32 %voffset, i32 %soffset) {509 ; GFX908-LABEL: name: llvm_amdgcn_raw_buffer_store_v4f32510 ; GFX908: bb.0 (%ir-block.0):511 ; GFX908-NEXT: successors: %bb.1(0x80000000)512 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5513 ; GFX908-NEXT: {{ $}}514 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr5515 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr4516 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3517 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr2518 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr1519 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr0520 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY4]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY2]], %subreg.sub3521 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF522 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec523 ; GFX908-NEXT: {{ $}}524 ; GFX908-NEXT: bb.1:525 ; GFX908-NEXT: successors: %bb.2(0x80000000)526 ; GFX908-NEXT: {{ $}}527 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec528 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec529 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec530 ; GFX908-NEXT: {{ $}}531 ; GFX908-NEXT: bb.2:532 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)533 ; GFX908-NEXT: {{ $}}534 ; GFX908-NEXT: BUFFER_STORE_DWORDX4_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 8)535 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc536 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec537 ; GFX908-NEXT: {{ $}}538 ; GFX908-NEXT: bb.3:539 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]540 ; GFX908-NEXT: SI_RETURN541 call void @llvm.amdgcn.raw.buffer.store.v4f32(<4 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0)542 ret void543}544 545define void @llvm_amdgcn_raw_tbuffer_store_v4f32(<4 x float> %val, i32 %voffset, i32 %soffset) {546 ; GFX908-LABEL: name: llvm_amdgcn_raw_tbuffer_store_v4f32547 ; GFX908: bb.0 (%ir-block.0):548 ; GFX908-NEXT: successors: %bb.1(0x80000000)549 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5550 ; GFX908-NEXT: {{ $}}551 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr5552 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr4553 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3554 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr2555 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr1556 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr0557 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY4]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY2]], %subreg.sub3558 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF559 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec560 ; GFX908-NEXT: {{ $}}561 ; GFX908-NEXT: bb.1:562 ; GFX908-NEXT: successors: %bb.2(0x80000000)563 ; GFX908-NEXT: {{ $}}564 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec565 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec566 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec567 ; GFX908-NEXT: {{ $}}568 ; GFX908-NEXT: bb.2:569 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)570 ; GFX908-NEXT: {{ $}}571 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XYZW_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s128), align 1, addrspace 8)572 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc573 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec574 ; GFX908-NEXT: {{ $}}575 ; GFX908-NEXT: bb.3:576 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]577 ; GFX908-NEXT: SI_RETURN578 call void @llvm.amdgcn.raw.tbuffer.store.v4f32(<4 x float> %val, <4 x i32> poison, i32 %voffset, i32 %soffset, i32 0, i32 0)579 ret void580}581 582;; Newer intrinsics that taken addrspace(8) pointers583 584define float @llvm_amdgcn_raw_ptr_buffer_load_f32(i32 %voffset, i32 %soffset) {585 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_load_f32586 ; GFX908: bb.0 (%ir-block.0):587 ; GFX908-NEXT: successors: %bb.1(0x80000000)588 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1589 ; GFX908-NEXT: {{ $}}590 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1591 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0592 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF593 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec594 ; GFX908-NEXT: {{ $}}595 ; GFX908-NEXT: bb.1:596 ; GFX908-NEXT: successors: %bb.2(0x80000000)597 ; GFX908-NEXT: {{ $}}598 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec599 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec600 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec601 ; GFX908-NEXT: {{ $}}602 ; GFX908-NEXT: bb.2:603 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)604 ; GFX908-NEXT: {{ $}}605 ; GFX908-NEXT: [[BUFFER_LOAD_DWORD_OFFEN:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s32) from `ptr addrspace(8) poison`, align 1, addrspace 8)606 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc607 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec608 ; GFX908-NEXT: {{ $}}609 ; GFX908-NEXT: bb.3:610 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]611 ; GFX908-NEXT: $vgpr0 = COPY [[BUFFER_LOAD_DWORD_OFFEN]]612 ; GFX908-NEXT: SI_RETURN implicit $vgpr0613 %val = call float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)614 ret float %val615}616 617define float @llvm_amdgcn_raw_ptr_tbuffer_load_f32(i32 %voffset, i32 %soffset) {618 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_load_f32619 ; GFX908: bb.0 (%ir-block.0):620 ; GFX908-NEXT: successors: %bb.1(0x80000000)621 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1622 ; GFX908-NEXT: {{ $}}623 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1624 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0625 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF626 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec627 ; GFX908-NEXT: {{ $}}628 ; GFX908-NEXT: bb.1:629 ; GFX908-NEXT: successors: %bb.2(0x80000000)630 ; GFX908-NEXT: {{ $}}631 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec632 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec633 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec634 ; GFX908-NEXT: {{ $}}635 ; GFX908-NEXT: bb.2:636 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)637 ; GFX908-NEXT: {{ $}}638 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_X_OFFEN:%[0-9]+]]:vgpr_32 = TBUFFER_LOAD_FORMAT_X_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32) from `ptr addrspace(8) poison`, align 1, addrspace 8)639 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc640 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec641 ; GFX908-NEXT: {{ $}}642 ; GFX908-NEXT: bb.3:643 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]644 ; GFX908-NEXT: $vgpr0 = COPY [[TBUFFER_LOAD_FORMAT_X_OFFEN]]645 ; GFX908-NEXT: SI_RETURN implicit $vgpr0646 %val = call float @llvm.amdgcn.raw.ptr.tbuffer.load.f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)647 ret float %val648}649 650define <2 x float> @llvm_amdgcn_raw_ptr_buffer_load_v2f32(i32 %voffset, i32 %soffset) {651 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_load_v2f32652 ; GFX908: bb.0 (%ir-block.0):653 ; GFX908-NEXT: successors: %bb.1(0x80000000)654 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1655 ; GFX908-NEXT: {{ $}}656 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1657 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0658 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF659 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec660 ; GFX908-NEXT: {{ $}}661 ; GFX908-NEXT: bb.1:662 ; GFX908-NEXT: successors: %bb.2(0x80000000)663 ; GFX908-NEXT: {{ $}}664 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec665 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec666 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec667 ; GFX908-NEXT: {{ $}}668 ; GFX908-NEXT: bb.2:669 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)670 ; GFX908-NEXT: {{ $}}671 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX2_OFFEN:%[0-9]+]]:vreg_64 = BUFFER_LOAD_DWORDX2_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s64) from `ptr addrspace(8) poison`, align 1, addrspace 8)672 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc673 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec674 ; GFX908-NEXT: {{ $}}675 ; GFX908-NEXT: bb.3:676 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]677 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_OFFEN]].sub0678 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX2_OFFEN]].sub1679 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]680 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]681 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1682 %val = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)683 ret <2 x float> %val684}685 686define <2 x float> @llvm_amdgcn_raw_ptr_tbuffer_load_v2f32(i32 %voffset, i32 %soffset) {687 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_load_v2f32688 ; GFX908: bb.0 (%ir-block.0):689 ; GFX908-NEXT: successors: %bb.1(0x80000000)690 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1691 ; GFX908-NEXT: {{ $}}692 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1693 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0694 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF695 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec696 ; GFX908-NEXT: {{ $}}697 ; GFX908-NEXT: bb.1:698 ; GFX908-NEXT: successors: %bb.2(0x80000000)699 ; GFX908-NEXT: {{ $}}700 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec701 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec702 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec703 ; GFX908-NEXT: {{ $}}704 ; GFX908-NEXT: bb.2:705 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)706 ; GFX908-NEXT: {{ $}}707 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XY_OFFEN:%[0-9]+]]:vreg_64 = TBUFFER_LOAD_FORMAT_XY_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s64) from `ptr addrspace(8) poison`, align 1, addrspace 8)708 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc709 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec710 ; GFX908-NEXT: {{ $}}711 ; GFX908-NEXT: bb.3:712 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]713 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XY_OFFEN]].sub0714 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XY_OFFEN]].sub1715 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]716 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]717 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1718 %val = call <2 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v2f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)719 ret <2 x float> %val720}721 722define <3 x float> @llvm_amdgcn_raw_ptr_buffer_load_v3f32(i32 %voffset, i32 %soffset) {723 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_load_v3f32724 ; GFX908: bb.0 (%ir-block.0):725 ; GFX908-NEXT: successors: %bb.1(0x80000000)726 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1727 ; GFX908-NEXT: {{ $}}728 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1729 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0730 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF731 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec732 ; GFX908-NEXT: {{ $}}733 ; GFX908-NEXT: bb.1:734 ; GFX908-NEXT: successors: %bb.2(0x80000000)735 ; GFX908-NEXT: {{ $}}736 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec737 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec738 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec739 ; GFX908-NEXT: {{ $}}740 ; GFX908-NEXT: bb.2:741 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)742 ; GFX908-NEXT: {{ $}}743 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX3_OFFEN:%[0-9]+]]:vreg_96 = BUFFER_LOAD_DWORDX3_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s96) from `ptr addrspace(8) poison`, align 1, addrspace 8)744 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc745 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec746 ; GFX908-NEXT: {{ $}}747 ; GFX908-NEXT: bb.3:748 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]749 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub0750 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub1751 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX3_OFFEN]].sub2752 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]753 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]754 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]755 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2756 %val = call <3 x float> @llvm.amdgcn.raw.ptr.buffer.load.v3f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)757 ret <3 x float> %val758}759 760define <3 x float> @llvm_amdgcn_raw_ptr_tbuffer_load_v3f32(i32 %voffset, i32 %soffset) {761 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_load_v3f32762 ; GFX908: bb.0 (%ir-block.0):763 ; GFX908-NEXT: successors: %bb.1(0x80000000)764 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1765 ; GFX908-NEXT: {{ $}}766 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1767 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0768 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF769 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec770 ; GFX908-NEXT: {{ $}}771 ; GFX908-NEXT: bb.1:772 ; GFX908-NEXT: successors: %bb.2(0x80000000)773 ; GFX908-NEXT: {{ $}}774 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec775 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec776 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec777 ; GFX908-NEXT: {{ $}}778 ; GFX908-NEXT: bb.2:779 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)780 ; GFX908-NEXT: {{ $}}781 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN:%[0-9]+]]:vreg_96 = TBUFFER_LOAD_FORMAT_XYZ_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s96) from `ptr addrspace(8) poison`, align 1, addrspace 8)782 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc783 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec784 ; GFX908-NEXT: {{ $}}785 ; GFX908-NEXT: bb.3:786 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]787 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub0788 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub1789 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZ_OFFEN]].sub2790 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]791 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]792 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]793 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2794 %val = call <3 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v3f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)795 ret <3 x float> %val796}797 798define <4 x float> @llvm_amdgcn_raw_ptr_buffer_load_v4f32(i32 %voffset, i32 %soffset) {799 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_load_v4f32800 ; GFX908: bb.0 (%ir-block.0):801 ; GFX908-NEXT: successors: %bb.1(0x80000000)802 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1803 ; GFX908-NEXT: {{ $}}804 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1805 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0806 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF807 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec808 ; GFX908-NEXT: {{ $}}809 ; GFX908-NEXT: bb.1:810 ; GFX908-NEXT: successors: %bb.2(0x80000000)811 ; GFX908-NEXT: {{ $}}812 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec813 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec814 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec815 ; GFX908-NEXT: {{ $}}816 ; GFX908-NEXT: bb.2:817 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)818 ; GFX908-NEXT: {{ $}}819 ; GFX908-NEXT: [[BUFFER_LOAD_DWORDX4_OFFEN:%[0-9]+]]:vreg_128 = BUFFER_LOAD_DWORDX4_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from `ptr addrspace(8) poison`, align 1, addrspace 8)820 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc821 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec822 ; GFX908-NEXT: {{ $}}823 ; GFX908-NEXT: bb.3:824 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]825 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub0826 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub1827 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub2828 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[BUFFER_LOAD_DWORDX4_OFFEN]].sub3829 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]830 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]831 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]832 ; GFX908-NEXT: $vgpr3 = COPY [[COPY5]]833 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3834 %val = call <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)835 ret <4 x float> %val836}837 838define <4 x float> @llvm_amdgcn_raw_ptr_tbuffer_load_v4f32(i32 %voffset, i32 %soffset) {839 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_load_v4f32840 ; GFX908: bb.0 (%ir-block.0):841 ; GFX908-NEXT: successors: %bb.1(0x80000000)842 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1843 ; GFX908-NEXT: {{ $}}844 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1845 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr0846 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF847 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec848 ; GFX908-NEXT: {{ $}}849 ; GFX908-NEXT: bb.1:850 ; GFX908-NEXT: successors: %bb.2(0x80000000)851 ; GFX908-NEXT: {{ $}}852 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec853 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec854 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec855 ; GFX908-NEXT: {{ $}}856 ; GFX908-NEXT: bb.2:857 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)858 ; GFX908-NEXT: {{ $}}859 ; GFX908-NEXT: [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN:%[0-9]+]]:vreg_128 = TBUFFER_LOAD_FORMAT_XYZW_OFFEN [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from `ptr addrspace(8) poison`, align 1, addrspace 8)860 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc861 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec862 ; GFX908-NEXT: {{ $}}863 ; GFX908-NEXT: bb.3:864 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]865 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub0866 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub1867 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub2868 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY [[TBUFFER_LOAD_FORMAT_XYZW_OFFEN]].sub3869 ; GFX908-NEXT: $vgpr0 = COPY [[COPY2]]870 ; GFX908-NEXT: $vgpr1 = COPY [[COPY3]]871 ; GFX908-NEXT: $vgpr2 = COPY [[COPY4]]872 ; GFX908-NEXT: $vgpr3 = COPY [[COPY5]]873 ; GFX908-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3874 %val = call <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)875 ret <4 x float> %val876}877 878define void @llvm_amdgcn_raw_ptr_buffer_store_f32(float %val, i32 %voffset, i32 %soffset) {879 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_store_f32880 ; GFX908: bb.0 (%ir-block.0):881 ; GFX908-NEXT: successors: %bb.1(0x80000000)882 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2883 ; GFX908-NEXT: {{ $}}884 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2885 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1886 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0887 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF888 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec889 ; GFX908-NEXT: {{ $}}890 ; GFX908-NEXT: bb.1:891 ; GFX908-NEXT: successors: %bb.2(0x80000000)892 ; GFX908-NEXT: {{ $}}893 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec894 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec895 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec896 ; GFX908-NEXT: {{ $}}897 ; GFX908-NEXT: bb.2:898 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)899 ; GFX908-NEXT: {{ $}}900 ; GFX908-NEXT: BUFFER_STORE_DWORD_OFFEN_exact [[COPY2]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s32) into `ptr addrspace(8) poison`, align 1, addrspace 8)901 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc902 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec903 ; GFX908-NEXT: {{ $}}904 ; GFX908-NEXT: bb.3:905 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]906 ; GFX908-NEXT: SI_RETURN907 call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)908 ret void909}910 911define void @llvm_amdgcn_raw_ptr_tbuffer_store_f32(float %val, i32 %voffset, i32 %soffset) {912 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_store_f32913 ; GFX908: bb.0 (%ir-block.0):914 ; GFX908-NEXT: successors: %bb.1(0x80000000)915 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2916 ; GFX908-NEXT: {{ $}}917 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr2918 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1919 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr0920 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF921 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec922 ; GFX908-NEXT: {{ $}}923 ; GFX908-NEXT: bb.1:924 ; GFX908-NEXT: successors: %bb.2(0x80000000)925 ; GFX908-NEXT: {{ $}}926 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec927 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec928 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec929 ; GFX908-NEXT: {{ $}}930 ; GFX908-NEXT: bb.2:931 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)932 ; GFX908-NEXT: {{ $}}933 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_X_OFFEN_exact [[COPY2]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s32) into `ptr addrspace(8) poison`, align 1, addrspace 8)934 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc935 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec936 ; GFX908-NEXT: {{ $}}937 ; GFX908-NEXT: bb.3:938 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]939 ; GFX908-NEXT: SI_RETURN940 call void @llvm.amdgcn.raw.ptr.tbuffer.store.f32(float %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)941 ret void942}943 944define void @llvm_amdgcn_raw_ptr_buffer_store_v2f32(<2 x float> %val, i32 %voffset, i32 %soffset) {945 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_store_v2f32946 ; GFX908: bb.0 (%ir-block.0):947 ; GFX908-NEXT: successors: %bb.1(0x80000000)948 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3949 ; GFX908-NEXT: {{ $}}950 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3951 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2952 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1953 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0954 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1955 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF956 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec957 ; GFX908-NEXT: {{ $}}958 ; GFX908-NEXT: bb.1:959 ; GFX908-NEXT: successors: %bb.2(0x80000000)960 ; GFX908-NEXT: {{ $}}961 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec962 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec963 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec964 ; GFX908-NEXT: {{ $}}965 ; GFX908-NEXT: bb.2:966 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)967 ; GFX908-NEXT: {{ $}}968 ; GFX908-NEXT: BUFFER_STORE_DWORDX2_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s64) into `ptr addrspace(8) poison`, align 1, addrspace 8)969 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc970 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec971 ; GFX908-NEXT: {{ $}}972 ; GFX908-NEXT: bb.3:973 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]974 ; GFX908-NEXT: SI_RETURN975 call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)976 ret void977}978 979define void @llvm_amdgcn_raw_ptr_tbuffer_store_v2f32(<2 x float> %val, i32 %voffset, i32 %soffset) {980 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_store_v2f32981 ; GFX908: bb.0 (%ir-block.0):982 ; GFX908-NEXT: successors: %bb.1(0x80000000)983 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3984 ; GFX908-NEXT: {{ $}}985 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr3986 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2987 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr1988 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr0989 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY3]], %subreg.sub0, [[COPY2]], %subreg.sub1990 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF991 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec992 ; GFX908-NEXT: {{ $}}993 ; GFX908-NEXT: bb.1:994 ; GFX908-NEXT: successors: %bb.2(0x80000000)995 ; GFX908-NEXT: {{ $}}996 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec997 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec998 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec999 ; GFX908-NEXT: {{ $}}1000 ; GFX908-NEXT: bb.2:1001 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)1002 ; GFX908-NEXT: {{ $}}1003 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XY_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s64) into `ptr addrspace(8) poison`, align 1, addrspace 8)1004 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc1005 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec1006 ; GFX908-NEXT: {{ $}}1007 ; GFX908-NEXT: bb.3:1008 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]1009 ; GFX908-NEXT: SI_RETURN1010 call void @llvm.amdgcn.raw.ptr.tbuffer.store.v2f32(<2 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)1011 ret void1012}1013 1014define void @llvm_amdgcn_raw_ptr_buffer_store_v3f32(<3 x float> %val, i32 %voffset, i32 %soffset) {1015 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_store_v3f321016 ; GFX908: bb.0 (%ir-block.0):1017 ; GFX908-NEXT: successors: %bb.1(0x80000000)1018 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr41019 ; GFX908-NEXT: {{ $}}1020 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr41021 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr31022 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr21023 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr11024 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr01025 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY3]], %subreg.sub1, [[COPY2]], %subreg.sub21026 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF1027 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec1028 ; GFX908-NEXT: {{ $}}1029 ; GFX908-NEXT: bb.1:1030 ; GFX908-NEXT: successors: %bb.2(0x80000000)1031 ; GFX908-NEXT: {{ $}}1032 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec1033 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec1034 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec1035 ; GFX908-NEXT: {{ $}}1036 ; GFX908-NEXT: bb.2:1037 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)1038 ; GFX908-NEXT: {{ $}}1039 ; GFX908-NEXT: BUFFER_STORE_DWORDX3_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s96) into `ptr addrspace(8) poison`, align 1, addrspace 8)1040 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc1041 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec1042 ; GFX908-NEXT: {{ $}}1043 ; GFX908-NEXT: bb.3:1044 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]1045 ; GFX908-NEXT: SI_RETURN1046 call void @llvm.amdgcn.raw.ptr.buffer.store.v3f32(<3 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)1047 ret void1048}1049 1050define void @llvm_amdgcn_raw_ptr_tbuffer_store_v3f32(<3 x float> %val, i32 %voffset, i32 %soffset) {1051 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_store_v3f321052 ; GFX908: bb.0 (%ir-block.0):1053 ; GFX908-NEXT: successors: %bb.1(0x80000000)1054 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr41055 ; GFX908-NEXT: {{ $}}1056 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr41057 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr31058 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr21059 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr11060 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr01061 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY3]], %subreg.sub1, [[COPY2]], %subreg.sub21062 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF1063 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec1064 ; GFX908-NEXT: {{ $}}1065 ; GFX908-NEXT: bb.1:1066 ; GFX908-NEXT: successors: %bb.2(0x80000000)1067 ; GFX908-NEXT: {{ $}}1068 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec1069 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec1070 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec1071 ; GFX908-NEXT: {{ $}}1072 ; GFX908-NEXT: bb.2:1073 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)1074 ; GFX908-NEXT: {{ $}}1075 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XYZ_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s96) into `ptr addrspace(8) poison`, align 1, addrspace 8)1076 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc1077 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec1078 ; GFX908-NEXT: {{ $}}1079 ; GFX908-NEXT: bb.3:1080 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]1081 ; GFX908-NEXT: SI_RETURN1082 call void @llvm.amdgcn.raw.ptr.tbuffer.store.v3f32(<3 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)1083 ret void1084}1085 1086define void @llvm_amdgcn_raw_ptr_buffer_store_v4f32(<4 x float> %val, i32 %voffset, i32 %soffset) {1087 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_buffer_store_v4f321088 ; GFX908: bb.0 (%ir-block.0):1089 ; GFX908-NEXT: successors: %bb.1(0x80000000)1090 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51091 ; GFX908-NEXT: {{ $}}1092 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr51093 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr41094 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr31095 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr21096 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr11097 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr01098 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY4]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY2]], %subreg.sub31099 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF1100 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec1101 ; GFX908-NEXT: {{ $}}1102 ; GFX908-NEXT: bb.1:1103 ; GFX908-NEXT: successors: %bb.2(0x80000000)1104 ; GFX908-NEXT: {{ $}}1105 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec1106 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec1107 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec1108 ; GFX908-NEXT: {{ $}}1109 ; GFX908-NEXT: bb.2:1110 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)1111 ; GFX908-NEXT: {{ $}}1112 ; GFX908-NEXT: BUFFER_STORE_DWORDX4_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (s128) into `ptr addrspace(8) poison`, align 1, addrspace 8)1113 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc1114 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec1115 ; GFX908-NEXT: {{ $}}1116 ; GFX908-NEXT: bb.3:1117 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]1118 ; GFX908-NEXT: SI_RETURN1119 call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0)1120 ret void1121}1122 1123define void @llvm_amdgcn_raw_ptr_tbuffer_store_v4f32(<4 x float> %val, i32 %voffset, i32 %soffset) {1124 ; GFX908-LABEL: name: llvm_amdgcn_raw_ptr_tbuffer_store_v4f321125 ; GFX908: bb.0 (%ir-block.0):1126 ; GFX908-NEXT: successors: %bb.1(0x80000000)1127 ; GFX908-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51128 ; GFX908-NEXT: {{ $}}1129 ; GFX908-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr51130 ; GFX908-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr41131 ; GFX908-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr31132 ; GFX908-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr21133 ; GFX908-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr11134 ; GFX908-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr01135 ; GFX908-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY5]], %subreg.sub0, [[COPY4]], %subreg.sub1, [[COPY3]], %subreg.sub2, [[COPY2]], %subreg.sub31136 ; GFX908-NEXT: [[DEF:%[0-9]+]]:sgpr_128 = IMPLICIT_DEF1137 ; GFX908-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec1138 ; GFX908-NEXT: {{ $}}1139 ; GFX908-NEXT: bb.1:1140 ; GFX908-NEXT: successors: %bb.2(0x80000000)1141 ; GFX908-NEXT: {{ $}}1142 ; GFX908-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32_xm0 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec1143 ; GFX908-NEXT: [[V_CMP_EQ_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U32_e64 [[V_READFIRSTLANE_B32_]], [[COPY]], implicit $exec1144 ; GFX908-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[V_CMP_EQ_U32_e64_]], implicit-def $exec, implicit-def $scc, implicit $exec1145 ; GFX908-NEXT: {{ $}}1146 ; GFX908-NEXT: bb.2:1147 ; GFX908-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000)1148 ; GFX908-NEXT: {{ $}}1149 ; GFX908-NEXT: TBUFFER_STORE_FORMAT_XYZW_OFFEN_exact [[REG_SEQUENCE]], [[COPY1]], [[DEF]], killed [[V_READFIRSTLANE_B32_]], 0, 0, 0, 0, implicit $exec :: (dereferenceable store (s128) into `ptr addrspace(8) poison`, align 1, addrspace 8)1150 ; GFX908-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc1151 ; GFX908-NEXT: SI_WATERFALL_LOOP %bb.1, implicit $exec1152 ; GFX908-NEXT: {{ $}}1153 ; GFX908-NEXT: bb.3:1154 ; GFX908-NEXT: $exec = S_MOV_B64 [[S_MOV_B64_]]1155 ; GFX908-NEXT: SI_RETURN1156 call void @llvm.amdgcn.raw.ptr.tbuffer.store.v4f32(<4 x float> %val, ptr addrspace(8) poison, i32 %voffset, i32 %soffset, i32 0, i32 0)1157 ret void1158}1159 1160declare float @llvm.amdgcn.raw.buffer.load.f32(<4 x i32>, i32, i32, i32 )1161declare float @llvm.amdgcn.raw.tbuffer.load.f32(<4 x i32>, i32, i32, i32, i32)1162declare <2 x float> @llvm.amdgcn.raw.buffer.load.v2f32(<4 x i32>, i32, i32, i32)1163declare <2 x float> @llvm.amdgcn.raw.tbuffer.load.v2f32(<4 x i32>, i32, i32, i32, i32)1164declare <3 x float> @llvm.amdgcn.raw.buffer.load.v3f32(<4 x i32>, i32, i32, i32)1165declare <3 x float> @llvm.amdgcn.raw.tbuffer.load.v3f32(<4 x i32>, i32, i32, i32, i32)1166declare <4 x float> @llvm.amdgcn.raw.buffer.load.v4f32(<4 x i32>, i32, i32, i32)1167declare <4 x float> @llvm.amdgcn.raw.tbuffer.load.v4f32(<4 x i32>, i32, i32, i32, i32)1168declare void @llvm.amdgcn.raw.buffer.store.f32(float, <4 x i32>, i32, i32, i32)1169declare void @llvm.amdgcn.raw.tbuffer.store.f32(float, <4 x i32>, i32, i32, i32, i32)1170declare void @llvm.amdgcn.raw.buffer.store.v2f32(<2 x float>, <4 x i32>, i32, i32, i32)1171declare void @llvm.amdgcn.raw.tbuffer.store.v2f32(<2 x float>, <4 x i32>, i32, i32, i32, i32)1172declare void @llvm.amdgcn.raw.buffer.store.v3f32(<3 x float>, <4 x i32>, i32, i32, i32)1173declare void @llvm.amdgcn.raw.tbuffer.store.v3f32(<3 x float>, <4 x i32>, i32, i32, i32, i32)1174declare void @llvm.amdgcn.raw.buffer.store.v4f32(<4 x float>, <4 x i32>, i32, i32, i32)1175declare void @llvm.amdgcn.raw.tbuffer.store.v4f32(<4 x float>, <4 x i32>, i32, i32, i32, i32)1176 1177declare float @llvm.amdgcn.raw.ptr.buffer.load.f32(ptr addrspace(8) nocapture, i32, i32, i32 )1178declare float @llvm.amdgcn.raw.ptr.tbuffer.load.f32(ptr addrspace(8) nocapture, i32, i32, i32, i32)1179declare <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) nocapture, i32, i32, i32)1180declare <2 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v2f32(ptr addrspace(8) nocapture, i32, i32, i32, i32)1181declare <3 x float> @llvm.amdgcn.raw.ptr.buffer.load.v3f32(ptr addrspace(8) nocapture, i32, i32, i32)1182declare <3 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v3f32(ptr addrspace(8) nocapture, i32, i32, i32, i32)1183declare <4 x float> @llvm.amdgcn.raw.ptr.buffer.load.v4f32(ptr addrspace(8) nocapture, i32, i32, i32)1184declare <4 x float> @llvm.amdgcn.raw.ptr.tbuffer.load.v4f32(ptr addrspace(8) nocapture, i32, i32, i32, i32)1185declare void @llvm.amdgcn.raw.ptr.buffer.store.f32(float, ptr addrspace(8) nocapture, i32, i32, i32)1186declare void @llvm.amdgcn.raw.ptr.tbuffer.store.f32(float, ptr addrspace(8) nocapture, i32, i32, i32, i32)1187declare void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float>, ptr addrspace(8) nocapture, i32, i32, i32)1188declare void @llvm.amdgcn.raw.ptr.tbuffer.store.v2f32(<2 x float>, ptr addrspace(8) nocapture, i32, i32, i32, i32)1189declare void @llvm.amdgcn.raw.ptr.buffer.store.v3f32(<3 x float>, ptr addrspace(8) nocapture, i32, i32, i32)1190declare void @llvm.amdgcn.raw.ptr.tbuffer.store.v3f32(<3 x float>, ptr addrspace(8) nocapture, i32, i32, i32, i32)1191declare void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float>, ptr addrspace(8) nocapture, i32, i32, i32)1192declare void @llvm.amdgcn.raw.ptr.tbuffer.store.v4f32(<4 x float>, ptr addrspace(8) nocapture, i32, i32, i32, i32)1193