1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,M2,M2-M3 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32 | FileCheck %s \ 4*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R1 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r2 | FileCheck %s \ 6*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 | FileCheck %s \ 8*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r5 | FileCheck %s \ 10*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-32,CMOV-32R2-R5 11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 | FileCheck %s \ 12*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,SEL,SEL-32 13*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips3 | FileCheck %s \ 14*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,M3,M2-M3 15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips4 | FileCheck %s \ 16*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-64 17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64 | FileCheck %s \ 18*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-64 19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | FileCheck %s \ 20*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-64 21*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r3 | FileCheck %s \ 22*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-64 23*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r5 | FileCheck %s \ 24*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,CMOV,CMOV-64 25*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | FileCheck %s \ 26*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,SEL,SEL-64 27*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \ 28*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,MM32R3 29*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \ 30*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,MMR6,MM32R6 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine signext i1 @tst_select_i1_i1(i1 signext %s, 33*9880d681SAndroid Build Coastguard Worker i1 signext %x, i1 signext %y) { 34*9880d681SAndroid Build Coastguard Workerentry: 35*9880d681SAndroid Build Coastguard Worker ; ALL-LABEL: tst_select_i1_i1: 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker ; M2-M3: andi $[[T0:[0-9]+]], $4, 1 38*9880d681SAndroid Build Coastguard Worker ; M2-M3: bnez $[[T0]], $[[BB0:BB[0-9_]+]] 39*9880d681SAndroid Build Coastguard Worker ; M2-M3: nop 40*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $5, $6 41*9880d681SAndroid Build Coastguard Worker ; M2-M3: $[[BB0]]: 42*9880d681SAndroid Build Coastguard Worker ; M2-M3: jr $ra 43*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $2, $5 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker ; CMOV: andi $[[T0:[0-9]+]], $4, 1 46*9880d681SAndroid Build Coastguard Worker ; CMOV: movn $6, $5, $[[T0]] 47*9880d681SAndroid Build Coastguard Worker ; CMOV: move $2, $6 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker ; SEL: andi $[[T0:[0-9]+]], $4, 1 50*9880d681SAndroid Build Coastguard Worker ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 51*9880d681SAndroid Build Coastguard Worker ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]] 52*9880d681SAndroid Build Coastguard Worker ; SEL: or $2, $[[T2]], $[[T1]] 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1 55*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]] 56*9880d681SAndroid Build Coastguard Worker ; MM32R3: move $2, $[[T1]] 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1 59*9880d681SAndroid Build Coastguard Worker ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 60*9880d681SAndroid Build Coastguard Worker ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]] 61*9880d681SAndroid Build Coastguard Worker ; MMR6: or $2, $[[T2]], $[[T1]] 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker %r = select i1 %s, i1 %x, i1 %y 64*9880d681SAndroid Build Coastguard Worker ret i1 %r 65*9880d681SAndroid Build Coastguard Worker} 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Workerdefine signext i8 @tst_select_i1_i8(i1 signext %s, 68*9880d681SAndroid Build Coastguard Worker i8 signext %x, i8 signext %y) { 69*9880d681SAndroid Build Coastguard Workerentry: 70*9880d681SAndroid Build Coastguard Worker ; ALL-LABEL: tst_select_i1_i8: 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker ; M2-M3: andi $[[T0:[0-9]+]], $4, 1 73*9880d681SAndroid Build Coastguard Worker ; M2-M3: bnez $[[T0]], $[[BB0:BB[0-9_]+]] 74*9880d681SAndroid Build Coastguard Worker ; M2-M3: nop 75*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $5, $6 76*9880d681SAndroid Build Coastguard Worker ; M2-M3: $[[BB0]]: 77*9880d681SAndroid Build Coastguard Worker ; M2-M3: jr $ra 78*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $2, $5 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker ; CMOV: andi $[[T0:[0-9]+]], $4, 1 81*9880d681SAndroid Build Coastguard Worker ; CMOV: movn $6, $5, $[[T0]] 82*9880d681SAndroid Build Coastguard Worker ; CMOV: move $2, $6 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker ; SEL: andi $[[T0:[0-9]+]], $4, 1 85*9880d681SAndroid Build Coastguard Worker ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 86*9880d681SAndroid Build Coastguard Worker ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]] 87*9880d681SAndroid Build Coastguard Worker ; SEL: or $2, $[[T2]], $[[T1]] 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1 90*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]] 91*9880d681SAndroid Build Coastguard Worker ; MM32R3: move $2, $[[T1]] 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1 94*9880d681SAndroid Build Coastguard Worker ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 95*9880d681SAndroid Build Coastguard Worker ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]] 96*9880d681SAndroid Build Coastguard Worker ; MMR6: or $2, $[[T2]], $[[T1]] 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker %r = select i1 %s, i8 %x, i8 %y 99*9880d681SAndroid Build Coastguard Worker ret i8 %r 100*9880d681SAndroid Build Coastguard Worker} 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerdefine signext i32 @tst_select_i1_i32(i1 signext %s, 103*9880d681SAndroid Build Coastguard Worker i32 signext %x, i32 signext %y) { 104*9880d681SAndroid Build Coastguard Workerentry: 105*9880d681SAndroid Build Coastguard Worker ; ALL-LABEL: tst_select_i1_i32: 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker ; M2-M3: andi $[[T0:[0-9]+]], $4, 1 108*9880d681SAndroid Build Coastguard Worker ; M2-M3: bnez $[[T0]], $[[BB0:BB[0-9_]+]] 109*9880d681SAndroid Build Coastguard Worker ; M2-M3: nop 110*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $5, $6 111*9880d681SAndroid Build Coastguard Worker ; M2-M3: $[[BB0]]: 112*9880d681SAndroid Build Coastguard Worker ; M2-M3: jr $ra 113*9880d681SAndroid Build Coastguard Worker ; M2-M3: move $2, $5 114*9880d681SAndroid Build Coastguard Worker 115*9880d681SAndroid Build Coastguard Worker ; CMOV: andi $[[T0:[0-9]+]], $4, 1 116*9880d681SAndroid Build Coastguard Worker ; CMOV: movn $6, $5, $[[T0]] 117*9880d681SAndroid Build Coastguard Worker ; CMOV: move $2, $6 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker ; SEL: andi $[[T0:[0-9]+]], $4, 1 120*9880d681SAndroid Build Coastguard Worker ; SEL: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 121*9880d681SAndroid Build Coastguard Worker ; SEL: selnez $[[T2:[0-9]+]], $5, $[[T0]] 122*9880d681SAndroid Build Coastguard Worker ; SEL: or $2, $[[T2]], $[[T1]] 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1 125*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $[[T1:[0-9]+]], $5, $[[T0]] 126*9880d681SAndroid Build Coastguard Worker ; MM32R3: move $2, $[[T1]] 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Worker ; MMR6: andi16 $[[T0:[0-9]+]], $4, 1 129*9880d681SAndroid Build Coastguard Worker ; MMR6: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 130*9880d681SAndroid Build Coastguard Worker ; MMR6: selnez $[[T2:[0-9]+]], $5, $[[T0]] 131*9880d681SAndroid Build Coastguard Worker ; MMR6: or $2, $[[T2]], $[[T1]] 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Worker %r = select i1 %s, i32 %x, i32 %y 134*9880d681SAndroid Build Coastguard Worker ret i32 %r 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdefine signext i64 @tst_select_i1_i64(i1 signext %s, 138*9880d681SAndroid Build Coastguard Worker i64 signext %x, i64 signext %y) { 139*9880d681SAndroid Build Coastguard Workerentry: 140*9880d681SAndroid Build Coastguard Worker ; ALL-LABEL: tst_select_i1_i64: 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker ; M2: andi $[[T0:[0-9]+]], $4, 1 143*9880d681SAndroid Build Coastguard Worker ; M2: bnez $[[T0]], $[[BB0:BB[0-9_]+]] 144*9880d681SAndroid Build Coastguard Worker ; M2: nop 145*9880d681SAndroid Build Coastguard Worker ; M2: lw $[[T1:[0-9]+]], 16($sp) 146*9880d681SAndroid Build Coastguard Worker ; M2: $[[BB0]]: 147*9880d681SAndroid Build Coastguard Worker ; FIXME: This branch is redundant 148*9880d681SAndroid Build Coastguard Worker ; M2: bnez $[[T0]], $[[BB1:BB[0-9_]+]] 149*9880d681SAndroid Build Coastguard Worker ; M2: nop 150*9880d681SAndroid Build Coastguard Worker ; M2: lw $[[T2:[0-9]+]], 20($sp) 151*9880d681SAndroid Build Coastguard Worker ; M2: $[[BB1]]: 152*9880d681SAndroid Build Coastguard Worker ; M2: move $2, $[[T1]] 153*9880d681SAndroid Build Coastguard Worker ; M2: jr $ra 154*9880d681SAndroid Build Coastguard Worker ; M2: move $3, $[[T2]] 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker ; CMOV-32: andi $[[T0:[0-9]+]], $4, 1 157*9880d681SAndroid Build Coastguard Worker ; CMOV-32: lw $2, 16($sp) 158*9880d681SAndroid Build Coastguard Worker ; CMOV-32: movn $2, $6, $[[T0]] 159*9880d681SAndroid Build Coastguard Worker ; CMOV-32: lw $3, 20($sp) 160*9880d681SAndroid Build Coastguard Worker ; CMOV-32: movn $3, $7, $[[T0]] 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Worker ; SEL-32: andi $[[T0:[0-9]+]], $4, 1 163*9880d681SAndroid Build Coastguard Worker ; SEL-32: selnez $[[T1:[0-9]+]], $6, $[[T0]] 164*9880d681SAndroid Build Coastguard Worker ; SEL-32: lw $[[T2:[0-9]+]], 16($sp) 165*9880d681SAndroid Build Coastguard Worker ; SEL-32: seleqz $[[T3:[0-9]+]], $[[T2]], $[[T0]] 166*9880d681SAndroid Build Coastguard Worker ; SEL-32: or $2, $[[T1]], $[[T3]] 167*9880d681SAndroid Build Coastguard Worker ; SEL-32: selnez $[[T4:[0-9]+]], $7, $[[T0]] 168*9880d681SAndroid Build Coastguard Worker ; SEL-32: lw $[[T5:[0-9]+]], 20($sp) 169*9880d681SAndroid Build Coastguard Worker ; SEL-32: seleqz $[[T6:[0-9]+]], $[[T5]], $[[T0]] 170*9880d681SAndroid Build Coastguard Worker ; SEL-32: or $3, $[[T4]], $[[T6]] 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker ; M3: andi $[[T0:[0-9]+]], $4, 1 173*9880d681SAndroid Build Coastguard Worker ; M3: bnez $[[T0]], $[[BB0:BB[0-9_]+]] 174*9880d681SAndroid Build Coastguard Worker ; M3: nop 175*9880d681SAndroid Build Coastguard Worker ; M3: move $5, $6 176*9880d681SAndroid Build Coastguard Worker ; M3: $[[BB0]]: 177*9880d681SAndroid Build Coastguard Worker ; M3: jr $ra 178*9880d681SAndroid Build Coastguard Worker ; M3: move $2, $5 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker ; CMOV-64: andi $[[T0:[0-9]+]], $4, 1 181*9880d681SAndroid Build Coastguard Worker ; CMOV-64: movn $6, $5, $[[T0]] 182*9880d681SAndroid Build Coastguard Worker ; CMOV-64: move $2, $6 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker ; SEL-64: andi $[[T0:[0-9]+]], $4, 1 185*9880d681SAndroid Build Coastguard Worker ; FIXME: This shift is redundant 186*9880d681SAndroid Build Coastguard Worker ; SEL-64: sll $[[T0]], $[[T0]], 0 187*9880d681SAndroid Build Coastguard Worker ; SEL-64: seleqz $[[T1:[0-9]+]], $6, $[[T0]] 188*9880d681SAndroid Build Coastguard Worker ; SEL-64: selnez $[[T0]], $5, $[[T0]] 189*9880d681SAndroid Build Coastguard Worker ; SEL-64: or $2, $[[T0]], $[[T1]] 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker ; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1 192*9880d681SAndroid Build Coastguard Worker ; MM32R3: lw $2, 16($sp) 193*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $2, $6, $[[T0]] 194*9880d681SAndroid Build Coastguard Worker ; MM32R3: lw $3, 20($sp) 195*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $3, $7, $[[T0]] 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Worker ; MM32R6: andi16 $[[T0:[0-9]+]], $4, 1 198*9880d681SAndroid Build Coastguard Worker ; MM32R6: lw $[[T1:[0-9]+]], 16($sp) 199*9880d681SAndroid Build Coastguard Worker ; MM32R6: seleqz $[[T2:[0-9]+]], $[[T1]], $[[T0]] 200*9880d681SAndroid Build Coastguard Worker ; MM32R6: selnez $[[T3:[0-9]+]], $6, $[[T0]] 201*9880d681SAndroid Build Coastguard Worker ; MM32R6: or $2, $[[T3]], $[[T2]] 202*9880d681SAndroid Build Coastguard Worker ; MM32R6: lw $[[T4:[0-9]+]], 20($sp) 203*9880d681SAndroid Build Coastguard Worker ; MM32R6: seleqz $[[T5:[0-9]+]], $[[T4]], $[[T0]] 204*9880d681SAndroid Build Coastguard Worker ; MM32R6: selnez $[[T6:[0-9]+]], $7, $[[T0]] 205*9880d681SAndroid Build Coastguard Worker ; MM32R6: or $3, $[[T6]], $[[T5]] 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker %r = select i1 %s, i64 %x, i64 %y 208*9880d681SAndroid Build Coastguard Worker ret i64 %r 209*9880d681SAndroid Build Coastguard Worker} 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Workerdefine i8* @tst_select_word_cst(i8* %a, i8* %b) { 212*9880d681SAndroid Build Coastguard Worker ; ALL-LABEL: tst_select_word_cst: 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker ; M2: addiu $[[T0:[0-9]+]], $zero, -1 215*9880d681SAndroid Build Coastguard Worker ; M2: xor $[[T1:[0-9]+]], $5, $[[T0]] 216*9880d681SAndroid Build Coastguard Worker ; M2: sltu $[[T2:[0-9]+]], $zero, $[[T1]] 217*9880d681SAndroid Build Coastguard Worker ; M2: bnez $[[T2]], $[[BB0:BB[0-9_]+]] 218*9880d681SAndroid Build Coastguard Worker ; M2: addiu $2, $zero, 0 219*9880d681SAndroid Build Coastguard Worker ; M2: move $2, $4 220*9880d681SAndroid Build Coastguard Worker ; M2: $[[BB0]]: 221*9880d681SAndroid Build Coastguard Worker ; M2: jr $ra 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Worker ; M3: daddiu $[[T0:[0-9]+]], $zero, -1 224*9880d681SAndroid Build Coastguard Worker ; M3: xor $[[T1:[0-9]+]], $5, $[[T0]] 225*9880d681SAndroid Build Coastguard Worker ; M3: sltu $[[T2:[0-9]+]], $zero, $[[T1]] 226*9880d681SAndroid Build Coastguard Worker ; M3: bnez $[[T2]], $[[BB0:BB[0-9_]+]] 227*9880d681SAndroid Build Coastguard Worker ; M3: daddiu $2, $zero, 0 228*9880d681SAndroid Build Coastguard Worker ; M3: move $2, $4 229*9880d681SAndroid Build Coastguard Worker ; M3: $[[BB0]]: 230*9880d681SAndroid Build Coastguard Worker ; M3: jr $ra 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker ; CMOV-32: addiu $[[T0:[0-9]+]], $zero, -1 233*9880d681SAndroid Build Coastguard Worker ; CMOV-32: xor $[[T1:[0-9]+]], $5, $[[T0]] 234*9880d681SAndroid Build Coastguard Worker ; CMOV-32: movn $[[T2:[0-9]+]], $zero, $[[T1]] 235*9880d681SAndroid Build Coastguard Worker ; CMOV-32: jr $ra 236*9880d681SAndroid Build Coastguard Worker ; CMOV-32: move $2, $[[T2]] 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Worker ; SEL-32: addiu $[[T0:[0-9]+]], $zero, -1 239*9880d681SAndroid Build Coastguard Worker ; SEL-32: xor $[[T1:[0-9]+]], $5, $[[T0]] 240*9880d681SAndroid Build Coastguard Worker ; SEL-32: sltu $[[T2:[0-9]+]], $zero, $[[T1]] 241*9880d681SAndroid Build Coastguard Worker ; SEL-32: jr $ra 242*9880d681SAndroid Build Coastguard Worker ; SEL-32: seleqz $2, $4, $[[T2]] 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker ; CMOV-64: daddiu $[[T0:[0-9]+]], $zero, -1 245*9880d681SAndroid Build Coastguard Worker ; CMOV-64: xor $[[T1:[0-9]+]], $5, $[[T0]] 246*9880d681SAndroid Build Coastguard Worker ; CMOV-64: movn $[[T2:[0-9]+]], $zero, $[[T1]] 247*9880d681SAndroid Build Coastguard Worker ; CMOV-64: move $2, $[[T2]] 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Worker ; SEL-64: daddiu $[[T0:[0-9]+]], $zero, -1 250*9880d681SAndroid Build Coastguard Worker ; SEL-64: xor $[[T1:[0-9]+]], $5, $[[T0]] 251*9880d681SAndroid Build Coastguard Worker ; SEL-64: sltu $[[T2:[0-9]+]], $zero, $[[T1]] 252*9880d681SAndroid Build Coastguard Worker ; FIXME: This shift is redundant. 253*9880d681SAndroid Build Coastguard Worker ; SEL-64: sll $[[T2]], $[[T2]], 0 254*9880d681SAndroid Build Coastguard Worker ; SEL-64: seleqz $2, $4, $[[T2]] 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Worker ; MM32R3: li16 $[[T0:[0-9]+]], -1 257*9880d681SAndroid Build Coastguard Worker ; MM32R3: xor $[[T1:[0-9]+]], $5, $[[T0]] 258*9880d681SAndroid Build Coastguard Worker ; MM32R3: lui $[[T2:[0-9]+]], 0 259*9880d681SAndroid Build Coastguard Worker ; MM32R3: movn $[[T3:[0-9]+]], $[[T2]], $[[T1]] 260*9880d681SAndroid Build Coastguard Worker ; MM32R3: move $2, $[[T3]] 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker ; MM32R6: li16 $[[T0:[0-9]+]], -1 263*9880d681SAndroid Build Coastguard Worker ; MM32R6: xor $[[T1:[0-9]+]], $5, $[[T0]] 264*9880d681SAndroid Build Coastguard Worker ; MM32R6: sltu $[[T2:[0-9]+]], $zero, $[[T1]] 265*9880d681SAndroid Build Coastguard Worker ; MM32R6: seleqz $2, $4, $[[T2]] 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i8* %b, inttoptr (i64 -1 to i8*) 268*9880d681SAndroid Build Coastguard Worker %r = select i1 %cmp, i8* %a, i8* null 269*9880d681SAndroid Build Coastguard Worker ret i8* %r 270*9880d681SAndroid Build Coastguard Worker} 271