blob: f52a9baf4d187281da34b25cad0a02e9bc42dd6b [file] [log] [blame]
Vincent Lejeune744efa42013-09-04 19:53:54 +00001; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s
2
Tom Stellard79243d92014-10-01 17:15:17 +00003; CHECK: {{^}}main:
Vincent Lejeune744efa42013-09-04 19:53:54 +00004; CHECK: MULADD_IEEE *
5; CHECK-NOT: MULADD_IEEE *
6
Vincent Lejeunef143af32013-11-11 22:10:24 +00007define void @main(<4 x float> inreg %reg0, <4 x float> inreg %reg1, <4 x float> inreg %reg2) #0 {
8 %w0 = extractelement <4 x float> %reg0, i32 3
9 %w1 = extractelement <4 x float> %reg1, i32 3
10 %w2 = extractelement <4 x float> %reg2, i32 3
Vincent Lejeune744efa42013-09-04 19:53:54 +000011 %sq0 = fmul float %w0, %w0
12 %r0 = fadd float %sq0, 2.0
13 %sq1 = fmul float %w1, %w1
14 %r1 = fadd float %sq1, 2.0
15 %sq2 = fmul float %w2, %w2
16 %r2 = fadd float %sq2, 2.0
17 %v0 = insertelement <4 x float> undef, float %r0, i32 0
18 %v1 = insertelement <4 x float> %v0, float %r1, i32 1
19 %v2 = insertelement <4 x float> %v1, float %r2, i32 2
20 %res = call float @llvm.AMDGPU.dp4(<4 x float> %v2, <4 x float> %v2)
21 %vecres = insertelement <4 x float> undef, float %res, i32 0
22 call void @llvm.R600.store.swizzle(<4 x float> %vecres, i32 0, i32 2)
23 ret void
24}
25
26; Function Attrs: readnone
Vincent Lejeune744efa42013-09-04 19:53:54 +000027declare float @llvm.AMDGPU.dp4(<4 x float>, <4 x float>) #1
28
Vincent Lejeune744efa42013-09-04 19:53:54 +000029declare void @llvm.R600.store.swizzle(<4 x float>, i32, i32)
30
31attributes #0 = { "ShaderType"="1" }
Vincent Lejeunef143af32013-11-11 22:10:24 +000032attributes #1 = { readnone }