1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -mcpu=tahiti -verify-machineinstrs | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}flt_f64: 5*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_nge_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 6*9880d681SAndroid Build Coastguard Workerdefine void @flt_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1, 7*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 8*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 9*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 10*9880d681SAndroid Build Coastguard Worker %r2 = fcmp ult double %r0, %r1 11*9880d681SAndroid Build Coastguard Worker %r3 = zext i1 %r2 to i32 12*9880d681SAndroid Build Coastguard Worker store i32 %r3, i32 addrspace(1)* %out 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}fle_f64: 17*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_ngt_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 18*9880d681SAndroid Build Coastguard Workerdefine void @fle_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1, 19*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 20*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 21*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 22*9880d681SAndroid Build Coastguard Worker %r2 = fcmp ule double %r0, %r1 23*9880d681SAndroid Build Coastguard Worker %r3 = zext i1 %r2 to i32 24*9880d681SAndroid Build Coastguard Worker store i32 %r3, i32 addrspace(1)* %out 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}fgt_f64: 29*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_nle_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 30*9880d681SAndroid Build Coastguard Workerdefine void @fgt_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1, 31*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 32*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 33*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 34*9880d681SAndroid Build Coastguard Worker %r2 = fcmp ugt double %r0, %r1 35*9880d681SAndroid Build Coastguard Worker %r3 = zext i1 %r2 to i32 36*9880d681SAndroid Build Coastguard Worker store i32 %r3, i32 addrspace(1)* %out 37*9880d681SAndroid Build Coastguard Worker ret void 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}fge_f64: 41*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_nlt_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 42*9880d681SAndroid Build Coastguard Workerdefine void @fge_f64(i32 addrspace(1)* %out, double addrspace(1)* %in1, 43*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 44*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 45*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 46*9880d681SAndroid Build Coastguard Worker %r2 = fcmp uge double %r0, %r1 47*9880d681SAndroid Build Coastguard Worker %r3 = zext i1 %r2 to i32 48*9880d681SAndroid Build Coastguard Worker store i32 %r3, i32 addrspace(1)* %out 49*9880d681SAndroid Build Coastguard Worker ret void 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}fne_f64: 53*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_neq_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 54*9880d681SAndroid Build Coastguard Workerdefine void @fne_f64(double addrspace(1)* %out, double addrspace(1)* %in1, 55*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 56*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 57*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 58*9880d681SAndroid Build Coastguard Worker %r2 = fcmp une double %r0, %r1 59*9880d681SAndroid Build Coastguard Worker %r3 = select i1 %r2, double %r0, double %r1 60*9880d681SAndroid Build Coastguard Worker store double %r3, double addrspace(1)* %out 61*9880d681SAndroid Build Coastguard Worker ret void 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}feq_f64: 65*9880d681SAndroid Build Coastguard Worker; CHECK: v_cmp_nlg_f64_e32 vcc, {{v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+]}} 66*9880d681SAndroid Build Coastguard Workerdefine void @feq_f64(double addrspace(1)* %out, double addrspace(1)* %in1, 67*9880d681SAndroid Build Coastguard Worker double addrspace(1)* %in2) { 68*9880d681SAndroid Build Coastguard Worker %r0 = load double, double addrspace(1)* %in1 69*9880d681SAndroid Build Coastguard Worker %r1 = load double, double addrspace(1)* %in2 70*9880d681SAndroid Build Coastguard Worker %r2 = fcmp ueq double %r0, %r1 71*9880d681SAndroid Build Coastguard Worker %r3 = select i1 %r2, double %r0, double %r1 72*9880d681SAndroid Build Coastguard Worker store double %r3, double addrspace(1)* %out 73*9880d681SAndroid Build Coastguard Worker ret void 74*9880d681SAndroid Build Coastguard Worker} 75