1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips2 | FileCheck %s \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,NOT-R2-R6,GP32 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32 | FileCheck %s \ 4*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,NOT-R2-R6,GP32 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r2 | FileCheck %s \ 6*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP32 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 | FileCheck %s \ 8*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP32 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r5 | FileCheck %s \ 10*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP32 11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 | FileCheck %s \ 12*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP32 13*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips3 | FileCheck %s \ 14*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,NOT-R2-R6,GP64 15*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips4 | FileCheck %s \ 16*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,NOT-R2-R6,GP64 17*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64 | FileCheck %s \ 18*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,NOT-R2-R6,GP64 19*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r2 | FileCheck %s \ 20*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP64 21*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r3 | FileCheck %s \ 22*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP64 23*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r5 | FileCheck %s \ 24*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP64 25*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64 -mcpu=mips64r6 | FileCheck %s \ 26*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,R2-R6,GP64 27*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r3 -mattr=+micromips -O2 | FileCheck %s \ 28*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,MMR6,MM32 29*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips32r6 -mattr=+micromips -O2 | FileCheck %s \ 30*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,MMR6,MM32 31*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips -mcpu=mips64r6 -target-abi n64 -mattr=+micromips -O2 | FileCheck %s \ 32*9880d681SAndroid Build Coastguard Worker; RUN: -check-prefixes=ALL,MMR6,MM64 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine signext i1 @add_i1(i1 signext %a, i1 signext %b) { 35*9880d681SAndroid Build Coastguard Workerentry: 36*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i1: 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0:[0-9]+]], $4, $5 39*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0]], $[[T0]], 31 40*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 31 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker ; R2-R6: addu $[[T0:[0-9]+]], $4, $5 43*9880d681SAndroid Build Coastguard Worker ; R2-R6: sll $[[T0]], $[[T0]], 31 44*9880d681SAndroid Build Coastguard Worker ; R2-R6: sra $2, $[[T0]], 31 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker ; MMR6: addu16 $[[T0:[0-9]+]], $4, $5 47*9880d681SAndroid Build Coastguard Worker ; MMR6: sll $[[T1:[0-9]+]], $[[T0]], 31 48*9880d681SAndroid Build Coastguard Worker ; MMR6: sra $2, $[[T1]], 31 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Worker %r = add i1 %a, %b 51*9880d681SAndroid Build Coastguard Worker ret i1 %r 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine signext i8 @add_i8(i8 signext %a, i8 signext %b) { 55*9880d681SAndroid Build Coastguard Workerentry: 56*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i8: 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0:[0-9]+]], $4, $5 59*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0]], $[[T0]], 24 60*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 24 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker ; R2-R6: addu $[[T0:[0-9]+]], $4, $5 63*9880d681SAndroid Build Coastguard Worker ; R2-R6: seb $2, $[[T0:[0-9]+]] 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker ; MMR6: addu16 $[[T0:[0-9]+]], $4, $5 66*9880d681SAndroid Build Coastguard Worker ; MMR6: seb $2, $[[T0]] 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker %r = add i8 %a, %b 69*9880d681SAndroid Build Coastguard Worker ret i8 %r 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine signext i16 @add_i16(i16 signext %a, i16 signext %b) { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i16: 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0:[0-9]+]], $4, $5 77*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0]], $[[T0]], 16 78*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 16 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Worker ; R2-R6: addu $[[T0:[0-9]+]], $4, $5 81*9880d681SAndroid Build Coastguard Worker ; R2-R6: seh $2, $[[T0]] 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker ; MMR6: addu16 $[[T0:[0-9]+]], $4, $5 84*9880d681SAndroid Build Coastguard Worker ; MMR6: seh $2, $[[T0]] 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Worker %r = add i16 %a, %b 87*9880d681SAndroid Build Coastguard Worker ret i16 %r 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine signext i32 @add_i32(i32 signext %a, i32 signext %b) { 91*9880d681SAndroid Build Coastguard Workerentry: 92*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i32: 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $2, $4, $5 95*9880d681SAndroid Build Coastguard Worker ; R2-R6: addu $2, $4, $5 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Worker ; MMR6: addu16 $[[T0:[0-9]+]], $4, $5 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Worker %r = add i32 %a, %b 100*9880d681SAndroid Build Coastguard Worker ret i32 %r 101*9880d681SAndroid Build Coastguard Worker} 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Workerdefine signext i64 @add_i64(i64 signext %a, i64 signext %b) { 104*9880d681SAndroid Build Coastguard Workerentry: 105*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i64: 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker ; GP32: addu $3, $5, $7 108*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T0:[0-9]+]], $3, $7 109*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T1:[0-9]+]], $[[T0]], $6 110*9880d681SAndroid Build Coastguard Worker ; GP32: addu $2, $4, $[[T1]] 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $2, $4, $5 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker ; MM32: addu $3, $5, $7 115*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T0:[0-9]+]], $3, $7 116*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T1:[0-9]+]], $[[T0]], $6 117*9880d681SAndroid Build Coastguard Worker ; MM32: addu $2, $4, $[[T1]] 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $2, $4, $5 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker %r = add i64 %a, %b 122*9880d681SAndroid Build Coastguard Worker ret i64 %r 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine signext i128 @add_i128(i128 signext %a, i128 signext %b) { 126*9880d681SAndroid Build Coastguard Workerentry: 127*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i128: 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Worker ; GP32: lw $[[T0:[0-9]+]], 28($sp) 130*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T1:[0-9]+]], $7, $[[T0]] 131*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T2:[0-9]+]], $[[T1]], $[[T0]] 132*9880d681SAndroid Build Coastguard Worker ; GP32: lw $[[T3:[0-9]+]], 24($sp) 133*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T4:[0-9]+]], $[[T2]], $[[T3]] 134*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T5:[0-9]+]], $6, $[[T4]] 135*9880d681SAndroid Build Coastguard Worker ; GP32: lw $[[T6:[0-9]+]], 16($sp) 136*9880d681SAndroid Build Coastguard Worker ; GP32: lw $[[T7:[0-9]+]], 20($sp) 137*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T8:[0-9]+]], $[[T5]], $[[T3]] 138*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T9:[0-9]+]], $[[T8]], $[[T7]] 139*9880d681SAndroid Build Coastguard Worker ; GP32: addu $3, $5, $[[T8]] 140*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T10:[0-9]+]], $3, $[[T7]] 141*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T11:[0-9]+]], $[[T10]], $[[T6]] 142*9880d681SAndroid Build Coastguard Worker ; GP32: addu $2, $4, $[[T11]] 143*9880d681SAndroid Build Coastguard Worker ; GP32: move $4, $[[T5]] 144*9880d681SAndroid Build Coastguard Worker ; GP32: move $5, $[[T1]] 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $3, $5, $7 147*9880d681SAndroid Build Coastguard Worker ; GP64: sltu $[[T0:[0-9]+]], $3, $7 148*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $[[T1:[0-9]+]], $[[T0]], $6 149*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $2, $4, $[[T1]] 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker ; MM32: lw $[[T0:[0-9]+]], 28($sp) 152*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T1:[0-9]+]], $7, $[[T0]] 153*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T2:[0-9]+]], $[[T1]], $[[T0]] 154*9880d681SAndroid Build Coastguard Worker ; MM32: lw $[[T3:[0-9]+]], 24($sp) 155*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T4:[0-9]+]], $[[T2]], $[[T3]] 156*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T5:[0-9]+]], $6, $[[T4]] 157*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T6:[0-9]+]], $[[T5]], $[[T3]] 158*9880d681SAndroid Build Coastguard Worker ; MM32: lw $[[T7:[0-9]+]], 20($sp) 159*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T8:[0-9]+]], $[[T6]], $[[T7]] 160*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T9:[0-9]+]], $5, $[[T8]] 161*9880d681SAndroid Build Coastguard Worker ; MM32: lw $[[T10:[0-9]+]], 16($sp) 162*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T11:[0-9]+]], $[[T9]], $[[T7]] 163*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T12:[0-9]+]], $[[T11]], $[[T10]] 164*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T13:[0-9]+]], $4, $[[T12]] 165*9880d681SAndroid Build Coastguard Worker ; MM32: move $4, $[[T5]] 166*9880d681SAndroid Build Coastguard Worker ; MM32: move $5, $[[T1]] 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $3, $5, $7 169*9880d681SAndroid Build Coastguard Worker ; MM64: sltu $[[T0:[0-9]+]], $3, $7 170*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $[[T1:[0-9]+]], $[[T0]], $6 171*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $2, $4, $[[T1]] 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker %r = add i128 %a, %b 174*9880d681SAndroid Build Coastguard Worker ret i128 %r 175*9880d681SAndroid Build Coastguard Worker} 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Workerdefine signext i1 @add_i1_4(i1 signext %a) { 178*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i1_4: 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Worker ; ALL: move $2, $4 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Worker %r = add i1 4, %a 183*9880d681SAndroid Build Coastguard Worker ret i1 %r 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdefine signext i8 @add_i8_4(i8 signext %a) { 187*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i8_4: 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0:[0-9]+]], $4, 24 190*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: lui $[[T1:[0-9]+]], 1024 191*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0]], $[[T0]], $[[T1]] 192*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 24 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker ; R2-R6: addiu $[[T0:[0-9]+]], $4, 4 195*9880d681SAndroid Build Coastguard Worker ; R2-R6: seb $2, $[[T0]] 196*9880d681SAndroid Build Coastguard Worker 197*9880d681SAndroid Build Coastguard Worker ; MM32: addiur2 $[[T0:[0-9]+]], $4, 4 198*9880d681SAndroid Build Coastguard Worker ; MM32: seb $2, $[[T0]] 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker ; MM64: addiur2 $[[T0:[0-9]+]], $4, 4 201*9880d681SAndroid Build Coastguard Worker ; MM64: seb $2, $[[T0]] 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Worker %r = add i8 4, %a 204*9880d681SAndroid Build Coastguard Worker ret i8 %r 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdefine signext i16 @add_i16_4(i16 signext %a) { 208*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i16_4: 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0:[0-9]+]], $4, 16 211*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: lui $[[T1:[0-9]+]], 4 212*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0]], $[[T0]], $[[T1]] 213*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 16 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker ; R2-R6: addiu $[[T0:[0-9]+]], $4, 4 216*9880d681SAndroid Build Coastguard Worker ; R2-R6: seh $2, $[[T0]] 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Worker ; MM32: addiur2 $[[T0:[0-9]+]], $4, 4 219*9880d681SAndroid Build Coastguard Worker ; MM32: seh $2, $[[T0]] 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker ; MM64: addiur2 $[[T0:[0-9]+]], $4, 4 222*9880d681SAndroid Build Coastguard Worker ; MM64: seh $2, $[[T0]] 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker %r = add i16 4, %a 225*9880d681SAndroid Build Coastguard Worker ret i16 %r 226*9880d681SAndroid Build Coastguard Worker} 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Workerdefine signext i32 @add_i32_4(i32 signext %a) { 229*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i32_4: 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $2, $4, 4 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker ; GP64: addiu $2, $4, 4 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Worker ; MM32: addiur2 $2, $4, 4 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker ; MM64: addiur2 $2, $4, 4 238*9880d681SAndroid Build Coastguard Worker 239*9880d681SAndroid Build Coastguard Worker %r = add i32 4, %a 240*9880d681SAndroid Build Coastguard Worker ret i32 %r 241*9880d681SAndroid Build Coastguard Worker} 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Workerdefine signext i64 @add_i64_4(i64 signext %a) { 244*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i64_4: 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T0:[0-9]+]], $5, 4 247*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T1:[0-9]+]], $zero, 4 248*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T0]], $[[T1]] 249*9880d681SAndroid Build Coastguard Worker ; GP32: addu $2, $4, $[[T1]] 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $2, $4, 4 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker ; MM32: addiu $[[T0:[0-9]+]], $5, 4 254*9880d681SAndroid Build Coastguard Worker ; MM32: li16 $[[T1:[0-9]+]], 4 255*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T2:[0-9]+]], $[[T0]], $[[T1]] 256*9880d681SAndroid Build Coastguard Worker ; MM32: addu $2, $4, $[[T2]] 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $2, $4, 4 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Worker %r = add i64 4, %a 261*9880d681SAndroid Build Coastguard Worker ret i64 %r 262*9880d681SAndroid Build Coastguard Worker} 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerdefine signext i128 @add_i128_4(i128 signext %a) { 265*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i128_4: 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T0:[0-9]+]], $7, 4 268*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T1:[0-9]+]], $zero, 4 269*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T0]], $[[T1]] 270*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T2:[0-9]+]], $6, $[[T1]] 271*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T2]], $zero 272*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T3:[0-9]+]], $5, $[[T1]] 273*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T3]], $zero 274*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T1]], $4, $[[T1]] 275*9880d681SAndroid Build Coastguard Worker ; GP32: move $4, $[[T2]] 276*9880d681SAndroid Build Coastguard Worker ; GP32: move $5, $[[T0]] 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $[[T0:[0-9]+]], $5, 4 279*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $[[T1:[0-9]+]], $zero, 4 280*9880d681SAndroid Build Coastguard Worker ; GP64: sltu $[[T1]], $[[T0]], $[[T1]] 281*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $2, $4, $[[T1]] 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Worker ; MM32: addiu $[[T0:[0-9]+]], $7, 4 284*9880d681SAndroid Build Coastguard Worker ; MM32: li16 $[[T1:[0-9]+]], 4 285*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T1]], $[[T0]], $[[T1]] 286*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T2:[0-9]+]], $6, $[[T1]] 287*9880d681SAndroid Build Coastguard Worker ; MM32: lui $[[T1]], 0 288*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T3:[0-9]+]], $[[T2]], $[[T1]] 289*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T3]], $5, $[[T3]] 290*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T1]], $[[T3]], $[[T1]] 291*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T1]], $4, $[[T1]] 292*9880d681SAndroid Build Coastguard Worker ; MM32: move $4, $[[T2]] 293*9880d681SAndroid Build Coastguard Worker ; MM32: move $5, $[[T0]] 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $[[T0:[0-9]+]], $5, 4 296*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $[[T1:[0-9]+]], $zero, 4 297*9880d681SAndroid Build Coastguard Worker ; MM64: sltu $[[T1]], $[[T0]], $[[T1]] 298*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $2, $4, $[[T1]] 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Worker %r = add i128 4, %a 301*9880d681SAndroid Build Coastguard Worker ret i128 %r 302*9880d681SAndroid Build Coastguard Worker} 303*9880d681SAndroid Build Coastguard Worker 304*9880d681SAndroid Build Coastguard Workerdefine signext i1 @add_i1_3(i1 signext %a) { 305*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i1_3: 306*9880d681SAndroid Build Coastguard Worker 307*9880d681SAndroid Build Coastguard Worker ; ALL: sll $[[T0:[0-9]+]], $4, 31 308*9880d681SAndroid Build Coastguard Worker ; ALL: lui $[[T1:[0-9]+]], 32768 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T0]], $[[T0]], $[[T1]] 311*9880d681SAndroid Build Coastguard Worker ; GP32: sra $[[T1]], $[[T0]], 31 312*9880d681SAndroid Build Coastguard Worker 313*9880d681SAndroid Build Coastguard Worker ; GP64: addu $[[T0]], $[[T0]], $[[T1]] 314*9880d681SAndroid Build Coastguard Worker ; GP64: sra $[[T1]], $[[T0]], 31 315*9880d681SAndroid Build Coastguard Worker 316*9880d681SAndroid Build Coastguard Worker ; MMR6: addu16 $[[T0]], $[[T0]], $[[T1]] 317*9880d681SAndroid Build Coastguard Worker ; MMR6: sra $[[T0]], $[[T0]], 31 318*9880d681SAndroid Build Coastguard Worker 319*9880d681SAndroid Build Coastguard Worker %r = add i1 3, %a 320*9880d681SAndroid Build Coastguard Worker ret i1 %r 321*9880d681SAndroid Build Coastguard Worker} 322*9880d681SAndroid Build Coastguard Worker 323*9880d681SAndroid Build Coastguard Workerdefine signext i8 @add_i8_3(i8 signext %a) { 324*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i8_3: 325*9880d681SAndroid Build Coastguard Worker 326*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0:[0-9]+]], $4, 24 327*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: lui $[[T1:[0-9]+]], 768 328*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0]], $[[T0]], $[[T1]] 329*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 24 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Worker ; R2-R6: addiu $[[T0:[0-9]+]], $4, 3 332*9880d681SAndroid Build Coastguard Worker ; R2-R6: seb $2, $[[T0]] 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Worker ; MMR6: addius5 $[[T0:[0-9]+]], 3 335*9880d681SAndroid Build Coastguard Worker ; MMR6: seb $2, $[[T0]] 336*9880d681SAndroid Build Coastguard Worker 337*9880d681SAndroid Build Coastguard Worker %r = add i8 3, %a 338*9880d681SAndroid Build Coastguard Worker ret i8 %r 339*9880d681SAndroid Build Coastguard Worker} 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Workerdefine signext i16 @add_i16_3(i16 signext %a) { 342*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i16_3: 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sll $[[T0:[0-9]+]], $4, 16 345*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: lui $[[T1:[0-9]+]], 3 346*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addu $[[T0]], $[[T0]], $[[T1]] 347*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: sra $2, $[[T0]], 16 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker ; R2-R6: addiu $[[T0:[0-9]+]], $4, 3 350*9880d681SAndroid Build Coastguard Worker ; R2-R6: seh $2, $[[T0]] 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Worker ; MMR6: addius5 $[[T0:[0-9]+]], 3 353*9880d681SAndroid Build Coastguard Worker ; MMR6: seh $2, $[[T0]] 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Worker %r = add i16 3, %a 356*9880d681SAndroid Build Coastguard Worker ret i16 %r 357*9880d681SAndroid Build Coastguard Worker} 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Workerdefine signext i32 @add_i32_3(i32 signext %a) { 360*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i32_3: 361*9880d681SAndroid Build Coastguard Worker 362*9880d681SAndroid Build Coastguard Worker ; NOT-R2-R6: addiu $2, $4, 3 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Worker ; R2-R6: addiu $2, $4, 3 365*9880d681SAndroid Build Coastguard Worker 366*9880d681SAndroid Build Coastguard Worker ; MMR6: addius5 $[[T0:[0-9]+]], 3 367*9880d681SAndroid Build Coastguard Worker ; MMR6: move $2, $[[T0]] 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Worker %r = add i32 3, %a 370*9880d681SAndroid Build Coastguard Worker ret i32 %r 371*9880d681SAndroid Build Coastguard Worker} 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Workerdefine signext i64 @add_i64_3(i64 signext %a) { 374*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i64_3: 375*9880d681SAndroid Build Coastguard Worker 376*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T0:[0-9]+]], $5, 3 377*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T1:[0-9]+]], $zero, 3 378*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T0]], $[[T1]] 379*9880d681SAndroid Build Coastguard Worker ; GP32: addu $2, $4, $[[T1]] 380*9880d681SAndroid Build Coastguard Worker 381*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $2, $4, 3 382*9880d681SAndroid Build Coastguard Worker 383*9880d681SAndroid Build Coastguard Worker ; MM32: addiu $[[T0:[0-9]+]], $5, 3 384*9880d681SAndroid Build Coastguard Worker ; MM32: li16 $[[T1:[0-9]+]], 3 385*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T2:[0-9]+]], $[[T0]], $[[T1]] 386*9880d681SAndroid Build Coastguard Worker ; MM32: addu $2, $4, $[[T2]] 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $2, $4, 3 389*9880d681SAndroid Build Coastguard Worker 390*9880d681SAndroid Build Coastguard Worker %r = add i64 3, %a 391*9880d681SAndroid Build Coastguard Worker ret i64 %r 392*9880d681SAndroid Build Coastguard Worker} 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Workerdefine signext i128 @add_i128_3(i128 signext %a) { 395*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: add_i128_3: 396*9880d681SAndroid Build Coastguard Worker 397*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T0:[0-9]+]], $7, 3 398*9880d681SAndroid Build Coastguard Worker ; GP32: addiu $[[T1:[0-9]+]], $zero, 3 399*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T1]], $[[T0]], $[[T1]] 400*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T2:[0-9]+]], $6, $[[T1]] 401*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T3:[0-9]+]], $[[T2]], $zero 402*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T4:[0-9]+]], $5, $[[T3]] 403*9880d681SAndroid Build Coastguard Worker ; GP32: sltu $[[T5:[0-9]+]], $[[T4]], $zero 404*9880d681SAndroid Build Coastguard Worker ; GP32: addu $[[T5]], $4, $[[T5]] 405*9880d681SAndroid Build Coastguard Worker ; GP32: move $4, $[[T2]] 406*9880d681SAndroid Build Coastguard Worker ; GP32: move $5, $[[T0]] 407*9880d681SAndroid Build Coastguard Worker 408*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $[[T0:[0-9]+]], $5, 3 409*9880d681SAndroid Build Coastguard Worker ; GP64: daddiu $[[T1:[0-9]+]], $zero, 3 410*9880d681SAndroid Build Coastguard Worker ; GP64: sltu $[[T1]], $[[T0]], $[[T1]] 411*9880d681SAndroid Build Coastguard Worker ; GP64: daddu $2, $4, $[[T1]] 412*9880d681SAndroid Build Coastguard Worker 413*9880d681SAndroid Build Coastguard Worker ; MM32: addiu $[[T0:[0-9]+]], $7, 3 414*9880d681SAndroid Build Coastguard Worker ; MM32: li16 $[[T1:[0-9]+]], 3 415*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T1]], $[[T0]], $[[T1]] 416*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T2:[0-9]+]], $6, $[[T1]] 417*9880d681SAndroid Build Coastguard Worker ; MM32: lui $[[T3:[0-9]+]], 0 418*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T4:[0-9]+]], $[[T2]], $[[T3]] 419*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T4]], $5, $[[T4]] 420*9880d681SAndroid Build Coastguard Worker ; MM32: sltu $[[T5:[0-9]+]], $[[T4]], $[[T3]] 421*9880d681SAndroid Build Coastguard Worker ; MM32: addu $[[T5]], $4, $[[T5]] 422*9880d681SAndroid Build Coastguard Worker ; MM32: move $4, $[[T2]] 423*9880d681SAndroid Build Coastguard Worker ; MM32: move $5, $[[T0]] 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $[[T0:[0-9]+]], $5, 3 426*9880d681SAndroid Build Coastguard Worker ; MM64: daddiu $[[T1:[0-9]+]], $zero, 3 427*9880d681SAndroid Build Coastguard Worker ; MM64: sltu $[[T1]], $[[T0]], $[[T1]] 428*9880d681SAndroid Build Coastguard Worker ; MM64: daddu $2, $4, $[[T1]] 429*9880d681SAndroid Build Coastguard Worker 430*9880d681SAndroid Build Coastguard Worker %r = add i128 3, %a 431*9880d681SAndroid Build Coastguard Worker ret i128 %r 432*9880d681SAndroid Build Coastguard Worker} 433