blob: 08f78909d0290790ee9ffe8c62d6681eb725bb42 [file] [log] [blame]
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +00001; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck %s -check-prefix=R600 -check-prefix=FUNC
2; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck %s -check-prefix=SI -check-prefix=FUNC
Tom Stellard75aadc22012-12-11 21:25:42 +00003
Tom Stellard79243d92014-10-01 17:15:17 +00004; FUNC-LABEL: {{^}}fadd_f32:
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +00005; R600: ADD {{\** *}}T{{[0-9]+\.[XYZW]}}, KC0[2].Z, KC0[2].W
6; SI: V_ADD_F32
Tom Stellarda92ff872013-08-16 23:51:24 +00007define void @fadd_f32(float addrspace(1)* %out, float %a, float %b) {
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +00008 %add = fadd float %a, %b
9 store float %add, float addrspace(1)* %out, align 4
Tom Stellard75aadc22012-12-11 21:25:42 +000010 ret void
11}
12
Tom Stellard79243d92014-10-01 17:15:17 +000013; FUNC-LABEL: {{^}}fadd_v2f32:
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000014; R600-DAG: ADD {{\** *}}T{{[0-9]\.[XYZW]}}, KC0[3].X, KC0[3].Z
15; R600-DAG: ADD {{\** *}}T{{[0-9]\.[XYZW]}}, KC0[2].W, KC0[3].Y
16; SI: V_ADD_F32
17; SI: V_ADD_F32
Tom Stellard0344cdf2013-08-01 15:23:42 +000018define void @fadd_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %a, <2 x float> %b) {
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000019 %add = fadd <2 x float> %a, %b
20 store <2 x float> %add, <2 x float> addrspace(1)* %out, align 8
Tom Stellard0344cdf2013-08-01 15:23:42 +000021 ret void
22}
23
Tom Stellard79243d92014-10-01 17:15:17 +000024; FUNC-LABEL: {{^}}fadd_v4f32:
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000025; R600: ADD {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
26; R600: ADD {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
27; R600: ADD {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
28; R600: ADD {{\** *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
29; SI: V_ADD_F32
30; SI: V_ADD_F32
31; SI: V_ADD_F32
32; SI: V_ADD_F32
Tom Stellard5a6b0d82013-04-19 02:10:53 +000033define void @fadd_v4f32(<4 x float> addrspace(1)* %out, <4 x float> addrspace(1)* %in) {
34 %b_ptr = getelementptr <4 x float> addrspace(1)* %in, i32 1
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000035 %a = load <4 x float> addrspace(1)* %in, align 16
36 %b = load <4 x float> addrspace(1)* %b_ptr, align 16
Tom Stellard5a6b0d82013-04-19 02:10:53 +000037 %result = fadd <4 x float> %a, %b
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000038 store <4 x float> %result, <4 x float> addrspace(1)* %out, align 16
Tom Stellard5a6b0d82013-04-19 02:10:53 +000039 ret void
40}
Tom Stellard967bf582014-02-13 23:34:15 +000041
Tom Stellard79243d92014-10-01 17:15:17 +000042; FUNC-LABEL: {{^}}fadd_v8f32:
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000043; R600: ADD
44; R600: ADD
45; R600: ADD
46; R600: ADD
47; R600: ADD
48; R600: ADD
49; R600: ADD
50; R600: ADD
51; SI: V_ADD_F32
52; SI: V_ADD_F32
53; SI: V_ADD_F32
54; SI: V_ADD_F32
55; SI: V_ADD_F32
56; SI: V_ADD_F32
57; SI: V_ADD_F32
58; SI: V_ADD_F32
Tom Stellard967bf582014-02-13 23:34:15 +000059define void @fadd_v8f32(<8 x float> addrspace(1)* %out, <8 x float> %a, <8 x float> %b) {
Matt Arsenaulta6dc6c22014-08-06 20:27:55 +000060 %add = fadd <8 x float> %a, %b
61 store <8 x float> %add, <8 x float> addrspace(1)* %out, align 32
Tom Stellard967bf582014-02-13 23:34:15 +000062 ret void
63}