blob: 97d954fcc3c2794dbe0e12e98c478d5638198a3e [file] [log] [blame]
Tom Stellarde8f9f282013-03-08 15:37:05 +00001; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s
Tom Stellard75aadc22012-12-11 21:25:42 +00002
Tom Stellard79243d92014-10-01 17:15:17 +00003; CHECK: {{^}}fcmp_sext:
Vincent Lejeune7e2c8322013-09-04 19:53:46 +00004; CHECK: SETE_DX10 T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
Tom Stellard75aadc22012-12-11 21:25:42 +00005
Tom Stellarde8f9f282013-03-08 15:37:05 +00006define void @fcmp_sext(i32 addrspace(1)* %out, float addrspace(1)* %in) {
Tom Stellard75aadc22012-12-11 21:25:42 +00007entry:
David Blaikiea79ac142015-02-27 21:17:42 +00008 %0 = load float, float addrspace(1)* %in
David Blaikie79e6c742015-02-27 19:29:02 +00009 %arrayidx1 = getelementptr inbounds float, float addrspace(1)* %in, i32 1
David Blaikiea79ac142015-02-27 21:17:42 +000010 %1 = load float, float addrspace(1)* %arrayidx1
Tom Stellard75aadc22012-12-11 21:25:42 +000011 %cmp = fcmp oeq float %0, %1
12 %sext = sext i1 %cmp to i32
13 store i32 %sext, i32 addrspace(1)* %out
14 ret void
15}
Tom Stellarde8f9f282013-03-08 15:37:05 +000016
17; This test checks that a setcc node with f32 operands is lowered to a
Tom Stellard492ebea2013-03-08 15:37:07 +000018; SET*_DX10 instruction. Previously we were lowering this to:
19; SET* + FP_TO_SINT
Tom Stellarde8f9f282013-03-08 15:37:05 +000020
Tom Stellard79243d92014-10-01 17:15:17 +000021; CHECK: {{^}}fcmp_br:
Vincent Lejeunef97af792013-05-02 21:52:30 +000022; CHECK: SET{{[N]*}}E_DX10 * T{{[0-9]+\.[XYZW],}}
Hans Wennborg4a613702015-08-31 21:10:35 +000023; CHECK-NEXT: {{[0-9]+\(5.0}}
Tom Stellarde8f9f282013-03-08 15:37:05 +000024
25define void @fcmp_br(i32 addrspace(1)* %out, float %in) {
26entry:
27 %0 = fcmp oeq float %in, 5.0
28 br i1 %0, label %IF, label %ENDIF
29
30IF:
David Blaikie79e6c742015-02-27 19:29:02 +000031 %1 = getelementptr i32, i32 addrspace(1)* %out, i32 1
Tom Stellarde8f9f282013-03-08 15:37:05 +000032 store i32 0, i32 addrspace(1)* %1
33 br label %ENDIF
34
35ENDIF:
36 store i32 0, i32 addrspace(1)* %out
37 ret void
38}