1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=SI %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=VI %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.amdgcn.cubeid(float, float, float) #0 5*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.amdgcn.cubesc(float, float, float) #0 6*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.amdgcn.cubetc(float, float, float) #0 7*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.amdgcn.cubema(float, float, float) #0 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.AMDGPU.cube(<4 x float>) #0 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}cube: 13*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubeid_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 14*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubesc_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 15*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubetc_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 16*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubema_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 17*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dwordx4 18*9880d681SAndroid Build Coastguard Workerdefine void @cube(<4 x float> addrspace(1)* %out, float %a, float %b, float %c) #1 { 19*9880d681SAndroid Build Coastguard Worker %cubeid = call float @llvm.amdgcn.cubeid(float %a, float %b, float %c) 20*9880d681SAndroid Build Coastguard Worker %cubesc = call float @llvm.amdgcn.cubesc(float %a, float %b, float %c) 21*9880d681SAndroid Build Coastguard Worker %cubetc = call float @llvm.amdgcn.cubetc(float %a, float %b, float %c) 22*9880d681SAndroid Build Coastguard Worker %cubema = call float @llvm.amdgcn.cubema(float %a, float %b, float %c) 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker %vec0 = insertelement <4 x float> undef, float %cubeid, i32 0 25*9880d681SAndroid Build Coastguard Worker %vec1 = insertelement <4 x float> %vec0, float %cubesc, i32 1 26*9880d681SAndroid Build Coastguard Worker %vec2 = insertelement <4 x float> %vec1, float %cubetc, i32 2 27*9880d681SAndroid Build Coastguard Worker %vec3 = insertelement <4 x float> %vec2, float %cubema, i32 3 28*9880d681SAndroid Build Coastguard Worker store <4 x float> %vec3, <4 x float> addrspace(1)* %out 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}legacy_cube: 33*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubeid_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 34*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubesc_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 35*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubetc_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 36*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_cubema_f32 v{{[0-9]+}}, s{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}} 37*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dwordx4 38*9880d681SAndroid Build Coastguard Workerdefine void @legacy_cube(<4 x float> addrspace(1)* %out, <4 x float> %abcx) #1 { 39*9880d681SAndroid Build Coastguard Worker %cube = call <4 x float> @llvm.AMDGPU.cube(<4 x float> %abcx) 40*9880d681SAndroid Build Coastguard Worker store <4 x float> %cube, <4 x float> addrspace(1)* %out 41*9880d681SAndroid Build Coastguard Worker ret void 42*9880d681SAndroid Build Coastguard Worker} 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 45*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind } 46*9880d681SAndroid Build Coastguard Worker 47