brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · 4fa5074 Raw
348 lines · plain
1; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips2 | FileCheck %s -check-prefixes=GP322; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 | FileCheck %s -check-prefixes=GP323; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r2 | FileCheck %s \4; RUN:    -check-prefixes=GP325; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 | FileCheck %s \6; RUN:    -check-prefixes=GP327; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 | FileCheck %s \8; RUN:    -check-prefixes=GP329; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 | FileCheck %s \10; RUN:    -check-prefixes=GP3211; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips3 | FileCheck %s \12; RUN:    -check-prefixes=GP6413; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips4 | FileCheck %s \14; RUN:    -check-prefixes=GP6415; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64 | FileCheck %s \16; RUN:    -check-prefixes=GP6417; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r2 | FileCheck %s \18; RUN:    -check-prefixes=GP6419; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r3 | FileCheck %s \20; RUN:    -check-prefixes=GP6421; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r5 | FileCheck %s \22; RUN:    -check-prefixes=GP6423; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r6 | FileCheck %s \24; RUN:    -check-prefixes=GP6425; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \26; RUN:    -check-prefixes=MM,MM32r327; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \28; RUN:    -check-prefixes=MM,MM32r629 30define signext i1 @not_i1(i1 signext %a) {31; GP32-LABEL: not_i1:32; GP32:       # %bb.0: # %entry33; GP32-NEXT:    jr $ra34; GP32-NEXT:    not $2, $435;36; GP64-LABEL: not_i1:37; GP64:       # %bb.0: # %entry38; GP64-NEXT:    jr $ra39; GP64-NEXT:    not $2, $440;41; MM-LABEL: not_i1:42; MM:       # %bb.0: # %entry43; MM-NEXT:    not16 $2, $444; MM-NEXT:    jrc $ra45entry:46  %r = xor i1 %a, -147  ret i1 %r48}49 50define signext i8 @not_i8(i8 signext %a) {51; GP32-LABEL: not_i8:52; GP32:       # %bb.0: # %entry53; GP32-NEXT:    jr $ra54; GP32-NEXT:    not $2, $455;56; GP64-LABEL: not_i8:57; GP64:       # %bb.0: # %entry58; GP64-NEXT:    jr $ra59; GP64-NEXT:    not $2, $460;61; MM-LABEL: not_i8:62; MM:       # %bb.0: # %entry63; MM-NEXT:    not16 $2, $464; MM-NEXT:    jrc $ra65entry:66  %r = xor i8 %a, -167  ret i8 %r68}69 70define signext i16 @not_i16(i16 signext %a) {71; GP32-LABEL: not_i16:72; GP32:       # %bb.0: # %entry73; GP32-NEXT:    jr $ra74; GP32-NEXT:    not $2, $475;76; GP64-LABEL: not_i16:77; GP64:       # %bb.0: # %entry78; GP64-NEXT:    jr $ra79; GP64-NEXT:    not $2, $480;81; MM-LABEL: not_i16:82; MM:       # %bb.0: # %entry83; MM-NEXT:    not16 $2, $484; MM-NEXT:    jrc $ra85entry:86  %r = xor i16 %a, -187  ret i16 %r88}89 90define signext i32 @not_i32(i32 signext %a) {91; GP32-LABEL: not_i32:92; GP32:       # %bb.0: # %entry93; GP32-NEXT:    jr $ra94; GP32-NEXT:    not $2, $495;96; GP64-LABEL: not_i32:97; GP64:       # %bb.0: # %entry98; GP64-NEXT:    daddiu $1, $zero, -199; GP64-NEXT:    jr $ra100; GP64-NEXT:    xor $2, $4, $1101;102; MM-LABEL: not_i32:103; MM:       # %bb.0: # %entry104; MM-NEXT:    not16 $2, $4105; MM-NEXT:    jrc $ra106entry:107  %r = xor i32 %a, -1108  ret i32 %r109}110 111define signext i64 @not_i64(i64 signext %a) {112; GP32-LABEL: not_i64:113; GP32:       # %bb.0: # %entry114; GP32-NEXT:    not $2, $4115; GP32-NEXT:    jr $ra116; GP32-NEXT:    not $3, $5117;118; GP64-LABEL: not_i64:119; GP64:       # %bb.0: # %entry120; GP64-NEXT:    daddiu $1, $zero, -1121; GP64-NEXT:    jr $ra122; GP64-NEXT:    xor $2, $4, $1123;124; MM-LABEL: not_i64:125; MM:       # %bb.0: # %entry126; MM-NEXT:    not16 $2, $4127; MM-NEXT:    not16 $3, $5128; MM-NEXT:    jrc $ra129entry:130  %r = xor i64 %a, -1131  ret i64 %r132}133 134define signext i128 @not_i128(i128 signext %a) {135; GP32-LABEL: not_i128:136; GP32:       # %bb.0: # %entry137; GP32-NEXT:    not $2, $4138; GP32-NEXT:    not $3, $5139; GP32-NEXT:    not $4, $6140; GP32-NEXT:    jr $ra141; GP32-NEXT:    not $5, $7142;143; GP64-LABEL: not_i128:144; GP64:       # %bb.0: # %entry145; GP64-NEXT:    daddiu $1, $zero, -1146; GP64-NEXT:    xor $2, $4, $1147; GP64-NEXT:    jr $ra148; GP64-NEXT:    xor $3, $5, $1149;150; MM-LABEL: not_i128:151; MM:       # %bb.0: # %entry152; MM-NEXT:    not16 $2, $4153; MM-NEXT:    not16 $3, $5154; MM-NEXT:    not16 $4, $6155; MM-NEXT:    not16 $5, $7156; MM-NEXT:    jrc $ra157entry:158  %r = xor i128 %a, -1159  ret i128 %r160}161 162define signext i1 @nor_i1(i1 signext %a, i1 signext %b) {163; GP32-LABEL: nor_i1:164; GP32:       # %bb.0: # %entry165; GP32-NEXT:    jr $ra166; GP32-NEXT:    nor $2, $5, $4167;168; GP64-LABEL: nor_i1:169; GP64:       # %bb.0: # %entry170; GP64-NEXT:    or $1, $5, $4171; GP64-NEXT:    sll $1, $1, 0172; GP64-NEXT:    jr $ra173; GP64-NEXT:    not $2, $1174;175; MM32r3-LABEL: nor_i1:176; MM32r3:       # %bb.0: # %entry177; MM32r3-NEXT:    jr $ra178; MM32r3-NEXT:    nor $2, $5, $4179;180; MM32r6-LABEL: nor_i1:181; MM32r6:       # %bb.0: # %entry182; MM32r6-NEXT:    nor $2, $5, $4183; MM32r6-NEXT:    jrc $ra184entry:185  %or = or i1 %b, %a186  %r = xor i1 %or, -1187  ret i1 %r188}189 190define signext i8 @nor_i8(i8 signext %a, i8 signext %b) {191; GP32-LABEL: nor_i8:192; GP32:       # %bb.0: # %entry193; GP32-NEXT:    jr $ra194; GP32-NEXT:    nor $2, $5, $4195;196; GP64-LABEL: nor_i8:197; GP64:       # %bb.0: # %entry198; GP64-NEXT:    or $1, $5, $4199; GP64-NEXT:    sll $1, $1, 0200; GP64-NEXT:    jr $ra201; GP64-NEXT:    not $2, $1202;203; MM32r3-LABEL: nor_i8:204; MM32r3:       # %bb.0: # %entry205; MM32r3-NEXT:    jr $ra206; MM32r3-NEXT:    nor $2, $5, $4207;208; MM32r6-LABEL: nor_i8:209; MM32r6:       # %bb.0: # %entry210; MM32r6-NEXT:    nor $2, $5, $4211; MM32r6-NEXT:    jrc $ra212entry:213  %or = or i8 %b, %a214  %r = xor i8 %or, -1215  ret i8 %r216}217 218define signext i16 @nor_i16(i16 signext %a, i16 signext %b) {219; GP32-LABEL: nor_i16:220; GP32:       # %bb.0: # %entry221; GP32-NEXT:    jr $ra222; GP32-NEXT:    nor $2, $5, $4223;224; GP64-LABEL: nor_i16:225; GP64:       # %bb.0: # %entry226; GP64-NEXT:    or $1, $5, $4227; GP64-NEXT:    sll $1, $1, 0228; GP64-NEXT:    jr $ra229; GP64-NEXT:    not $2, $1230;231; MM32r3-LABEL: nor_i16:232; MM32r3:       # %bb.0: # %entry233; MM32r3-NEXT:    jr $ra234; MM32r3-NEXT:    nor $2, $5, $4235;236; MM32r6-LABEL: nor_i16:237; MM32r6:       # %bb.0: # %entry238; MM32r6-NEXT:    nor $2, $5, $4239; MM32r6-NEXT:    jrc $ra240entry:241  %or = or i16 %b, %a242  %r = xor i16 %or, -1243  ret i16 %r244}245 246define signext i32 @nor_i32(i32 signext %a, i32 signext %b) {247; GP32-LABEL: nor_i32:248; GP32:       # %bb.0: # %entry249; GP32-NEXT:    jr $ra250; GP32-NEXT:    nor $2, $5, $4251;252; GP64-LABEL: nor_i32:253; GP64:       # %bb.0: # %entry254; GP64-NEXT:    jr $ra255; GP64-NEXT:    nor $2, $5, $4256;257; MM32r3-LABEL: nor_i32:258; MM32r3:       # %bb.0: # %entry259; MM32r3-NEXT:    jr $ra260; MM32r3-NEXT:    nor $2, $5, $4261;262; MM32r6-LABEL: nor_i32:263; MM32r6:       # %bb.0: # %entry264; MM32r6-NEXT:    nor $2, $5, $4265; MM32r6-NEXT:    jrc $ra266entry:267  %or = or i32 %b, %a268  %r = xor i32 %or, -1269  ret i32 %r270}271 272define signext i64 @nor_i64(i64 signext %a, i64 signext %b) {273; GP32-LABEL: nor_i64:274; GP32:       # %bb.0: # %entry275; GP32-NEXT:    nor $2, $6, $4276; GP32-NEXT:    jr $ra277; GP32-NEXT:    nor $3, $7, $5278;279; GP64-LABEL: nor_i64:280; GP64:       # %bb.0: # %entry281; GP64-NEXT:    jr $ra282; GP64-NEXT:    nor $2, $5, $4283;284; MM32r3-LABEL: nor_i64:285; MM32r3:       # %bb.0: # %entry286; MM32r3-NEXT:    nor $2, $6, $4287; MM32r3-NEXT:    jr $ra288; MM32r3-NEXT:    nor $3, $7, $5289;290; MM32r6-LABEL: nor_i64:291; MM32r6:       # %bb.0: # %entry292; MM32r6-NEXT:    nor $2, $6, $4293; MM32r6-NEXT:    nor $3, $7, $5294; MM32r6-NEXT:    jrc $ra295entry:296  %or = or i64 %b, %a297  %r = xor i64 %or, -1298  ret i64 %r299}300 301define signext i128 @nor_i128(i128 signext %a, i128 signext %b) {302; GP32-LABEL: nor_i128:303; GP32:       # %bb.0: # %entry304; GP32-NEXT:    lw $1, 20($sp)305; GP32-NEXT:    lw $2, 16($sp)306; GP32-NEXT:    nor $2, $2, $4307; GP32-NEXT:    nor $3, $1, $5308; GP32-NEXT:    lw $1, 24($sp)309; GP32-NEXT:    nor $4, $1, $6310; GP32-NEXT:    lw $1, 28($sp)311; GP32-NEXT:    jr $ra312; GP32-NEXT:    nor $5, $1, $7313;314; GP64-LABEL: nor_i128:315; GP64:       # %bb.0: # %entry316; GP64-NEXT:    nor $2, $6, $4317; GP64-NEXT:    jr $ra318; GP64-NEXT:    nor $3, $7, $5319;320; MM32r3-LABEL: nor_i128:321; MM32r3:       # %bb.0: # %entry322; MM32r3-NEXT:    lw $1, 20($sp)323; MM32r3-NEXT:    lw $2, 16($sp)324; MM32r3-NEXT:    nor $2, $2, $4325; MM32r3-NEXT:    nor $3, $1, $5326; MM32r3-NEXT:    lw $1, 24($sp)327; MM32r3-NEXT:    nor $4, $1, $6328; MM32r3-NEXT:    lw $1, 28($sp)329; MM32r3-NEXT:    jr $ra330; MM32r3-NEXT:    nor $5, $1, $7331;332; MM32r6-LABEL: nor_i128:333; MM32r6:       # %bb.0: # %entry334; MM32r6-NEXT:    lw $1, 20($sp)335; MM32r6-NEXT:    lw $2, 16($sp)336; MM32r6-NEXT:    nor $2, $2, $4337; MM32r6-NEXT:    nor $3, $1, $5338; MM32r6-NEXT:    lw $1, 24($sp)339; MM32r6-NEXT:    nor $4, $1, $6340; MM32r6-NEXT:    lw $1, 28($sp)341; MM32r6-NEXT:    nor $5, $1, $7342; MM32r6-NEXT:    jrc $ra343entry:344  %or = or i128 %b, %a345  %r = xor i128 %or, -1346  ret i128 %r347}348