1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; These tests are for condition codes that are not supported by the hardware 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}slt: 6*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT_INT {{\** *}}T{{[0-9]+\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 5(7.006492e-45) 9*9880d681SAndroid Build Coastguard Workerdefine void @slt(i32 addrspace(1)* %out, i32 %in) { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %0 = icmp slt i32 %in, 5 12*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, i32 -1, i32 0 13*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ult_i32: 18*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT_UINT {{\** *}}T{{[0-9]+\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 5(7.006492e-45) 21*9880d681SAndroid Build Coastguard Workerdefine void @ult_i32(i32 addrspace(1)* %out, i32 %in) { 22*9880d681SAndroid Build Coastguard Workerentry: 23*9880d681SAndroid Build Coastguard Worker %0 = icmp ult i32 %in, 5 24*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, i32 -1, i32 0 25*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 26*9880d681SAndroid Build Coastguard Worker ret void 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ult_float: 30*9880d681SAndroid Build Coastguard Worker; CHECK: SETGE * T{{[0-9]}}.[[CHAN:[XYZW]]], KC0[2].Z, literal.x 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 1084227584(5.000000e+00) 32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETE T{{[0-9]\.[XYZW]}}, PV.[[CHAN]], 0.0 33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LSHR * 34*9880d681SAndroid Build Coastguard Workerdefine void @ult_float(float addrspace(1)* %out, float %in) { 35*9880d681SAndroid Build Coastguard Workerentry: 36*9880d681SAndroid Build Coastguard Worker %0 = fcmp ult float %in, 5.0 37*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 1.0, float 0.0 38*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 39*9880d681SAndroid Build Coastguard Worker ret void 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ult_float_native: 43*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGE {{\*? *}}T{{[0-9]\.[XYZW]}}, KC0[2].Z, {{literal\.[xy]}} 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 1084227584(5.000000e+00) 46*9880d681SAndroid Build Coastguard Workerdefine void @ult_float_native(float addrspace(1)* %out, float %in) { 47*9880d681SAndroid Build Coastguard Workerentry: 48*9880d681SAndroid Build Coastguard Worker %0 = fcmp ult float %in, 5.0 49*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 0.0, float 1.0 50*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}olt: 55*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT {{\*? *}}T{{[0-9]+\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 1084227584(5.000000e+00) 58*9880d681SAndroid Build Coastguard Workerdefine void @olt(float addrspace(1)* %out, float %in) { 59*9880d681SAndroid Build Coastguard Workerentry: 60*9880d681SAndroid Build Coastguard Worker %0 = fcmp olt float %in, 5.0 61*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 1.0, float 0.0 62*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 63*9880d681SAndroid Build Coastguard Worker ret void 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}sle: 67*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT_INT {{\** *}}T{{[0-9]+\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 6(8.407791e-45) 70*9880d681SAndroid Build Coastguard Workerdefine void @sle(i32 addrspace(1)* %out, i32 %in) { 71*9880d681SAndroid Build Coastguard Workerentry: 72*9880d681SAndroid Build Coastguard Worker %0 = icmp sle i32 %in, 5 73*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, i32 -1, i32 0 74*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 75*9880d681SAndroid Build Coastguard Worker ret void 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ule_i32: 79*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT_UINT {{\** *}}T{{[0-9]+\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 6(8.407791e-45) 82*9880d681SAndroid Build Coastguard Workerdefine void @ule_i32(i32 addrspace(1)* %out, i32 %in) { 83*9880d681SAndroid Build Coastguard Workerentry: 84*9880d681SAndroid Build Coastguard Worker %0 = icmp ule i32 %in, 5 85*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, i32 -1, i32 0 86*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 87*9880d681SAndroid Build Coastguard Worker ret void 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ule_float: 91*9880d681SAndroid Build Coastguard Worker; CHECK: SETGT * T{{[0-9]}}.[[CHAN:[XYZW]]], KC0[2].Z, literal.x 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 1084227584(5.000000e+00) 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETE T{{[0-9]\.[XYZW]}}, PV.[[CHAN]], 0.0 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: LSHR * 95*9880d681SAndroid Build Coastguard Workerdefine void @ule_float(float addrspace(1)* %out, float %in) { 96*9880d681SAndroid Build Coastguard Workerentry: 97*9880d681SAndroid Build Coastguard Worker %0 = fcmp ule float %in, 5.0 98*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 1.0, float 0.0 99*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 100*9880d681SAndroid Build Coastguard Worker ret void 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ule_float_native: 104*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGT {{\*? *}}T{{[0-9]\.[XYZW]}}, KC0[2].Z, {{literal\.[xy]}} 106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: 1084227584(5.000000e+00) 107*9880d681SAndroid Build Coastguard Workerdefine void @ule_float_native(float addrspace(1)* %out, float %in) { 108*9880d681SAndroid Build Coastguard Workerentry: 109*9880d681SAndroid Build Coastguard Worker %0 = fcmp ule float %in, 5.0 110*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 0.0, float 1.0 111*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 112*9880d681SAndroid Build Coastguard Worker ret void 113*9880d681SAndroid Build Coastguard Worker} 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}ole: 116*9880d681SAndroid Build Coastguard Worker; CHECK: LSHR 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: SETGE {{\*? *}}T{{[0-9]\.[XYZW]}}, {{literal\.[xy]}}, KC0[2].Z 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:1084227584(5.000000e+00) 119*9880d681SAndroid Build Coastguard Workerdefine void @ole(float addrspace(1)* %out, float %in) { 120*9880d681SAndroid Build Coastguard Workerentry: 121*9880d681SAndroid Build Coastguard Worker %0 = fcmp ole float %in, 5.0 122*9880d681SAndroid Build Coastguard Worker %1 = select i1 %0, float 1.0, float 0.0 123*9880d681SAndroid Build Coastguard Worker store float %1, float addrspace(1)* %out 124*9880d681SAndroid Build Coastguard Worker ret void 125*9880d681SAndroid Build Coastguard Worker} 126