blob: 95f7e0be7d9c9c75e49e9cebe6d78097bbcca3fe [file] [log] [blame]
Tom Stellard49f8bfd2015-01-06 18:00:21 +00001; RUN: llc < %s -march=amdgcn -mcpu=tahiti -verify-machineinstrs | FileCheck %s
Matt Arsenault7aad8fd2017-01-24 22:02:15 +00002; RUN: llc < %s -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs | FileCheck %s
Tom Stellard4e1100a2013-07-12 18:15:19 +00003
Matt Arsenaultda59f3d2014-11-13 23:03:09 +00004; CHECK-LABEL: {{^}}flt_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +00005; CHECK: v_cmp_nge_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +00006define amdgpu_kernel void @flt_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +00007 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +00008 %r0 = load double, double addrspace(1)* %in1
9 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000010 %r2 = fcmp ult double %r0, %r1
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000011 %r3 = zext i1 %r2 to i32
12 store i32 %r3, i32 addrspace(1)* %out
Tom Stellard4e1100a2013-07-12 18:15:19 +000013 ret void
14}
15
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000016; CHECK-LABEL: {{^}}fle_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +000017; CHECK: v_cmp_ngt_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000018define amdgpu_kernel void @fle_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +000019 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +000020 %r0 = load double, double addrspace(1)* %in1
21 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000022 %r2 = fcmp ule double %r0, %r1
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000023 %r3 = zext i1 %r2 to i32
24 store i32 %r3, i32 addrspace(1)* %out
Tom Stellard4e1100a2013-07-12 18:15:19 +000025 ret void
26}
27
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000028; CHECK-LABEL: {{^}}fgt_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +000029; CHECK: v_cmp_nle_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000030define amdgpu_kernel void @fgt_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +000031 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +000032 %r0 = load double, double addrspace(1)* %in1
33 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000034 %r2 = fcmp ugt double %r0, %r1
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000035 %r3 = zext i1 %r2 to i32
36 store i32 %r3, i32 addrspace(1)* %out
Tom Stellard4e1100a2013-07-12 18:15:19 +000037 ret void
38}
39
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000040; CHECK-LABEL: {{^}}fge_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +000041; CHECK: v_cmp_nlt_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000042define amdgpu_kernel void @fge_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +000043 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +000044 %r0 = load double, double addrspace(1)* %in1
45 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000046 %r2 = fcmp uge double %r0, %r1
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000047 %r3 = zext i1 %r2 to i32
48 store i32 %r3, i32 addrspace(1)* %out
Tom Stellard4e1100a2013-07-12 18:15:19 +000049 ret void
50}
51
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000052; CHECK-LABEL: {{^}}fne_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +000053; CHECK: v_cmp_neq_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000054define amdgpu_kernel void @fne_f64(double addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +000055 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +000056 %r0 = load double, double addrspace(1)* %in1
57 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000058 %r2 = fcmp une double %r0, %r1
59 %r3 = select i1 %r2, double %r0, double %r1
60 store double %r3, double addrspace(1)* %out
61 ret void
62}
63
Matt Arsenaultda59f3d2014-11-13 23:03:09 +000064; CHECK-LABEL: {{^}}feq_f64:
Alexander Timofeev982aee62017-07-04 17:32:00 +000065; CHECK: v_cmp_nlg_f64_e32 vcc, {{s[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}}
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000066define amdgpu_kernel void @feq_f64(double addrspace(1)* %out, double addrspace(1)* %in1,
Tom Stellard4e1100a2013-07-12 18:15:19 +000067 double addrspace(1)* %in2) {
David Blaikiea79ac142015-02-27 21:17:42 +000068 %r0 = load double, double addrspace(1)* %in1
69 %r1 = load double, double addrspace(1)* %in2
Tom Stellard4e1100a2013-07-12 18:15:19 +000070 %r2 = fcmp ueq double %r0, %r1
71 %r3 = select i1 %r2, double %r0, double %r1
72 store double %r3, double addrspace(1)* %out
73 ret void
74}