brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.3 KiB · e572551 Raw
423 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -global-isel  -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS323 4define i1 @and_i1(i1 %a, i1 %b) {5; MIPS32-LABEL: and_i1:6; MIPS32:       # %bb.0: # %entry7; MIPS32-NEXT:    and $2, $5, $48; MIPS32-NEXT:    jr $ra9; MIPS32-NEXT:    nop10entry:11  %and = and i1 %b, %a12  ret i1 %and13}14 15define i8 @and_i8(i8 %a, i8 %b) {16; MIPS32-LABEL: and_i8:17; MIPS32:       # %bb.0: # %entry18; MIPS32-NEXT:    and $2, $5, $419; MIPS32-NEXT:    jr $ra20; MIPS32-NEXT:    nop21entry:22  %and = and i8 %b, %a23  ret i8 %and24}25 26define i16 @and_i16(i16 %a, i16 %b) {27; MIPS32-LABEL: and_i16:28; MIPS32:       # %bb.0: # %entry29; MIPS32-NEXT:    and $2, $5, $430; MIPS32-NEXT:    jr $ra31; MIPS32-NEXT:    nop32entry:33  %and = and i16 %b, %a34  ret i16 %and35}36 37define i32 @and_i32(i32 %a, i32 %b) {38; MIPS32-LABEL: and_i32:39; MIPS32:       # %bb.0: # %entry40; MIPS32-NEXT:    and $2, $5, $441; MIPS32-NEXT:    jr $ra42; MIPS32-NEXT:    nop43entry:44  %and = and i32 %b, %a45  ret i32 %and46}47 48define i64 @and_i64(i64 %a, i64 %b) {49; MIPS32-LABEL: and_i64:50; MIPS32:       # %bb.0: # %entry51; MIPS32-NEXT:    and $2, $6, $452; MIPS32-NEXT:    and $3, $7, $553; MIPS32-NEXT:    jr $ra54; MIPS32-NEXT:    nop55entry:56  %and = and i64 %b, %a57  ret i64 %and58}59 60define i32 @and_imm(i32 %a) {61; MIPS32-LABEL: and_imm:62; MIPS32:       # %bb.0: # %entry63; MIPS32-NEXT:    andi $2, $4, 25564; MIPS32-NEXT:    jr $ra65; MIPS32-NEXT:    nop66entry:67  %and = and i32 %a, 25568  ret i32 %and69}70 71define i32 @and_not_imm32ZExt16(i32 %a) {72; MIPS32-LABEL: and_not_imm32ZExt16:73; MIPS32:       # %bb.0: # %entry74; MIPS32-NEXT:    addiu $1, $zero, 6528075; MIPS32-NEXT:    and $2, $4, $176; MIPS32-NEXT:    jr $ra77; MIPS32-NEXT:    nop78entry:79  %and = and i32 %a, -25680  ret i32 %and81}82 83define i1 @or_i1(i1 %a, i1 %b) {84; MIPS32-LABEL: or_i1:85; MIPS32:       # %bb.0: # %entry86; MIPS32-NEXT:    or $2, $5, $487; MIPS32-NEXT:    jr $ra88; MIPS32-NEXT:    nop89entry:90  %or = or i1 %b, %a91  ret i1 %or92}93 94define i8 @or_i8(i8 %a, i8 %b) {95; MIPS32-LABEL: or_i8:96; MIPS32:       # %bb.0: # %entry97; MIPS32-NEXT:    or $2, $5, $498; MIPS32-NEXT:    jr $ra99; MIPS32-NEXT:    nop100entry:101  %or = or i8 %b, %a102  ret i8 %or103}104 105define i16 @or_i16(i16 %a, i16 %b) {106; MIPS32-LABEL: or_i16:107; MIPS32:       # %bb.0: # %entry108; MIPS32-NEXT:    or $2, $5, $4109; MIPS32-NEXT:    jr $ra110; MIPS32-NEXT:    nop111entry:112  %or = or i16 %b, %a113  ret i16 %or114}115 116define i32 @or_i32(i32 %a, i32 %b) {117; MIPS32-LABEL: or_i32:118; MIPS32:       # %bb.0: # %entry119; MIPS32-NEXT:    or $2, $5, $4120; MIPS32-NEXT:    jr $ra121; MIPS32-NEXT:    nop122entry:123  %or = or i32 %b, %a124  ret i32 %or125}126 127define i64 @or_i64(i64 %a, i64 %b) {128; MIPS32-LABEL: or_i64:129; MIPS32:       # %bb.0: # %entry130; MIPS32-NEXT:    or $2, $6, $4131; MIPS32-NEXT:    or $3, $7, $5132; MIPS32-NEXT:    jr $ra133; MIPS32-NEXT:    nop134entry:135  %or = or i64 %b, %a136  ret i64 %or137}138 139define i32 @or_imm(i32 %a) {140; MIPS32-LABEL: or_imm:141; MIPS32:       # %bb.0: # %entry142; MIPS32-NEXT:    ori $2, $4, 65535143; MIPS32-NEXT:    jr $ra144; MIPS32-NEXT:    nop145entry:146  %or = or i32 %a, 65535147  ret i32 %or148}149 150define i32 @or_not_imm32ZExt16(i32 %a) {151; MIPS32-LABEL: or_not_imm32ZExt16:152; MIPS32:       # %bb.0: # %entry153; MIPS32-NEXT:    lui $1, 1154; MIPS32-NEXT:    or $2, $4, $1155; MIPS32-NEXT:    jr $ra156; MIPS32-NEXT:    nop157entry:158  %or = or i32 %a, 65536159  ret i32 %or160}161 162define i1 @xor_i1(i1 %a, i1 %b) {163; MIPS32-LABEL: xor_i1:164; MIPS32:       # %bb.0: # %entry165; MIPS32-NEXT:    xor $2, $5, $4166; MIPS32-NEXT:    jr $ra167; MIPS32-NEXT:    nop168entry:169  %xor = xor i1 %b, %a170  ret i1 %xor171}172 173define i8 @xor_i8(i8 %a, i8 %b) {174; MIPS32-LABEL: xor_i8:175; MIPS32:       # %bb.0: # %entry176; MIPS32-NEXT:    xor $2, $5, $4177; MIPS32-NEXT:    jr $ra178; MIPS32-NEXT:    nop179entry:180  %xor = xor i8 %b, %a181  ret i8 %xor182}183 184define i16 @xor_i16(i16 %a, i16 %b) {185; MIPS32-LABEL: xor_i16:186; MIPS32:       # %bb.0: # %entry187; MIPS32-NEXT:    xor $2, $5, $4188; MIPS32-NEXT:    jr $ra189; MIPS32-NEXT:    nop190entry:191  %xor = xor i16 %b, %a192  ret i16 %xor193}194 195define i32 @xor_i32(i32 %a, i32 %b) {196; MIPS32-LABEL: xor_i32:197; MIPS32:       # %bb.0: # %entry198; MIPS32-NEXT:    xor $2, $5, $4199; MIPS32-NEXT:    jr $ra200; MIPS32-NEXT:    nop201entry:202  %xor = xor i32 %b, %a203  ret i32 %xor204}205 206define i64 @xor_i64(i64 %a, i64 %b) {207; MIPS32-LABEL: xor_i64:208; MIPS32:       # %bb.0: # %entry209; MIPS32-NEXT:    xor $2, $6, $4210; MIPS32-NEXT:    xor $3, $7, $5211; MIPS32-NEXT:    jr $ra212; MIPS32-NEXT:    nop213entry:214  %xor = xor i64 %b, %a215  ret i64 %xor216}217 218define i32 @xor_imm(i32 %a) {219; MIPS32-LABEL: xor_imm:220; MIPS32:       # %bb.0: # %entry221; MIPS32-NEXT:    xori $2, $4, 1222; MIPS32-NEXT:    jr $ra223; MIPS32-NEXT:    nop224entry:225  %xor = xor i32 %a, 1226  ret i32 %xor227}228 229define i32 @xor_not_imm32ZExt16(i32 %a) {230; MIPS32-LABEL: xor_not_imm32ZExt16:231; MIPS32:       # %bb.0: # %entry232; MIPS32-NEXT:    not $2, $4233; MIPS32-NEXT:    jr $ra234; MIPS32-NEXT:    nop235entry:236  %xor = xor i32 %a, -1237  ret i32 %xor238}239 240define i32 @shl(i32 %a) {241; MIPS32-LABEL: shl:242; MIPS32:       # %bb.0: # %entry243; MIPS32-NEXT:    sll $2, $4, 1244; MIPS32-NEXT:    jr $ra245; MIPS32-NEXT:    nop246entry:247  %shl = shl i32 %a, 1248  ret i32 %shl249}250 251define i32 @ashr(i32 %a) {252; MIPS32-LABEL: ashr:253; MIPS32:       # %bb.0: # %entry254; MIPS32-NEXT:    sra $2, $4, 1255; MIPS32-NEXT:    jr $ra256; MIPS32-NEXT:    nop257entry:258  %shr = ashr i32 %a, 1259  ret i32 %shr260}261 262define i32 @lshr(i32 %a) {263; MIPS32-LABEL: lshr:264; MIPS32:       # %bb.0: # %entry265; MIPS32-NEXT:    srl $2, $4, 1266; MIPS32-NEXT:    jr $ra267; MIPS32-NEXT:    nop268entry:269  %shr = lshr i32 %a, 1270  ret i32 %shr271}272 273define i32 @shlv(i32 %a, i32 %b) {274; MIPS32-LABEL: shlv:275; MIPS32:       # %bb.0: # %entry276; MIPS32-NEXT:    sllv $2, $4, $5277; MIPS32-NEXT:    jr $ra278; MIPS32-NEXT:    nop279entry:280  %shl = shl i32 %a, %b281  ret i32 %shl282}283 284define i32 @ashrv(i32 %a, i32 %b) {285; MIPS32-LABEL: ashrv:286; MIPS32:       # %bb.0: # %entry287; MIPS32-NEXT:    srav $2, $4, $5288; MIPS32-NEXT:    jr $ra289; MIPS32-NEXT:    nop290entry:291  %shr = ashr i32 %a, %b292  ret i32 %shr293}294 295define i32 @lshrv(i32 %a, i32 %b) {296; MIPS32-LABEL: lshrv:297; MIPS32:       # %bb.0: # %entry298; MIPS32-NEXT:    srlv $2, $4, $5299; MIPS32-NEXT:    jr $ra300; MIPS32-NEXT:    nop301entry:302  %shr = lshr i32 %a, %b303  ret i32 %shr304}305 306define  i16 @shl_i16(i16 %a) {307; MIPS32-LABEL: shl_i16:308; MIPS32:       # %bb.0: # %entry309; MIPS32-NEXT:    sll $2, $4, 2310; MIPS32-NEXT:    jr $ra311; MIPS32-NEXT:    nop312entry:313  %shl = shl i16 %a, 2314  ret i16 %shl315}316 317define i8 @ashr_i8(i8 %a) {318; MIPS32-LABEL: ashr_i8:319; MIPS32:       # %bb.0: # %entry320; MIPS32-NEXT:    sll $1, $4, 24321; MIPS32-NEXT:    sra $1, $1, 24322; MIPS32-NEXT:    sra $2, $1, 2323; MIPS32-NEXT:    jr $ra324; MIPS32-NEXT:    nop325entry:326  %0 = ashr i8 %a, 2327  ret i8 %0328}329 330define i16 @lshr_i16(i16 %a) {331; MIPS32-LABEL: lshr_i16:332; MIPS32:       # %bb.0: # %entry333; MIPS32-NEXT:    andi $1, $4, 65535334; MIPS32-NEXT:    srl $2, $1, 2335; MIPS32-NEXT:    jr $ra336; MIPS32-NEXT:    nop337entry:338  %0 = lshr i16 %a, 2339  ret i16 %0340}341 342define i64 @shl_i64(i64 %a, i64 %b) {343; MIPS32-LABEL: shl_i64:344; MIPS32:       # %bb.0: # %entry345; MIPS32-NEXT:    move $3, $4346; MIPS32-NEXT:    ori $4, $zero, 32347; MIPS32-NEXT:    subu $8, $6, $4348; MIPS32-NEXT:    subu $1, $4, $6349; MIPS32-NEXT:    ori $2, $zero, 0350; MIPS32-NEXT:    sltu $4, $6, $4351; MIPS32-NEXT:    sllv $7, $3, $6352; MIPS32-NEXT:    srlv $1, $3, $1353; MIPS32-NEXT:    sllv $9, $5, $6354; MIPS32-NEXT:    or $1, $1, $9355; MIPS32-NEXT:    sllv $3, $3, $8356; MIPS32-NEXT:    movn $2, $7, $4357; MIPS32-NEXT:    movn $3, $1, $4358; MIPS32-NEXT:    movz $3, $5, $6359; MIPS32-NEXT:    jr $ra360; MIPS32-NEXT:    nop361entry:362  %shl = shl i64 %a, %b363  ret i64 %shl364}365 366define i64 @ashl_i64(i64 %a, i64 %b) {367; MIPS32-LABEL: ashl_i64:368; MIPS32:       # %bb.0: # %entry369; MIPS32-NEXT:    addiu $sp, $sp, -8370; MIPS32-NEXT:    .cfi_def_cfa_offset 8371; MIPS32-NEXT:    sw $4, 4($sp) # 4-byte Folded Spill372; MIPS32-NEXT:    move $2, $5373; MIPS32-NEXT:    lw $5, 4($sp) # 4-byte Folded Reload374; MIPS32-NEXT:    ori $1, $zero, 32375; MIPS32-NEXT:    subu $8, $6, $1376; MIPS32-NEXT:    subu $7, $1, $6377; MIPS32-NEXT:    sltu $4, $6, $1378; MIPS32-NEXT:    srav $1, $2, $6379; MIPS32-NEXT:    srlv $3, $5, $6380; MIPS32-NEXT:    sllv $7, $2, $7381; MIPS32-NEXT:    or $7, $3, $7382; MIPS32-NEXT:    sra $3, $2, 31383; MIPS32-NEXT:    srav $2, $2, $8384; MIPS32-NEXT:    movn $2, $7, $4385; MIPS32-NEXT:    movz $2, $5, $6386; MIPS32-NEXT:    movn $3, $1, $4387; MIPS32-NEXT:    addiu $sp, $sp, 8388; MIPS32-NEXT:    jr $ra389; MIPS32-NEXT:    nop390entry:391  %shr = ashr i64 %a, %b392  ret i64 %shr393}394 395define i64 @lshr_i64(i64 %a, i64 %b) {396; MIPS32-LABEL: lshr_i64:397; MIPS32:       # %bb.0: # %entry398; MIPS32-NEXT:    addiu $sp, $sp, -8399; MIPS32-NEXT:    .cfi_def_cfa_offset 8400; MIPS32-NEXT:    sw $4, 4($sp) # 4-byte Folded Spill401; MIPS32-NEXT:    move $2, $5402; MIPS32-NEXT:    lw $5, 4($sp) # 4-byte Folded Reload403; MIPS32-NEXT:    ori $1, $zero, 32404; MIPS32-NEXT:    subu $8, $6, $1405; MIPS32-NEXT:    subu $9, $1, $6406; MIPS32-NEXT:    ori $3, $zero, 0407; MIPS32-NEXT:    sltu $4, $6, $1408; MIPS32-NEXT:    srlv $1, $2, $6409; MIPS32-NEXT:    srlv $7, $5, $6410; MIPS32-NEXT:    sllv $9, $2, $9411; MIPS32-NEXT:    or $7, $7, $9412; MIPS32-NEXT:    srlv $2, $2, $8413; MIPS32-NEXT:    movn $2, $7, $4414; MIPS32-NEXT:    movz $2, $5, $6415; MIPS32-NEXT:    movn $3, $1, $4416; MIPS32-NEXT:    addiu $sp, $sp, 8417; MIPS32-NEXT:    jr $ra418; MIPS32-NEXT:    nop419entry:420  %shr = lshr i64 %a, %b421  ret i64 %shr422}423