1;RUN: llc < %s -march=amdgcn -mcpu=gfx600 -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,SI 2;RUN: llc < %s -march=amdgcn -mcpu=gfx700 -verify-machineinstrs | FileCheck %s -check-prefixes=CHECK,GCNX3 3 4;CHECK-LABEL: {{^}}buffer_load_format_immoffs_x3: 5;SI: buffer_load_format_xyzw v[0:3], off, s[0:3], 0 offset:42 6;GCNX3: buffer_load_format_xyz v[0:2], off, s[0:3], 0 offset:42 7;CHECK: s_waitcnt 8define amdgpu_ps <3 x float> @buffer_load_format_immoffs_x3(<4 x i32> inreg) { 9main_body: 10 %data = call <3 x float> @llvm.amdgcn.buffer.load.format.v3f32(<4 x i32> %0, i32 0, i32 42, i1 0, i1 0) 11 ret <3 x float> %data 12} 13 14;CHECK-LABEL: {{^}}buffer_load_immoffs_x3: 15;SI: buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40 16;GCNX3: buffer_load_dwordx3 v[0:2], off, s[0:3], 0 offset:40 17;CHECK: s_waitcnt 18define amdgpu_ps <3 x float> @buffer_load_immoffs_x3(<4 x i32> inreg) { 19main_body: 20 %data = call <3 x float> @llvm.amdgcn.buffer.load.v3f32(<4 x i32> %0, i32 0, i32 40, i1 0, i1 0) 21 ret <3 x float> %data 22} 23 24;CHECK-LABEL: {{^}}buffer_raw_load_immoffs_x3: 25;SI: buffer_load_dwordx4 v[0:3], off, s[0:3], 0 offset:40 26;GCNX3: buffer_load_dwordx3 v[0:2], off, s[0:3], 0 offset:40 27;CHECK: s_waitcnt 28define amdgpu_ps <3 x float> @buffer_raw_load_immoffs_x3(<4 x i32> inreg) { 29main_body: 30 %data = call <3 x float> @llvm.amdgcn.raw.buffer.load.v3f32(<4 x i32> %0, i32 40, i32 0, i32 0) 31 ret <3 x float> %data 32} 33 34;CHECK-LABEL: {{^}}buffer_struct_load_format_immoffs_x3: 35;SI: buffer_load_format_xyzw v[0:3], {{v[0-9]+}}, s[0:3], 0 idxen offset:42 36;GCNX3: buffer_load_format_xyz v[0:2], {{v[0-9]+}}, s[0:3], 0 idxen offset:42 37;CHECK: s_waitcnt 38define amdgpu_ps <3 x float> @buffer_struct_load_format_immoffs_x3(<4 x i32> inreg) { 39main_body: 40 %data = call <3 x float> @llvm.amdgcn.struct.buffer.load.format.v3f32(<4 x i32> %0, i32 0, i32 42, i32 0, i32 0) 41 ret <3 x float> %data 42} 43 44;CHECK-LABEL: {{^}}struct_buffer_load_immoffs_x3: 45;SI: buffer_load_dwordx4 v[0:3], {{v[0-9]+}}, s[0:3], 0 idxen offset:40 46;GCNX3: buffer_load_dwordx3 v[0:2], {{v[0-9]+}}, s[0:3], 0 idxen offset:40 47;CHECK: s_waitcnt 48define amdgpu_ps <3 x float> @struct_buffer_load_immoffs_x3(<4 x i32> inreg) { 49main_body: 50 %data = call <3 x float> @llvm.amdgcn.struct.buffer.load.v3f32(<4 x i32> %0, i32 0, i32 40, i32 0, i32 0) 51 ret <3 x float> %data 52} 53 54declare <3 x float> @llvm.amdgcn.buffer.load.format.v3f32(<4 x i32>, i32, i32, i1, i1) #0 55declare <3 x float> @llvm.amdgcn.buffer.load.v3f32(<4 x i32>, i32, i32, i1, i1) #0 56declare <3 x float> @llvm.amdgcn.raw.buffer.load.format.v3f32(<4 x i32>, i32, i32, i32) #0 57declare <3 x float> @llvm.amdgcn.raw.buffer.load.v3f32(<4 x i32>, i32, i32, i32) #0 58declare <3 x float> @llvm.amdgcn.struct.buffer.load.format.v3f32(<4 x i32>, i32, i32, i32, i32) #0 59declare <3 x float> @llvm.amdgcn.struct.buffer.load.v3f32(<4 x i32>, i32, i32, i32, i32) #0 60 61