1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips2 | FileCheck %s -check-prefix=MIPS 3; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32 | FileCheck %s -check-prefix=MIPS 4; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r2 | FileCheck %s \ 5; RUN: -check-prefix=MIPS32R2 6; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 | FileCheck %s \ 7; RUN: -check-prefix=MIPS32R2 8; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r5 | FileCheck %s \ 9; RUN: -check-prefix=MIPS32R2 10; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 | FileCheck %s \ 11; RUN: -check-prefix=MIPS32R6 12; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips3 | FileCheck %s \ 13; RUN: -check-prefix=MIPS64 14; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips4 | FileCheck %s \ 15; RUN: -check-prefix=MIPS64 16; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64 | FileCheck %s \ 17; RUN: -check-prefix=MIPS64 18; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r2 | FileCheck %s \ 19; RUN: -check-prefix=MIPS64R2 20; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r3 | FileCheck %s \ 21; RUN: -check-prefix=MIPS64R2 22; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r5 | FileCheck %s \ 23; RUN: -check-prefix=MIPS64R2 24; RUN: llc < %s -mtriple=mips64-unknown-linux-gnu -mcpu=mips64r6 | FileCheck %s \ 25; RUN: -check-prefix=MIPS64R6 26; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r3 -mattr=+micromips | FileCheck %s \ 27; RUN: -check-prefix=MM32R3 28; RUN: llc < %s -mtriple=mips-unknown-linux-gnu -mcpu=mips32r6 -mattr=+micromips | FileCheck %s \ 29; RUN: -check-prefix=MM32R6 30 31define signext i1 @xor_i1(i1 signext %a, i1 signext %b) { 32; MIPS-LABEL: xor_i1: 33; MIPS: # %bb.0: # %entry 34; MIPS-NEXT: jr $ra 35; MIPS-NEXT: xor $2, $4, $5 36; 37; MIPS32R2-LABEL: xor_i1: 38; MIPS32R2: # %bb.0: # %entry 39; MIPS32R2-NEXT: jr $ra 40; MIPS32R2-NEXT: xor $2, $4, $5 41; 42; MIPS32R6-LABEL: xor_i1: 43; MIPS32R6: # %bb.0: # %entry 44; MIPS32R6-NEXT: jr $ra 45; MIPS32R6-NEXT: xor $2, $4, $5 46; 47; MIPS64-LABEL: xor_i1: 48; MIPS64: # %bb.0: # %entry 49; MIPS64-NEXT: xor $1, $4, $5 50; MIPS64-NEXT: jr $ra 51; MIPS64-NEXT: sll $2, $1, 0 52; 53; MIPS64R2-LABEL: xor_i1: 54; MIPS64R2: # %bb.0: # %entry 55; MIPS64R2-NEXT: xor $1, $4, $5 56; MIPS64R2-NEXT: jr $ra 57; MIPS64R2-NEXT: sll $2, $1, 0 58; 59; MIPS64R6-LABEL: xor_i1: 60; MIPS64R6: # %bb.0: # %entry 61; MIPS64R6-NEXT: xor $1, $4, $5 62; MIPS64R6-NEXT: jr $ra 63; MIPS64R6-NEXT: sll $2, $1, 0 64; 65; MM32R3-LABEL: xor_i1: 66; MM32R3: # %bb.0: # %entry 67; MM32R3-NEXT: xor16 $4, $5 68; MM32R3-NEXT: move $2, $4 69; MM32R3-NEXT: jrc $ra 70; 71; MM32R6-LABEL: xor_i1: 72; MM32R6: # %bb.0: # %entry 73; MM32R6-NEXT: xor $2, $4, $5 74; MM32R6-NEXT: jrc $ra 75entry: 76 %r = xor i1 %a, %b 77 ret i1 %r 78} 79 80define signext i8 @xor_i8(i8 signext %a, i8 signext %b) { 81; MIPS-LABEL: xor_i8: 82; MIPS: # %bb.0: # %entry 83; MIPS-NEXT: jr $ra 84; MIPS-NEXT: xor $2, $4, $5 85; 86; MIPS32R2-LABEL: xor_i8: 87; MIPS32R2: # %bb.0: # %entry 88; MIPS32R2-NEXT: jr $ra 89; MIPS32R2-NEXT: xor $2, $4, $5 90; 91; MIPS32R6-LABEL: xor_i8: 92; MIPS32R6: # %bb.0: # %entry 93; MIPS32R6-NEXT: jr $ra 94; MIPS32R6-NEXT: xor $2, $4, $5 95; 96; MIPS64-LABEL: xor_i8: 97; MIPS64: # %bb.0: # %entry 98; MIPS64-NEXT: xor $1, $4, $5 99; MIPS64-NEXT: jr $ra 100; MIPS64-NEXT: sll $2, $1, 0 101; 102; MIPS64R2-LABEL: xor_i8: 103; MIPS64R2: # %bb.0: # %entry 104; MIPS64R2-NEXT: xor $1, $4, $5 105; MIPS64R2-NEXT: jr $ra 106; MIPS64R2-NEXT: sll $2, $1, 0 107; 108; MIPS64R6-LABEL: xor_i8: 109; MIPS64R6: # %bb.0: # %entry 110; MIPS64R6-NEXT: xor $1, $4, $5 111; MIPS64R6-NEXT: jr $ra 112; MIPS64R6-NEXT: sll $2, $1, 0 113; 114; MM32R3-LABEL: xor_i8: 115; MM32R3: # %bb.0: # %entry 116; MM32R3-NEXT: xor16 $4, $5 117; MM32R3-NEXT: move $2, $4 118; MM32R3-NEXT: jrc $ra 119; 120; MM32R6-LABEL: xor_i8: 121; MM32R6: # %bb.0: # %entry 122; MM32R6-NEXT: xor $2, $4, $5 123; MM32R6-NEXT: jrc $ra 124entry: 125 %r = xor i8 %a, %b 126 ret i8 %r 127} 128 129define signext i16 @xor_i16(i16 signext %a, i16 signext %b) { 130; MIPS-LABEL: xor_i16: 131; MIPS: # %bb.0: # %entry 132; MIPS-NEXT: jr $ra 133; MIPS-NEXT: xor $2, $4, $5 134; 135; MIPS32R2-LABEL: xor_i16: 136; MIPS32R2: # %bb.0: # %entry 137; MIPS32R2-NEXT: jr $ra 138; MIPS32R2-NEXT: xor $2, $4, $5 139; 140; MIPS32R6-LABEL: xor_i16: 141; MIPS32R6: # %bb.0: # %entry 142; MIPS32R6-NEXT: jr $ra 143; MIPS32R6-NEXT: xor $2, $4, $5 144; 145; MIPS64-LABEL: xor_i16: 146; MIPS64: # %bb.0: # %entry 147; MIPS64-NEXT: xor $1, $4, $5 148; MIPS64-NEXT: jr $ra 149; MIPS64-NEXT: sll $2, $1, 0 150; 151; MIPS64R2-LABEL: xor_i16: 152; MIPS64R2: # %bb.0: # %entry 153; MIPS64R2-NEXT: xor $1, $4, $5 154; MIPS64R2-NEXT: jr $ra 155; MIPS64R2-NEXT: sll $2, $1, 0 156; 157; MIPS64R6-LABEL: xor_i16: 158; MIPS64R6: # %bb.0: # %entry 159; MIPS64R6-NEXT: xor $1, $4, $5 160; MIPS64R6-NEXT: jr $ra 161; MIPS64R6-NEXT: sll $2, $1, 0 162; 163; MM32R3-LABEL: xor_i16: 164; MM32R3: # %bb.0: # %entry 165; MM32R3-NEXT: xor16 $4, $5 166; MM32R3-NEXT: move $2, $4 167; MM32R3-NEXT: jrc $ra 168; 169; MM32R6-LABEL: xor_i16: 170; MM32R6: # %bb.0: # %entry 171; MM32R6-NEXT: xor $2, $4, $5 172; MM32R6-NEXT: jrc $ra 173entry: 174 %r = xor i16 %a, %b 175 ret i16 %r 176} 177 178define signext i32 @xor_i32(i32 signext %a, i32 signext %b) { 179; MIPS-LABEL: xor_i32: 180; MIPS: # %bb.0: # %entry 181; MIPS-NEXT: jr $ra 182; MIPS-NEXT: xor $2, $4, $5 183; 184; MIPS32R2-LABEL: xor_i32: 185; MIPS32R2: # %bb.0: # %entry 186; MIPS32R2-NEXT: jr $ra 187; MIPS32R2-NEXT: xor $2, $4, $5 188; 189; MIPS32R6-LABEL: xor_i32: 190; MIPS32R6: # %bb.0: # %entry 191; MIPS32R6-NEXT: jr $ra 192; MIPS32R6-NEXT: xor $2, $4, $5 193; 194; MIPS64-LABEL: xor_i32: 195; MIPS64: # %bb.0: # %entry 196; MIPS64-NEXT: jr $ra 197; MIPS64-NEXT: xor $2, $4, $5 198; 199; MIPS64R2-LABEL: xor_i32: 200; MIPS64R2: # %bb.0: # %entry 201; MIPS64R2-NEXT: jr $ra 202; MIPS64R2-NEXT: xor $2, $4, $5 203; 204; MIPS64R6-LABEL: xor_i32: 205; MIPS64R6: # %bb.0: # %entry 206; MIPS64R6-NEXT: jr $ra 207; MIPS64R6-NEXT: xor $2, $4, $5 208; 209; MM32R3-LABEL: xor_i32: 210; MM32R3: # %bb.0: # %entry 211; MM32R3-NEXT: xor16 $4, $5 212; MM32R3-NEXT: move $2, $4 213; MM32R3-NEXT: jrc $ra 214; 215; MM32R6-LABEL: xor_i32: 216; MM32R6: # %bb.0: # %entry 217; MM32R6-NEXT: xor $2, $4, $5 218; MM32R6-NEXT: jrc $ra 219entry: 220 %r = xor i32 %a, %b 221 ret i32 %r 222} 223 224define signext i64 @xor_i64(i64 signext %a, i64 signext %b) { 225; MIPS-LABEL: xor_i64: 226; MIPS: # %bb.0: # %entry 227; MIPS-NEXT: xor $2, $4, $6 228; MIPS-NEXT: jr $ra 229; MIPS-NEXT: xor $3, $5, $7 230; 231; MIPS32R2-LABEL: xor_i64: 232; MIPS32R2: # %bb.0: # %entry 233; MIPS32R2-NEXT: xor $2, $4, $6 234; MIPS32R2-NEXT: jr $ra 235; MIPS32R2-NEXT: xor $3, $5, $7 236; 237; MIPS32R6-LABEL: xor_i64: 238; MIPS32R6: # %bb.0: # %entry 239; MIPS32R6-NEXT: xor $2, $4, $6 240; MIPS32R6-NEXT: jr $ra 241; MIPS32R6-NEXT: xor $3, $5, $7 242; 243; MIPS64-LABEL: xor_i64: 244; MIPS64: # %bb.0: # %entry 245; MIPS64-NEXT: jr $ra 246; MIPS64-NEXT: xor $2, $4, $5 247; 248; MIPS64R2-LABEL: xor_i64: 249; MIPS64R2: # %bb.0: # %entry 250; MIPS64R2-NEXT: jr $ra 251; MIPS64R2-NEXT: xor $2, $4, $5 252; 253; MIPS64R6-LABEL: xor_i64: 254; MIPS64R6: # %bb.0: # %entry 255; MIPS64R6-NEXT: jr $ra 256; MIPS64R6-NEXT: xor $2, $4, $5 257; 258; MM32R3-LABEL: xor_i64: 259; MM32R3: # %bb.0: # %entry 260; MM32R3-NEXT: xor16 $4, $6 261; MM32R3-NEXT: xor16 $5, $7 262; MM32R3-NEXT: move $2, $4 263; MM32R3-NEXT: move $3, $5 264; MM32R3-NEXT: jrc $ra 265; 266; MM32R6-LABEL: xor_i64: 267; MM32R6: # %bb.0: # %entry 268; MM32R6-NEXT: xor $2, $4, $6 269; MM32R6-NEXT: xor $3, $5, $7 270; MM32R6-NEXT: jrc $ra 271entry: 272 %r = xor i64 %a, %b 273 ret i64 %r 274} 275 276define signext i128 @xor_i128(i128 signext %a, i128 signext %b) { 277; MIPS-LABEL: xor_i128: 278; MIPS: # %bb.0: # %entry 279; MIPS-NEXT: lw $1, 20($sp) 280; MIPS-NEXT: lw $2, 16($sp) 281; MIPS-NEXT: xor $2, $4, $2 282; MIPS-NEXT: xor $3, $5, $1 283; MIPS-NEXT: lw $1, 24($sp) 284; MIPS-NEXT: xor $4, $6, $1 285; MIPS-NEXT: lw $1, 28($sp) 286; MIPS-NEXT: jr $ra 287; MIPS-NEXT: xor $5, $7, $1 288; 289; MIPS32R2-LABEL: xor_i128: 290; MIPS32R2: # %bb.0: # %entry 291; MIPS32R2-NEXT: lw $1, 20($sp) 292; MIPS32R2-NEXT: lw $2, 16($sp) 293; MIPS32R2-NEXT: xor $2, $4, $2 294; MIPS32R2-NEXT: xor $3, $5, $1 295; MIPS32R2-NEXT: lw $1, 24($sp) 296; MIPS32R2-NEXT: xor $4, $6, $1 297; MIPS32R2-NEXT: lw $1, 28($sp) 298; MIPS32R2-NEXT: jr $ra 299; MIPS32R2-NEXT: xor $5, $7, $1 300; 301; MIPS32R6-LABEL: xor_i128: 302; MIPS32R6: # %bb.0: # %entry 303; MIPS32R6-NEXT: lw $1, 20($sp) 304; MIPS32R6-NEXT: lw $2, 16($sp) 305; MIPS32R6-NEXT: xor $2, $4, $2 306; MIPS32R6-NEXT: xor $3, $5, $1 307; MIPS32R6-NEXT: lw $1, 24($sp) 308; MIPS32R6-NEXT: xor $4, $6, $1 309; MIPS32R6-NEXT: lw $1, 28($sp) 310; MIPS32R6-NEXT: jr $ra 311; MIPS32R6-NEXT: xor $5, $7, $1 312; 313; MIPS64-LABEL: xor_i128: 314; MIPS64: # %bb.0: # %entry 315; MIPS64-NEXT: xor $2, $4, $6 316; MIPS64-NEXT: jr $ra 317; MIPS64-NEXT: xor $3, $5, $7 318; 319; MIPS64R2-LABEL: xor_i128: 320; MIPS64R2: # %bb.0: # %entry 321; MIPS64R2-NEXT: xor $2, $4, $6 322; MIPS64R2-NEXT: jr $ra 323; MIPS64R2-NEXT: xor $3, $5, $7 324; 325; MIPS64R6-LABEL: xor_i128: 326; MIPS64R6: # %bb.0: # %entry 327; MIPS64R6-NEXT: xor $2, $4, $6 328; MIPS64R6-NEXT: jr $ra 329; MIPS64R6-NEXT: xor $3, $5, $7 330; 331; MM32R3-LABEL: xor_i128: 332; MM32R3: # %bb.0: # %entry 333; MM32R3-NEXT: lwp $2, 16($sp) 334; MM32R3-NEXT: xor16 $2, $4 335; MM32R3-NEXT: xor16 $3, $5 336; MM32R3-NEXT: lw $4, 24($sp) 337; MM32R3-NEXT: xor16 $4, $6 338; MM32R3-NEXT: lw $5, 28($sp) 339; MM32R3-NEXT: xor16 $5, $7 340; MM32R3-NEXT: jrc $ra 341; 342; MM32R6-LABEL: xor_i128: 343; MM32R6: # %bb.0: # %entry 344; MM32R6-NEXT: lw $1, 20($sp) 345; MM32R6-NEXT: lw $2, 16($sp) 346; MM32R6-NEXT: xor $2, $4, $2 347; MM32R6-NEXT: xor $3, $5, $1 348; MM32R6-NEXT: lw $1, 24($sp) 349; MM32R6-NEXT: xor $4, $6, $1 350; MM32R6-NEXT: lw $1, 28($sp) 351; MM32R6-NEXT: xor $5, $7, $1 352; MM32R6-NEXT: jrc $ra 353entry: 354 %r = xor i128 %a, %b 355 ret i128 %r 356} 357 358define signext i1 @xor_i1_4(i1 signext %b) { 359; MIPS-LABEL: xor_i1_4: 360; MIPS: # %bb.0: # %entry 361; MIPS-NEXT: jr $ra 362; MIPS-NEXT: move $2, $4 363; 364; MIPS32R2-LABEL: xor_i1_4: 365; MIPS32R2: # %bb.0: # %entry 366; MIPS32R2-NEXT: jr $ra 367; MIPS32R2-NEXT: move $2, $4 368; 369; MIPS32R6-LABEL: xor_i1_4: 370; MIPS32R6: # %bb.0: # %entry 371; MIPS32R6-NEXT: jr $ra 372; MIPS32R6-NEXT: move $2, $4 373; 374; MIPS64-LABEL: xor_i1_4: 375; MIPS64: # %bb.0: # %entry 376; MIPS64-NEXT: jr $ra 377; MIPS64-NEXT: move $2, $4 378; 379; MIPS64R2-LABEL: xor_i1_4: 380; MIPS64R2: # %bb.0: # %entry 381; MIPS64R2-NEXT: jr $ra 382; MIPS64R2-NEXT: move $2, $4 383; 384; MIPS64R6-LABEL: xor_i1_4: 385; MIPS64R6: # %bb.0: # %entry 386; MIPS64R6-NEXT: jr $ra 387; MIPS64R6-NEXT: move $2, $4 388; 389; MM32R3-LABEL: xor_i1_4: 390; MM32R3: # %bb.0: # %entry 391; MM32R3-NEXT: move $2, $4 392; MM32R3-NEXT: jrc $ra 393; 394; MM32R6-LABEL: xor_i1_4: 395; MM32R6: # %bb.0: # %entry 396; MM32R6-NEXT: move $2, $4 397; MM32R6-NEXT: jrc $ra 398entry: 399 %r = xor i1 4, %b 400 ret i1 %r 401} 402 403define signext i8 @xor_i8_4(i8 signext %b) { 404; MIPS-LABEL: xor_i8_4: 405; MIPS: # %bb.0: # %entry 406; MIPS-NEXT: jr $ra 407; MIPS-NEXT: xori $2, $4, 4 408; 409; MIPS32R2-LABEL: xor_i8_4: 410; MIPS32R2: # %bb.0: # %entry 411; MIPS32R2-NEXT: jr $ra 412; MIPS32R2-NEXT: xori $2, $4, 4 413; 414; MIPS32R6-LABEL: xor_i8_4: 415; MIPS32R6: # %bb.0: # %entry 416; MIPS32R6-NEXT: jr $ra 417; MIPS32R6-NEXT: xori $2, $4, 4 418; 419; MIPS64-LABEL: xor_i8_4: 420; MIPS64: # %bb.0: # %entry 421; MIPS64-NEXT: jr $ra 422; MIPS64-NEXT: xori $2, $4, 4 423; 424; MIPS64R2-LABEL: xor_i8_4: 425; MIPS64R2: # %bb.0: # %entry 426; MIPS64R2-NEXT: jr $ra 427; MIPS64R2-NEXT: xori $2, $4, 4 428; 429; MIPS64R6-LABEL: xor_i8_4: 430; MIPS64R6: # %bb.0: # %entry 431; MIPS64R6-NEXT: jr $ra 432; MIPS64R6-NEXT: xori $2, $4, 4 433; 434; MM32R3-LABEL: xor_i8_4: 435; MM32R3: # %bb.0: # %entry 436; MM32R3-NEXT: jr $ra 437; MM32R3-NEXT: xori $2, $4, 4 438; 439; MM32R6-LABEL: xor_i8_4: 440; MM32R6: # %bb.0: # %entry 441; MM32R6-NEXT: xori $2, $4, 4 442; MM32R6-NEXT: jrc $ra 443entry: 444 %r = xor i8 4, %b 445 ret i8 %r 446} 447 448define signext i16 @xor_i16_4(i16 signext %b) { 449; MIPS-LABEL: xor_i16_4: 450; MIPS: # %bb.0: # %entry 451; MIPS-NEXT: jr $ra 452; MIPS-NEXT: xori $2, $4, 4 453; 454; MIPS32R2-LABEL: xor_i16_4: 455; MIPS32R2: # %bb.0: # %entry 456; MIPS32R2-NEXT: jr $ra 457; MIPS32R2-NEXT: xori $2, $4, 4 458; 459; MIPS32R6-LABEL: xor_i16_4: 460; MIPS32R6: # %bb.0: # %entry 461; MIPS32R6-NEXT: jr $ra 462; MIPS32R6-NEXT: xori $2, $4, 4 463; 464; MIPS64-LABEL: xor_i16_4: 465; MIPS64: # %bb.0: # %entry 466; MIPS64-NEXT: jr $ra 467; MIPS64-NEXT: xori $2, $4, 4 468; 469; MIPS64R2-LABEL: xor_i16_4: 470; MIPS64R2: # %bb.0: # %entry 471; MIPS64R2-NEXT: jr $ra 472; MIPS64R2-NEXT: xori $2, $4, 4 473; 474; MIPS64R6-LABEL: xor_i16_4: 475; MIPS64R6: # %bb.0: # %entry 476; MIPS64R6-NEXT: jr $ra 477; MIPS64R6-NEXT: xori $2, $4, 4 478; 479; MM32R3-LABEL: xor_i16_4: 480; MM32R3: # %bb.0: # %entry 481; MM32R3-NEXT: jr $ra 482; MM32R3-NEXT: xori $2, $4, 4 483; 484; MM32R6-LABEL: xor_i16_4: 485; MM32R6: # %bb.0: # %entry 486; MM32R6-NEXT: xori $2, $4, 4 487; MM32R6-NEXT: jrc $ra 488entry: 489 %r = xor i16 4, %b 490 ret i16 %r 491} 492 493define signext i32 @xor_i32_4(i32 signext %b) { 494; MIPS-LABEL: xor_i32_4: 495; MIPS: # %bb.0: # %entry 496; MIPS-NEXT: jr $ra 497; MIPS-NEXT: xori $2, $4, 4 498; 499; MIPS32R2-LABEL: xor_i32_4: 500; MIPS32R2: # %bb.0: # %entry 501; MIPS32R2-NEXT: jr $ra 502; MIPS32R2-NEXT: xori $2, $4, 4 503; 504; MIPS32R6-LABEL: xor_i32_4: 505; MIPS32R6: # %bb.0: # %entry 506; MIPS32R6-NEXT: jr $ra 507; MIPS32R6-NEXT: xori $2, $4, 4 508; 509; MIPS64-LABEL: xor_i32_4: 510; MIPS64: # %bb.0: # %entry 511; MIPS64-NEXT: xori $1, $4, 4 512; MIPS64-NEXT: jr $ra 513; MIPS64-NEXT: sll $2, $1, 0 514; 515; MIPS64R2-LABEL: xor_i32_4: 516; MIPS64R2: # %bb.0: # %entry 517; MIPS64R2-NEXT: xori $1, $4, 4 518; MIPS64R2-NEXT: jr $ra 519; MIPS64R2-NEXT: sll $2, $1, 0 520; 521; MIPS64R6-LABEL: xor_i32_4: 522; MIPS64R6: # %bb.0: # %entry 523; MIPS64R6-NEXT: xori $1, $4, 4 524; MIPS64R6-NEXT: jr $ra 525; MIPS64R6-NEXT: sll $2, $1, 0 526; 527; MM32R3-LABEL: xor_i32_4: 528; MM32R3: # %bb.0: # %entry 529; MM32R3-NEXT: jr $ra 530; MM32R3-NEXT: xori $2, $4, 4 531; 532; MM32R6-LABEL: xor_i32_4: 533; MM32R6: # %bb.0: # %entry 534; MM32R6-NEXT: xori $2, $4, 4 535; MM32R6-NEXT: jrc $ra 536entry: 537 %r = xor i32 4, %b 538 ret i32 %r 539} 540 541define signext i64 @xor_i64_4(i64 signext %b) { 542; MIPS-LABEL: xor_i64_4: 543; MIPS: # %bb.0: # %entry 544; MIPS-NEXT: xori $3, $5, 4 545; MIPS-NEXT: jr $ra 546; MIPS-NEXT: move $2, $4 547; 548; MIPS32R2-LABEL: xor_i64_4: 549; MIPS32R2: # %bb.0: # %entry 550; MIPS32R2-NEXT: xori $3, $5, 4 551; MIPS32R2-NEXT: jr $ra 552; MIPS32R2-NEXT: move $2, $4 553; 554; MIPS32R6-LABEL: xor_i64_4: 555; MIPS32R6: # %bb.0: # %entry 556; MIPS32R6-NEXT: xori $3, $5, 4 557; MIPS32R6-NEXT: jr $ra 558; MIPS32R6-NEXT: move $2, $4 559; 560; MIPS64-LABEL: xor_i64_4: 561; MIPS64: # %bb.0: # %entry 562; MIPS64-NEXT: jr $ra 563; MIPS64-NEXT: xori $2, $4, 4 564; 565; MIPS64R2-LABEL: xor_i64_4: 566; MIPS64R2: # %bb.0: # %entry 567; MIPS64R2-NEXT: jr $ra 568; MIPS64R2-NEXT: xori $2, $4, 4 569; 570; MIPS64R6-LABEL: xor_i64_4: 571; MIPS64R6: # %bb.0: # %entry 572; MIPS64R6-NEXT: jr $ra 573; MIPS64R6-NEXT: xori $2, $4, 4 574; 575; MM32R3-LABEL: xor_i64_4: 576; MM32R3: # %bb.0: # %entry 577; MM32R3-NEXT: xori $3, $5, 4 578; MM32R3-NEXT: move $2, $4 579; MM32R3-NEXT: jrc $ra 580; 581; MM32R6-LABEL: xor_i64_4: 582; MM32R6: # %bb.0: # %entry 583; MM32R6-NEXT: xori $3, $5, 4 584; MM32R6-NEXT: move $2, $4 585; MM32R6-NEXT: jrc $ra 586entry: 587 %r = xor i64 4, %b 588 ret i64 %r 589} 590 591define signext i128 @xor_i128_4(i128 signext %b) { 592; MIPS-LABEL: xor_i128_4: 593; MIPS: # %bb.0: # %entry 594; MIPS-NEXT: xori $1, $7, 4 595; MIPS-NEXT: move $2, $4 596; MIPS-NEXT: move $3, $5 597; MIPS-NEXT: move $4, $6 598; MIPS-NEXT: jr $ra 599; MIPS-NEXT: move $5, $1 600; 601; MIPS32R2-LABEL: xor_i128_4: 602; MIPS32R2: # %bb.0: # %entry 603; MIPS32R2-NEXT: xori $1, $7, 4 604; MIPS32R2-NEXT: move $2, $4 605; MIPS32R2-NEXT: move $3, $5 606; MIPS32R2-NEXT: move $4, $6 607; MIPS32R2-NEXT: jr $ra 608; MIPS32R2-NEXT: move $5, $1 609; 610; MIPS32R6-LABEL: xor_i128_4: 611; MIPS32R6: # %bb.0: # %entry 612; MIPS32R6-NEXT: xori $1, $7, 4 613; MIPS32R6-NEXT: move $2, $4 614; MIPS32R6-NEXT: move $3, $5 615; MIPS32R6-NEXT: move $4, $6 616; MIPS32R6-NEXT: jr $ra 617; MIPS32R6-NEXT: move $5, $1 618; 619; MIPS64-LABEL: xor_i128_4: 620; MIPS64: # %bb.0: # %entry 621; MIPS64-NEXT: xori $3, $5, 4 622; MIPS64-NEXT: jr $ra 623; MIPS64-NEXT: move $2, $4 624; 625; MIPS64R2-LABEL: xor_i128_4: 626; MIPS64R2: # %bb.0: # %entry 627; MIPS64R2-NEXT: xori $3, $5, 4 628; MIPS64R2-NEXT: jr $ra 629; MIPS64R2-NEXT: move $2, $4 630; 631; MIPS64R6-LABEL: xor_i128_4: 632; MIPS64R6: # %bb.0: # %entry 633; MIPS64R6-NEXT: xori $3, $5, 4 634; MIPS64R6-NEXT: jr $ra 635; MIPS64R6-NEXT: move $2, $4 636; 637; MM32R3-LABEL: xor_i128_4: 638; MM32R3: # %bb.0: # %entry 639; MM32R3-NEXT: xori $1, $7, 4 640; MM32R3-NEXT: move $2, $4 641; MM32R3-NEXT: move $3, $5 642; MM32R3-NEXT: move $4, $6 643; MM32R3-NEXT: move $5, $1 644; MM32R3-NEXT: jrc $ra 645; 646; MM32R6-LABEL: xor_i128_4: 647; MM32R6: # %bb.0: # %entry 648; MM32R6-NEXT: xori $1, $7, 4 649; MM32R6-NEXT: move $2, $4 650; MM32R6-NEXT: move $3, $5 651; MM32R6-NEXT: move $4, $6 652; MM32R6-NEXT: move $5, $1 653; MM32R6-NEXT: jrc $ra 654entry: 655 %r = xor i128 4, %b 656 ret i128 %r 657} 658