1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: {{^}}main: 4*9880d681SAndroid Build Coastguard Worker; CHECK: MULADD_IEEE * 5*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: MULADD_IEEE * 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine amdgpu_vs void @main(<4 x float> inreg %reg0, <4 x float> inreg %reg1, <4 x float> inreg %reg2) { 8*9880d681SAndroid Build Coastguard Worker %w0 = extractelement <4 x float> %reg0, i32 3 9*9880d681SAndroid Build Coastguard Worker %w1 = extractelement <4 x float> %reg1, i32 3 10*9880d681SAndroid Build Coastguard Worker %w2 = extractelement <4 x float> %reg2, i32 3 11*9880d681SAndroid Build Coastguard Worker %sq0 = fmul float %w0, %w0 12*9880d681SAndroid Build Coastguard Worker %r0 = fadd float %sq0, 2.0 13*9880d681SAndroid Build Coastguard Worker %sq1 = fmul float %w1, %w1 14*9880d681SAndroid Build Coastguard Worker %r1 = fadd float %sq1, 2.0 15*9880d681SAndroid Build Coastguard Worker %sq2 = fmul float %w2, %w2 16*9880d681SAndroid Build Coastguard Worker %r2 = fadd float %sq2, 2.0 17*9880d681SAndroid Build Coastguard Worker %v0 = insertelement <4 x float> undef, float %r0, i32 0 18*9880d681SAndroid Build Coastguard Worker %v1 = insertelement <4 x float> %v0, float %r1, i32 1 19*9880d681SAndroid Build Coastguard Worker %v2 = insertelement <4 x float> %v1, float %r2, i32 2 20*9880d681SAndroid Build Coastguard Worker %res = call float @llvm.r600.dot4(<4 x float> %v2, <4 x float> %v2) 21*9880d681SAndroid Build Coastguard Worker %vecres = insertelement <4 x float> undef, float %res, i32 0 22*9880d681SAndroid Build Coastguard Worker call void @llvm.R600.store.swizzle(<4 x float> %vecres, i32 0, i32 2) 23*9880d681SAndroid Build Coastguard Worker ret void 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; Function Attrs: readnone 27*9880d681SAndroid Build Coastguard Workerdeclare float @llvm.r600.dot4(<4 x float>, <4 x float>) #1 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.R600.store.swizzle(<4 x float>, i32, i32) 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerattributes #1 = { readnone } 32