1*a65ccc1bSUlrich Weigand; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2*a65ccc1bSUlrich Weigand; Test i128 maximum on z13. 3*a65ccc1bSUlrich Weigand; 4*a65ccc1bSUlrich Weigand; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s 5*a65ccc1bSUlrich Weigand 6*a65ccc1bSUlrich Weigand; Test with slt. 7*a65ccc1bSUlrich Weiganddefine i128 @f1(i128 %val1, i128 %val2) { 8*a65ccc1bSUlrich Weigand; CHECK-LABEL: f1: 9*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 10*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r3), 3 11*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r4), 3 12*a65ccc1bSUlrich Weigand; CHECK-NEXT: vecg %v1, %v0 13*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB0_3 14*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 15*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB0_4 16*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB0_2: 17*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 18*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 19*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB0_3: 20*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v0, %v1 21*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB0_2 22*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB0_4: 23*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 24*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 25*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 26*a65ccc1bSUlrich Weigand %cmp = icmp slt i128 %val1, %val2 27*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val2, i128 %val1 28*a65ccc1bSUlrich Weigand ret i128 %ret 29*a65ccc1bSUlrich Weigand} 30*a65ccc1bSUlrich Weigand 31*a65ccc1bSUlrich Weigand; Test with sle. 32*a65ccc1bSUlrich Weiganddefine i128 @f2(i128 %val1, i128 %val2) { 33*a65ccc1bSUlrich Weigand; CHECK-LABEL: f2: 34*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 35*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r4), 3 36*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r3), 3 37*a65ccc1bSUlrich Weigand; CHECK-NEXT: vecg %v0, %v1 38*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB1_3 39*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 40*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB1_4 41*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB1_2: 42*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 43*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 44*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB1_3: 45*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v1, %v0 46*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB1_2 47*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB1_4: 48*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 49*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 50*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 51*a65ccc1bSUlrich Weigand %cmp = icmp sle i128 %val1, %val2 52*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val2, i128 %val1 53*a65ccc1bSUlrich Weigand ret i128 %ret 54*a65ccc1bSUlrich Weigand} 55*a65ccc1bSUlrich Weigand 56*a65ccc1bSUlrich Weigand; Test with sgt. 57*a65ccc1bSUlrich Weiganddefine i128 @f3(i128 %val1, i128 %val2) { 58*a65ccc1bSUlrich Weigand; CHECK-LABEL: f3: 59*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 60*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r4), 3 61*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r3), 3 62*a65ccc1bSUlrich Weigand; CHECK-NEXT: vecg %v1, %v0 63*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB2_3 64*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 65*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB2_4 66*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB2_2: 67*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 68*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 69*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB2_3: 70*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v0, %v1 71*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB2_2 72*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB2_4: 73*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 74*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 75*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 76*a65ccc1bSUlrich Weigand %cmp = icmp sgt i128 %val1, %val2 77*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val1, i128 %val2 78*a65ccc1bSUlrich Weigand ret i128 %ret 79*a65ccc1bSUlrich Weigand} 80*a65ccc1bSUlrich Weigand 81*a65ccc1bSUlrich Weigand; Test with sge. 82*a65ccc1bSUlrich Weiganddefine i128 @f4(i128 %val1, i128 %val2) { 83*a65ccc1bSUlrich Weigand; CHECK-LABEL: f4: 84*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 85*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r3), 3 86*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r4), 3 87*a65ccc1bSUlrich Weigand; CHECK-NEXT: vecg %v0, %v1 88*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB3_3 89*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 90*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB3_4 91*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB3_2: 92*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 93*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 94*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB3_3: 95*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v1, %v0 96*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB3_2 97*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB3_4: 98*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 99*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 100*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 101*a65ccc1bSUlrich Weigand %cmp = icmp sge i128 %val1, %val2 102*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val1, i128 %val2 103*a65ccc1bSUlrich Weigand ret i128 %ret 104*a65ccc1bSUlrich Weigand} 105*a65ccc1bSUlrich Weigand 106*a65ccc1bSUlrich Weigand; Test with ult. 107*a65ccc1bSUlrich Weiganddefine i128 @f5(i128 %val1, i128 %val2) { 108*a65ccc1bSUlrich Weigand; CHECK-LABEL: f5: 109*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 110*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r3), 3 111*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r4), 3 112*a65ccc1bSUlrich Weigand; CHECK-NEXT: veclg %v1, %v0 113*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB4_3 114*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 115*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB4_4 116*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB4_2: 117*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 118*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 119*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB4_3: 120*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v0, %v1 121*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB4_2 122*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB4_4: 123*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 124*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 125*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 126*a65ccc1bSUlrich Weigand %cmp = icmp ult i128 %val1, %val2 127*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val2, i128 %val1 128*a65ccc1bSUlrich Weigand ret i128 %ret 129*a65ccc1bSUlrich Weigand} 130*a65ccc1bSUlrich Weigand 131*a65ccc1bSUlrich Weigand; Test with ule. 132*a65ccc1bSUlrich Weiganddefine i128 @f6(i128 %val1, i128 %val2) { 133*a65ccc1bSUlrich Weigand; CHECK-LABEL: f6: 134*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 135*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r4), 3 136*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r3), 3 137*a65ccc1bSUlrich Weigand; CHECK-NEXT: veclg %v0, %v1 138*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB5_3 139*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 140*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB5_4 141*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB5_2: 142*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 143*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 144*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB5_3: 145*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v1, %v0 146*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB5_2 147*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB5_4: 148*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 149*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 150*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 151*a65ccc1bSUlrich Weigand %cmp = icmp ule i128 %val1, %val2 152*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val2, i128 %val1 153*a65ccc1bSUlrich Weigand ret i128 %ret 154*a65ccc1bSUlrich Weigand} 155*a65ccc1bSUlrich Weigand 156*a65ccc1bSUlrich Weigand; Test with ugt. 157*a65ccc1bSUlrich Weiganddefine i128 @f7(i128 %val1, i128 %val2) { 158*a65ccc1bSUlrich Weigand; CHECK-LABEL: f7: 159*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 160*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r4), 3 161*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r3), 3 162*a65ccc1bSUlrich Weigand; CHECK-NEXT: veclg %v1, %v0 163*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB6_3 164*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 165*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB6_4 166*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB6_2: 167*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 168*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 169*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB6_3: 170*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v0, %v1 171*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB6_2 172*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB6_4: 173*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 174*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 175*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 176*a65ccc1bSUlrich Weigand %cmp = icmp ugt i128 %val1, %val2 177*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val1, i128 %val2 178*a65ccc1bSUlrich Weigand ret i128 %ret 179*a65ccc1bSUlrich Weigand} 180*a65ccc1bSUlrich Weigand 181*a65ccc1bSUlrich Weigand; Test with uge. 182*a65ccc1bSUlrich Weiganddefine i128 @f8(i128 %val1, i128 %val2) { 183*a65ccc1bSUlrich Weigand; CHECK-LABEL: f8: 184*a65ccc1bSUlrich Weigand; CHECK: # %bb.0: 185*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v0, 0(%r3), 3 186*a65ccc1bSUlrich Weigand; CHECK-NEXT: vl %v1, 0(%r4), 3 187*a65ccc1bSUlrich Weigand; CHECK-NEXT: veclg %v0, %v1 188*a65ccc1bSUlrich Weigand; CHECK-NEXT: je .LBB7_3 189*a65ccc1bSUlrich Weigand; CHECK-NEXT: # %bb.1: 190*a65ccc1bSUlrich Weigand; CHECK-NEXT: jl .LBB7_4 191*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB7_2: 192*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 193*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 194*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB7_3: 195*a65ccc1bSUlrich Weigand; CHECK-NEXT: vchlgs %v2, %v1, %v0 196*a65ccc1bSUlrich Weigand; CHECK-NEXT: jnl .LBB7_2 197*a65ccc1bSUlrich Weigand; CHECK-NEXT: .LBB7_4: 198*a65ccc1bSUlrich Weigand; CHECK-NEXT: vlr %v0, %v1 199*a65ccc1bSUlrich Weigand; CHECK-NEXT: vst %v0, 0(%r2), 3 200*a65ccc1bSUlrich Weigand; CHECK-NEXT: br %r14 201*a65ccc1bSUlrich Weigand %cmp = icmp uge i128 %val1, %val2 202*a65ccc1bSUlrich Weigand %ret = select i1 %cmp, i128 %val1, i128 %val2 203*a65ccc1bSUlrich Weigand ret i128 %ret 204*a65ccc1bSUlrich Weigand} 205