1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}store_v2i32_as_v4i16_align_4: 4*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 5*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1{{$}} 6*9880d681SAndroid Build Coastguard Workerdefine void @store_v2i32_as_v4i16_align_4(<4 x i16> addrspace(3)* align 4 %out, <2 x i32> %x) #0 { 7*9880d681SAndroid Build Coastguard Worker %x.bc = bitcast <2 x i32> %x to <4 x i16> 8*9880d681SAndroid Build Coastguard Worker store <4 x i16> %x.bc, <4 x i16> addrspace(3)* %out, align 4 9*9880d681SAndroid Build Coastguard Worker ret void 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}store_v4i32_as_v8i16_align_4: 13*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 14*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset0:2 offset1:3 15*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1{{$}} 16*9880d681SAndroid Build Coastguard Workerdefine void @store_v4i32_as_v8i16_align_4(<8 x i16> addrspace(3)* align 4 %out, <4 x i32> %x) #0 { 17*9880d681SAndroid Build Coastguard Worker %x.bc = bitcast <4 x i32> %x to <8 x i16> 18*9880d681SAndroid Build Coastguard Worker store <8 x i16> %x.bc, <8 x i16> addrspace(3)* %out, align 4 19*9880d681SAndroid Build Coastguard Worker ret void 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}store_v2i32_as_i64_align_4: 23*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx2 24*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1{{$}} 25*9880d681SAndroid Build Coastguard Workerdefine void @store_v2i32_as_i64_align_4(<4 x i16> addrspace(3)* align 4 %out, <2 x i32> %x) #0 { 26*9880d681SAndroid Build Coastguard Worker %x.bc = bitcast <2 x i32> %x to <4 x i16> 27*9880d681SAndroid Build Coastguard Worker store <4 x i16> %x.bc, <4 x i16> addrspace(3)* %out, align 4 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}store_v4i32_as_v2i64_align_4: 32*9880d681SAndroid Build Coastguard Worker; GCN: s_load_dwordx4 33*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset0:2 offset1:3 34*9880d681SAndroid Build Coastguard Worker; GCN-DAG: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1{{$}} 35*9880d681SAndroid Build Coastguard Workerdefine void @store_v4i32_as_v2i64_align_4(<2 x i64> addrspace(3)* align 4 %out, <4 x i32> %x) #0 { 36*9880d681SAndroid Build Coastguard Worker %x.bc = bitcast <4 x i32> %x to <2 x i64> 37*9880d681SAndroid Build Coastguard Worker store <2 x i64> %x.bc, <2 x i64> addrspace(3)* %out, align 4 38*9880d681SAndroid Build Coastguard Worker ret void 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}store_v4i16_as_v2i32_align_4: 42*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ushort 43*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ushort 44*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ushort 45*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ushort 46*9880d681SAndroid Build Coastguard Worker; GCN: ds_write2_b32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} offset1:1{{$}} 47*9880d681SAndroid Build Coastguard Workerdefine void @store_v4i16_as_v2i32_align_4(<2 x i32> addrspace(3)* align 4 %out, <4 x i16> %x) #0 { 48*9880d681SAndroid Build Coastguard Worker %x.bc = bitcast <4 x i16> %x to <2 x i32> 49*9880d681SAndroid Build Coastguard Worker store <2 x i32> %x.bc, <2 x i32> addrspace(3)* %out, align 4 50*9880d681SAndroid Build Coastguard Worker ret void 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 54