1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=mips-elf -O0 -mcpu=mips32r2 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS 3; RUN: llc -mtriple=mips-elf -O0 -mcpu=mips32r6 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPSR6 4; RUN: llc -mtriple=mips-elf -O0 -mcpu=mips32r2 -mattr=+micromips -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MM 5; RUN: llc -mtriple=mips-elf -O0 -mcpu=mips32r6 -mattr=+micromips -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MMR6 6; RUN: llc -mtriple=mipsel-elf -O0 -mcpu=mips32 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS32 7; RUN: llc -mtriple=mipsel-elf -O0 -mcpu=mips32r2 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPSEL 8; RUN: llc -mtriple=mipsel-elf -O0 -mcpu=mips32r6 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPSELR6 9; RUN: llc -mtriple=mipsel-elf -O0 -mcpu=mips32r2 -mattr=+micromips -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MMEL 10; RUN: llc -mtriple=mipsel-elf -O0 -mcpu=mips32r6 -mattr=+micromips -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MMELR6 11; RUN: llc -mtriple=mips64-elf -O0 -mcpu=mips64r2 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS64 12; RUN: llc -mtriple=mips64-elf -O0 -mcpu=mips64r6 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS64R6 13; RUN: llc -mtriple=mips64el-elf -O0 -mcpu=mips64r2 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS64EL 14; RUN: llc -mtriple=mips64el-elf -O0 -mcpu=mips64r6 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=MIPS64ELR6 15 16define i32 @test_max_32(ptr nocapture %ptr, i32 signext %val) { 17; MIPS-LABEL: test_max_32: 18; MIPS: # %bb.0: # %entry 19; MIPS-NEXT: sync 20; MIPS-NEXT: $BB0_1: # %entry 21; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 22; MIPS-NEXT: ll $2, 0($4) 23; MIPS-NEXT: slt $3, $2, $5 24; MIPS-NEXT: move $1, $2 25; MIPS-NEXT: movn $1, $5, $3 26; MIPS-NEXT: sc $1, 0($4) 27; MIPS-NEXT: beqz $1, $BB0_1 28; MIPS-NEXT: nop 29; MIPS-NEXT: # %bb.2: # %entry 30; MIPS-NEXT: sync 31; MIPS-NEXT: jr $ra 32; MIPS-NEXT: nop 33; 34; MIPSR6-LABEL: test_max_32: 35; MIPSR6: # %bb.0: # %entry 36; MIPSR6-NEXT: sync 37; MIPSR6-NEXT: $BB0_1: # %entry 38; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 39; MIPSR6-NEXT: ll $2, 0($4) 40; MIPSR6-NEXT: slt $3, $2, $5 41; MIPSR6-NEXT: seleqz $1, $2, $3 42; MIPSR6-NEXT: selnez $3, $5, $3 43; MIPSR6-NEXT: or $1, $1, $3 44; MIPSR6-NEXT: sc $1, 0($4) 45; MIPSR6-NEXT: beqzc $1, $BB0_1 46; MIPSR6-NEXT: # %bb.2: # %entry 47; MIPSR6-NEXT: sync 48; MIPSR6-NEXT: jrc $ra 49; 50; MM-LABEL: test_max_32: 51; MM: # %bb.0: # %entry 52; MM-NEXT: sync 53; MM-NEXT: $BB0_1: # %entry 54; MM-NEXT: # =>This Inner Loop Header: Depth=1 55; MM-NEXT: ll $2, 0($4) 56; MM-NEXT: slt $3, $2, $5 57; MM-NEXT: or $1, $2, $zero 58; MM-NEXT: movn $1, $5, $3 59; MM-NEXT: sc $1, 0($4) 60; MM-NEXT: beqzc $1, $BB0_1 61; MM-NEXT: # %bb.2: # %entry 62; MM-NEXT: sync 63; MM-NEXT: jrc $ra 64; 65; MMR6-LABEL: test_max_32: 66; MMR6: # %bb.0: # %entry 67; MMR6-NEXT: sync 68; MMR6-NEXT: $BB0_1: # %entry 69; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 70; MMR6-NEXT: ll $2, 0($4) 71; MMR6-NEXT: slt $3, $2, $5 72; MMR6-NEXT: seleqz $1, $2, $3 73; MMR6-NEXT: selnez $3, $5, $3 74; MMR6-NEXT: or $1, $1, $3 75; MMR6-NEXT: sc $1, 0($4) 76; MMR6-NEXT: beqc $1, $zero, $BB0_1 77; MMR6-NEXT: # %bb.2: # %entry 78; MMR6-NEXT: sync 79; MMR6-NEXT: jrc $ra 80; 81; MIPS32-LABEL: test_max_32: 82; MIPS32: # %bb.0: # %entry 83; MIPS32-NEXT: sync 84; MIPS32-NEXT: $BB0_1: # %entry 85; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 86; MIPS32-NEXT: ll $2, 0($4) 87; MIPS32-NEXT: slt $3, $2, $5 88; MIPS32-NEXT: move $1, $2 89; MIPS32-NEXT: movn $1, $5, $3 90; MIPS32-NEXT: sc $1, 0($4) 91; MIPS32-NEXT: beqz $1, $BB0_1 92; MIPS32-NEXT: nop 93; MIPS32-NEXT: # %bb.2: # %entry 94; MIPS32-NEXT: sync 95; MIPS32-NEXT: jr $ra 96; MIPS32-NEXT: nop 97; 98; MIPSEL-LABEL: test_max_32: 99; MIPSEL: # %bb.0: # %entry 100; MIPSEL-NEXT: sync 101; MIPSEL-NEXT: $BB0_1: # %entry 102; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 103; MIPSEL-NEXT: ll $2, 0($4) 104; MIPSEL-NEXT: slt $3, $2, $5 105; MIPSEL-NEXT: move $1, $2 106; MIPSEL-NEXT: movn $1, $5, $3 107; MIPSEL-NEXT: sc $1, 0($4) 108; MIPSEL-NEXT: beqz $1, $BB0_1 109; MIPSEL-NEXT: nop 110; MIPSEL-NEXT: # %bb.2: # %entry 111; MIPSEL-NEXT: sync 112; MIPSEL-NEXT: jr $ra 113; MIPSEL-NEXT: nop 114; 115; MIPSELR6-LABEL: test_max_32: 116; MIPSELR6: # %bb.0: # %entry 117; MIPSELR6-NEXT: sync 118; MIPSELR6-NEXT: $BB0_1: # %entry 119; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 120; MIPSELR6-NEXT: ll $2, 0($4) 121; MIPSELR6-NEXT: slt $3, $2, $5 122; MIPSELR6-NEXT: seleqz $1, $2, $3 123; MIPSELR6-NEXT: selnez $3, $5, $3 124; MIPSELR6-NEXT: or $1, $1, $3 125; MIPSELR6-NEXT: sc $1, 0($4) 126; MIPSELR6-NEXT: beqzc $1, $BB0_1 127; MIPSELR6-NEXT: # %bb.2: # %entry 128; MIPSELR6-NEXT: sync 129; MIPSELR6-NEXT: jrc $ra 130; 131; MMEL-LABEL: test_max_32: 132; MMEL: # %bb.0: # %entry 133; MMEL-NEXT: sync 134; MMEL-NEXT: $BB0_1: # %entry 135; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 136; MMEL-NEXT: ll $2, 0($4) 137; MMEL-NEXT: slt $3, $2, $5 138; MMEL-NEXT: or $1, $2, $zero 139; MMEL-NEXT: movn $1, $5, $3 140; MMEL-NEXT: sc $1, 0($4) 141; MMEL-NEXT: beqzc $1, $BB0_1 142; MMEL-NEXT: # %bb.2: # %entry 143; MMEL-NEXT: sync 144; MMEL-NEXT: jrc $ra 145; 146; MMELR6-LABEL: test_max_32: 147; MMELR6: # %bb.0: # %entry 148; MMELR6-NEXT: sync 149; MMELR6-NEXT: $BB0_1: # %entry 150; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 151; MMELR6-NEXT: ll $2, 0($4) 152; MMELR6-NEXT: slt $3, $2, $5 153; MMELR6-NEXT: seleqz $1, $2, $3 154; MMELR6-NEXT: selnez $3, $5, $3 155; MMELR6-NEXT: or $1, $1, $3 156; MMELR6-NEXT: sc $1, 0($4) 157; MMELR6-NEXT: beqc $1, $zero, $BB0_1 158; MMELR6-NEXT: # %bb.2: # %entry 159; MMELR6-NEXT: sync 160; MMELR6-NEXT: jrc $ra 161; 162; MIPS64-LABEL: test_max_32: 163; MIPS64: # %bb.0: # %entry 164; MIPS64-NEXT: # kill: def $a1 killed $a1 killed $a1_64 165; MIPS64-NEXT: sync 166; MIPS64-NEXT: .LBB0_1: # %entry 167; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 168; MIPS64-NEXT: ll $2, 0($4) 169; MIPS64-NEXT: slt $3, $2, $5 170; MIPS64-NEXT: move $1, $2 171; MIPS64-NEXT: movn $1, $5, $3 172; MIPS64-NEXT: sc $1, 0($4) 173; MIPS64-NEXT: beqz $1, .LBB0_1 174; MIPS64-NEXT: nop 175; MIPS64-NEXT: # %bb.2: # %entry 176; MIPS64-NEXT: sync 177; MIPS64-NEXT: jr $ra 178; MIPS64-NEXT: nop 179; 180; MIPS64R6-LABEL: test_max_32: 181; MIPS64R6: # %bb.0: # %entry 182; MIPS64R6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 183; MIPS64R6-NEXT: sync 184; MIPS64R6-NEXT: .LBB0_1: # %entry 185; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 186; MIPS64R6-NEXT: ll $2, 0($4) 187; MIPS64R6-NEXT: slt $3, $2, $5 188; MIPS64R6-NEXT: seleqz $1, $2, $3 189; MIPS64R6-NEXT: selnez $3, $5, $3 190; MIPS64R6-NEXT: or $1, $1, $3 191; MIPS64R6-NEXT: sc $1, 0($4) 192; MIPS64R6-NEXT: beqzc $1, .LBB0_1 193; MIPS64R6-NEXT: # %bb.2: # %entry 194; MIPS64R6-NEXT: sync 195; MIPS64R6-NEXT: jrc $ra 196; 197; MIPS64EL-LABEL: test_max_32: 198; MIPS64EL: # %bb.0: # %entry 199; MIPS64EL-NEXT: # kill: def $a1 killed $a1 killed $a1_64 200; MIPS64EL-NEXT: sync 201; MIPS64EL-NEXT: .LBB0_1: # %entry 202; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 203; MIPS64EL-NEXT: ll $2, 0($4) 204; MIPS64EL-NEXT: slt $3, $2, $5 205; MIPS64EL-NEXT: move $1, $2 206; MIPS64EL-NEXT: movn $1, $5, $3 207; MIPS64EL-NEXT: sc $1, 0($4) 208; MIPS64EL-NEXT: beqz $1, .LBB0_1 209; MIPS64EL-NEXT: nop 210; MIPS64EL-NEXT: # %bb.2: # %entry 211; MIPS64EL-NEXT: sync 212; MIPS64EL-NEXT: jr $ra 213; MIPS64EL-NEXT: nop 214; 215; MIPS64ELR6-LABEL: test_max_32: 216; MIPS64ELR6: # %bb.0: # %entry 217; MIPS64ELR6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 218; MIPS64ELR6-NEXT: sync 219; MIPS64ELR6-NEXT: .LBB0_1: # %entry 220; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 221; MIPS64ELR6-NEXT: ll $2, 0($4) 222; MIPS64ELR6-NEXT: slt $3, $2, $5 223; MIPS64ELR6-NEXT: seleqz $1, $2, $3 224; MIPS64ELR6-NEXT: selnez $3, $5, $3 225; MIPS64ELR6-NEXT: or $1, $1, $3 226; MIPS64ELR6-NEXT: sc $1, 0($4) 227; MIPS64ELR6-NEXT: beqzc $1, .LBB0_1 228; MIPS64ELR6-NEXT: # %bb.2: # %entry 229; MIPS64ELR6-NEXT: sync 230; MIPS64ELR6-NEXT: jrc $ra 231entry: 232 %0 = atomicrmw max ptr %ptr, i32 %val seq_cst 233 ret i32 %0 234} 235 236define i32 @test_min_32(ptr nocapture %ptr, i32 signext %val) { 237; MIPS-LABEL: test_min_32: 238; MIPS: # %bb.0: # %entry 239; MIPS-NEXT: sync 240; MIPS-NEXT: $BB1_1: # %entry 241; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 242; MIPS-NEXT: ll $2, 0($4) 243; MIPS-NEXT: slt $3, $2, $5 244; MIPS-NEXT: move $1, $2 245; MIPS-NEXT: movz $1, $5, $3 246; MIPS-NEXT: sc $1, 0($4) 247; MIPS-NEXT: beqz $1, $BB1_1 248; MIPS-NEXT: nop 249; MIPS-NEXT: # %bb.2: # %entry 250; MIPS-NEXT: sync 251; MIPS-NEXT: jr $ra 252; MIPS-NEXT: nop 253; 254; MIPSR6-LABEL: test_min_32: 255; MIPSR6: # %bb.0: # %entry 256; MIPSR6-NEXT: sync 257; MIPSR6-NEXT: $BB1_1: # %entry 258; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 259; MIPSR6-NEXT: ll $2, 0($4) 260; MIPSR6-NEXT: slt $3, $2, $5 261; MIPSR6-NEXT: selnez $1, $2, $3 262; MIPSR6-NEXT: seleqz $3, $5, $3 263; MIPSR6-NEXT: or $1, $1, $3 264; MIPSR6-NEXT: sc $1, 0($4) 265; MIPSR6-NEXT: beqzc $1, $BB1_1 266; MIPSR6-NEXT: # %bb.2: # %entry 267; MIPSR6-NEXT: sync 268; MIPSR6-NEXT: jrc $ra 269; 270; MM-LABEL: test_min_32: 271; MM: # %bb.0: # %entry 272; MM-NEXT: sync 273; MM-NEXT: $BB1_1: # %entry 274; MM-NEXT: # =>This Inner Loop Header: Depth=1 275; MM-NEXT: ll $2, 0($4) 276; MM-NEXT: slt $3, $2, $5 277; MM-NEXT: or $1, $2, $zero 278; MM-NEXT: movz $1, $5, $3 279; MM-NEXT: sc $1, 0($4) 280; MM-NEXT: beqzc $1, $BB1_1 281; MM-NEXT: # %bb.2: # %entry 282; MM-NEXT: sync 283; MM-NEXT: jrc $ra 284; 285; MMR6-LABEL: test_min_32: 286; MMR6: # %bb.0: # %entry 287; MMR6-NEXT: sync 288; MMR6-NEXT: $BB1_1: # %entry 289; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 290; MMR6-NEXT: ll $2, 0($4) 291; MMR6-NEXT: slt $3, $2, $5 292; MMR6-NEXT: selnez $1, $2, $3 293; MMR6-NEXT: seleqz $3, $5, $3 294; MMR6-NEXT: or $1, $1, $3 295; MMR6-NEXT: sc $1, 0($4) 296; MMR6-NEXT: beqc $1, $zero, $BB1_1 297; MMR6-NEXT: # %bb.2: # %entry 298; MMR6-NEXT: sync 299; MMR6-NEXT: jrc $ra 300; 301; MIPS32-LABEL: test_min_32: 302; MIPS32: # %bb.0: # %entry 303; MIPS32-NEXT: sync 304; MIPS32-NEXT: $BB1_1: # %entry 305; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 306; MIPS32-NEXT: ll $2, 0($4) 307; MIPS32-NEXT: slt $3, $2, $5 308; MIPS32-NEXT: move $1, $2 309; MIPS32-NEXT: movz $1, $5, $3 310; MIPS32-NEXT: sc $1, 0($4) 311; MIPS32-NEXT: beqz $1, $BB1_1 312; MIPS32-NEXT: nop 313; MIPS32-NEXT: # %bb.2: # %entry 314; MIPS32-NEXT: sync 315; MIPS32-NEXT: jr $ra 316; MIPS32-NEXT: nop 317; 318; MIPSEL-LABEL: test_min_32: 319; MIPSEL: # %bb.0: # %entry 320; MIPSEL-NEXT: sync 321; MIPSEL-NEXT: $BB1_1: # %entry 322; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 323; MIPSEL-NEXT: ll $2, 0($4) 324; MIPSEL-NEXT: slt $3, $2, $5 325; MIPSEL-NEXT: move $1, $2 326; MIPSEL-NEXT: movz $1, $5, $3 327; MIPSEL-NEXT: sc $1, 0($4) 328; MIPSEL-NEXT: beqz $1, $BB1_1 329; MIPSEL-NEXT: nop 330; MIPSEL-NEXT: # %bb.2: # %entry 331; MIPSEL-NEXT: sync 332; MIPSEL-NEXT: jr $ra 333; MIPSEL-NEXT: nop 334; 335; MIPSELR6-LABEL: test_min_32: 336; MIPSELR6: # %bb.0: # %entry 337; MIPSELR6-NEXT: sync 338; MIPSELR6-NEXT: $BB1_1: # %entry 339; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 340; MIPSELR6-NEXT: ll $2, 0($4) 341; MIPSELR6-NEXT: slt $3, $2, $5 342; MIPSELR6-NEXT: selnez $1, $2, $3 343; MIPSELR6-NEXT: seleqz $3, $5, $3 344; MIPSELR6-NEXT: or $1, $1, $3 345; MIPSELR6-NEXT: sc $1, 0($4) 346; MIPSELR6-NEXT: beqzc $1, $BB1_1 347; MIPSELR6-NEXT: # %bb.2: # %entry 348; MIPSELR6-NEXT: sync 349; MIPSELR6-NEXT: jrc $ra 350; 351; MMEL-LABEL: test_min_32: 352; MMEL: # %bb.0: # %entry 353; MMEL-NEXT: sync 354; MMEL-NEXT: $BB1_1: # %entry 355; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 356; MMEL-NEXT: ll $2, 0($4) 357; MMEL-NEXT: slt $3, $2, $5 358; MMEL-NEXT: or $1, $2, $zero 359; MMEL-NEXT: movz $1, $5, $3 360; MMEL-NEXT: sc $1, 0($4) 361; MMEL-NEXT: beqzc $1, $BB1_1 362; MMEL-NEXT: # %bb.2: # %entry 363; MMEL-NEXT: sync 364; MMEL-NEXT: jrc $ra 365; 366; MMELR6-LABEL: test_min_32: 367; MMELR6: # %bb.0: # %entry 368; MMELR6-NEXT: sync 369; MMELR6-NEXT: $BB1_1: # %entry 370; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 371; MMELR6-NEXT: ll $2, 0($4) 372; MMELR6-NEXT: slt $3, $2, $5 373; MMELR6-NEXT: selnez $1, $2, $3 374; MMELR6-NEXT: seleqz $3, $5, $3 375; MMELR6-NEXT: or $1, $1, $3 376; MMELR6-NEXT: sc $1, 0($4) 377; MMELR6-NEXT: beqc $1, $zero, $BB1_1 378; MMELR6-NEXT: # %bb.2: # %entry 379; MMELR6-NEXT: sync 380; MMELR6-NEXT: jrc $ra 381; 382; MIPS64-LABEL: test_min_32: 383; MIPS64: # %bb.0: # %entry 384; MIPS64-NEXT: # kill: def $a1 killed $a1 killed $a1_64 385; MIPS64-NEXT: sync 386; MIPS64-NEXT: .LBB1_1: # %entry 387; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 388; MIPS64-NEXT: ll $2, 0($4) 389; MIPS64-NEXT: slt $3, $2, $5 390; MIPS64-NEXT: move $1, $2 391; MIPS64-NEXT: movz $1, $5, $3 392; MIPS64-NEXT: sc $1, 0($4) 393; MIPS64-NEXT: beqz $1, .LBB1_1 394; MIPS64-NEXT: nop 395; MIPS64-NEXT: # %bb.2: # %entry 396; MIPS64-NEXT: sync 397; MIPS64-NEXT: jr $ra 398; MIPS64-NEXT: nop 399; 400; MIPS64R6-LABEL: test_min_32: 401; MIPS64R6: # %bb.0: # %entry 402; MIPS64R6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 403; MIPS64R6-NEXT: sync 404; MIPS64R6-NEXT: .LBB1_1: # %entry 405; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 406; MIPS64R6-NEXT: ll $2, 0($4) 407; MIPS64R6-NEXT: slt $3, $2, $5 408; MIPS64R6-NEXT: selnez $1, $2, $3 409; MIPS64R6-NEXT: seleqz $3, $5, $3 410; MIPS64R6-NEXT: or $1, $1, $3 411; MIPS64R6-NEXT: sc $1, 0($4) 412; MIPS64R6-NEXT: beqzc $1, .LBB1_1 413; MIPS64R6-NEXT: # %bb.2: # %entry 414; MIPS64R6-NEXT: sync 415; MIPS64R6-NEXT: jrc $ra 416; 417; MIPS64EL-LABEL: test_min_32: 418; MIPS64EL: # %bb.0: # %entry 419; MIPS64EL-NEXT: # kill: def $a1 killed $a1 killed $a1_64 420; MIPS64EL-NEXT: sync 421; MIPS64EL-NEXT: .LBB1_1: # %entry 422; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 423; MIPS64EL-NEXT: ll $2, 0($4) 424; MIPS64EL-NEXT: slt $3, $2, $5 425; MIPS64EL-NEXT: move $1, $2 426; MIPS64EL-NEXT: movz $1, $5, $3 427; MIPS64EL-NEXT: sc $1, 0($4) 428; MIPS64EL-NEXT: beqz $1, .LBB1_1 429; MIPS64EL-NEXT: nop 430; MIPS64EL-NEXT: # %bb.2: # %entry 431; MIPS64EL-NEXT: sync 432; MIPS64EL-NEXT: jr $ra 433; MIPS64EL-NEXT: nop 434; 435; MIPS64ELR6-LABEL: test_min_32: 436; MIPS64ELR6: # %bb.0: # %entry 437; MIPS64ELR6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 438; MIPS64ELR6-NEXT: sync 439; MIPS64ELR6-NEXT: .LBB1_1: # %entry 440; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 441; MIPS64ELR6-NEXT: ll $2, 0($4) 442; MIPS64ELR6-NEXT: slt $3, $2, $5 443; MIPS64ELR6-NEXT: selnez $1, $2, $3 444; MIPS64ELR6-NEXT: seleqz $3, $5, $3 445; MIPS64ELR6-NEXT: or $1, $1, $3 446; MIPS64ELR6-NEXT: sc $1, 0($4) 447; MIPS64ELR6-NEXT: beqzc $1, .LBB1_1 448; MIPS64ELR6-NEXT: # %bb.2: # %entry 449; MIPS64ELR6-NEXT: sync 450; MIPS64ELR6-NEXT: jrc $ra 451entry: 452 %0 = atomicrmw min ptr %ptr, i32 %val seq_cst 453 ret i32 %0 454} 455 456define i32 @test_umax_32(ptr nocapture %ptr, i32 signext %val) { 457; MIPS-LABEL: test_umax_32: 458; MIPS: # %bb.0: # %entry 459; MIPS-NEXT: sync 460; MIPS-NEXT: $BB2_1: # %entry 461; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 462; MIPS-NEXT: ll $2, 0($4) 463; MIPS-NEXT: sltu $3, $2, $5 464; MIPS-NEXT: move $1, $2 465; MIPS-NEXT: movn $1, $5, $3 466; MIPS-NEXT: sc $1, 0($4) 467; MIPS-NEXT: beqz $1, $BB2_1 468; MIPS-NEXT: nop 469; MIPS-NEXT: # %bb.2: # %entry 470; MIPS-NEXT: sync 471; MIPS-NEXT: jr $ra 472; MIPS-NEXT: nop 473; 474; MIPSR6-LABEL: test_umax_32: 475; MIPSR6: # %bb.0: # %entry 476; MIPSR6-NEXT: sync 477; MIPSR6-NEXT: $BB2_1: # %entry 478; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 479; MIPSR6-NEXT: ll $2, 0($4) 480; MIPSR6-NEXT: sltu $3, $2, $5 481; MIPSR6-NEXT: seleqz $1, $2, $3 482; MIPSR6-NEXT: selnez $3, $5, $3 483; MIPSR6-NEXT: or $1, $1, $3 484; MIPSR6-NEXT: sc $1, 0($4) 485; MIPSR6-NEXT: beqzc $1, $BB2_1 486; MIPSR6-NEXT: # %bb.2: # %entry 487; MIPSR6-NEXT: sync 488; MIPSR6-NEXT: jrc $ra 489; 490; MM-LABEL: test_umax_32: 491; MM: # %bb.0: # %entry 492; MM-NEXT: sync 493; MM-NEXT: $BB2_1: # %entry 494; MM-NEXT: # =>This Inner Loop Header: Depth=1 495; MM-NEXT: ll $2, 0($4) 496; MM-NEXT: sltu $3, $2, $5 497; MM-NEXT: or $1, $2, $zero 498; MM-NEXT: movn $1, $5, $3 499; MM-NEXT: sc $1, 0($4) 500; MM-NEXT: beqzc $1, $BB2_1 501; MM-NEXT: # %bb.2: # %entry 502; MM-NEXT: sync 503; MM-NEXT: jrc $ra 504; 505; MMR6-LABEL: test_umax_32: 506; MMR6: # %bb.0: # %entry 507; MMR6-NEXT: sync 508; MMR6-NEXT: $BB2_1: # %entry 509; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 510; MMR6-NEXT: ll $2, 0($4) 511; MMR6-NEXT: sltu $3, $2, $5 512; MMR6-NEXT: seleqz $1, $2, $3 513; MMR6-NEXT: selnez $3, $5, $3 514; MMR6-NEXT: or $1, $1, $3 515; MMR6-NEXT: sc $1, 0($4) 516; MMR6-NEXT: beqc $1, $zero, $BB2_1 517; MMR6-NEXT: # %bb.2: # %entry 518; MMR6-NEXT: sync 519; MMR6-NEXT: jrc $ra 520; 521; MIPS32-LABEL: test_umax_32: 522; MIPS32: # %bb.0: # %entry 523; MIPS32-NEXT: sync 524; MIPS32-NEXT: $BB2_1: # %entry 525; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 526; MIPS32-NEXT: ll $2, 0($4) 527; MIPS32-NEXT: sltu $3, $2, $5 528; MIPS32-NEXT: move $1, $2 529; MIPS32-NEXT: movn $1, $5, $3 530; MIPS32-NEXT: sc $1, 0($4) 531; MIPS32-NEXT: beqz $1, $BB2_1 532; MIPS32-NEXT: nop 533; MIPS32-NEXT: # %bb.2: # %entry 534; MIPS32-NEXT: sync 535; MIPS32-NEXT: jr $ra 536; MIPS32-NEXT: nop 537; 538; MIPSEL-LABEL: test_umax_32: 539; MIPSEL: # %bb.0: # %entry 540; MIPSEL-NEXT: sync 541; MIPSEL-NEXT: $BB2_1: # %entry 542; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 543; MIPSEL-NEXT: ll $2, 0($4) 544; MIPSEL-NEXT: sltu $3, $2, $5 545; MIPSEL-NEXT: move $1, $2 546; MIPSEL-NEXT: movn $1, $5, $3 547; MIPSEL-NEXT: sc $1, 0($4) 548; MIPSEL-NEXT: beqz $1, $BB2_1 549; MIPSEL-NEXT: nop 550; MIPSEL-NEXT: # %bb.2: # %entry 551; MIPSEL-NEXT: sync 552; MIPSEL-NEXT: jr $ra 553; MIPSEL-NEXT: nop 554; 555; MIPSELR6-LABEL: test_umax_32: 556; MIPSELR6: # %bb.0: # %entry 557; MIPSELR6-NEXT: sync 558; MIPSELR6-NEXT: $BB2_1: # %entry 559; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 560; MIPSELR6-NEXT: ll $2, 0($4) 561; MIPSELR6-NEXT: sltu $3, $2, $5 562; MIPSELR6-NEXT: seleqz $1, $2, $3 563; MIPSELR6-NEXT: selnez $3, $5, $3 564; MIPSELR6-NEXT: or $1, $1, $3 565; MIPSELR6-NEXT: sc $1, 0($4) 566; MIPSELR6-NEXT: beqzc $1, $BB2_1 567; MIPSELR6-NEXT: # %bb.2: # %entry 568; MIPSELR6-NEXT: sync 569; MIPSELR6-NEXT: jrc $ra 570; 571; MMEL-LABEL: test_umax_32: 572; MMEL: # %bb.0: # %entry 573; MMEL-NEXT: sync 574; MMEL-NEXT: $BB2_1: # %entry 575; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 576; MMEL-NEXT: ll $2, 0($4) 577; MMEL-NEXT: sltu $3, $2, $5 578; MMEL-NEXT: or $1, $2, $zero 579; MMEL-NEXT: movn $1, $5, $3 580; MMEL-NEXT: sc $1, 0($4) 581; MMEL-NEXT: beqzc $1, $BB2_1 582; MMEL-NEXT: # %bb.2: # %entry 583; MMEL-NEXT: sync 584; MMEL-NEXT: jrc $ra 585; 586; MMELR6-LABEL: test_umax_32: 587; MMELR6: # %bb.0: # %entry 588; MMELR6-NEXT: sync 589; MMELR6-NEXT: $BB2_1: # %entry 590; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 591; MMELR6-NEXT: ll $2, 0($4) 592; MMELR6-NEXT: sltu $3, $2, $5 593; MMELR6-NEXT: seleqz $1, $2, $3 594; MMELR6-NEXT: selnez $3, $5, $3 595; MMELR6-NEXT: or $1, $1, $3 596; MMELR6-NEXT: sc $1, 0($4) 597; MMELR6-NEXT: beqc $1, $zero, $BB2_1 598; MMELR6-NEXT: # %bb.2: # %entry 599; MMELR6-NEXT: sync 600; MMELR6-NEXT: jrc $ra 601; 602; MIPS64-LABEL: test_umax_32: 603; MIPS64: # %bb.0: # %entry 604; MIPS64-NEXT: # kill: def $a1 killed $a1 killed $a1_64 605; MIPS64-NEXT: sync 606; MIPS64-NEXT: .LBB2_1: # %entry 607; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 608; MIPS64-NEXT: ll $2, 0($4) 609; MIPS64-NEXT: sltu $3, $2, $5 610; MIPS64-NEXT: move $1, $2 611; MIPS64-NEXT: movn $1, $5, $3 612; MIPS64-NEXT: sc $1, 0($4) 613; MIPS64-NEXT: beqz $1, .LBB2_1 614; MIPS64-NEXT: nop 615; MIPS64-NEXT: # %bb.2: # %entry 616; MIPS64-NEXT: sync 617; MIPS64-NEXT: jr $ra 618; MIPS64-NEXT: nop 619; 620; MIPS64R6-LABEL: test_umax_32: 621; MIPS64R6: # %bb.0: # %entry 622; MIPS64R6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 623; MIPS64R6-NEXT: sync 624; MIPS64R6-NEXT: .LBB2_1: # %entry 625; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 626; MIPS64R6-NEXT: ll $2, 0($4) 627; MIPS64R6-NEXT: sltu $3, $2, $5 628; MIPS64R6-NEXT: seleqz $1, $2, $3 629; MIPS64R6-NEXT: selnez $3, $5, $3 630; MIPS64R6-NEXT: or $1, $1, $3 631; MIPS64R6-NEXT: sc $1, 0($4) 632; MIPS64R6-NEXT: beqzc $1, .LBB2_1 633; MIPS64R6-NEXT: # %bb.2: # %entry 634; MIPS64R6-NEXT: sync 635; MIPS64R6-NEXT: jrc $ra 636; 637; MIPS64EL-LABEL: test_umax_32: 638; MIPS64EL: # %bb.0: # %entry 639; MIPS64EL-NEXT: # kill: def $a1 killed $a1 killed $a1_64 640; MIPS64EL-NEXT: sync 641; MIPS64EL-NEXT: .LBB2_1: # %entry 642; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 643; MIPS64EL-NEXT: ll $2, 0($4) 644; MIPS64EL-NEXT: sltu $3, $2, $5 645; MIPS64EL-NEXT: move $1, $2 646; MIPS64EL-NEXT: movn $1, $5, $3 647; MIPS64EL-NEXT: sc $1, 0($4) 648; MIPS64EL-NEXT: beqz $1, .LBB2_1 649; MIPS64EL-NEXT: nop 650; MIPS64EL-NEXT: # %bb.2: # %entry 651; MIPS64EL-NEXT: sync 652; MIPS64EL-NEXT: jr $ra 653; MIPS64EL-NEXT: nop 654; 655; MIPS64ELR6-LABEL: test_umax_32: 656; MIPS64ELR6: # %bb.0: # %entry 657; MIPS64ELR6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 658; MIPS64ELR6-NEXT: sync 659; MIPS64ELR6-NEXT: .LBB2_1: # %entry 660; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 661; MIPS64ELR6-NEXT: ll $2, 0($4) 662; MIPS64ELR6-NEXT: sltu $3, $2, $5 663; MIPS64ELR6-NEXT: seleqz $1, $2, $3 664; MIPS64ELR6-NEXT: selnez $3, $5, $3 665; MIPS64ELR6-NEXT: or $1, $1, $3 666; MIPS64ELR6-NEXT: sc $1, 0($4) 667; MIPS64ELR6-NEXT: beqzc $1, .LBB2_1 668; MIPS64ELR6-NEXT: # %bb.2: # %entry 669; MIPS64ELR6-NEXT: sync 670; MIPS64ELR6-NEXT: jrc $ra 671entry: 672 %0 = atomicrmw umax ptr %ptr, i32 %val seq_cst 673 ret i32 %0 674} 675 676define i32 @test_umin_32(ptr nocapture %ptr, i32 signext %val) { 677; MIPS-LABEL: test_umin_32: 678; MIPS: # %bb.0: # %entry 679; MIPS-NEXT: sync 680; MIPS-NEXT: $BB3_1: # %entry 681; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 682; MIPS-NEXT: ll $2, 0($4) 683; MIPS-NEXT: sltu $3, $2, $5 684; MIPS-NEXT: move $1, $2 685; MIPS-NEXT: movz $1, $5, $3 686; MIPS-NEXT: sc $1, 0($4) 687; MIPS-NEXT: beqz $1, $BB3_1 688; MIPS-NEXT: nop 689; MIPS-NEXT: # %bb.2: # %entry 690; MIPS-NEXT: sync 691; MIPS-NEXT: jr $ra 692; MIPS-NEXT: nop 693; 694; MIPSR6-LABEL: test_umin_32: 695; MIPSR6: # %bb.0: # %entry 696; MIPSR6-NEXT: sync 697; MIPSR6-NEXT: $BB3_1: # %entry 698; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 699; MIPSR6-NEXT: ll $2, 0($4) 700; MIPSR6-NEXT: sltu $3, $2, $5 701; MIPSR6-NEXT: selnez $1, $2, $3 702; MIPSR6-NEXT: seleqz $3, $5, $3 703; MIPSR6-NEXT: or $1, $1, $3 704; MIPSR6-NEXT: sc $1, 0($4) 705; MIPSR6-NEXT: beqzc $1, $BB3_1 706; MIPSR6-NEXT: # %bb.2: # %entry 707; MIPSR6-NEXT: sync 708; MIPSR6-NEXT: jrc $ra 709; 710; MM-LABEL: test_umin_32: 711; MM: # %bb.0: # %entry 712; MM-NEXT: sync 713; MM-NEXT: $BB3_1: # %entry 714; MM-NEXT: # =>This Inner Loop Header: Depth=1 715; MM-NEXT: ll $2, 0($4) 716; MM-NEXT: sltu $3, $2, $5 717; MM-NEXT: or $1, $2, $zero 718; MM-NEXT: movz $1, $5, $3 719; MM-NEXT: sc $1, 0($4) 720; MM-NEXT: beqzc $1, $BB3_1 721; MM-NEXT: # %bb.2: # %entry 722; MM-NEXT: sync 723; MM-NEXT: jrc $ra 724; 725; MMR6-LABEL: test_umin_32: 726; MMR6: # %bb.0: # %entry 727; MMR6-NEXT: sync 728; MMR6-NEXT: $BB3_1: # %entry 729; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 730; MMR6-NEXT: ll $2, 0($4) 731; MMR6-NEXT: sltu $3, $2, $5 732; MMR6-NEXT: selnez $1, $2, $3 733; MMR6-NEXT: seleqz $3, $5, $3 734; MMR6-NEXT: or $1, $1, $3 735; MMR6-NEXT: sc $1, 0($4) 736; MMR6-NEXT: beqc $1, $zero, $BB3_1 737; MMR6-NEXT: # %bb.2: # %entry 738; MMR6-NEXT: sync 739; MMR6-NEXT: jrc $ra 740; 741; MIPS32-LABEL: test_umin_32: 742; MIPS32: # %bb.0: # %entry 743; MIPS32-NEXT: sync 744; MIPS32-NEXT: $BB3_1: # %entry 745; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 746; MIPS32-NEXT: ll $2, 0($4) 747; MIPS32-NEXT: sltu $3, $2, $5 748; MIPS32-NEXT: move $1, $2 749; MIPS32-NEXT: movz $1, $5, $3 750; MIPS32-NEXT: sc $1, 0($4) 751; MIPS32-NEXT: beqz $1, $BB3_1 752; MIPS32-NEXT: nop 753; MIPS32-NEXT: # %bb.2: # %entry 754; MIPS32-NEXT: sync 755; MIPS32-NEXT: jr $ra 756; MIPS32-NEXT: nop 757; 758; MIPSEL-LABEL: test_umin_32: 759; MIPSEL: # %bb.0: # %entry 760; MIPSEL-NEXT: sync 761; MIPSEL-NEXT: $BB3_1: # %entry 762; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 763; MIPSEL-NEXT: ll $2, 0($4) 764; MIPSEL-NEXT: sltu $3, $2, $5 765; MIPSEL-NEXT: move $1, $2 766; MIPSEL-NEXT: movz $1, $5, $3 767; MIPSEL-NEXT: sc $1, 0($4) 768; MIPSEL-NEXT: beqz $1, $BB3_1 769; MIPSEL-NEXT: nop 770; MIPSEL-NEXT: # %bb.2: # %entry 771; MIPSEL-NEXT: sync 772; MIPSEL-NEXT: jr $ra 773; MIPSEL-NEXT: nop 774; 775; MIPSELR6-LABEL: test_umin_32: 776; MIPSELR6: # %bb.0: # %entry 777; MIPSELR6-NEXT: sync 778; MIPSELR6-NEXT: $BB3_1: # %entry 779; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 780; MIPSELR6-NEXT: ll $2, 0($4) 781; MIPSELR6-NEXT: sltu $3, $2, $5 782; MIPSELR6-NEXT: selnez $1, $2, $3 783; MIPSELR6-NEXT: seleqz $3, $5, $3 784; MIPSELR6-NEXT: or $1, $1, $3 785; MIPSELR6-NEXT: sc $1, 0($4) 786; MIPSELR6-NEXT: beqzc $1, $BB3_1 787; MIPSELR6-NEXT: # %bb.2: # %entry 788; MIPSELR6-NEXT: sync 789; MIPSELR6-NEXT: jrc $ra 790; 791; MMEL-LABEL: test_umin_32: 792; MMEL: # %bb.0: # %entry 793; MMEL-NEXT: sync 794; MMEL-NEXT: $BB3_1: # %entry 795; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 796; MMEL-NEXT: ll $2, 0($4) 797; MMEL-NEXT: sltu $3, $2, $5 798; MMEL-NEXT: or $1, $2, $zero 799; MMEL-NEXT: movz $1, $5, $3 800; MMEL-NEXT: sc $1, 0($4) 801; MMEL-NEXT: beqzc $1, $BB3_1 802; MMEL-NEXT: # %bb.2: # %entry 803; MMEL-NEXT: sync 804; MMEL-NEXT: jrc $ra 805; 806; MMELR6-LABEL: test_umin_32: 807; MMELR6: # %bb.0: # %entry 808; MMELR6-NEXT: sync 809; MMELR6-NEXT: $BB3_1: # %entry 810; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 811; MMELR6-NEXT: ll $2, 0($4) 812; MMELR6-NEXT: sltu $3, $2, $5 813; MMELR6-NEXT: selnez $1, $2, $3 814; MMELR6-NEXT: seleqz $3, $5, $3 815; MMELR6-NEXT: or $1, $1, $3 816; MMELR6-NEXT: sc $1, 0($4) 817; MMELR6-NEXT: beqc $1, $zero, $BB3_1 818; MMELR6-NEXT: # %bb.2: # %entry 819; MMELR6-NEXT: sync 820; MMELR6-NEXT: jrc $ra 821; 822; MIPS64-LABEL: test_umin_32: 823; MIPS64: # %bb.0: # %entry 824; MIPS64-NEXT: # kill: def $a1 killed $a1 killed $a1_64 825; MIPS64-NEXT: sync 826; MIPS64-NEXT: .LBB3_1: # %entry 827; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 828; MIPS64-NEXT: ll $2, 0($4) 829; MIPS64-NEXT: sltu $3, $2, $5 830; MIPS64-NEXT: move $1, $2 831; MIPS64-NEXT: movz $1, $5, $3 832; MIPS64-NEXT: sc $1, 0($4) 833; MIPS64-NEXT: beqz $1, .LBB3_1 834; MIPS64-NEXT: nop 835; MIPS64-NEXT: # %bb.2: # %entry 836; MIPS64-NEXT: sync 837; MIPS64-NEXT: jr $ra 838; MIPS64-NEXT: nop 839; 840; MIPS64R6-LABEL: test_umin_32: 841; MIPS64R6: # %bb.0: # %entry 842; MIPS64R6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 843; MIPS64R6-NEXT: sync 844; MIPS64R6-NEXT: .LBB3_1: # %entry 845; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 846; MIPS64R6-NEXT: ll $2, 0($4) 847; MIPS64R6-NEXT: sltu $3, $2, $5 848; MIPS64R6-NEXT: selnez $1, $2, $3 849; MIPS64R6-NEXT: seleqz $3, $5, $3 850; MIPS64R6-NEXT: or $1, $1, $3 851; MIPS64R6-NEXT: sc $1, 0($4) 852; MIPS64R6-NEXT: beqzc $1, .LBB3_1 853; MIPS64R6-NEXT: # %bb.2: # %entry 854; MIPS64R6-NEXT: sync 855; MIPS64R6-NEXT: jrc $ra 856; 857; MIPS64EL-LABEL: test_umin_32: 858; MIPS64EL: # %bb.0: # %entry 859; MIPS64EL-NEXT: # kill: def $a1 killed $a1 killed $a1_64 860; MIPS64EL-NEXT: sync 861; MIPS64EL-NEXT: .LBB3_1: # %entry 862; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 863; MIPS64EL-NEXT: ll $2, 0($4) 864; MIPS64EL-NEXT: sltu $3, $2, $5 865; MIPS64EL-NEXT: move $1, $2 866; MIPS64EL-NEXT: movz $1, $5, $3 867; MIPS64EL-NEXT: sc $1, 0($4) 868; MIPS64EL-NEXT: beqz $1, .LBB3_1 869; MIPS64EL-NEXT: nop 870; MIPS64EL-NEXT: # %bb.2: # %entry 871; MIPS64EL-NEXT: sync 872; MIPS64EL-NEXT: jr $ra 873; MIPS64EL-NEXT: nop 874; 875; MIPS64ELR6-LABEL: test_umin_32: 876; MIPS64ELR6: # %bb.0: # %entry 877; MIPS64ELR6-NEXT: # kill: def $a1 killed $a1 killed $a1_64 878; MIPS64ELR6-NEXT: sync 879; MIPS64ELR6-NEXT: .LBB3_1: # %entry 880; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 881; MIPS64ELR6-NEXT: ll $2, 0($4) 882; MIPS64ELR6-NEXT: sltu $3, $2, $5 883; MIPS64ELR6-NEXT: selnez $1, $2, $3 884; MIPS64ELR6-NEXT: seleqz $3, $5, $3 885; MIPS64ELR6-NEXT: or $1, $1, $3 886; MIPS64ELR6-NEXT: sc $1, 0($4) 887; MIPS64ELR6-NEXT: beqzc $1, .LBB3_1 888; MIPS64ELR6-NEXT: # %bb.2: # %entry 889; MIPS64ELR6-NEXT: sync 890; MIPS64ELR6-NEXT: jrc $ra 891entry: 892 %0 = atomicrmw umin ptr %ptr, i32 %val seq_cst 893 ret i32 %0 894} 895 896define i16 @test_max_16(ptr nocapture %ptr, i16 signext %val) { 897; MIPS-LABEL: test_max_16: 898; MIPS: # %bb.0: # %entry 899; MIPS-NEXT: addiu $sp, $sp, -8 900; MIPS-NEXT: .cfi_def_cfa_offset 8 901; MIPS-NEXT: # kill: def $at killed $a1 902; MIPS-NEXT: sync 903; MIPS-NEXT: addiu $1, $zero, -4 904; MIPS-NEXT: and $6, $4, $1 905; MIPS-NEXT: andi $1, $4, 3 906; MIPS-NEXT: xori $1, $1, 2 907; MIPS-NEXT: sll $10, $1, 3 908; MIPS-NEXT: ori $1, $zero, 65535 909; MIPS-NEXT: sllv $8, $1, $10 910; MIPS-NEXT: nor $9, $zero, $8 911; MIPS-NEXT: sllv $7, $5, $10 912; MIPS-NEXT: $BB4_1: # %entry 913; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 914; MIPS-NEXT: ll $2, 0($6) 915; MIPS-NEXT: srav $4, $2, $10 916; MIPS-NEXT: seh $4, $4 917; MIPS-NEXT: or $1, $zero, $4 918; MIPS-NEXT: sllv $4, $4, $10 919; MIPS-NEXT: slt $5, $4, $7 920; MIPS-NEXT: move $3, $4 921; MIPS-NEXT: movn $3, $7, $5 922; MIPS-NEXT: and $3, $3, $8 923; MIPS-NEXT: and $4, $2, $9 924; MIPS-NEXT: or $4, $4, $3 925; MIPS-NEXT: sc $4, 0($6) 926; MIPS-NEXT: beqz $4, $BB4_1 927; MIPS-NEXT: nop 928; MIPS-NEXT: # %bb.2: # %entry 929; MIPS-NEXT: .insn 930; MIPS-NEXT: # %bb.3: # %entry 931; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 932; MIPS-NEXT: # %bb.4: # %entry 933; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 934; MIPS-NEXT: sync 935; MIPS-NEXT: addiu $sp, $sp, 8 936; MIPS-NEXT: jr $ra 937; MIPS-NEXT: nop 938; 939; MIPSR6-LABEL: test_max_16: 940; MIPSR6: # %bb.0: # %entry 941; MIPSR6-NEXT: addiu $sp, $sp, -8 942; MIPSR6-NEXT: .cfi_def_cfa_offset 8 943; MIPSR6-NEXT: # kill: def $at killed $a1 944; MIPSR6-NEXT: sync 945; MIPSR6-NEXT: addiu $1, $zero, -4 946; MIPSR6-NEXT: and $6, $4, $1 947; MIPSR6-NEXT: andi $1, $4, 3 948; MIPSR6-NEXT: xori $1, $1, 2 949; MIPSR6-NEXT: sll $10, $1, 3 950; MIPSR6-NEXT: ori $1, $zero, 65535 951; MIPSR6-NEXT: sllv $8, $1, $10 952; MIPSR6-NEXT: nor $9, $zero, $8 953; MIPSR6-NEXT: sllv $7, $5, $10 954; MIPSR6-NEXT: $BB4_1: # %entry 955; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 956; MIPSR6-NEXT: ll $2, 0($6) 957; MIPSR6-NEXT: srav $4, $2, $10 958; MIPSR6-NEXT: seh $4, $4 959; MIPSR6-NEXT: or $1, $zero, $4 960; MIPSR6-NEXT: sllv $4, $4, $10 961; MIPSR6-NEXT: slt $5, $4, $7 962; MIPSR6-NEXT: seleqz $3, $4, $5 963; MIPSR6-NEXT: selnez $5, $7, $5 964; MIPSR6-NEXT: or $3, $3, $5 965; MIPSR6-NEXT: and $3, $3, $8 966; MIPSR6-NEXT: and $4, $2, $9 967; MIPSR6-NEXT: or $4, $4, $3 968; MIPSR6-NEXT: sc $4, 0($6) 969; MIPSR6-NEXT: beqzc $4, $BB4_1 970; MIPSR6-NEXT: nop 971; MIPSR6-NEXT: # %bb.2: # %entry 972; MIPSR6-NEXT: .insn 973; MIPSR6-NEXT: # %bb.3: # %entry 974; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 975; MIPSR6-NEXT: # %bb.4: # %entry 976; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 977; MIPSR6-NEXT: sync 978; MIPSR6-NEXT: addiu $sp, $sp, 8 979; MIPSR6-NEXT: jrc $ra 980; 981; MM-LABEL: test_max_16: 982; MM: # %bb.0: # %entry 983; MM-NEXT: addiu $sp, $sp, -8 984; MM-NEXT: .cfi_def_cfa_offset 8 985; MM-NEXT: # kill: def $at killed $a1 986; MM-NEXT: sync 987; MM-NEXT: addiu $1, $zero, -4 988; MM-NEXT: and $6, $4, $1 989; MM-NEXT: andi $1, $4, 3 990; MM-NEXT: xori $1, $1, 2 991; MM-NEXT: sll $10, $1, 3 992; MM-NEXT: ori $1, $zero, 65535 993; MM-NEXT: sllv $8, $1, $10 994; MM-NEXT: nor $9, $zero, $8 995; MM-NEXT: sllv $7, $5, $10 996; MM-NEXT: $BB4_1: # %entry 997; MM-NEXT: # =>This Inner Loop Header: Depth=1 998; MM-NEXT: ll $2, 0($6) 999; MM-NEXT: srav $4, $2, $10 1000; MM-NEXT: seh $4, $4 1001; MM-NEXT: or $1, $zero, $4 1002; MM-NEXT: sllv $4, $4, $10 1003; MM-NEXT: slt $5, $4, $7 1004; MM-NEXT: or $3, $4, $zero 1005; MM-NEXT: movn $3, $7, $5 1006; MM-NEXT: and $3, $3, $8 1007; MM-NEXT: and $4, $2, $9 1008; MM-NEXT: or $4, $4, $3 1009; MM-NEXT: sc $4, 0($6) 1010; MM-NEXT: beqzc $4, $BB4_1 1011; MM-NEXT: # %bb.2: # %entry 1012; MM-NEXT: .insn 1013; MM-NEXT: # %bb.3: # %entry 1014; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1015; MM-NEXT: # %bb.4: # %entry 1016; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1017; MM-NEXT: sync 1018; MM-NEXT: addiusp 8 1019; MM-NEXT: jrc $ra 1020; 1021; MMR6-LABEL: test_max_16: 1022; MMR6: # %bb.0: # %entry 1023; MMR6-NEXT: addiu $sp, $sp, -8 1024; MMR6-NEXT: .cfi_def_cfa_offset 8 1025; MMR6-NEXT: # kill: def $at killed $a1 1026; MMR6-NEXT: sync 1027; MMR6-NEXT: addiu $1, $zero, -4 1028; MMR6-NEXT: and $6, $4, $1 1029; MMR6-NEXT: andi $1, $4, 3 1030; MMR6-NEXT: xori $1, $1, 2 1031; MMR6-NEXT: sll $10, $1, 3 1032; MMR6-NEXT: ori $1, $zero, 65535 1033; MMR6-NEXT: sllv $8, $1, $10 1034; MMR6-NEXT: nor $9, $zero, $8 1035; MMR6-NEXT: sllv $7, $5, $10 1036; MMR6-NEXT: $BB4_1: # %entry 1037; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 1038; MMR6-NEXT: ll $2, 0($6) 1039; MMR6-NEXT: srav $4, $2, $10 1040; MMR6-NEXT: seh $4, $4 1041; MMR6-NEXT: or $1, $zero, $4 1042; MMR6-NEXT: sllv $4, $4, $10 1043; MMR6-NEXT: slt $5, $4, $7 1044; MMR6-NEXT: seleqz $3, $4, $5 1045; MMR6-NEXT: selnez $5, $7, $5 1046; MMR6-NEXT: or $3, $3, $5 1047; MMR6-NEXT: and $3, $3, $8 1048; MMR6-NEXT: and $4, $2, $9 1049; MMR6-NEXT: or $4, $4, $3 1050; MMR6-NEXT: sc $4, 0($6) 1051; MMR6-NEXT: beqc $4, $zero, $BB4_1 1052; MMR6-NEXT: # %bb.2: # %entry 1053; MMR6-NEXT: .insn 1054; MMR6-NEXT: # %bb.3: # %entry 1055; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1056; MMR6-NEXT: # %bb.4: # %entry 1057; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1058; MMR6-NEXT: sync 1059; MMR6-NEXT: addiu $sp, $sp, 8 1060; MMR6-NEXT: jrc $ra 1061; 1062; MIPS32-LABEL: test_max_16: 1063; MIPS32: # %bb.0: # %entry 1064; MIPS32-NEXT: addiu $sp, $sp, -8 1065; MIPS32-NEXT: .cfi_def_cfa_offset 8 1066; MIPS32-NEXT: # kill: def $at killed $a1 1067; MIPS32-NEXT: sync 1068; MIPS32-NEXT: addiu $1, $zero, -4 1069; MIPS32-NEXT: and $6, $4, $1 1070; MIPS32-NEXT: andi $1, $4, 3 1071; MIPS32-NEXT: sll $10, $1, 3 1072; MIPS32-NEXT: ori $1, $zero, 65535 1073; MIPS32-NEXT: sllv $8, $1, $10 1074; MIPS32-NEXT: nor $9, $zero, $8 1075; MIPS32-NEXT: sllv $7, $5, $10 1076; MIPS32-NEXT: $BB4_1: # %entry 1077; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 1078; MIPS32-NEXT: ll $2, 0($6) 1079; MIPS32-NEXT: srav $4, $2, $10 1080; MIPS32-NEXT: sll $4, $4, 16 1081; MIPS32-NEXT: sra $4, $4, 16 1082; MIPS32-NEXT: or $1, $zero, $4 1083; MIPS32-NEXT: sllv $4, $4, $10 1084; MIPS32-NEXT: slt $5, $4, $7 1085; MIPS32-NEXT: move $3, $4 1086; MIPS32-NEXT: movn $3, $7, $5 1087; MIPS32-NEXT: and $3, $3, $8 1088; MIPS32-NEXT: and $4, $2, $9 1089; MIPS32-NEXT: or $4, $4, $3 1090; MIPS32-NEXT: sc $4, 0($6) 1091; MIPS32-NEXT: beqz $4, $BB4_1 1092; MIPS32-NEXT: nop 1093; MIPS32-NEXT: # %bb.2: # %entry 1094; MIPS32-NEXT: .insn 1095; MIPS32-NEXT: # %bb.3: # %entry 1096; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1097; MIPS32-NEXT: # %bb.4: # %entry 1098; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1099; MIPS32-NEXT: sync 1100; MIPS32-NEXT: addiu $sp, $sp, 8 1101; MIPS32-NEXT: jr $ra 1102; MIPS32-NEXT: nop 1103; 1104; MIPSEL-LABEL: test_max_16: 1105; MIPSEL: # %bb.0: # %entry 1106; MIPSEL-NEXT: addiu $sp, $sp, -8 1107; MIPSEL-NEXT: .cfi_def_cfa_offset 8 1108; MIPSEL-NEXT: # kill: def $at killed $a1 1109; MIPSEL-NEXT: sync 1110; MIPSEL-NEXT: addiu $1, $zero, -4 1111; MIPSEL-NEXT: and $6, $4, $1 1112; MIPSEL-NEXT: andi $1, $4, 3 1113; MIPSEL-NEXT: sll $10, $1, 3 1114; MIPSEL-NEXT: ori $1, $zero, 65535 1115; MIPSEL-NEXT: sllv $8, $1, $10 1116; MIPSEL-NEXT: nor $9, $zero, $8 1117; MIPSEL-NEXT: sllv $7, $5, $10 1118; MIPSEL-NEXT: $BB4_1: # %entry 1119; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 1120; MIPSEL-NEXT: ll $2, 0($6) 1121; MIPSEL-NEXT: srav $4, $2, $10 1122; MIPSEL-NEXT: seh $4, $4 1123; MIPSEL-NEXT: or $1, $zero, $4 1124; MIPSEL-NEXT: sllv $4, $4, $10 1125; MIPSEL-NEXT: slt $5, $4, $7 1126; MIPSEL-NEXT: move $3, $4 1127; MIPSEL-NEXT: movn $3, $7, $5 1128; MIPSEL-NEXT: and $3, $3, $8 1129; MIPSEL-NEXT: and $4, $2, $9 1130; MIPSEL-NEXT: or $4, $4, $3 1131; MIPSEL-NEXT: sc $4, 0($6) 1132; MIPSEL-NEXT: beqz $4, $BB4_1 1133; MIPSEL-NEXT: nop 1134; MIPSEL-NEXT: # %bb.2: # %entry 1135; MIPSEL-NEXT: .insn 1136; MIPSEL-NEXT: # %bb.3: # %entry 1137; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1138; MIPSEL-NEXT: # %bb.4: # %entry 1139; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1140; MIPSEL-NEXT: sync 1141; MIPSEL-NEXT: addiu $sp, $sp, 8 1142; MIPSEL-NEXT: jr $ra 1143; MIPSEL-NEXT: nop 1144; 1145; MIPSELR6-LABEL: test_max_16: 1146; MIPSELR6: # %bb.0: # %entry 1147; MIPSELR6-NEXT: addiu $sp, $sp, -8 1148; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 1149; MIPSELR6-NEXT: # kill: def $at killed $a1 1150; MIPSELR6-NEXT: sync 1151; MIPSELR6-NEXT: addiu $1, $zero, -4 1152; MIPSELR6-NEXT: and $6, $4, $1 1153; MIPSELR6-NEXT: andi $1, $4, 3 1154; MIPSELR6-NEXT: sll $10, $1, 3 1155; MIPSELR6-NEXT: ori $1, $zero, 65535 1156; MIPSELR6-NEXT: sllv $8, $1, $10 1157; MIPSELR6-NEXT: nor $9, $zero, $8 1158; MIPSELR6-NEXT: sllv $7, $5, $10 1159; MIPSELR6-NEXT: $BB4_1: # %entry 1160; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 1161; MIPSELR6-NEXT: ll $2, 0($6) 1162; MIPSELR6-NEXT: srav $4, $2, $10 1163; MIPSELR6-NEXT: seh $4, $4 1164; MIPSELR6-NEXT: or $1, $zero, $4 1165; MIPSELR6-NEXT: sllv $4, $4, $10 1166; MIPSELR6-NEXT: slt $5, $4, $7 1167; MIPSELR6-NEXT: seleqz $3, $4, $5 1168; MIPSELR6-NEXT: selnez $5, $7, $5 1169; MIPSELR6-NEXT: or $3, $3, $5 1170; MIPSELR6-NEXT: and $3, $3, $8 1171; MIPSELR6-NEXT: and $4, $2, $9 1172; MIPSELR6-NEXT: or $4, $4, $3 1173; MIPSELR6-NEXT: sc $4, 0($6) 1174; MIPSELR6-NEXT: beqzc $4, $BB4_1 1175; MIPSELR6-NEXT: nop 1176; MIPSELR6-NEXT: # %bb.2: # %entry 1177; MIPSELR6-NEXT: .insn 1178; MIPSELR6-NEXT: # %bb.3: # %entry 1179; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1180; MIPSELR6-NEXT: # %bb.4: # %entry 1181; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1182; MIPSELR6-NEXT: sync 1183; MIPSELR6-NEXT: addiu $sp, $sp, 8 1184; MIPSELR6-NEXT: jrc $ra 1185; 1186; MMEL-LABEL: test_max_16: 1187; MMEL: # %bb.0: # %entry 1188; MMEL-NEXT: addiu $sp, $sp, -8 1189; MMEL-NEXT: .cfi_def_cfa_offset 8 1190; MMEL-NEXT: # kill: def $at killed $a1 1191; MMEL-NEXT: sync 1192; MMEL-NEXT: addiu $1, $zero, -4 1193; MMEL-NEXT: and $6, $4, $1 1194; MMEL-NEXT: andi $1, $4, 3 1195; MMEL-NEXT: sll $10, $1, 3 1196; MMEL-NEXT: ori $1, $zero, 65535 1197; MMEL-NEXT: sllv $8, $1, $10 1198; MMEL-NEXT: nor $9, $zero, $8 1199; MMEL-NEXT: sllv $7, $5, $10 1200; MMEL-NEXT: $BB4_1: # %entry 1201; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 1202; MMEL-NEXT: ll $2, 0($6) 1203; MMEL-NEXT: srav $4, $2, $10 1204; MMEL-NEXT: seh $4, $4 1205; MMEL-NEXT: or $1, $zero, $4 1206; MMEL-NEXT: sllv $4, $4, $10 1207; MMEL-NEXT: slt $5, $4, $7 1208; MMEL-NEXT: or $3, $4, $zero 1209; MMEL-NEXT: movn $3, $7, $5 1210; MMEL-NEXT: and $3, $3, $8 1211; MMEL-NEXT: and $4, $2, $9 1212; MMEL-NEXT: or $4, $4, $3 1213; MMEL-NEXT: sc $4, 0($6) 1214; MMEL-NEXT: beqzc $4, $BB4_1 1215; MMEL-NEXT: # %bb.2: # %entry 1216; MMEL-NEXT: .insn 1217; MMEL-NEXT: # %bb.3: # %entry 1218; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1219; MMEL-NEXT: # %bb.4: # %entry 1220; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1221; MMEL-NEXT: sync 1222; MMEL-NEXT: addiusp 8 1223; MMEL-NEXT: jrc $ra 1224; 1225; MMELR6-LABEL: test_max_16: 1226; MMELR6: # %bb.0: # %entry 1227; MMELR6-NEXT: addiu $sp, $sp, -8 1228; MMELR6-NEXT: .cfi_def_cfa_offset 8 1229; MMELR6-NEXT: # kill: def $at killed $a1 1230; MMELR6-NEXT: sync 1231; MMELR6-NEXT: addiu $1, $zero, -4 1232; MMELR6-NEXT: and $6, $4, $1 1233; MMELR6-NEXT: andi $1, $4, 3 1234; MMELR6-NEXT: sll $10, $1, 3 1235; MMELR6-NEXT: ori $1, $zero, 65535 1236; MMELR6-NEXT: sllv $8, $1, $10 1237; MMELR6-NEXT: nor $9, $zero, $8 1238; MMELR6-NEXT: sllv $7, $5, $10 1239; MMELR6-NEXT: $BB4_1: # %entry 1240; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 1241; MMELR6-NEXT: ll $2, 0($6) 1242; MMELR6-NEXT: srav $4, $2, $10 1243; MMELR6-NEXT: seh $4, $4 1244; MMELR6-NEXT: or $1, $zero, $4 1245; MMELR6-NEXT: sllv $4, $4, $10 1246; MMELR6-NEXT: slt $5, $4, $7 1247; MMELR6-NEXT: seleqz $3, $4, $5 1248; MMELR6-NEXT: selnez $5, $7, $5 1249; MMELR6-NEXT: or $3, $3, $5 1250; MMELR6-NEXT: and $3, $3, $8 1251; MMELR6-NEXT: and $4, $2, $9 1252; MMELR6-NEXT: or $4, $4, $3 1253; MMELR6-NEXT: sc $4, 0($6) 1254; MMELR6-NEXT: beqc $4, $zero, $BB4_1 1255; MMELR6-NEXT: # %bb.2: # %entry 1256; MMELR6-NEXT: .insn 1257; MMELR6-NEXT: # %bb.3: # %entry 1258; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1259; MMELR6-NEXT: # %bb.4: # %entry 1260; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1261; MMELR6-NEXT: sync 1262; MMELR6-NEXT: addiu $sp, $sp, 8 1263; MMELR6-NEXT: jrc $ra 1264; 1265; MIPS64-LABEL: test_max_16: 1266; MIPS64: # %bb.0: # %entry 1267; MIPS64-NEXT: daddiu $sp, $sp, -16 1268; MIPS64-NEXT: .cfi_def_cfa_offset 16 1269; MIPS64-NEXT: move $1, $5 1270; MIPS64-NEXT: sync 1271; MIPS64-NEXT: daddiu $2, $zero, -4 1272; MIPS64-NEXT: and $6, $4, $2 1273; MIPS64-NEXT: andi $2, $4, 3 1274; MIPS64-NEXT: xori $2, $2, 2 1275; MIPS64-NEXT: sll $10, $2, 3 1276; MIPS64-NEXT: ori $2, $zero, 65535 1277; MIPS64-NEXT: sllv $8, $2, $10 1278; MIPS64-NEXT: nor $9, $zero, $8 1279; MIPS64-NEXT: sllv $7, $1, $10 1280; MIPS64-NEXT: .LBB4_1: # %entry 1281; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 1282; MIPS64-NEXT: ll $2, 0($6) 1283; MIPS64-NEXT: srav $4, $2, $10 1284; MIPS64-NEXT: seh $4, $4 1285; MIPS64-NEXT: or $1, $zero, $4 1286; MIPS64-NEXT: sllv $4, $4, $10 1287; MIPS64-NEXT: slt $5, $4, $7 1288; MIPS64-NEXT: move $3, $4 1289; MIPS64-NEXT: movn $3, $7, $5 1290; MIPS64-NEXT: and $3, $3, $8 1291; MIPS64-NEXT: and $4, $2, $9 1292; MIPS64-NEXT: or $4, $4, $3 1293; MIPS64-NEXT: sc $4, 0($6) 1294; MIPS64-NEXT: beqz $4, .LBB4_1 1295; MIPS64-NEXT: nop 1296; MIPS64-NEXT: # %bb.2: # %entry 1297; MIPS64-NEXT: .insn 1298; MIPS64-NEXT: # %bb.3: # %entry 1299; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1300; MIPS64-NEXT: # %bb.4: # %entry 1301; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1302; MIPS64-NEXT: sync 1303; MIPS64-NEXT: daddiu $sp, $sp, 16 1304; MIPS64-NEXT: jr $ra 1305; MIPS64-NEXT: nop 1306; 1307; MIPS64R6-LABEL: test_max_16: 1308; MIPS64R6: # %bb.0: # %entry 1309; MIPS64R6-NEXT: daddiu $sp, $sp, -16 1310; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 1311; MIPS64R6-NEXT: move $1, $5 1312; MIPS64R6-NEXT: sync 1313; MIPS64R6-NEXT: daddiu $2, $zero, -4 1314; MIPS64R6-NEXT: and $6, $4, $2 1315; MIPS64R6-NEXT: andi $2, $4, 3 1316; MIPS64R6-NEXT: xori $2, $2, 2 1317; MIPS64R6-NEXT: sll $10, $2, 3 1318; MIPS64R6-NEXT: ori $2, $zero, 65535 1319; MIPS64R6-NEXT: sllv $8, $2, $10 1320; MIPS64R6-NEXT: nor $9, $zero, $8 1321; MIPS64R6-NEXT: sllv $7, $1, $10 1322; MIPS64R6-NEXT: .LBB4_1: # %entry 1323; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 1324; MIPS64R6-NEXT: ll $2, 0($6) 1325; MIPS64R6-NEXT: srav $4, $2, $10 1326; MIPS64R6-NEXT: seh $4, $4 1327; MIPS64R6-NEXT: or $1, $zero, $4 1328; MIPS64R6-NEXT: sllv $4, $4, $10 1329; MIPS64R6-NEXT: slt $5, $4, $7 1330; MIPS64R6-NEXT: seleqz $3, $4, $5 1331; MIPS64R6-NEXT: selnez $5, $7, $5 1332; MIPS64R6-NEXT: or $3, $3, $5 1333; MIPS64R6-NEXT: and $3, $3, $8 1334; MIPS64R6-NEXT: and $4, $2, $9 1335; MIPS64R6-NEXT: or $4, $4, $3 1336; MIPS64R6-NEXT: sc $4, 0($6) 1337; MIPS64R6-NEXT: beqzc $4, .LBB4_1 1338; MIPS64R6-NEXT: nop 1339; MIPS64R6-NEXT: # %bb.2: # %entry 1340; MIPS64R6-NEXT: .insn 1341; MIPS64R6-NEXT: # %bb.3: # %entry 1342; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1343; MIPS64R6-NEXT: # %bb.4: # %entry 1344; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1345; MIPS64R6-NEXT: sync 1346; MIPS64R6-NEXT: daddiu $sp, $sp, 16 1347; MIPS64R6-NEXT: jrc $ra 1348; 1349; MIPS64EL-LABEL: test_max_16: 1350; MIPS64EL: # %bb.0: # %entry 1351; MIPS64EL-NEXT: daddiu $sp, $sp, -16 1352; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 1353; MIPS64EL-NEXT: move $1, $5 1354; MIPS64EL-NEXT: sync 1355; MIPS64EL-NEXT: daddiu $2, $zero, -4 1356; MIPS64EL-NEXT: and $6, $4, $2 1357; MIPS64EL-NEXT: andi $2, $4, 3 1358; MIPS64EL-NEXT: sll $10, $2, 3 1359; MIPS64EL-NEXT: ori $2, $zero, 65535 1360; MIPS64EL-NEXT: sllv $8, $2, $10 1361; MIPS64EL-NEXT: nor $9, $zero, $8 1362; MIPS64EL-NEXT: sllv $7, $1, $10 1363; MIPS64EL-NEXT: .LBB4_1: # %entry 1364; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 1365; MIPS64EL-NEXT: ll $2, 0($6) 1366; MIPS64EL-NEXT: srav $4, $2, $10 1367; MIPS64EL-NEXT: seh $4, $4 1368; MIPS64EL-NEXT: or $1, $zero, $4 1369; MIPS64EL-NEXT: sllv $4, $4, $10 1370; MIPS64EL-NEXT: slt $5, $4, $7 1371; MIPS64EL-NEXT: move $3, $4 1372; MIPS64EL-NEXT: movn $3, $7, $5 1373; MIPS64EL-NEXT: and $3, $3, $8 1374; MIPS64EL-NEXT: and $4, $2, $9 1375; MIPS64EL-NEXT: or $4, $4, $3 1376; MIPS64EL-NEXT: sc $4, 0($6) 1377; MIPS64EL-NEXT: beqz $4, .LBB4_1 1378; MIPS64EL-NEXT: nop 1379; MIPS64EL-NEXT: # %bb.2: # %entry 1380; MIPS64EL-NEXT: .insn 1381; MIPS64EL-NEXT: # %bb.3: # %entry 1382; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1383; MIPS64EL-NEXT: # %bb.4: # %entry 1384; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1385; MIPS64EL-NEXT: sync 1386; MIPS64EL-NEXT: daddiu $sp, $sp, 16 1387; MIPS64EL-NEXT: jr $ra 1388; MIPS64EL-NEXT: nop 1389; 1390; MIPS64ELR6-LABEL: test_max_16: 1391; MIPS64ELR6: # %bb.0: # %entry 1392; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 1393; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 1394; MIPS64ELR6-NEXT: move $1, $5 1395; MIPS64ELR6-NEXT: sync 1396; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 1397; MIPS64ELR6-NEXT: and $6, $4, $2 1398; MIPS64ELR6-NEXT: andi $2, $4, 3 1399; MIPS64ELR6-NEXT: sll $10, $2, 3 1400; MIPS64ELR6-NEXT: ori $2, $zero, 65535 1401; MIPS64ELR6-NEXT: sllv $8, $2, $10 1402; MIPS64ELR6-NEXT: nor $9, $zero, $8 1403; MIPS64ELR6-NEXT: sllv $7, $1, $10 1404; MIPS64ELR6-NEXT: .LBB4_1: # %entry 1405; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 1406; MIPS64ELR6-NEXT: ll $2, 0($6) 1407; MIPS64ELR6-NEXT: srav $4, $2, $10 1408; MIPS64ELR6-NEXT: seh $4, $4 1409; MIPS64ELR6-NEXT: or $1, $zero, $4 1410; MIPS64ELR6-NEXT: sllv $4, $4, $10 1411; MIPS64ELR6-NEXT: slt $5, $4, $7 1412; MIPS64ELR6-NEXT: seleqz $3, $4, $5 1413; MIPS64ELR6-NEXT: selnez $5, $7, $5 1414; MIPS64ELR6-NEXT: or $3, $3, $5 1415; MIPS64ELR6-NEXT: and $3, $3, $8 1416; MIPS64ELR6-NEXT: and $4, $2, $9 1417; MIPS64ELR6-NEXT: or $4, $4, $3 1418; MIPS64ELR6-NEXT: sc $4, 0($6) 1419; MIPS64ELR6-NEXT: beqzc $4, .LBB4_1 1420; MIPS64ELR6-NEXT: nop 1421; MIPS64ELR6-NEXT: # %bb.2: # %entry 1422; MIPS64ELR6-NEXT: .insn 1423; MIPS64ELR6-NEXT: # %bb.3: # %entry 1424; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1425; MIPS64ELR6-NEXT: # %bb.4: # %entry 1426; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1427; MIPS64ELR6-NEXT: sync 1428; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 1429; MIPS64ELR6-NEXT: jrc $ra 1430 1431entry: 1432 %0 = atomicrmw max ptr %ptr, i16 %val seq_cst 1433 ret i16 %0 1434} 1435 1436define i16 @test_min_16(ptr nocapture %ptr, i16 signext %val) { 1437; MIPS-LABEL: test_min_16: 1438; MIPS: # %bb.0: # %entry 1439; MIPS-NEXT: addiu $sp, $sp, -8 1440; MIPS-NEXT: .cfi_def_cfa_offset 8 1441; MIPS-NEXT: # kill: def $at killed $a1 1442; MIPS-NEXT: sync 1443; MIPS-NEXT: addiu $1, $zero, -4 1444; MIPS-NEXT: and $6, $4, $1 1445; MIPS-NEXT: andi $1, $4, 3 1446; MIPS-NEXT: xori $1, $1, 2 1447; MIPS-NEXT: sll $10, $1, 3 1448; MIPS-NEXT: ori $1, $zero, 65535 1449; MIPS-NEXT: sllv $8, $1, $10 1450; MIPS-NEXT: nor $9, $zero, $8 1451; MIPS-NEXT: sllv $7, $5, $10 1452; MIPS-NEXT: $BB5_1: # %entry 1453; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 1454; MIPS-NEXT: ll $2, 0($6) 1455; MIPS-NEXT: srav $4, $2, $10 1456; MIPS-NEXT: seh $4, $4 1457; MIPS-NEXT: or $1, $zero, $4 1458; MIPS-NEXT: sllv $4, $4, $10 1459; MIPS-NEXT: slt $5, $4, $7 1460; MIPS-NEXT: move $3, $4 1461; MIPS-NEXT: movz $3, $7, $5 1462; MIPS-NEXT: and $3, $3, $8 1463; MIPS-NEXT: and $4, $2, $9 1464; MIPS-NEXT: or $4, $4, $3 1465; MIPS-NEXT: sc $4, 0($6) 1466; MIPS-NEXT: beqz $4, $BB5_1 1467; MIPS-NEXT: nop 1468; MIPS-NEXT: # %bb.2: # %entry 1469; MIPS-NEXT: .insn 1470; MIPS-NEXT: # %bb.3: # %entry 1471; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1472; MIPS-NEXT: # %bb.4: # %entry 1473; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1474; MIPS-NEXT: sync 1475; MIPS-NEXT: addiu $sp, $sp, 8 1476; MIPS-NEXT: jr $ra 1477; MIPS-NEXT: nop 1478; 1479; MIPSR6-LABEL: test_min_16: 1480; MIPSR6: # %bb.0: # %entry 1481; MIPSR6-NEXT: addiu $sp, $sp, -8 1482; MIPSR6-NEXT: .cfi_def_cfa_offset 8 1483; MIPSR6-NEXT: # kill: def $at killed $a1 1484; MIPSR6-NEXT: sync 1485; MIPSR6-NEXT: addiu $1, $zero, -4 1486; MIPSR6-NEXT: and $6, $4, $1 1487; MIPSR6-NEXT: andi $1, $4, 3 1488; MIPSR6-NEXT: xori $1, $1, 2 1489; MIPSR6-NEXT: sll $10, $1, 3 1490; MIPSR6-NEXT: ori $1, $zero, 65535 1491; MIPSR6-NEXT: sllv $8, $1, $10 1492; MIPSR6-NEXT: nor $9, $zero, $8 1493; MIPSR6-NEXT: sllv $7, $5, $10 1494; MIPSR6-NEXT: $BB5_1: # %entry 1495; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 1496; MIPSR6-NEXT: ll $2, 0($6) 1497; MIPSR6-NEXT: srav $4, $2, $10 1498; MIPSR6-NEXT: seh $4, $4 1499; MIPSR6-NEXT: or $1, $zero, $4 1500; MIPSR6-NEXT: sllv $4, $4, $10 1501; MIPSR6-NEXT: slt $5, $4, $7 1502; MIPSR6-NEXT: selnez $3, $4, $5 1503; MIPSR6-NEXT: seleqz $5, $7, $5 1504; MIPSR6-NEXT: or $3, $3, $5 1505; MIPSR6-NEXT: and $3, $3, $8 1506; MIPSR6-NEXT: and $4, $2, $9 1507; MIPSR6-NEXT: or $4, $4, $3 1508; MIPSR6-NEXT: sc $4, 0($6) 1509; MIPSR6-NEXT: beqzc $4, $BB5_1 1510; MIPSR6-NEXT: nop 1511; MIPSR6-NEXT: # %bb.2: # %entry 1512; MIPSR6-NEXT: .insn 1513; MIPSR6-NEXT: # %bb.3: # %entry 1514; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1515; MIPSR6-NEXT: # %bb.4: # %entry 1516; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1517; MIPSR6-NEXT: sync 1518; MIPSR6-NEXT: addiu $sp, $sp, 8 1519; MIPSR6-NEXT: jrc $ra 1520; 1521; MM-LABEL: test_min_16: 1522; MM: # %bb.0: # %entry 1523; MM-NEXT: addiu $sp, $sp, -8 1524; MM-NEXT: .cfi_def_cfa_offset 8 1525; MM-NEXT: # kill: def $at killed $a1 1526; MM-NEXT: sync 1527; MM-NEXT: addiu $1, $zero, -4 1528; MM-NEXT: and $6, $4, $1 1529; MM-NEXT: andi $1, $4, 3 1530; MM-NEXT: xori $1, $1, 2 1531; MM-NEXT: sll $10, $1, 3 1532; MM-NEXT: ori $1, $zero, 65535 1533; MM-NEXT: sllv $8, $1, $10 1534; MM-NEXT: nor $9, $zero, $8 1535; MM-NEXT: sllv $7, $5, $10 1536; MM-NEXT: $BB5_1: # %entry 1537; MM-NEXT: # =>This Inner Loop Header: Depth=1 1538; MM-NEXT: ll $2, 0($6) 1539; MM-NEXT: srav $4, $2, $10 1540; MM-NEXT: seh $4, $4 1541; MM-NEXT: or $1, $zero, $4 1542; MM-NEXT: sllv $4, $4, $10 1543; MM-NEXT: slt $5, $4, $7 1544; MM-NEXT: or $3, $4, $zero 1545; MM-NEXT: movz $3, $7, $5 1546; MM-NEXT: and $3, $3, $8 1547; MM-NEXT: and $4, $2, $9 1548; MM-NEXT: or $4, $4, $3 1549; MM-NEXT: sc $4, 0($6) 1550; MM-NEXT: beqzc $4, $BB5_1 1551; MM-NEXT: # %bb.2: # %entry 1552; MM-NEXT: .insn 1553; MM-NEXT: # %bb.3: # %entry 1554; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1555; MM-NEXT: # %bb.4: # %entry 1556; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1557; MM-NEXT: sync 1558; MM-NEXT: addiusp 8 1559; MM-NEXT: jrc $ra 1560; 1561; MMR6-LABEL: test_min_16: 1562; MMR6: # %bb.0: # %entry 1563; MMR6-NEXT: addiu $sp, $sp, -8 1564; MMR6-NEXT: .cfi_def_cfa_offset 8 1565; MMR6-NEXT: # kill: def $at killed $a1 1566; MMR6-NEXT: sync 1567; MMR6-NEXT: addiu $1, $zero, -4 1568; MMR6-NEXT: and $6, $4, $1 1569; MMR6-NEXT: andi $1, $4, 3 1570; MMR6-NEXT: xori $1, $1, 2 1571; MMR6-NEXT: sll $10, $1, 3 1572; MMR6-NEXT: ori $1, $zero, 65535 1573; MMR6-NEXT: sllv $8, $1, $10 1574; MMR6-NEXT: nor $9, $zero, $8 1575; MMR6-NEXT: sllv $7, $5, $10 1576; MMR6-NEXT: $BB5_1: # %entry 1577; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 1578; MMR6-NEXT: ll $2, 0($6) 1579; MMR6-NEXT: srav $4, $2, $10 1580; MMR6-NEXT: seh $4, $4 1581; MMR6-NEXT: or $1, $zero, $4 1582; MMR6-NEXT: sllv $4, $4, $10 1583; MMR6-NEXT: slt $5, $4, $7 1584; MMR6-NEXT: selnez $3, $4, $5 1585; MMR6-NEXT: seleqz $5, $7, $5 1586; MMR6-NEXT: or $3, $3, $5 1587; MMR6-NEXT: and $3, $3, $8 1588; MMR6-NEXT: and $4, $2, $9 1589; MMR6-NEXT: or $4, $4, $3 1590; MMR6-NEXT: sc $4, 0($6) 1591; MMR6-NEXT: beqc $4, $zero, $BB5_1 1592; MMR6-NEXT: # %bb.2: # %entry 1593; MMR6-NEXT: .insn 1594; MMR6-NEXT: # %bb.3: # %entry 1595; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1596; MMR6-NEXT: # %bb.4: # %entry 1597; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1598; MMR6-NEXT: sync 1599; MMR6-NEXT: addiu $sp, $sp, 8 1600; MMR6-NEXT: jrc $ra 1601; 1602; MIPS32-LABEL: test_min_16: 1603; MIPS32: # %bb.0: # %entry 1604; MIPS32-NEXT: addiu $sp, $sp, -8 1605; MIPS32-NEXT: .cfi_def_cfa_offset 8 1606; MIPS32-NEXT: # kill: def $at killed $a1 1607; MIPS32-NEXT: sync 1608; MIPS32-NEXT: addiu $1, $zero, -4 1609; MIPS32-NEXT: and $6, $4, $1 1610; MIPS32-NEXT: andi $1, $4, 3 1611; MIPS32-NEXT: sll $10, $1, 3 1612; MIPS32-NEXT: ori $1, $zero, 65535 1613; MIPS32-NEXT: sllv $8, $1, $10 1614; MIPS32-NEXT: nor $9, $zero, $8 1615; MIPS32-NEXT: sllv $7, $5, $10 1616; MIPS32-NEXT: $BB5_1: # %entry 1617; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 1618; MIPS32-NEXT: ll $2, 0($6) 1619; MIPS32-NEXT: srav $4, $2, $10 1620; MIPS32-NEXT: sll $4, $4, 16 1621; MIPS32-NEXT: sra $4, $4, 16 1622; MIPS32-NEXT: or $1, $zero, $4 1623; MIPS32-NEXT: sllv $4, $4, $10 1624; MIPS32-NEXT: slt $5, $4, $7 1625; MIPS32-NEXT: move $3, $4 1626; MIPS32-NEXT: movz $3, $7, $5 1627; MIPS32-NEXT: and $3, $3, $8 1628; MIPS32-NEXT: and $4, $2, $9 1629; MIPS32-NEXT: or $4, $4, $3 1630; MIPS32-NEXT: sc $4, 0($6) 1631; MIPS32-NEXT: beqz $4, $BB5_1 1632; MIPS32-NEXT: nop 1633; MIPS32-NEXT: # %bb.2: # %entry 1634; MIPS32-NEXT: .insn 1635; MIPS32-NEXT: # %bb.3: # %entry 1636; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1637; MIPS32-NEXT: # %bb.4: # %entry 1638; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1639; MIPS32-NEXT: sync 1640; MIPS32-NEXT: addiu $sp, $sp, 8 1641; MIPS32-NEXT: jr $ra 1642; MIPS32-NEXT: nop 1643; 1644; MIPSEL-LABEL: test_min_16: 1645; MIPSEL: # %bb.0: # %entry 1646; MIPSEL-NEXT: addiu $sp, $sp, -8 1647; MIPSEL-NEXT: .cfi_def_cfa_offset 8 1648; MIPSEL-NEXT: # kill: def $at killed $a1 1649; MIPSEL-NEXT: sync 1650; MIPSEL-NEXT: addiu $1, $zero, -4 1651; MIPSEL-NEXT: and $6, $4, $1 1652; MIPSEL-NEXT: andi $1, $4, 3 1653; MIPSEL-NEXT: sll $10, $1, 3 1654; MIPSEL-NEXT: ori $1, $zero, 65535 1655; MIPSEL-NEXT: sllv $8, $1, $10 1656; MIPSEL-NEXT: nor $9, $zero, $8 1657; MIPSEL-NEXT: sllv $7, $5, $10 1658; MIPSEL-NEXT: $BB5_1: # %entry 1659; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 1660; MIPSEL-NEXT: ll $2, 0($6) 1661; MIPSEL-NEXT: srav $4, $2, $10 1662; MIPSEL-NEXT: seh $4, $4 1663; MIPSEL-NEXT: or $1, $zero, $4 1664; MIPSEL-NEXT: sllv $4, $4, $10 1665; MIPSEL-NEXT: slt $5, $4, $7 1666; MIPSEL-NEXT: move $3, $4 1667; MIPSEL-NEXT: movz $3, $7, $5 1668; MIPSEL-NEXT: and $3, $3, $8 1669; MIPSEL-NEXT: and $4, $2, $9 1670; MIPSEL-NEXT: or $4, $4, $3 1671; MIPSEL-NEXT: sc $4, 0($6) 1672; MIPSEL-NEXT: beqz $4, $BB5_1 1673; MIPSEL-NEXT: nop 1674; MIPSEL-NEXT: # %bb.2: # %entry 1675; MIPSEL-NEXT: .insn 1676; MIPSEL-NEXT: # %bb.3: # %entry 1677; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1678; MIPSEL-NEXT: # %bb.4: # %entry 1679; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1680; MIPSEL-NEXT: sync 1681; MIPSEL-NEXT: addiu $sp, $sp, 8 1682; MIPSEL-NEXT: jr $ra 1683; MIPSEL-NEXT: nop 1684; 1685; MIPSELR6-LABEL: test_min_16: 1686; MIPSELR6: # %bb.0: # %entry 1687; MIPSELR6-NEXT: addiu $sp, $sp, -8 1688; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 1689; MIPSELR6-NEXT: # kill: def $at killed $a1 1690; MIPSELR6-NEXT: sync 1691; MIPSELR6-NEXT: addiu $1, $zero, -4 1692; MIPSELR6-NEXT: and $6, $4, $1 1693; MIPSELR6-NEXT: andi $1, $4, 3 1694; MIPSELR6-NEXT: sll $10, $1, 3 1695; MIPSELR6-NEXT: ori $1, $zero, 65535 1696; MIPSELR6-NEXT: sllv $8, $1, $10 1697; MIPSELR6-NEXT: nor $9, $zero, $8 1698; MIPSELR6-NEXT: sllv $7, $5, $10 1699; MIPSELR6-NEXT: $BB5_1: # %entry 1700; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 1701; MIPSELR6-NEXT: ll $2, 0($6) 1702; MIPSELR6-NEXT: srav $4, $2, $10 1703; MIPSELR6-NEXT: seh $4, $4 1704; MIPSELR6-NEXT: or $1, $zero, $4 1705; MIPSELR6-NEXT: sllv $4, $4, $10 1706; MIPSELR6-NEXT: slt $5, $4, $7 1707; MIPSELR6-NEXT: selnez $3, $4, $5 1708; MIPSELR6-NEXT: seleqz $5, $7, $5 1709; MIPSELR6-NEXT: or $3, $3, $5 1710; MIPSELR6-NEXT: and $3, $3, $8 1711; MIPSELR6-NEXT: and $4, $2, $9 1712; MIPSELR6-NEXT: or $4, $4, $3 1713; MIPSELR6-NEXT: sc $4, 0($6) 1714; MIPSELR6-NEXT: beqzc $4, $BB5_1 1715; MIPSELR6-NEXT: nop 1716; MIPSELR6-NEXT: # %bb.2: # %entry 1717; MIPSELR6-NEXT: .insn 1718; MIPSELR6-NEXT: # %bb.3: # %entry 1719; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1720; MIPSELR6-NEXT: # %bb.4: # %entry 1721; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1722; MIPSELR6-NEXT: sync 1723; MIPSELR6-NEXT: addiu $sp, $sp, 8 1724; MIPSELR6-NEXT: jrc $ra 1725; 1726; MMEL-LABEL: test_min_16: 1727; MMEL: # %bb.0: # %entry 1728; MMEL-NEXT: addiu $sp, $sp, -8 1729; MMEL-NEXT: .cfi_def_cfa_offset 8 1730; MMEL-NEXT: # kill: def $at killed $a1 1731; MMEL-NEXT: sync 1732; MMEL-NEXT: addiu $1, $zero, -4 1733; MMEL-NEXT: and $6, $4, $1 1734; MMEL-NEXT: andi $1, $4, 3 1735; MMEL-NEXT: sll $10, $1, 3 1736; MMEL-NEXT: ori $1, $zero, 65535 1737; MMEL-NEXT: sllv $8, $1, $10 1738; MMEL-NEXT: nor $9, $zero, $8 1739; MMEL-NEXT: sllv $7, $5, $10 1740; MMEL-NEXT: $BB5_1: # %entry 1741; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 1742; MMEL-NEXT: ll $2, 0($6) 1743; MMEL-NEXT: srav $4, $2, $10 1744; MMEL-NEXT: seh $4, $4 1745; MMEL-NEXT: or $1, $zero, $4 1746; MMEL-NEXT: sllv $4, $4, $10 1747; MMEL-NEXT: slt $5, $4, $7 1748; MMEL-NEXT: or $3, $4, $zero 1749; MMEL-NEXT: movz $3, $7, $5 1750; MMEL-NEXT: and $3, $3, $8 1751; MMEL-NEXT: and $4, $2, $9 1752; MMEL-NEXT: or $4, $4, $3 1753; MMEL-NEXT: sc $4, 0($6) 1754; MMEL-NEXT: beqzc $4, $BB5_1 1755; MMEL-NEXT: # %bb.2: # %entry 1756; MMEL-NEXT: .insn 1757; MMEL-NEXT: # %bb.3: # %entry 1758; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1759; MMEL-NEXT: # %bb.4: # %entry 1760; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1761; MMEL-NEXT: sync 1762; MMEL-NEXT: addiusp 8 1763; MMEL-NEXT: jrc $ra 1764; 1765; MMELR6-LABEL: test_min_16: 1766; MMELR6: # %bb.0: # %entry 1767; MMELR6-NEXT: addiu $sp, $sp, -8 1768; MMELR6-NEXT: .cfi_def_cfa_offset 8 1769; MMELR6-NEXT: # kill: def $at killed $a1 1770; MMELR6-NEXT: sync 1771; MMELR6-NEXT: addiu $1, $zero, -4 1772; MMELR6-NEXT: and $6, $4, $1 1773; MMELR6-NEXT: andi $1, $4, 3 1774; MMELR6-NEXT: sll $10, $1, 3 1775; MMELR6-NEXT: ori $1, $zero, 65535 1776; MMELR6-NEXT: sllv $8, $1, $10 1777; MMELR6-NEXT: nor $9, $zero, $8 1778; MMELR6-NEXT: sllv $7, $5, $10 1779; MMELR6-NEXT: $BB5_1: # %entry 1780; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 1781; MMELR6-NEXT: ll $2, 0($6) 1782; MMELR6-NEXT: srav $4, $2, $10 1783; MMELR6-NEXT: seh $4, $4 1784; MMELR6-NEXT: or $1, $zero, $4 1785; MMELR6-NEXT: sllv $4, $4, $10 1786; MMELR6-NEXT: slt $5, $4, $7 1787; MMELR6-NEXT: selnez $3, $4, $5 1788; MMELR6-NEXT: seleqz $5, $7, $5 1789; MMELR6-NEXT: or $3, $3, $5 1790; MMELR6-NEXT: and $3, $3, $8 1791; MMELR6-NEXT: and $4, $2, $9 1792; MMELR6-NEXT: or $4, $4, $3 1793; MMELR6-NEXT: sc $4, 0($6) 1794; MMELR6-NEXT: beqc $4, $zero, $BB5_1 1795; MMELR6-NEXT: # %bb.2: # %entry 1796; MMELR6-NEXT: .insn 1797; MMELR6-NEXT: # %bb.3: # %entry 1798; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 1799; MMELR6-NEXT: # %bb.4: # %entry 1800; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 1801; MMELR6-NEXT: sync 1802; MMELR6-NEXT: addiu $sp, $sp, 8 1803; MMELR6-NEXT: jrc $ra 1804; 1805; MIPS64-LABEL: test_min_16: 1806; MIPS64: # %bb.0: # %entry 1807; MIPS64-NEXT: daddiu $sp, $sp, -16 1808; MIPS64-NEXT: .cfi_def_cfa_offset 16 1809; MIPS64-NEXT: move $1, $5 1810; MIPS64-NEXT: sync 1811; MIPS64-NEXT: daddiu $2, $zero, -4 1812; MIPS64-NEXT: and $6, $4, $2 1813; MIPS64-NEXT: andi $2, $4, 3 1814; MIPS64-NEXT: xori $2, $2, 2 1815; MIPS64-NEXT: sll $10, $2, 3 1816; MIPS64-NEXT: ori $2, $zero, 65535 1817; MIPS64-NEXT: sllv $8, $2, $10 1818; MIPS64-NEXT: nor $9, $zero, $8 1819; MIPS64-NEXT: sllv $7, $1, $10 1820; MIPS64-NEXT: .LBB5_1: # %entry 1821; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 1822; MIPS64-NEXT: ll $2, 0($6) 1823; MIPS64-NEXT: srav $4, $2, $10 1824; MIPS64-NEXT: seh $4, $4 1825; MIPS64-NEXT: or $1, $zero, $4 1826; MIPS64-NEXT: sllv $4, $4, $10 1827; MIPS64-NEXT: slt $5, $4, $7 1828; MIPS64-NEXT: move $3, $4 1829; MIPS64-NEXT: movz $3, $7, $5 1830; MIPS64-NEXT: and $3, $3, $8 1831; MIPS64-NEXT: and $4, $2, $9 1832; MIPS64-NEXT: or $4, $4, $3 1833; MIPS64-NEXT: sc $4, 0($6) 1834; MIPS64-NEXT: beqz $4, .LBB5_1 1835; MIPS64-NEXT: nop 1836; MIPS64-NEXT: # %bb.2: # %entry 1837; MIPS64-NEXT: .insn 1838; MIPS64-NEXT: # %bb.3: # %entry 1839; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1840; MIPS64-NEXT: # %bb.4: # %entry 1841; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1842; MIPS64-NEXT: sync 1843; MIPS64-NEXT: daddiu $sp, $sp, 16 1844; MIPS64-NEXT: jr $ra 1845; MIPS64-NEXT: nop 1846; 1847; MIPS64R6-LABEL: test_min_16: 1848; MIPS64R6: # %bb.0: # %entry 1849; MIPS64R6-NEXT: daddiu $sp, $sp, -16 1850; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 1851; MIPS64R6-NEXT: move $1, $5 1852; MIPS64R6-NEXT: sync 1853; MIPS64R6-NEXT: daddiu $2, $zero, -4 1854; MIPS64R6-NEXT: and $6, $4, $2 1855; MIPS64R6-NEXT: andi $2, $4, 3 1856; MIPS64R6-NEXT: xori $2, $2, 2 1857; MIPS64R6-NEXT: sll $10, $2, 3 1858; MIPS64R6-NEXT: ori $2, $zero, 65535 1859; MIPS64R6-NEXT: sllv $8, $2, $10 1860; MIPS64R6-NEXT: nor $9, $zero, $8 1861; MIPS64R6-NEXT: sllv $7, $1, $10 1862; MIPS64R6-NEXT: .LBB5_1: # %entry 1863; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 1864; MIPS64R6-NEXT: ll $2, 0($6) 1865; MIPS64R6-NEXT: srav $4, $2, $10 1866; MIPS64R6-NEXT: seh $4, $4 1867; MIPS64R6-NEXT: or $1, $zero, $4 1868; MIPS64R6-NEXT: sllv $4, $4, $10 1869; MIPS64R6-NEXT: slt $5, $4, $7 1870; MIPS64R6-NEXT: selnez $3, $4, $5 1871; MIPS64R6-NEXT: seleqz $5, $7, $5 1872; MIPS64R6-NEXT: or $3, $3, $5 1873; MIPS64R6-NEXT: and $3, $3, $8 1874; MIPS64R6-NEXT: and $4, $2, $9 1875; MIPS64R6-NEXT: or $4, $4, $3 1876; MIPS64R6-NEXT: sc $4, 0($6) 1877; MIPS64R6-NEXT: beqzc $4, .LBB5_1 1878; MIPS64R6-NEXT: nop 1879; MIPS64R6-NEXT: # %bb.2: # %entry 1880; MIPS64R6-NEXT: .insn 1881; MIPS64R6-NEXT: # %bb.3: # %entry 1882; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1883; MIPS64R6-NEXT: # %bb.4: # %entry 1884; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1885; MIPS64R6-NEXT: sync 1886; MIPS64R6-NEXT: daddiu $sp, $sp, 16 1887; MIPS64R6-NEXT: jrc $ra 1888; 1889; MIPS64EL-LABEL: test_min_16: 1890; MIPS64EL: # %bb.0: # %entry 1891; MIPS64EL-NEXT: daddiu $sp, $sp, -16 1892; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 1893; MIPS64EL-NEXT: move $1, $5 1894; MIPS64EL-NEXT: sync 1895; MIPS64EL-NEXT: daddiu $2, $zero, -4 1896; MIPS64EL-NEXT: and $6, $4, $2 1897; MIPS64EL-NEXT: andi $2, $4, 3 1898; MIPS64EL-NEXT: sll $10, $2, 3 1899; MIPS64EL-NEXT: ori $2, $zero, 65535 1900; MIPS64EL-NEXT: sllv $8, $2, $10 1901; MIPS64EL-NEXT: nor $9, $zero, $8 1902; MIPS64EL-NEXT: sllv $7, $1, $10 1903; MIPS64EL-NEXT: .LBB5_1: # %entry 1904; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 1905; MIPS64EL-NEXT: ll $2, 0($6) 1906; MIPS64EL-NEXT: srav $4, $2, $10 1907; MIPS64EL-NEXT: seh $4, $4 1908; MIPS64EL-NEXT: or $1, $zero, $4 1909; MIPS64EL-NEXT: sllv $4, $4, $10 1910; MIPS64EL-NEXT: slt $5, $4, $7 1911; MIPS64EL-NEXT: move $3, $4 1912; MIPS64EL-NEXT: movz $3, $7, $5 1913; MIPS64EL-NEXT: and $3, $3, $8 1914; MIPS64EL-NEXT: and $4, $2, $9 1915; MIPS64EL-NEXT: or $4, $4, $3 1916; MIPS64EL-NEXT: sc $4, 0($6) 1917; MIPS64EL-NEXT: beqz $4, .LBB5_1 1918; MIPS64EL-NEXT: nop 1919; MIPS64EL-NEXT: # %bb.2: # %entry 1920; MIPS64EL-NEXT: .insn 1921; MIPS64EL-NEXT: # %bb.3: # %entry 1922; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1923; MIPS64EL-NEXT: # %bb.4: # %entry 1924; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1925; MIPS64EL-NEXT: sync 1926; MIPS64EL-NEXT: daddiu $sp, $sp, 16 1927; MIPS64EL-NEXT: jr $ra 1928; MIPS64EL-NEXT: nop 1929; 1930; MIPS64ELR6-LABEL: test_min_16: 1931; MIPS64ELR6: # %bb.0: # %entry 1932; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 1933; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 1934; MIPS64ELR6-NEXT: move $1, $5 1935; MIPS64ELR6-NEXT: sync 1936; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 1937; MIPS64ELR6-NEXT: and $6, $4, $2 1938; MIPS64ELR6-NEXT: andi $2, $4, 3 1939; MIPS64ELR6-NEXT: sll $10, $2, 3 1940; MIPS64ELR6-NEXT: ori $2, $zero, 65535 1941; MIPS64ELR6-NEXT: sllv $8, $2, $10 1942; MIPS64ELR6-NEXT: nor $9, $zero, $8 1943; MIPS64ELR6-NEXT: sllv $7, $1, $10 1944; MIPS64ELR6-NEXT: .LBB5_1: # %entry 1945; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 1946; MIPS64ELR6-NEXT: ll $2, 0($6) 1947; MIPS64ELR6-NEXT: srav $4, $2, $10 1948; MIPS64ELR6-NEXT: seh $4, $4 1949; MIPS64ELR6-NEXT: or $1, $zero, $4 1950; MIPS64ELR6-NEXT: sllv $4, $4, $10 1951; MIPS64ELR6-NEXT: slt $5, $4, $7 1952; MIPS64ELR6-NEXT: selnez $3, $4, $5 1953; MIPS64ELR6-NEXT: seleqz $5, $7, $5 1954; MIPS64ELR6-NEXT: or $3, $3, $5 1955; MIPS64ELR6-NEXT: and $3, $3, $8 1956; MIPS64ELR6-NEXT: and $4, $2, $9 1957; MIPS64ELR6-NEXT: or $4, $4, $3 1958; MIPS64ELR6-NEXT: sc $4, 0($6) 1959; MIPS64ELR6-NEXT: beqzc $4, .LBB5_1 1960; MIPS64ELR6-NEXT: nop 1961; MIPS64ELR6-NEXT: # %bb.2: # %entry 1962; MIPS64ELR6-NEXT: .insn 1963; MIPS64ELR6-NEXT: # %bb.3: # %entry 1964; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 1965; MIPS64ELR6-NEXT: # %bb.4: # %entry 1966; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 1967; MIPS64ELR6-NEXT: sync 1968; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 1969; MIPS64ELR6-NEXT: jrc $ra 1970entry: 1971 %0 = atomicrmw min ptr %ptr, i16 %val seq_cst 1972 ret i16 %0 1973} 1974 1975define i16 @test_umax_16(ptr nocapture %ptr, i16 signext %val) { 1976; MIPS-LABEL: test_umax_16: 1977; MIPS: # %bb.0: # %entry 1978; MIPS-NEXT: addiu $sp, $sp, -8 1979; MIPS-NEXT: .cfi_def_cfa_offset 8 1980; MIPS-NEXT: # kill: def $at killed $a1 1981; MIPS-NEXT: sync 1982; MIPS-NEXT: addiu $1, $zero, -4 1983; MIPS-NEXT: and $6, $4, $1 1984; MIPS-NEXT: andi $1, $4, 3 1985; MIPS-NEXT: xori $1, $1, 2 1986; MIPS-NEXT: sll $10, $1, 3 1987; MIPS-NEXT: ori $1, $zero, 65535 1988; MIPS-NEXT: sllv $8, $1, $10 1989; MIPS-NEXT: nor $9, $zero, $8 1990; MIPS-NEXT: sllv $7, $5, $10 1991; MIPS-NEXT: $BB6_1: # %entry 1992; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 1993; MIPS-NEXT: ll $2, 0($6) 1994; MIPS-NEXT: srav $4, $2, $10 1995; MIPS-NEXT: andi $4, $4, 65535 1996; MIPS-NEXT: or $1, $zero, $4 1997; MIPS-NEXT: sllv $4, $4, $10 1998; MIPS-NEXT: sltu $5, $4, $7 1999; MIPS-NEXT: move $3, $4 2000; MIPS-NEXT: movn $3, $7, $5 2001; MIPS-NEXT: and $3, $3, $8 2002; MIPS-NEXT: and $4, $2, $9 2003; MIPS-NEXT: or $4, $4, $3 2004; MIPS-NEXT: sc $4, 0($6) 2005; MIPS-NEXT: beqz $4, $BB6_1 2006; MIPS-NEXT: nop 2007; MIPS-NEXT: # %bb.2: # %entry 2008; MIPS-NEXT: .insn 2009; MIPS-NEXT: # %bb.3: # %entry 2010; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2011; MIPS-NEXT: # %bb.4: # %entry 2012; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2013; MIPS-NEXT: sync 2014; MIPS-NEXT: addiu $sp, $sp, 8 2015; MIPS-NEXT: jr $ra 2016; MIPS-NEXT: nop 2017; 2018; MIPSR6-LABEL: test_umax_16: 2019; MIPSR6: # %bb.0: # %entry 2020; MIPSR6-NEXT: addiu $sp, $sp, -8 2021; MIPSR6-NEXT: .cfi_def_cfa_offset 8 2022; MIPSR6-NEXT: # kill: def $at killed $a1 2023; MIPSR6-NEXT: sync 2024; MIPSR6-NEXT: addiu $1, $zero, -4 2025; MIPSR6-NEXT: and $6, $4, $1 2026; MIPSR6-NEXT: andi $1, $4, 3 2027; MIPSR6-NEXT: xori $1, $1, 2 2028; MIPSR6-NEXT: sll $10, $1, 3 2029; MIPSR6-NEXT: ori $1, $zero, 65535 2030; MIPSR6-NEXT: sllv $8, $1, $10 2031; MIPSR6-NEXT: nor $9, $zero, $8 2032; MIPSR6-NEXT: sllv $7, $5, $10 2033; MIPSR6-NEXT: $BB6_1: # %entry 2034; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 2035; MIPSR6-NEXT: ll $2, 0($6) 2036; MIPSR6-NEXT: srav $4, $2, $10 2037; MIPSR6-NEXT: andi $4, $4, 65535 2038; MIPSR6-NEXT: or $1, $zero, $4 2039; MIPSR6-NEXT: sllv $4, $4, $10 2040; MIPSR6-NEXT: sltu $5, $4, $7 2041; MIPSR6-NEXT: seleqz $3, $4, $5 2042; MIPSR6-NEXT: selnez $5, $7, $5 2043; MIPSR6-NEXT: or $3, $3, $5 2044; MIPSR6-NEXT: and $3, $3, $8 2045; MIPSR6-NEXT: and $4, $2, $9 2046; MIPSR6-NEXT: or $4, $4, $3 2047; MIPSR6-NEXT: sc $4, 0($6) 2048; MIPSR6-NEXT: beqzc $4, $BB6_1 2049; MIPSR6-NEXT: nop 2050; MIPSR6-NEXT: # %bb.2: # %entry 2051; MIPSR6-NEXT: .insn 2052; MIPSR6-NEXT: # %bb.3: # %entry 2053; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2054; MIPSR6-NEXT: # %bb.4: # %entry 2055; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2056; MIPSR6-NEXT: sync 2057; MIPSR6-NEXT: addiu $sp, $sp, 8 2058; MIPSR6-NEXT: jrc $ra 2059; 2060; MM-LABEL: test_umax_16: 2061; MM: # %bb.0: # %entry 2062; MM-NEXT: addiu $sp, $sp, -8 2063; MM-NEXT: .cfi_def_cfa_offset 8 2064; MM-NEXT: # kill: def $at killed $a1 2065; MM-NEXT: sync 2066; MM-NEXT: addiu $1, $zero, -4 2067; MM-NEXT: and $6, $4, $1 2068; MM-NEXT: andi $1, $4, 3 2069; MM-NEXT: xori $1, $1, 2 2070; MM-NEXT: sll $10, $1, 3 2071; MM-NEXT: ori $1, $zero, 65535 2072; MM-NEXT: sllv $8, $1, $10 2073; MM-NEXT: nor $9, $zero, $8 2074; MM-NEXT: sllv $7, $5, $10 2075; MM-NEXT: $BB6_1: # %entry 2076; MM-NEXT: # =>This Inner Loop Header: Depth=1 2077; MM-NEXT: ll $2, 0($6) 2078; MM-NEXT: srav $4, $2, $10 2079; MM-NEXT: andi $4, $4, 65535 2080; MM-NEXT: or $1, $zero, $4 2081; MM-NEXT: sllv $4, $4, $10 2082; MM-NEXT: sltu $5, $4, $7 2083; MM-NEXT: or $3, $4, $zero 2084; MM-NEXT: movn $3, $7, $5 2085; MM-NEXT: and $3, $3, $8 2086; MM-NEXT: and $4, $2, $9 2087; MM-NEXT: or $4, $4, $3 2088; MM-NEXT: sc $4, 0($6) 2089; MM-NEXT: beqzc $4, $BB6_1 2090; MM-NEXT: # %bb.2: # %entry 2091; MM-NEXT: .insn 2092; MM-NEXT: # %bb.3: # %entry 2093; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2094; MM-NEXT: # %bb.4: # %entry 2095; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2096; MM-NEXT: sync 2097; MM-NEXT: addiusp 8 2098; MM-NEXT: jrc $ra 2099; 2100; MMR6-LABEL: test_umax_16: 2101; MMR6: # %bb.0: # %entry 2102; MMR6-NEXT: addiu $sp, $sp, -8 2103; MMR6-NEXT: .cfi_def_cfa_offset 8 2104; MMR6-NEXT: # kill: def $at killed $a1 2105; MMR6-NEXT: sync 2106; MMR6-NEXT: addiu $1, $zero, -4 2107; MMR6-NEXT: and $6, $4, $1 2108; MMR6-NEXT: andi $1, $4, 3 2109; MMR6-NEXT: xori $1, $1, 2 2110; MMR6-NEXT: sll $10, $1, 3 2111; MMR6-NEXT: ori $1, $zero, 65535 2112; MMR6-NEXT: sllv $8, $1, $10 2113; MMR6-NEXT: nor $9, $zero, $8 2114; MMR6-NEXT: sllv $7, $5, $10 2115; MMR6-NEXT: $BB6_1: # %entry 2116; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 2117; MMR6-NEXT: ll $2, 0($6) 2118; MMR6-NEXT: srav $4, $2, $10 2119; MMR6-NEXT: andi $4, $4, 65535 2120; MMR6-NEXT: or $1, $zero, $4 2121; MMR6-NEXT: sllv $4, $4, $10 2122; MMR6-NEXT: sltu $5, $4, $7 2123; MMR6-NEXT: seleqz $3, $4, $5 2124; MMR6-NEXT: selnez $5, $7, $5 2125; MMR6-NEXT: or $3, $3, $5 2126; MMR6-NEXT: and $3, $3, $8 2127; MMR6-NEXT: and $4, $2, $9 2128; MMR6-NEXT: or $4, $4, $3 2129; MMR6-NEXT: sc $4, 0($6) 2130; MMR6-NEXT: beqc $4, $zero, $BB6_1 2131; MMR6-NEXT: # %bb.2: # %entry 2132; MMR6-NEXT: .insn 2133; MMR6-NEXT: # %bb.3: # %entry 2134; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2135; MMR6-NEXT: # %bb.4: # %entry 2136; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2137; MMR6-NEXT: sync 2138; MMR6-NEXT: addiu $sp, $sp, 8 2139; MMR6-NEXT: jrc $ra 2140; 2141; MIPS32-LABEL: test_umax_16: 2142; MIPS32: # %bb.0: # %entry 2143; MIPS32-NEXT: addiu $sp, $sp, -8 2144; MIPS32-NEXT: .cfi_def_cfa_offset 8 2145; MIPS32-NEXT: # kill: def $at killed $a1 2146; MIPS32-NEXT: sync 2147; MIPS32-NEXT: addiu $1, $zero, -4 2148; MIPS32-NEXT: and $6, $4, $1 2149; MIPS32-NEXT: andi $1, $4, 3 2150; MIPS32-NEXT: sll $10, $1, 3 2151; MIPS32-NEXT: ori $1, $zero, 65535 2152; MIPS32-NEXT: sllv $8, $1, $10 2153; MIPS32-NEXT: nor $9, $zero, $8 2154; MIPS32-NEXT: sllv $7, $5, $10 2155; MIPS32-NEXT: $BB6_1: # %entry 2156; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 2157; MIPS32-NEXT: ll $2, 0($6) 2158; MIPS32-NEXT: srav $4, $2, $10 2159; MIPS32-NEXT: andi $4, $4, 65535 2160; MIPS32-NEXT: or $1, $zero, $4 2161; MIPS32-NEXT: sllv $4, $4, $10 2162; MIPS32-NEXT: sltu $5, $4, $7 2163; MIPS32-NEXT: move $3, $4 2164; MIPS32-NEXT: movn $3, $7, $5 2165; MIPS32-NEXT: and $3, $3, $8 2166; MIPS32-NEXT: and $4, $2, $9 2167; MIPS32-NEXT: or $4, $4, $3 2168; MIPS32-NEXT: sc $4, 0($6) 2169; MIPS32-NEXT: beqz $4, $BB6_1 2170; MIPS32-NEXT: nop 2171; MIPS32-NEXT: # %bb.2: # %entry 2172; MIPS32-NEXT: .insn 2173; MIPS32-NEXT: # %bb.3: # %entry 2174; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2175; MIPS32-NEXT: # %bb.4: # %entry 2176; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2177; MIPS32-NEXT: sync 2178; MIPS32-NEXT: addiu $sp, $sp, 8 2179; MIPS32-NEXT: jr $ra 2180; MIPS32-NEXT: nop 2181; 2182; MIPSEL-LABEL: test_umax_16: 2183; MIPSEL: # %bb.0: # %entry 2184; MIPSEL-NEXT: addiu $sp, $sp, -8 2185; MIPSEL-NEXT: .cfi_def_cfa_offset 8 2186; MIPSEL-NEXT: # kill: def $at killed $a1 2187; MIPSEL-NEXT: sync 2188; MIPSEL-NEXT: addiu $1, $zero, -4 2189; MIPSEL-NEXT: and $6, $4, $1 2190; MIPSEL-NEXT: andi $1, $4, 3 2191; MIPSEL-NEXT: sll $10, $1, 3 2192; MIPSEL-NEXT: ori $1, $zero, 65535 2193; MIPSEL-NEXT: sllv $8, $1, $10 2194; MIPSEL-NEXT: nor $9, $zero, $8 2195; MIPSEL-NEXT: sllv $7, $5, $10 2196; MIPSEL-NEXT: $BB6_1: # %entry 2197; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 2198; MIPSEL-NEXT: ll $2, 0($6) 2199; MIPSEL-NEXT: srav $4, $2, $10 2200; MIPSEL-NEXT: andi $4, $4, 65535 2201; MIPSEL-NEXT: or $1, $zero, $4 2202; MIPSEL-NEXT: sllv $4, $4, $10 2203; MIPSEL-NEXT: sltu $5, $4, $7 2204; MIPSEL-NEXT: move $3, $4 2205; MIPSEL-NEXT: movn $3, $7, $5 2206; MIPSEL-NEXT: and $3, $3, $8 2207; MIPSEL-NEXT: and $4, $2, $9 2208; MIPSEL-NEXT: or $4, $4, $3 2209; MIPSEL-NEXT: sc $4, 0($6) 2210; MIPSEL-NEXT: beqz $4, $BB6_1 2211; MIPSEL-NEXT: nop 2212; MIPSEL-NEXT: # %bb.2: # %entry 2213; MIPSEL-NEXT: .insn 2214; MIPSEL-NEXT: # %bb.3: # %entry 2215; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2216; MIPSEL-NEXT: # %bb.4: # %entry 2217; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2218; MIPSEL-NEXT: sync 2219; MIPSEL-NEXT: addiu $sp, $sp, 8 2220; MIPSEL-NEXT: jr $ra 2221; MIPSEL-NEXT: nop 2222; 2223; MIPSELR6-LABEL: test_umax_16: 2224; MIPSELR6: # %bb.0: # %entry 2225; MIPSELR6-NEXT: addiu $sp, $sp, -8 2226; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 2227; MIPSELR6-NEXT: # kill: def $at killed $a1 2228; MIPSELR6-NEXT: sync 2229; MIPSELR6-NEXT: addiu $1, $zero, -4 2230; MIPSELR6-NEXT: and $6, $4, $1 2231; MIPSELR6-NEXT: andi $1, $4, 3 2232; MIPSELR6-NEXT: sll $10, $1, 3 2233; MIPSELR6-NEXT: ori $1, $zero, 65535 2234; MIPSELR6-NEXT: sllv $8, $1, $10 2235; MIPSELR6-NEXT: nor $9, $zero, $8 2236; MIPSELR6-NEXT: sllv $7, $5, $10 2237; MIPSELR6-NEXT: $BB6_1: # %entry 2238; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 2239; MIPSELR6-NEXT: ll $2, 0($6) 2240; MIPSELR6-NEXT: srav $4, $2, $10 2241; MIPSELR6-NEXT: andi $4, $4, 65535 2242; MIPSELR6-NEXT: or $1, $zero, $4 2243; MIPSELR6-NEXT: sllv $4, $4, $10 2244; MIPSELR6-NEXT: sltu $5, $4, $7 2245; MIPSELR6-NEXT: seleqz $3, $4, $5 2246; MIPSELR6-NEXT: selnez $5, $7, $5 2247; MIPSELR6-NEXT: or $3, $3, $5 2248; MIPSELR6-NEXT: and $3, $3, $8 2249; MIPSELR6-NEXT: and $4, $2, $9 2250; MIPSELR6-NEXT: or $4, $4, $3 2251; MIPSELR6-NEXT: sc $4, 0($6) 2252; MIPSELR6-NEXT: beqzc $4, $BB6_1 2253; MIPSELR6-NEXT: nop 2254; MIPSELR6-NEXT: # %bb.2: # %entry 2255; MIPSELR6-NEXT: .insn 2256; MIPSELR6-NEXT: # %bb.3: # %entry 2257; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2258; MIPSELR6-NEXT: # %bb.4: # %entry 2259; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2260; MIPSELR6-NEXT: sync 2261; MIPSELR6-NEXT: addiu $sp, $sp, 8 2262; MIPSELR6-NEXT: jrc $ra 2263; 2264; MMEL-LABEL: test_umax_16: 2265; MMEL: # %bb.0: # %entry 2266; MMEL-NEXT: addiu $sp, $sp, -8 2267; MMEL-NEXT: .cfi_def_cfa_offset 8 2268; MMEL-NEXT: # kill: def $at killed $a1 2269; MMEL-NEXT: sync 2270; MMEL-NEXT: addiu $1, $zero, -4 2271; MMEL-NEXT: and $6, $4, $1 2272; MMEL-NEXT: andi $1, $4, 3 2273; MMEL-NEXT: sll $10, $1, 3 2274; MMEL-NEXT: ori $1, $zero, 65535 2275; MMEL-NEXT: sllv $8, $1, $10 2276; MMEL-NEXT: nor $9, $zero, $8 2277; MMEL-NEXT: sllv $7, $5, $10 2278; MMEL-NEXT: $BB6_1: # %entry 2279; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 2280; MMEL-NEXT: ll $2, 0($6) 2281; MMEL-NEXT: srav $4, $2, $10 2282; MMEL-NEXT: andi $4, $4, 65535 2283; MMEL-NEXT: or $1, $zero, $4 2284; MMEL-NEXT: sllv $4, $4, $10 2285; MMEL-NEXT: sltu $5, $4, $7 2286; MMEL-NEXT: or $3, $4, $zero 2287; MMEL-NEXT: movn $3, $7, $5 2288; MMEL-NEXT: and $3, $3, $8 2289; MMEL-NEXT: and $4, $2, $9 2290; MMEL-NEXT: or $4, $4, $3 2291; MMEL-NEXT: sc $4, 0($6) 2292; MMEL-NEXT: beqzc $4, $BB6_1 2293; MMEL-NEXT: # %bb.2: # %entry 2294; MMEL-NEXT: .insn 2295; MMEL-NEXT: # %bb.3: # %entry 2296; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2297; MMEL-NEXT: # %bb.4: # %entry 2298; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2299; MMEL-NEXT: sync 2300; MMEL-NEXT: addiusp 8 2301; MMEL-NEXT: jrc $ra 2302; 2303; MMELR6-LABEL: test_umax_16: 2304; MMELR6: # %bb.0: # %entry 2305; MMELR6-NEXT: addiu $sp, $sp, -8 2306; MMELR6-NEXT: .cfi_def_cfa_offset 8 2307; MMELR6-NEXT: # kill: def $at killed $a1 2308; MMELR6-NEXT: sync 2309; MMELR6-NEXT: addiu $1, $zero, -4 2310; MMELR6-NEXT: and $6, $4, $1 2311; MMELR6-NEXT: andi $1, $4, 3 2312; MMELR6-NEXT: sll $10, $1, 3 2313; MMELR6-NEXT: ori $1, $zero, 65535 2314; MMELR6-NEXT: sllv $8, $1, $10 2315; MMELR6-NEXT: nor $9, $zero, $8 2316; MMELR6-NEXT: sllv $7, $5, $10 2317; MMELR6-NEXT: $BB6_1: # %entry 2318; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 2319; MMELR6-NEXT: ll $2, 0($6) 2320; MMELR6-NEXT: srav $4, $2, $10 2321; MMELR6-NEXT: andi $4, $4, 65535 2322; MMELR6-NEXT: or $1, $zero, $4 2323; MMELR6-NEXT: sllv $4, $4, $10 2324; MMELR6-NEXT: sltu $5, $4, $7 2325; MMELR6-NEXT: seleqz $3, $4, $5 2326; MMELR6-NEXT: selnez $5, $7, $5 2327; MMELR6-NEXT: or $3, $3, $5 2328; MMELR6-NEXT: and $3, $3, $8 2329; MMELR6-NEXT: and $4, $2, $9 2330; MMELR6-NEXT: or $4, $4, $3 2331; MMELR6-NEXT: sc $4, 0($6) 2332; MMELR6-NEXT: beqc $4, $zero, $BB6_1 2333; MMELR6-NEXT: # %bb.2: # %entry 2334; MMELR6-NEXT: .insn 2335; MMELR6-NEXT: # %bb.3: # %entry 2336; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2337; MMELR6-NEXT: # %bb.4: # %entry 2338; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2339; MMELR6-NEXT: sync 2340; MMELR6-NEXT: addiu $sp, $sp, 8 2341; MMELR6-NEXT: jrc $ra 2342; 2343; MIPS64-LABEL: test_umax_16: 2344; MIPS64: # %bb.0: # %entry 2345; MIPS64-NEXT: daddiu $sp, $sp, -16 2346; MIPS64-NEXT: .cfi_def_cfa_offset 16 2347; MIPS64-NEXT: move $1, $5 2348; MIPS64-NEXT: sync 2349; MIPS64-NEXT: daddiu $2, $zero, -4 2350; MIPS64-NEXT: and $6, $4, $2 2351; MIPS64-NEXT: andi $2, $4, 3 2352; MIPS64-NEXT: xori $2, $2, 2 2353; MIPS64-NEXT: sll $10, $2, 3 2354; MIPS64-NEXT: ori $2, $zero, 65535 2355; MIPS64-NEXT: sllv $8, $2, $10 2356; MIPS64-NEXT: nor $9, $zero, $8 2357; MIPS64-NEXT: sllv $7, $1, $10 2358; MIPS64-NEXT: .LBB6_1: # %entry 2359; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 2360; MIPS64-NEXT: ll $2, 0($6) 2361; MIPS64-NEXT: srav $4, $2, $10 2362; MIPS64-NEXT: andi $4, $4, 65535 2363; MIPS64-NEXT: or $1, $zero, $4 2364; MIPS64-NEXT: sllv $4, $4, $10 2365; MIPS64-NEXT: sltu $5, $4, $7 2366; MIPS64-NEXT: move $3, $4 2367; MIPS64-NEXT: movn $3, $7, $5 2368; MIPS64-NEXT: and $3, $3, $8 2369; MIPS64-NEXT: and $4, $2, $9 2370; MIPS64-NEXT: or $4, $4, $3 2371; MIPS64-NEXT: sc $4, 0($6) 2372; MIPS64-NEXT: beqz $4, .LBB6_1 2373; MIPS64-NEXT: nop 2374; MIPS64-NEXT: # %bb.2: # %entry 2375; MIPS64-NEXT: .insn 2376; MIPS64-NEXT: # %bb.3: # %entry 2377; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2378; MIPS64-NEXT: # %bb.4: # %entry 2379; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2380; MIPS64-NEXT: sync 2381; MIPS64-NEXT: daddiu $sp, $sp, 16 2382; MIPS64-NEXT: jr $ra 2383; MIPS64-NEXT: nop 2384; 2385; MIPS64R6-LABEL: test_umax_16: 2386; MIPS64R6: # %bb.0: # %entry 2387; MIPS64R6-NEXT: daddiu $sp, $sp, -16 2388; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 2389; MIPS64R6-NEXT: move $1, $5 2390; MIPS64R6-NEXT: sync 2391; MIPS64R6-NEXT: daddiu $2, $zero, -4 2392; MIPS64R6-NEXT: and $6, $4, $2 2393; MIPS64R6-NEXT: andi $2, $4, 3 2394; MIPS64R6-NEXT: xori $2, $2, 2 2395; MIPS64R6-NEXT: sll $10, $2, 3 2396; MIPS64R6-NEXT: ori $2, $zero, 65535 2397; MIPS64R6-NEXT: sllv $8, $2, $10 2398; MIPS64R6-NEXT: nor $9, $zero, $8 2399; MIPS64R6-NEXT: sllv $7, $1, $10 2400; MIPS64R6-NEXT: .LBB6_1: # %entry 2401; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 2402; MIPS64R6-NEXT: ll $2, 0($6) 2403; MIPS64R6-NEXT: srav $4, $2, $10 2404; MIPS64R6-NEXT: andi $4, $4, 65535 2405; MIPS64R6-NEXT: or $1, $zero, $4 2406; MIPS64R6-NEXT: sllv $4, $4, $10 2407; MIPS64R6-NEXT: sltu $5, $4, $7 2408; MIPS64R6-NEXT: seleqz $3, $4, $5 2409; MIPS64R6-NEXT: selnez $5, $7, $5 2410; MIPS64R6-NEXT: or $3, $3, $5 2411; MIPS64R6-NEXT: and $3, $3, $8 2412; MIPS64R6-NEXT: and $4, $2, $9 2413; MIPS64R6-NEXT: or $4, $4, $3 2414; MIPS64R6-NEXT: sc $4, 0($6) 2415; MIPS64R6-NEXT: beqzc $4, .LBB6_1 2416; MIPS64R6-NEXT: nop 2417; MIPS64R6-NEXT: # %bb.2: # %entry 2418; MIPS64R6-NEXT: .insn 2419; MIPS64R6-NEXT: # %bb.3: # %entry 2420; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2421; MIPS64R6-NEXT: # %bb.4: # %entry 2422; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2423; MIPS64R6-NEXT: sync 2424; MIPS64R6-NEXT: daddiu $sp, $sp, 16 2425; MIPS64R6-NEXT: jrc $ra 2426; 2427; MIPS64EL-LABEL: test_umax_16: 2428; MIPS64EL: # %bb.0: # %entry 2429; MIPS64EL-NEXT: daddiu $sp, $sp, -16 2430; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 2431; MIPS64EL-NEXT: move $1, $5 2432; MIPS64EL-NEXT: sync 2433; MIPS64EL-NEXT: daddiu $2, $zero, -4 2434; MIPS64EL-NEXT: and $6, $4, $2 2435; MIPS64EL-NEXT: andi $2, $4, 3 2436; MIPS64EL-NEXT: sll $10, $2, 3 2437; MIPS64EL-NEXT: ori $2, $zero, 65535 2438; MIPS64EL-NEXT: sllv $8, $2, $10 2439; MIPS64EL-NEXT: nor $9, $zero, $8 2440; MIPS64EL-NEXT: sllv $7, $1, $10 2441; MIPS64EL-NEXT: .LBB6_1: # %entry 2442; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 2443; MIPS64EL-NEXT: ll $2, 0($6) 2444; MIPS64EL-NEXT: srav $4, $2, $10 2445; MIPS64EL-NEXT: andi $4, $4, 65535 2446; MIPS64EL-NEXT: or $1, $zero, $4 2447; MIPS64EL-NEXT: sllv $4, $4, $10 2448; MIPS64EL-NEXT: sltu $5, $4, $7 2449; MIPS64EL-NEXT: move $3, $4 2450; MIPS64EL-NEXT: movn $3, $7, $5 2451; MIPS64EL-NEXT: and $3, $3, $8 2452; MIPS64EL-NEXT: and $4, $2, $9 2453; MIPS64EL-NEXT: or $4, $4, $3 2454; MIPS64EL-NEXT: sc $4, 0($6) 2455; MIPS64EL-NEXT: beqz $4, .LBB6_1 2456; MIPS64EL-NEXT: nop 2457; MIPS64EL-NEXT: # %bb.2: # %entry 2458; MIPS64EL-NEXT: .insn 2459; MIPS64EL-NEXT: # %bb.3: # %entry 2460; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2461; MIPS64EL-NEXT: # %bb.4: # %entry 2462; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2463; MIPS64EL-NEXT: sync 2464; MIPS64EL-NEXT: daddiu $sp, $sp, 16 2465; MIPS64EL-NEXT: jr $ra 2466; MIPS64EL-NEXT: nop 2467; 2468; MIPS64ELR6-LABEL: test_umax_16: 2469; MIPS64ELR6: # %bb.0: # %entry 2470; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 2471; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 2472; MIPS64ELR6-NEXT: move $1, $5 2473; MIPS64ELR6-NEXT: sync 2474; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 2475; MIPS64ELR6-NEXT: and $6, $4, $2 2476; MIPS64ELR6-NEXT: andi $2, $4, 3 2477; MIPS64ELR6-NEXT: sll $10, $2, 3 2478; MIPS64ELR6-NEXT: ori $2, $zero, 65535 2479; MIPS64ELR6-NEXT: sllv $8, $2, $10 2480; MIPS64ELR6-NEXT: nor $9, $zero, $8 2481; MIPS64ELR6-NEXT: sllv $7, $1, $10 2482; MIPS64ELR6-NEXT: .LBB6_1: # %entry 2483; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 2484; MIPS64ELR6-NEXT: ll $2, 0($6) 2485; MIPS64ELR6-NEXT: srav $4, $2, $10 2486; MIPS64ELR6-NEXT: andi $4, $4, 65535 2487; MIPS64ELR6-NEXT: or $1, $zero, $4 2488; MIPS64ELR6-NEXT: sllv $4, $4, $10 2489; MIPS64ELR6-NEXT: sltu $5, $4, $7 2490; MIPS64ELR6-NEXT: seleqz $3, $4, $5 2491; MIPS64ELR6-NEXT: selnez $5, $7, $5 2492; MIPS64ELR6-NEXT: or $3, $3, $5 2493; MIPS64ELR6-NEXT: and $3, $3, $8 2494; MIPS64ELR6-NEXT: and $4, $2, $9 2495; MIPS64ELR6-NEXT: or $4, $4, $3 2496; MIPS64ELR6-NEXT: sc $4, 0($6) 2497; MIPS64ELR6-NEXT: beqzc $4, .LBB6_1 2498; MIPS64ELR6-NEXT: nop 2499; MIPS64ELR6-NEXT: # %bb.2: # %entry 2500; MIPS64ELR6-NEXT: .insn 2501; MIPS64ELR6-NEXT: # %bb.3: # %entry 2502; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2503; MIPS64ELR6-NEXT: # %bb.4: # %entry 2504; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2505; MIPS64ELR6-NEXT: sync 2506; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 2507; MIPS64ELR6-NEXT: jrc $ra 2508entry: 2509 %0 = atomicrmw umax ptr %ptr, i16 %val seq_cst 2510 ret i16 %0 2511} 2512 2513define i16 @test_umin_16(ptr nocapture %ptr, i16 signext %val) { 2514; MIPS-LABEL: test_umin_16: 2515; MIPS: # %bb.0: # %entry 2516; MIPS-NEXT: addiu $sp, $sp, -8 2517; MIPS-NEXT: .cfi_def_cfa_offset 8 2518; MIPS-NEXT: # kill: def $at killed $a1 2519; MIPS-NEXT: sync 2520; MIPS-NEXT: addiu $1, $zero, -4 2521; MIPS-NEXT: and $6, $4, $1 2522; MIPS-NEXT: andi $1, $4, 3 2523; MIPS-NEXT: xori $1, $1, 2 2524; MIPS-NEXT: sll $10, $1, 3 2525; MIPS-NEXT: ori $1, $zero, 65535 2526; MIPS-NEXT: sllv $8, $1, $10 2527; MIPS-NEXT: nor $9, $zero, $8 2528; MIPS-NEXT: sllv $7, $5, $10 2529; MIPS-NEXT: $BB7_1: # %entry 2530; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 2531; MIPS-NEXT: ll $2, 0($6) 2532; MIPS-NEXT: srav $4, $2, $10 2533; MIPS-NEXT: andi $4, $4, 65535 2534; MIPS-NEXT: or $1, $zero, $4 2535; MIPS-NEXT: sllv $4, $4, $10 2536; MIPS-NEXT: sltu $5, $4, $7 2537; MIPS-NEXT: move $3, $4 2538; MIPS-NEXT: movz $3, $7, $5 2539; MIPS-NEXT: and $3, $3, $8 2540; MIPS-NEXT: and $4, $2, $9 2541; MIPS-NEXT: or $4, $4, $3 2542; MIPS-NEXT: sc $4, 0($6) 2543; MIPS-NEXT: beqz $4, $BB7_1 2544; MIPS-NEXT: nop 2545; MIPS-NEXT: # %bb.2: # %entry 2546; MIPS-NEXT: .insn 2547; MIPS-NEXT: # %bb.3: # %entry 2548; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2549; MIPS-NEXT: # %bb.4: # %entry 2550; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2551; MIPS-NEXT: sync 2552; MIPS-NEXT: addiu $sp, $sp, 8 2553; MIPS-NEXT: jr $ra 2554; MIPS-NEXT: nop 2555; 2556; MIPSR6-LABEL: test_umin_16: 2557; MIPSR6: # %bb.0: # %entry 2558; MIPSR6-NEXT: addiu $sp, $sp, -8 2559; MIPSR6-NEXT: .cfi_def_cfa_offset 8 2560; MIPSR6-NEXT: # kill: def $at killed $a1 2561; MIPSR6-NEXT: sync 2562; MIPSR6-NEXT: addiu $1, $zero, -4 2563; MIPSR6-NEXT: and $6, $4, $1 2564; MIPSR6-NEXT: andi $1, $4, 3 2565; MIPSR6-NEXT: xori $1, $1, 2 2566; MIPSR6-NEXT: sll $10, $1, 3 2567; MIPSR6-NEXT: ori $1, $zero, 65535 2568; MIPSR6-NEXT: sllv $8, $1, $10 2569; MIPSR6-NEXT: nor $9, $zero, $8 2570; MIPSR6-NEXT: sllv $7, $5, $10 2571; MIPSR6-NEXT: $BB7_1: # %entry 2572; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 2573; MIPSR6-NEXT: ll $2, 0($6) 2574; MIPSR6-NEXT: srav $4, $2, $10 2575; MIPSR6-NEXT: andi $4, $4, 65535 2576; MIPSR6-NEXT: or $1, $zero, $4 2577; MIPSR6-NEXT: sllv $4, $4, $10 2578; MIPSR6-NEXT: sltu $5, $4, $7 2579; MIPSR6-NEXT: selnez $3, $4, $5 2580; MIPSR6-NEXT: seleqz $5, $7, $5 2581; MIPSR6-NEXT: or $3, $3, $5 2582; MIPSR6-NEXT: and $3, $3, $8 2583; MIPSR6-NEXT: and $4, $2, $9 2584; MIPSR6-NEXT: or $4, $4, $3 2585; MIPSR6-NEXT: sc $4, 0($6) 2586; MIPSR6-NEXT: beqzc $4, $BB7_1 2587; MIPSR6-NEXT: nop 2588; MIPSR6-NEXT: # %bb.2: # %entry 2589; MIPSR6-NEXT: .insn 2590; MIPSR6-NEXT: # %bb.3: # %entry 2591; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2592; MIPSR6-NEXT: # %bb.4: # %entry 2593; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2594; MIPSR6-NEXT: sync 2595; MIPSR6-NEXT: addiu $sp, $sp, 8 2596; MIPSR6-NEXT: jrc $ra 2597; 2598; MM-LABEL: test_umin_16: 2599; MM: # %bb.0: # %entry 2600; MM-NEXT: addiu $sp, $sp, -8 2601; MM-NEXT: .cfi_def_cfa_offset 8 2602; MM-NEXT: # kill: def $at killed $a1 2603; MM-NEXT: sync 2604; MM-NEXT: addiu $1, $zero, -4 2605; MM-NEXT: and $6, $4, $1 2606; MM-NEXT: andi $1, $4, 3 2607; MM-NEXT: xori $1, $1, 2 2608; MM-NEXT: sll $10, $1, 3 2609; MM-NEXT: ori $1, $zero, 65535 2610; MM-NEXT: sllv $8, $1, $10 2611; MM-NEXT: nor $9, $zero, $8 2612; MM-NEXT: sllv $7, $5, $10 2613; MM-NEXT: $BB7_1: # %entry 2614; MM-NEXT: # =>This Inner Loop Header: Depth=1 2615; MM-NEXT: ll $2, 0($6) 2616; MM-NEXT: srav $4, $2, $10 2617; MM-NEXT: andi $4, $4, 65535 2618; MM-NEXT: or $1, $zero, $4 2619; MM-NEXT: sllv $4, $4, $10 2620; MM-NEXT: sltu $5, $4, $7 2621; MM-NEXT: or $3, $4, $zero 2622; MM-NEXT: movz $3, $7, $5 2623; MM-NEXT: and $3, $3, $8 2624; MM-NEXT: and $4, $2, $9 2625; MM-NEXT: or $4, $4, $3 2626; MM-NEXT: sc $4, 0($6) 2627; MM-NEXT: beqzc $4, $BB7_1 2628; MM-NEXT: # %bb.2: # %entry 2629; MM-NEXT: .insn 2630; MM-NEXT: # %bb.3: # %entry 2631; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2632; MM-NEXT: # %bb.4: # %entry 2633; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2634; MM-NEXT: sync 2635; MM-NEXT: addiusp 8 2636; MM-NEXT: jrc $ra 2637; 2638; MMR6-LABEL: test_umin_16: 2639; MMR6: # %bb.0: # %entry 2640; MMR6-NEXT: addiu $sp, $sp, -8 2641; MMR6-NEXT: .cfi_def_cfa_offset 8 2642; MMR6-NEXT: # kill: def $at killed $a1 2643; MMR6-NEXT: sync 2644; MMR6-NEXT: addiu $1, $zero, -4 2645; MMR6-NEXT: and $6, $4, $1 2646; MMR6-NEXT: andi $1, $4, 3 2647; MMR6-NEXT: xori $1, $1, 2 2648; MMR6-NEXT: sll $10, $1, 3 2649; MMR6-NEXT: ori $1, $zero, 65535 2650; MMR6-NEXT: sllv $8, $1, $10 2651; MMR6-NEXT: nor $9, $zero, $8 2652; MMR6-NEXT: sllv $7, $5, $10 2653; MMR6-NEXT: $BB7_1: # %entry 2654; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 2655; MMR6-NEXT: ll $2, 0($6) 2656; MMR6-NEXT: srav $4, $2, $10 2657; MMR6-NEXT: andi $4, $4, 65535 2658; MMR6-NEXT: or $1, $zero, $4 2659; MMR6-NEXT: sllv $4, $4, $10 2660; MMR6-NEXT: sltu $5, $4, $7 2661; MMR6-NEXT: selnez $3, $4, $5 2662; MMR6-NEXT: seleqz $5, $7, $5 2663; MMR6-NEXT: or $3, $3, $5 2664; MMR6-NEXT: and $3, $3, $8 2665; MMR6-NEXT: and $4, $2, $9 2666; MMR6-NEXT: or $4, $4, $3 2667; MMR6-NEXT: sc $4, 0($6) 2668; MMR6-NEXT: beqc $4, $zero, $BB7_1 2669; MMR6-NEXT: # %bb.2: # %entry 2670; MMR6-NEXT: .insn 2671; MMR6-NEXT: # %bb.3: # %entry 2672; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2673; MMR6-NEXT: # %bb.4: # %entry 2674; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2675; MMR6-NEXT: sync 2676; MMR6-NEXT: addiu $sp, $sp, 8 2677; MMR6-NEXT: jrc $ra 2678; 2679; MIPS32-LABEL: test_umin_16: 2680; MIPS32: # %bb.0: # %entry 2681; MIPS32-NEXT: addiu $sp, $sp, -8 2682; MIPS32-NEXT: .cfi_def_cfa_offset 8 2683; MIPS32-NEXT: # kill: def $at killed $a1 2684; MIPS32-NEXT: sync 2685; MIPS32-NEXT: addiu $1, $zero, -4 2686; MIPS32-NEXT: and $6, $4, $1 2687; MIPS32-NEXT: andi $1, $4, 3 2688; MIPS32-NEXT: sll $10, $1, 3 2689; MIPS32-NEXT: ori $1, $zero, 65535 2690; MIPS32-NEXT: sllv $8, $1, $10 2691; MIPS32-NEXT: nor $9, $zero, $8 2692; MIPS32-NEXT: sllv $7, $5, $10 2693; MIPS32-NEXT: $BB7_1: # %entry 2694; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 2695; MIPS32-NEXT: ll $2, 0($6) 2696; MIPS32-NEXT: srav $4, $2, $10 2697; MIPS32-NEXT: andi $4, $4, 65535 2698; MIPS32-NEXT: or $1, $zero, $4 2699; MIPS32-NEXT: sllv $4, $4, $10 2700; MIPS32-NEXT: sltu $5, $4, $7 2701; MIPS32-NEXT: move $3, $4 2702; MIPS32-NEXT: movz $3, $7, $5 2703; MIPS32-NEXT: and $3, $3, $8 2704; MIPS32-NEXT: and $4, $2, $9 2705; MIPS32-NEXT: or $4, $4, $3 2706; MIPS32-NEXT: sc $4, 0($6) 2707; MIPS32-NEXT: beqz $4, $BB7_1 2708; MIPS32-NEXT: nop 2709; MIPS32-NEXT: # %bb.2: # %entry 2710; MIPS32-NEXT: .insn 2711; MIPS32-NEXT: # %bb.3: # %entry 2712; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2713; MIPS32-NEXT: # %bb.4: # %entry 2714; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2715; MIPS32-NEXT: sync 2716; MIPS32-NEXT: addiu $sp, $sp, 8 2717; MIPS32-NEXT: jr $ra 2718; MIPS32-NEXT: nop 2719; 2720; MIPSEL-LABEL: test_umin_16: 2721; MIPSEL: # %bb.0: # %entry 2722; MIPSEL-NEXT: addiu $sp, $sp, -8 2723; MIPSEL-NEXT: .cfi_def_cfa_offset 8 2724; MIPSEL-NEXT: # kill: def $at killed $a1 2725; MIPSEL-NEXT: sync 2726; MIPSEL-NEXT: addiu $1, $zero, -4 2727; MIPSEL-NEXT: and $6, $4, $1 2728; MIPSEL-NEXT: andi $1, $4, 3 2729; MIPSEL-NEXT: sll $10, $1, 3 2730; MIPSEL-NEXT: ori $1, $zero, 65535 2731; MIPSEL-NEXT: sllv $8, $1, $10 2732; MIPSEL-NEXT: nor $9, $zero, $8 2733; MIPSEL-NEXT: sllv $7, $5, $10 2734; MIPSEL-NEXT: $BB7_1: # %entry 2735; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 2736; MIPSEL-NEXT: ll $2, 0($6) 2737; MIPSEL-NEXT: srav $4, $2, $10 2738; MIPSEL-NEXT: andi $4, $4, 65535 2739; MIPSEL-NEXT: or $1, $zero, $4 2740; MIPSEL-NEXT: sllv $4, $4, $10 2741; MIPSEL-NEXT: sltu $5, $4, $7 2742; MIPSEL-NEXT: move $3, $4 2743; MIPSEL-NEXT: movz $3, $7, $5 2744; MIPSEL-NEXT: and $3, $3, $8 2745; MIPSEL-NEXT: and $4, $2, $9 2746; MIPSEL-NEXT: or $4, $4, $3 2747; MIPSEL-NEXT: sc $4, 0($6) 2748; MIPSEL-NEXT: beqz $4, $BB7_1 2749; MIPSEL-NEXT: nop 2750; MIPSEL-NEXT: # %bb.2: # %entry 2751; MIPSEL-NEXT: .insn 2752; MIPSEL-NEXT: # %bb.3: # %entry 2753; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2754; MIPSEL-NEXT: # %bb.4: # %entry 2755; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2756; MIPSEL-NEXT: sync 2757; MIPSEL-NEXT: addiu $sp, $sp, 8 2758; MIPSEL-NEXT: jr $ra 2759; MIPSEL-NEXT: nop 2760; 2761; MIPSELR6-LABEL: test_umin_16: 2762; MIPSELR6: # %bb.0: # %entry 2763; MIPSELR6-NEXT: addiu $sp, $sp, -8 2764; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 2765; MIPSELR6-NEXT: # kill: def $at killed $a1 2766; MIPSELR6-NEXT: sync 2767; MIPSELR6-NEXT: addiu $1, $zero, -4 2768; MIPSELR6-NEXT: and $6, $4, $1 2769; MIPSELR6-NEXT: andi $1, $4, 3 2770; MIPSELR6-NEXT: sll $10, $1, 3 2771; MIPSELR6-NEXT: ori $1, $zero, 65535 2772; MIPSELR6-NEXT: sllv $8, $1, $10 2773; MIPSELR6-NEXT: nor $9, $zero, $8 2774; MIPSELR6-NEXT: sllv $7, $5, $10 2775; MIPSELR6-NEXT: $BB7_1: # %entry 2776; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 2777; MIPSELR6-NEXT: ll $2, 0($6) 2778; MIPSELR6-NEXT: srav $4, $2, $10 2779; MIPSELR6-NEXT: andi $4, $4, 65535 2780; MIPSELR6-NEXT: or $1, $zero, $4 2781; MIPSELR6-NEXT: sllv $4, $4, $10 2782; MIPSELR6-NEXT: sltu $5, $4, $7 2783; MIPSELR6-NEXT: selnez $3, $4, $5 2784; MIPSELR6-NEXT: seleqz $5, $7, $5 2785; MIPSELR6-NEXT: or $3, $3, $5 2786; MIPSELR6-NEXT: and $3, $3, $8 2787; MIPSELR6-NEXT: and $4, $2, $9 2788; MIPSELR6-NEXT: or $4, $4, $3 2789; MIPSELR6-NEXT: sc $4, 0($6) 2790; MIPSELR6-NEXT: beqzc $4, $BB7_1 2791; MIPSELR6-NEXT: nop 2792; MIPSELR6-NEXT: # %bb.2: # %entry 2793; MIPSELR6-NEXT: .insn 2794; MIPSELR6-NEXT: # %bb.3: # %entry 2795; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2796; MIPSELR6-NEXT: # %bb.4: # %entry 2797; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2798; MIPSELR6-NEXT: sync 2799; MIPSELR6-NEXT: addiu $sp, $sp, 8 2800; MIPSELR6-NEXT: jrc $ra 2801; 2802; MMEL-LABEL: test_umin_16: 2803; MMEL: # %bb.0: # %entry 2804; MMEL-NEXT: addiu $sp, $sp, -8 2805; MMEL-NEXT: .cfi_def_cfa_offset 8 2806; MMEL-NEXT: # kill: def $at killed $a1 2807; MMEL-NEXT: sync 2808; MMEL-NEXT: addiu $1, $zero, -4 2809; MMEL-NEXT: and $6, $4, $1 2810; MMEL-NEXT: andi $1, $4, 3 2811; MMEL-NEXT: sll $10, $1, 3 2812; MMEL-NEXT: ori $1, $zero, 65535 2813; MMEL-NEXT: sllv $8, $1, $10 2814; MMEL-NEXT: nor $9, $zero, $8 2815; MMEL-NEXT: sllv $7, $5, $10 2816; MMEL-NEXT: $BB7_1: # %entry 2817; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 2818; MMEL-NEXT: ll $2, 0($6) 2819; MMEL-NEXT: srav $4, $2, $10 2820; MMEL-NEXT: andi $4, $4, 65535 2821; MMEL-NEXT: or $1, $zero, $4 2822; MMEL-NEXT: sllv $4, $4, $10 2823; MMEL-NEXT: sltu $5, $4, $7 2824; MMEL-NEXT: or $3, $4, $zero 2825; MMEL-NEXT: movz $3, $7, $5 2826; MMEL-NEXT: and $3, $3, $8 2827; MMEL-NEXT: and $4, $2, $9 2828; MMEL-NEXT: or $4, $4, $3 2829; MMEL-NEXT: sc $4, 0($6) 2830; MMEL-NEXT: beqzc $4, $BB7_1 2831; MMEL-NEXT: # %bb.2: # %entry 2832; MMEL-NEXT: .insn 2833; MMEL-NEXT: # %bb.3: # %entry 2834; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2835; MMEL-NEXT: # %bb.4: # %entry 2836; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2837; MMEL-NEXT: sync 2838; MMEL-NEXT: addiusp 8 2839; MMEL-NEXT: jrc $ra 2840; 2841; MMELR6-LABEL: test_umin_16: 2842; MMELR6: # %bb.0: # %entry 2843; MMELR6-NEXT: addiu $sp, $sp, -8 2844; MMELR6-NEXT: .cfi_def_cfa_offset 8 2845; MMELR6-NEXT: # kill: def $at killed $a1 2846; MMELR6-NEXT: sync 2847; MMELR6-NEXT: addiu $1, $zero, -4 2848; MMELR6-NEXT: and $6, $4, $1 2849; MMELR6-NEXT: andi $1, $4, 3 2850; MMELR6-NEXT: sll $10, $1, 3 2851; MMELR6-NEXT: ori $1, $zero, 65535 2852; MMELR6-NEXT: sllv $8, $1, $10 2853; MMELR6-NEXT: nor $9, $zero, $8 2854; MMELR6-NEXT: sllv $7, $5, $10 2855; MMELR6-NEXT: $BB7_1: # %entry 2856; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 2857; MMELR6-NEXT: ll $2, 0($6) 2858; MMELR6-NEXT: srav $4, $2, $10 2859; MMELR6-NEXT: andi $4, $4, 65535 2860; MMELR6-NEXT: or $1, $zero, $4 2861; MMELR6-NEXT: sllv $4, $4, $10 2862; MMELR6-NEXT: sltu $5, $4, $7 2863; MMELR6-NEXT: selnez $3, $4, $5 2864; MMELR6-NEXT: seleqz $5, $7, $5 2865; MMELR6-NEXT: or $3, $3, $5 2866; MMELR6-NEXT: and $3, $3, $8 2867; MMELR6-NEXT: and $4, $2, $9 2868; MMELR6-NEXT: or $4, $4, $3 2869; MMELR6-NEXT: sc $4, 0($6) 2870; MMELR6-NEXT: beqc $4, $zero, $BB7_1 2871; MMELR6-NEXT: # %bb.2: # %entry 2872; MMELR6-NEXT: .insn 2873; MMELR6-NEXT: # %bb.3: # %entry 2874; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 2875; MMELR6-NEXT: # %bb.4: # %entry 2876; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 2877; MMELR6-NEXT: sync 2878; MMELR6-NEXT: addiu $sp, $sp, 8 2879; MMELR6-NEXT: jrc $ra 2880; 2881; MIPS64-LABEL: test_umin_16: 2882; MIPS64: # %bb.0: # %entry 2883; MIPS64-NEXT: daddiu $sp, $sp, -16 2884; MIPS64-NEXT: .cfi_def_cfa_offset 16 2885; MIPS64-NEXT: move $1, $5 2886; MIPS64-NEXT: sync 2887; MIPS64-NEXT: daddiu $2, $zero, -4 2888; MIPS64-NEXT: and $6, $4, $2 2889; MIPS64-NEXT: andi $2, $4, 3 2890; MIPS64-NEXT: xori $2, $2, 2 2891; MIPS64-NEXT: sll $10, $2, 3 2892; MIPS64-NEXT: ori $2, $zero, 65535 2893; MIPS64-NEXT: sllv $8, $2, $10 2894; MIPS64-NEXT: nor $9, $zero, $8 2895; MIPS64-NEXT: sllv $7, $1, $10 2896; MIPS64-NEXT: .LBB7_1: # %entry 2897; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 2898; MIPS64-NEXT: ll $2, 0($6) 2899; MIPS64-NEXT: srav $4, $2, $10 2900; MIPS64-NEXT: andi $4, $4, 65535 2901; MIPS64-NEXT: or $1, $zero, $4 2902; MIPS64-NEXT: sllv $4, $4, $10 2903; MIPS64-NEXT: sltu $5, $4, $7 2904; MIPS64-NEXT: move $3, $4 2905; MIPS64-NEXT: movz $3, $7, $5 2906; MIPS64-NEXT: and $3, $3, $8 2907; MIPS64-NEXT: and $4, $2, $9 2908; MIPS64-NEXT: or $4, $4, $3 2909; MIPS64-NEXT: sc $4, 0($6) 2910; MIPS64-NEXT: beqz $4, .LBB7_1 2911; MIPS64-NEXT: nop 2912; MIPS64-NEXT: # %bb.2: # %entry 2913; MIPS64-NEXT: .insn 2914; MIPS64-NEXT: # %bb.3: # %entry 2915; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2916; MIPS64-NEXT: # %bb.4: # %entry 2917; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2918; MIPS64-NEXT: sync 2919; MIPS64-NEXT: daddiu $sp, $sp, 16 2920; MIPS64-NEXT: jr $ra 2921; MIPS64-NEXT: nop 2922; 2923; MIPS64R6-LABEL: test_umin_16: 2924; MIPS64R6: # %bb.0: # %entry 2925; MIPS64R6-NEXT: daddiu $sp, $sp, -16 2926; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 2927; MIPS64R6-NEXT: move $1, $5 2928; MIPS64R6-NEXT: sync 2929; MIPS64R6-NEXT: daddiu $2, $zero, -4 2930; MIPS64R6-NEXT: and $6, $4, $2 2931; MIPS64R6-NEXT: andi $2, $4, 3 2932; MIPS64R6-NEXT: xori $2, $2, 2 2933; MIPS64R6-NEXT: sll $10, $2, 3 2934; MIPS64R6-NEXT: ori $2, $zero, 65535 2935; MIPS64R6-NEXT: sllv $8, $2, $10 2936; MIPS64R6-NEXT: nor $9, $zero, $8 2937; MIPS64R6-NEXT: sllv $7, $1, $10 2938; MIPS64R6-NEXT: .LBB7_1: # %entry 2939; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 2940; MIPS64R6-NEXT: ll $2, 0($6) 2941; MIPS64R6-NEXT: srav $4, $2, $10 2942; MIPS64R6-NEXT: andi $4, $4, 65535 2943; MIPS64R6-NEXT: or $1, $zero, $4 2944; MIPS64R6-NEXT: sllv $4, $4, $10 2945; MIPS64R6-NEXT: sltu $5, $4, $7 2946; MIPS64R6-NEXT: selnez $3, $4, $5 2947; MIPS64R6-NEXT: seleqz $5, $7, $5 2948; MIPS64R6-NEXT: or $3, $3, $5 2949; MIPS64R6-NEXT: and $3, $3, $8 2950; MIPS64R6-NEXT: and $4, $2, $9 2951; MIPS64R6-NEXT: or $4, $4, $3 2952; MIPS64R6-NEXT: sc $4, 0($6) 2953; MIPS64R6-NEXT: beqzc $4, .LBB7_1 2954; MIPS64R6-NEXT: nop 2955; MIPS64R6-NEXT: # %bb.2: # %entry 2956; MIPS64R6-NEXT: .insn 2957; MIPS64R6-NEXT: # %bb.3: # %entry 2958; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2959; MIPS64R6-NEXT: # %bb.4: # %entry 2960; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 2961; MIPS64R6-NEXT: sync 2962; MIPS64R6-NEXT: daddiu $sp, $sp, 16 2963; MIPS64R6-NEXT: jrc $ra 2964; 2965; MIPS64EL-LABEL: test_umin_16: 2966; MIPS64EL: # %bb.0: # %entry 2967; MIPS64EL-NEXT: daddiu $sp, $sp, -16 2968; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 2969; MIPS64EL-NEXT: move $1, $5 2970; MIPS64EL-NEXT: sync 2971; MIPS64EL-NEXT: daddiu $2, $zero, -4 2972; MIPS64EL-NEXT: and $6, $4, $2 2973; MIPS64EL-NEXT: andi $2, $4, 3 2974; MIPS64EL-NEXT: sll $10, $2, 3 2975; MIPS64EL-NEXT: ori $2, $zero, 65535 2976; MIPS64EL-NEXT: sllv $8, $2, $10 2977; MIPS64EL-NEXT: nor $9, $zero, $8 2978; MIPS64EL-NEXT: sllv $7, $1, $10 2979; MIPS64EL-NEXT: .LBB7_1: # %entry 2980; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 2981; MIPS64EL-NEXT: ll $2, 0($6) 2982; MIPS64EL-NEXT: srav $4, $2, $10 2983; MIPS64EL-NEXT: andi $4, $4, 65535 2984; MIPS64EL-NEXT: or $1, $zero, $4 2985; MIPS64EL-NEXT: sllv $4, $4, $10 2986; MIPS64EL-NEXT: sltu $5, $4, $7 2987; MIPS64EL-NEXT: move $3, $4 2988; MIPS64EL-NEXT: movz $3, $7, $5 2989; MIPS64EL-NEXT: and $3, $3, $8 2990; MIPS64EL-NEXT: and $4, $2, $9 2991; MIPS64EL-NEXT: or $4, $4, $3 2992; MIPS64EL-NEXT: sc $4, 0($6) 2993; MIPS64EL-NEXT: beqz $4, .LBB7_1 2994; MIPS64EL-NEXT: nop 2995; MIPS64EL-NEXT: # %bb.2: # %entry 2996; MIPS64EL-NEXT: .insn 2997; MIPS64EL-NEXT: # %bb.3: # %entry 2998; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 2999; MIPS64EL-NEXT: # %bb.4: # %entry 3000; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3001; MIPS64EL-NEXT: sync 3002; MIPS64EL-NEXT: daddiu $sp, $sp, 16 3003; MIPS64EL-NEXT: jr $ra 3004; MIPS64EL-NEXT: nop 3005; 3006; MIPS64ELR6-LABEL: test_umin_16: 3007; MIPS64ELR6: # %bb.0: # %entry 3008; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 3009; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 3010; MIPS64ELR6-NEXT: move $1, $5 3011; MIPS64ELR6-NEXT: sync 3012; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 3013; MIPS64ELR6-NEXT: and $6, $4, $2 3014; MIPS64ELR6-NEXT: andi $2, $4, 3 3015; MIPS64ELR6-NEXT: sll $10, $2, 3 3016; MIPS64ELR6-NEXT: ori $2, $zero, 65535 3017; MIPS64ELR6-NEXT: sllv $8, $2, $10 3018; MIPS64ELR6-NEXT: nor $9, $zero, $8 3019; MIPS64ELR6-NEXT: sllv $7, $1, $10 3020; MIPS64ELR6-NEXT: .LBB7_1: # %entry 3021; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 3022; MIPS64ELR6-NEXT: ll $2, 0($6) 3023; MIPS64ELR6-NEXT: srav $4, $2, $10 3024; MIPS64ELR6-NEXT: andi $4, $4, 65535 3025; MIPS64ELR6-NEXT: or $1, $zero, $4 3026; MIPS64ELR6-NEXT: sllv $4, $4, $10 3027; MIPS64ELR6-NEXT: sltu $5, $4, $7 3028; MIPS64ELR6-NEXT: selnez $3, $4, $5 3029; MIPS64ELR6-NEXT: seleqz $5, $7, $5 3030; MIPS64ELR6-NEXT: or $3, $3, $5 3031; MIPS64ELR6-NEXT: and $3, $3, $8 3032; MIPS64ELR6-NEXT: and $4, $2, $9 3033; MIPS64ELR6-NEXT: or $4, $4, $3 3034; MIPS64ELR6-NEXT: sc $4, 0($6) 3035; MIPS64ELR6-NEXT: beqzc $4, .LBB7_1 3036; MIPS64ELR6-NEXT: nop 3037; MIPS64ELR6-NEXT: # %bb.2: # %entry 3038; MIPS64ELR6-NEXT: .insn 3039; MIPS64ELR6-NEXT: # %bb.3: # %entry 3040; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3041; MIPS64ELR6-NEXT: # %bb.4: # %entry 3042; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3043; MIPS64ELR6-NEXT: sync 3044; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 3045; MIPS64ELR6-NEXT: jrc $ra 3046entry: 3047 %0 = atomicrmw umin ptr %ptr, i16 %val seq_cst 3048 ret i16 %0 3049} 3050 3051 3052define i8 @test_max_8(ptr nocapture %ptr, i8 signext %val) { 3053; MIPS-LABEL: test_max_8: 3054; MIPS: # %bb.0: # %entry 3055; MIPS-NEXT: addiu $sp, $sp, -8 3056; MIPS-NEXT: .cfi_def_cfa_offset 8 3057; MIPS-NEXT: # kill: def $at killed $a1 3058; MIPS-NEXT: sync 3059; MIPS-NEXT: addiu $1, $zero, -4 3060; MIPS-NEXT: and $6, $4, $1 3061; MIPS-NEXT: andi $1, $4, 3 3062; MIPS-NEXT: xori $1, $1, 3 3063; MIPS-NEXT: sll $10, $1, 3 3064; MIPS-NEXT: ori $1, $zero, 255 3065; MIPS-NEXT: sllv $8, $1, $10 3066; MIPS-NEXT: nor $9, $zero, $8 3067; MIPS-NEXT: sllv $7, $5, $10 3068; MIPS-NEXT: $BB8_1: # %entry 3069; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 3070; MIPS-NEXT: ll $2, 0($6) 3071; MIPS-NEXT: srav $4, $2, $10 3072; MIPS-NEXT: seb $4, $4 3073; MIPS-NEXT: or $1, $zero, $4 3074; MIPS-NEXT: sllv $4, $4, $10 3075; MIPS-NEXT: slt $5, $4, $7 3076; MIPS-NEXT: move $3, $4 3077; MIPS-NEXT: movn $3, $7, $5 3078; MIPS-NEXT: and $3, $3, $8 3079; MIPS-NEXT: and $4, $2, $9 3080; MIPS-NEXT: or $4, $4, $3 3081; MIPS-NEXT: sc $4, 0($6) 3082; MIPS-NEXT: beqz $4, $BB8_1 3083; MIPS-NEXT: nop 3084; MIPS-NEXT: # %bb.2: # %entry 3085; MIPS-NEXT: .insn 3086; MIPS-NEXT: # %bb.3: # %entry 3087; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3088; MIPS-NEXT: # %bb.4: # %entry 3089; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3090; MIPS-NEXT: sync 3091; MIPS-NEXT: addiu $sp, $sp, 8 3092; MIPS-NEXT: jr $ra 3093; MIPS-NEXT: nop 3094; 3095; MIPSR6-LABEL: test_max_8: 3096; MIPSR6: # %bb.0: # %entry 3097; MIPSR6-NEXT: addiu $sp, $sp, -8 3098; MIPSR6-NEXT: .cfi_def_cfa_offset 8 3099; MIPSR6-NEXT: # kill: def $at killed $a1 3100; MIPSR6-NEXT: sync 3101; MIPSR6-NEXT: addiu $1, $zero, -4 3102; MIPSR6-NEXT: and $6, $4, $1 3103; MIPSR6-NEXT: andi $1, $4, 3 3104; MIPSR6-NEXT: xori $1, $1, 3 3105; MIPSR6-NEXT: sll $10, $1, 3 3106; MIPSR6-NEXT: ori $1, $zero, 255 3107; MIPSR6-NEXT: sllv $8, $1, $10 3108; MIPSR6-NEXT: nor $9, $zero, $8 3109; MIPSR6-NEXT: sllv $7, $5, $10 3110; MIPSR6-NEXT: $BB8_1: # %entry 3111; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 3112; MIPSR6-NEXT: ll $2, 0($6) 3113; MIPSR6-NEXT: srav $4, $2, $10 3114; MIPSR6-NEXT: seb $4, $4 3115; MIPSR6-NEXT: or $1, $zero, $4 3116; MIPSR6-NEXT: sllv $4, $4, $10 3117; MIPSR6-NEXT: slt $5, $4, $7 3118; MIPSR6-NEXT: seleqz $3, $4, $5 3119; MIPSR6-NEXT: selnez $5, $7, $5 3120; MIPSR6-NEXT: or $3, $3, $5 3121; MIPSR6-NEXT: and $3, $3, $8 3122; MIPSR6-NEXT: and $4, $2, $9 3123; MIPSR6-NEXT: or $4, $4, $3 3124; MIPSR6-NEXT: sc $4, 0($6) 3125; MIPSR6-NEXT: beqzc $4, $BB8_1 3126; MIPSR6-NEXT: nop 3127; MIPSR6-NEXT: # %bb.2: # %entry 3128; MIPSR6-NEXT: .insn 3129; MIPSR6-NEXT: # %bb.3: # %entry 3130; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3131; MIPSR6-NEXT: # %bb.4: # %entry 3132; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3133; MIPSR6-NEXT: sync 3134; MIPSR6-NEXT: addiu $sp, $sp, 8 3135; MIPSR6-NEXT: jrc $ra 3136; 3137; MM-LABEL: test_max_8: 3138; MM: # %bb.0: # %entry 3139; MM-NEXT: addiu $sp, $sp, -8 3140; MM-NEXT: .cfi_def_cfa_offset 8 3141; MM-NEXT: # kill: def $at killed $a1 3142; MM-NEXT: sync 3143; MM-NEXT: addiu $1, $zero, -4 3144; MM-NEXT: and $6, $4, $1 3145; MM-NEXT: andi $1, $4, 3 3146; MM-NEXT: xori $1, $1, 3 3147; MM-NEXT: sll $10, $1, 3 3148; MM-NEXT: ori $1, $zero, 255 3149; MM-NEXT: sllv $8, $1, $10 3150; MM-NEXT: nor $9, $zero, $8 3151; MM-NEXT: sllv $7, $5, $10 3152; MM-NEXT: $BB8_1: # %entry 3153; MM-NEXT: # =>This Inner Loop Header: Depth=1 3154; MM-NEXT: ll $2, 0($6) 3155; MM-NEXT: srav $4, $2, $10 3156; MM-NEXT: seb $4, $4 3157; MM-NEXT: or $1, $zero, $4 3158; MM-NEXT: sllv $4, $4, $10 3159; MM-NEXT: slt $5, $4, $7 3160; MM-NEXT: or $3, $4, $zero 3161; MM-NEXT: movn $3, $7, $5 3162; MM-NEXT: and $3, $3, $8 3163; MM-NEXT: and $4, $2, $9 3164; MM-NEXT: or $4, $4, $3 3165; MM-NEXT: sc $4, 0($6) 3166; MM-NEXT: beqzc $4, $BB8_1 3167; MM-NEXT: # %bb.2: # %entry 3168; MM-NEXT: .insn 3169; MM-NEXT: # %bb.3: # %entry 3170; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3171; MM-NEXT: # %bb.4: # %entry 3172; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3173; MM-NEXT: sync 3174; MM-NEXT: addiusp 8 3175; MM-NEXT: jrc $ra 3176; 3177; MMR6-LABEL: test_max_8: 3178; MMR6: # %bb.0: # %entry 3179; MMR6-NEXT: addiu $sp, $sp, -8 3180; MMR6-NEXT: .cfi_def_cfa_offset 8 3181; MMR6-NEXT: # kill: def $at killed $a1 3182; MMR6-NEXT: sync 3183; MMR6-NEXT: addiu $1, $zero, -4 3184; MMR6-NEXT: and $6, $4, $1 3185; MMR6-NEXT: andi $1, $4, 3 3186; MMR6-NEXT: xori $1, $1, 3 3187; MMR6-NEXT: sll $10, $1, 3 3188; MMR6-NEXT: ori $1, $zero, 255 3189; MMR6-NEXT: sllv $8, $1, $10 3190; MMR6-NEXT: nor $9, $zero, $8 3191; MMR6-NEXT: sllv $7, $5, $10 3192; MMR6-NEXT: $BB8_1: # %entry 3193; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 3194; MMR6-NEXT: ll $2, 0($6) 3195; MMR6-NEXT: srav $4, $2, $10 3196; MMR6-NEXT: seb $4, $4 3197; MMR6-NEXT: or $1, $zero, $4 3198; MMR6-NEXT: sllv $4, $4, $10 3199; MMR6-NEXT: slt $5, $4, $7 3200; MMR6-NEXT: seleqz $3, $4, $5 3201; MMR6-NEXT: selnez $5, $7, $5 3202; MMR6-NEXT: or $3, $3, $5 3203; MMR6-NEXT: and $3, $3, $8 3204; MMR6-NEXT: and $4, $2, $9 3205; MMR6-NEXT: or $4, $4, $3 3206; MMR6-NEXT: sc $4, 0($6) 3207; MMR6-NEXT: beqc $4, $zero, $BB8_1 3208; MMR6-NEXT: # %bb.2: # %entry 3209; MMR6-NEXT: .insn 3210; MMR6-NEXT: # %bb.3: # %entry 3211; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3212; MMR6-NEXT: # %bb.4: # %entry 3213; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3214; MMR6-NEXT: sync 3215; MMR6-NEXT: addiu $sp, $sp, 8 3216; MMR6-NEXT: jrc $ra 3217; 3218; MIPS32-LABEL: test_max_8: 3219; MIPS32: # %bb.0: # %entry 3220; MIPS32-NEXT: addiu $sp, $sp, -8 3221; MIPS32-NEXT: .cfi_def_cfa_offset 8 3222; MIPS32-NEXT: # kill: def $at killed $a1 3223; MIPS32-NEXT: sync 3224; MIPS32-NEXT: addiu $1, $zero, -4 3225; MIPS32-NEXT: and $6, $4, $1 3226; MIPS32-NEXT: andi $1, $4, 3 3227; MIPS32-NEXT: sll $10, $1, 3 3228; MIPS32-NEXT: ori $1, $zero, 255 3229; MIPS32-NEXT: sllv $8, $1, $10 3230; MIPS32-NEXT: nor $9, $zero, $8 3231; MIPS32-NEXT: sllv $7, $5, $10 3232; MIPS32-NEXT: $BB8_1: # %entry 3233; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 3234; MIPS32-NEXT: ll $2, 0($6) 3235; MIPS32-NEXT: srav $4, $2, $10 3236; MIPS32-NEXT: sll $4, $4, 24 3237; MIPS32-NEXT: sra $4, $4, 24 3238; MIPS32-NEXT: or $1, $zero, $4 3239; MIPS32-NEXT: sllv $4, $4, $10 3240; MIPS32-NEXT: slt $5, $4, $7 3241; MIPS32-NEXT: move $3, $4 3242; MIPS32-NEXT: movn $3, $7, $5 3243; MIPS32-NEXT: and $3, $3, $8 3244; MIPS32-NEXT: and $4, $2, $9 3245; MIPS32-NEXT: or $4, $4, $3 3246; MIPS32-NEXT: sc $4, 0($6) 3247; MIPS32-NEXT: beqz $4, $BB8_1 3248; MIPS32-NEXT: nop 3249; MIPS32-NEXT: # %bb.2: # %entry 3250; MIPS32-NEXT: .insn 3251; MIPS32-NEXT: # %bb.3: # %entry 3252; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3253; MIPS32-NEXT: # %bb.4: # %entry 3254; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3255; MIPS32-NEXT: sync 3256; MIPS32-NEXT: addiu $sp, $sp, 8 3257; MIPS32-NEXT: jr $ra 3258; MIPS32-NEXT: nop 3259; 3260; MIPSEL-LABEL: test_max_8: 3261; MIPSEL: # %bb.0: # %entry 3262; MIPSEL-NEXT: addiu $sp, $sp, -8 3263; MIPSEL-NEXT: .cfi_def_cfa_offset 8 3264; MIPSEL-NEXT: # kill: def $at killed $a1 3265; MIPSEL-NEXT: sync 3266; MIPSEL-NEXT: addiu $1, $zero, -4 3267; MIPSEL-NEXT: and $6, $4, $1 3268; MIPSEL-NEXT: andi $1, $4, 3 3269; MIPSEL-NEXT: sll $10, $1, 3 3270; MIPSEL-NEXT: ori $1, $zero, 255 3271; MIPSEL-NEXT: sllv $8, $1, $10 3272; MIPSEL-NEXT: nor $9, $zero, $8 3273; MIPSEL-NEXT: sllv $7, $5, $10 3274; MIPSEL-NEXT: $BB8_1: # %entry 3275; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 3276; MIPSEL-NEXT: ll $2, 0($6) 3277; MIPSEL-NEXT: srav $4, $2, $10 3278; MIPSEL-NEXT: seb $4, $4 3279; MIPSEL-NEXT: or $1, $zero, $4 3280; MIPSEL-NEXT: sllv $4, $4, $10 3281; MIPSEL-NEXT: slt $5, $4, $7 3282; MIPSEL-NEXT: move $3, $4 3283; MIPSEL-NEXT: movn $3, $7, $5 3284; MIPSEL-NEXT: and $3, $3, $8 3285; MIPSEL-NEXT: and $4, $2, $9 3286; MIPSEL-NEXT: or $4, $4, $3 3287; MIPSEL-NEXT: sc $4, 0($6) 3288; MIPSEL-NEXT: beqz $4, $BB8_1 3289; MIPSEL-NEXT: nop 3290; MIPSEL-NEXT: # %bb.2: # %entry 3291; MIPSEL-NEXT: .insn 3292; MIPSEL-NEXT: # %bb.3: # %entry 3293; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3294; MIPSEL-NEXT: # %bb.4: # %entry 3295; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3296; MIPSEL-NEXT: sync 3297; MIPSEL-NEXT: addiu $sp, $sp, 8 3298; MIPSEL-NEXT: jr $ra 3299; MIPSEL-NEXT: nop 3300; 3301; MIPSELR6-LABEL: test_max_8: 3302; MIPSELR6: # %bb.0: # %entry 3303; MIPSELR6-NEXT: addiu $sp, $sp, -8 3304; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 3305; MIPSELR6-NEXT: # kill: def $at killed $a1 3306; MIPSELR6-NEXT: sync 3307; MIPSELR6-NEXT: addiu $1, $zero, -4 3308; MIPSELR6-NEXT: and $6, $4, $1 3309; MIPSELR6-NEXT: andi $1, $4, 3 3310; MIPSELR6-NEXT: sll $10, $1, 3 3311; MIPSELR6-NEXT: ori $1, $zero, 255 3312; MIPSELR6-NEXT: sllv $8, $1, $10 3313; MIPSELR6-NEXT: nor $9, $zero, $8 3314; MIPSELR6-NEXT: sllv $7, $5, $10 3315; MIPSELR6-NEXT: $BB8_1: # %entry 3316; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 3317; MIPSELR6-NEXT: ll $2, 0($6) 3318; MIPSELR6-NEXT: srav $4, $2, $10 3319; MIPSELR6-NEXT: seb $4, $4 3320; MIPSELR6-NEXT: or $1, $zero, $4 3321; MIPSELR6-NEXT: sllv $4, $4, $10 3322; MIPSELR6-NEXT: slt $5, $4, $7 3323; MIPSELR6-NEXT: seleqz $3, $4, $5 3324; MIPSELR6-NEXT: selnez $5, $7, $5 3325; MIPSELR6-NEXT: or $3, $3, $5 3326; MIPSELR6-NEXT: and $3, $3, $8 3327; MIPSELR6-NEXT: and $4, $2, $9 3328; MIPSELR6-NEXT: or $4, $4, $3 3329; MIPSELR6-NEXT: sc $4, 0($6) 3330; MIPSELR6-NEXT: beqzc $4, $BB8_1 3331; MIPSELR6-NEXT: nop 3332; MIPSELR6-NEXT: # %bb.2: # %entry 3333; MIPSELR6-NEXT: .insn 3334; MIPSELR6-NEXT: # %bb.3: # %entry 3335; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3336; MIPSELR6-NEXT: # %bb.4: # %entry 3337; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3338; MIPSELR6-NEXT: sync 3339; MIPSELR6-NEXT: addiu $sp, $sp, 8 3340; MIPSELR6-NEXT: jrc $ra 3341; 3342; MMEL-LABEL: test_max_8: 3343; MMEL: # %bb.0: # %entry 3344; MMEL-NEXT: addiu $sp, $sp, -8 3345; MMEL-NEXT: .cfi_def_cfa_offset 8 3346; MMEL-NEXT: # kill: def $at killed $a1 3347; MMEL-NEXT: sync 3348; MMEL-NEXT: addiu $1, $zero, -4 3349; MMEL-NEXT: and $6, $4, $1 3350; MMEL-NEXT: andi $1, $4, 3 3351; MMEL-NEXT: sll $10, $1, 3 3352; MMEL-NEXT: ori $1, $zero, 255 3353; MMEL-NEXT: sllv $8, $1, $10 3354; MMEL-NEXT: nor $9, $zero, $8 3355; MMEL-NEXT: sllv $7, $5, $10 3356; MMEL-NEXT: $BB8_1: # %entry 3357; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 3358; MMEL-NEXT: ll $2, 0($6) 3359; MMEL-NEXT: srav $4, $2, $10 3360; MMEL-NEXT: seb $4, $4 3361; MMEL-NEXT: or $1, $zero, $4 3362; MMEL-NEXT: sllv $4, $4, $10 3363; MMEL-NEXT: slt $5, $4, $7 3364; MMEL-NEXT: or $3, $4, $zero 3365; MMEL-NEXT: movn $3, $7, $5 3366; MMEL-NEXT: and $3, $3, $8 3367; MMEL-NEXT: and $4, $2, $9 3368; MMEL-NEXT: or $4, $4, $3 3369; MMEL-NEXT: sc $4, 0($6) 3370; MMEL-NEXT: beqzc $4, $BB8_1 3371; MMEL-NEXT: # %bb.2: # %entry 3372; MMEL-NEXT: .insn 3373; MMEL-NEXT: # %bb.3: # %entry 3374; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3375; MMEL-NEXT: # %bb.4: # %entry 3376; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3377; MMEL-NEXT: sync 3378; MMEL-NEXT: addiusp 8 3379; MMEL-NEXT: jrc $ra 3380; 3381; MMELR6-LABEL: test_max_8: 3382; MMELR6: # %bb.0: # %entry 3383; MMELR6-NEXT: addiu $sp, $sp, -8 3384; MMELR6-NEXT: .cfi_def_cfa_offset 8 3385; MMELR6-NEXT: # kill: def $at killed $a1 3386; MMELR6-NEXT: sync 3387; MMELR6-NEXT: addiu $1, $zero, -4 3388; MMELR6-NEXT: and $6, $4, $1 3389; MMELR6-NEXT: andi $1, $4, 3 3390; MMELR6-NEXT: sll $10, $1, 3 3391; MMELR6-NEXT: ori $1, $zero, 255 3392; MMELR6-NEXT: sllv $8, $1, $10 3393; MMELR6-NEXT: nor $9, $zero, $8 3394; MMELR6-NEXT: sllv $7, $5, $10 3395; MMELR6-NEXT: $BB8_1: # %entry 3396; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 3397; MMELR6-NEXT: ll $2, 0($6) 3398; MMELR6-NEXT: srav $4, $2, $10 3399; MMELR6-NEXT: seb $4, $4 3400; MMELR6-NEXT: or $1, $zero, $4 3401; MMELR6-NEXT: sllv $4, $4, $10 3402; MMELR6-NEXT: slt $5, $4, $7 3403; MMELR6-NEXT: seleqz $3, $4, $5 3404; MMELR6-NEXT: selnez $5, $7, $5 3405; MMELR6-NEXT: or $3, $3, $5 3406; MMELR6-NEXT: and $3, $3, $8 3407; MMELR6-NEXT: and $4, $2, $9 3408; MMELR6-NEXT: or $4, $4, $3 3409; MMELR6-NEXT: sc $4, 0($6) 3410; MMELR6-NEXT: beqc $4, $zero, $BB8_1 3411; MMELR6-NEXT: # %bb.2: # %entry 3412; MMELR6-NEXT: .insn 3413; MMELR6-NEXT: # %bb.3: # %entry 3414; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3415; MMELR6-NEXT: # %bb.4: # %entry 3416; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3417; MMELR6-NEXT: sync 3418; MMELR6-NEXT: addiu $sp, $sp, 8 3419; MMELR6-NEXT: jrc $ra 3420; 3421; MIPS64-LABEL: test_max_8: 3422; MIPS64: # %bb.0: # %entry 3423; MIPS64-NEXT: daddiu $sp, $sp, -16 3424; MIPS64-NEXT: .cfi_def_cfa_offset 16 3425; MIPS64-NEXT: move $1, $5 3426; MIPS64-NEXT: sync 3427; MIPS64-NEXT: daddiu $2, $zero, -4 3428; MIPS64-NEXT: and $6, $4, $2 3429; MIPS64-NEXT: andi $2, $4, 3 3430; MIPS64-NEXT: xori $2, $2, 3 3431; MIPS64-NEXT: sll $10, $2, 3 3432; MIPS64-NEXT: ori $2, $zero, 255 3433; MIPS64-NEXT: sllv $8, $2, $10 3434; MIPS64-NEXT: nor $9, $zero, $8 3435; MIPS64-NEXT: sllv $7, $1, $10 3436; MIPS64-NEXT: .LBB8_1: # %entry 3437; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 3438; MIPS64-NEXT: ll $2, 0($6) 3439; MIPS64-NEXT: srav $4, $2, $10 3440; MIPS64-NEXT: seb $4, $4 3441; MIPS64-NEXT: or $1, $zero, $4 3442; MIPS64-NEXT: sllv $4, $4, $10 3443; MIPS64-NEXT: slt $5, $4, $7 3444; MIPS64-NEXT: move $3, $4 3445; MIPS64-NEXT: movn $3, $7, $5 3446; MIPS64-NEXT: and $3, $3, $8 3447; MIPS64-NEXT: and $4, $2, $9 3448; MIPS64-NEXT: or $4, $4, $3 3449; MIPS64-NEXT: sc $4, 0($6) 3450; MIPS64-NEXT: beqz $4, .LBB8_1 3451; MIPS64-NEXT: nop 3452; MIPS64-NEXT: # %bb.2: # %entry 3453; MIPS64-NEXT: .insn 3454; MIPS64-NEXT: # %bb.3: # %entry 3455; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3456; MIPS64-NEXT: # %bb.4: # %entry 3457; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3458; MIPS64-NEXT: sync 3459; MIPS64-NEXT: daddiu $sp, $sp, 16 3460; MIPS64-NEXT: jr $ra 3461; MIPS64-NEXT: nop 3462; 3463; MIPS64R6-LABEL: test_max_8: 3464; MIPS64R6: # %bb.0: # %entry 3465; MIPS64R6-NEXT: daddiu $sp, $sp, -16 3466; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 3467; MIPS64R6-NEXT: move $1, $5 3468; MIPS64R6-NEXT: sync 3469; MIPS64R6-NEXT: daddiu $2, $zero, -4 3470; MIPS64R6-NEXT: and $6, $4, $2 3471; MIPS64R6-NEXT: andi $2, $4, 3 3472; MIPS64R6-NEXT: xori $2, $2, 3 3473; MIPS64R6-NEXT: sll $10, $2, 3 3474; MIPS64R6-NEXT: ori $2, $zero, 255 3475; MIPS64R6-NEXT: sllv $8, $2, $10 3476; MIPS64R6-NEXT: nor $9, $zero, $8 3477; MIPS64R6-NEXT: sllv $7, $1, $10 3478; MIPS64R6-NEXT: .LBB8_1: # %entry 3479; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 3480; MIPS64R6-NEXT: ll $2, 0($6) 3481; MIPS64R6-NEXT: srav $4, $2, $10 3482; MIPS64R6-NEXT: seb $4, $4 3483; MIPS64R6-NEXT: or $1, $zero, $4 3484; MIPS64R6-NEXT: sllv $4, $4, $10 3485; MIPS64R6-NEXT: slt $5, $4, $7 3486; MIPS64R6-NEXT: seleqz $3, $4, $5 3487; MIPS64R6-NEXT: selnez $5, $7, $5 3488; MIPS64R6-NEXT: or $3, $3, $5 3489; MIPS64R6-NEXT: and $3, $3, $8 3490; MIPS64R6-NEXT: and $4, $2, $9 3491; MIPS64R6-NEXT: or $4, $4, $3 3492; MIPS64R6-NEXT: sc $4, 0($6) 3493; MIPS64R6-NEXT: beqzc $4, .LBB8_1 3494; MIPS64R6-NEXT: nop 3495; MIPS64R6-NEXT: # %bb.2: # %entry 3496; MIPS64R6-NEXT: .insn 3497; MIPS64R6-NEXT: # %bb.3: # %entry 3498; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3499; MIPS64R6-NEXT: # %bb.4: # %entry 3500; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3501; MIPS64R6-NEXT: sync 3502; MIPS64R6-NEXT: daddiu $sp, $sp, 16 3503; MIPS64R6-NEXT: jrc $ra 3504; 3505; MIPS64EL-LABEL: test_max_8: 3506; MIPS64EL: # %bb.0: # %entry 3507; MIPS64EL-NEXT: daddiu $sp, $sp, -16 3508; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 3509; MIPS64EL-NEXT: move $1, $5 3510; MIPS64EL-NEXT: sync 3511; MIPS64EL-NEXT: daddiu $2, $zero, -4 3512; MIPS64EL-NEXT: and $6, $4, $2 3513; MIPS64EL-NEXT: andi $2, $4, 3 3514; MIPS64EL-NEXT: sll $10, $2, 3 3515; MIPS64EL-NEXT: ori $2, $zero, 255 3516; MIPS64EL-NEXT: sllv $8, $2, $10 3517; MIPS64EL-NEXT: nor $9, $zero, $8 3518; MIPS64EL-NEXT: sllv $7, $1, $10 3519; MIPS64EL-NEXT: .LBB8_1: # %entry 3520; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 3521; MIPS64EL-NEXT: ll $2, 0($6) 3522; MIPS64EL-NEXT: srav $4, $2, $10 3523; MIPS64EL-NEXT: seb $4, $4 3524; MIPS64EL-NEXT: or $1, $zero, $4 3525; MIPS64EL-NEXT: sllv $4, $4, $10 3526; MIPS64EL-NEXT: slt $5, $4, $7 3527; MIPS64EL-NEXT: move $3, $4 3528; MIPS64EL-NEXT: movn $3, $7, $5 3529; MIPS64EL-NEXT: and $3, $3, $8 3530; MIPS64EL-NEXT: and $4, $2, $9 3531; MIPS64EL-NEXT: or $4, $4, $3 3532; MIPS64EL-NEXT: sc $4, 0($6) 3533; MIPS64EL-NEXT: beqz $4, .LBB8_1 3534; MIPS64EL-NEXT: nop 3535; MIPS64EL-NEXT: # %bb.2: # %entry 3536; MIPS64EL-NEXT: .insn 3537; MIPS64EL-NEXT: # %bb.3: # %entry 3538; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3539; MIPS64EL-NEXT: # %bb.4: # %entry 3540; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3541; MIPS64EL-NEXT: sync 3542; MIPS64EL-NEXT: daddiu $sp, $sp, 16 3543; MIPS64EL-NEXT: jr $ra 3544; MIPS64EL-NEXT: nop 3545; 3546; MIPS64ELR6-LABEL: test_max_8: 3547; MIPS64ELR6: # %bb.0: # %entry 3548; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 3549; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 3550; MIPS64ELR6-NEXT: move $1, $5 3551; MIPS64ELR6-NEXT: sync 3552; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 3553; MIPS64ELR6-NEXT: and $6, $4, $2 3554; MIPS64ELR6-NEXT: andi $2, $4, 3 3555; MIPS64ELR6-NEXT: sll $10, $2, 3 3556; MIPS64ELR6-NEXT: ori $2, $zero, 255 3557; MIPS64ELR6-NEXT: sllv $8, $2, $10 3558; MIPS64ELR6-NEXT: nor $9, $zero, $8 3559; MIPS64ELR6-NEXT: sllv $7, $1, $10 3560; MIPS64ELR6-NEXT: .LBB8_1: # %entry 3561; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 3562; MIPS64ELR6-NEXT: ll $2, 0($6) 3563; MIPS64ELR6-NEXT: srav $4, $2, $10 3564; MIPS64ELR6-NEXT: seb $4, $4 3565; MIPS64ELR6-NEXT: or $1, $zero, $4 3566; MIPS64ELR6-NEXT: sllv $4, $4, $10 3567; MIPS64ELR6-NEXT: slt $5, $4, $7 3568; MIPS64ELR6-NEXT: seleqz $3, $4, $5 3569; MIPS64ELR6-NEXT: selnez $5, $7, $5 3570; MIPS64ELR6-NEXT: or $3, $3, $5 3571; MIPS64ELR6-NEXT: and $3, $3, $8 3572; MIPS64ELR6-NEXT: and $4, $2, $9 3573; MIPS64ELR6-NEXT: or $4, $4, $3 3574; MIPS64ELR6-NEXT: sc $4, 0($6) 3575; MIPS64ELR6-NEXT: beqzc $4, .LBB8_1 3576; MIPS64ELR6-NEXT: nop 3577; MIPS64ELR6-NEXT: # %bb.2: # %entry 3578; MIPS64ELR6-NEXT: .insn 3579; MIPS64ELR6-NEXT: # %bb.3: # %entry 3580; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3581; MIPS64ELR6-NEXT: # %bb.4: # %entry 3582; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3583; MIPS64ELR6-NEXT: sync 3584; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 3585; MIPS64ELR6-NEXT: jrc $ra 3586entry: 3587 %0 = atomicrmw max ptr %ptr, i8 %val seq_cst 3588 ret i8 %0 3589} 3590 3591define i8 @test_min_8(ptr nocapture %ptr, i8 signext %val) { 3592; MIPS-LABEL: test_min_8: 3593; MIPS: # %bb.0: # %entry 3594; MIPS-NEXT: addiu $sp, $sp, -8 3595; MIPS-NEXT: .cfi_def_cfa_offset 8 3596; MIPS-NEXT: # kill: def $at killed $a1 3597; MIPS-NEXT: sync 3598; MIPS-NEXT: addiu $1, $zero, -4 3599; MIPS-NEXT: and $6, $4, $1 3600; MIPS-NEXT: andi $1, $4, 3 3601; MIPS-NEXT: xori $1, $1, 3 3602; MIPS-NEXT: sll $10, $1, 3 3603; MIPS-NEXT: ori $1, $zero, 255 3604; MIPS-NEXT: sllv $8, $1, $10 3605; MIPS-NEXT: nor $9, $zero, $8 3606; MIPS-NEXT: sllv $7, $5, $10 3607; MIPS-NEXT: $BB9_1: # %entry 3608; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 3609; MIPS-NEXT: ll $2, 0($6) 3610; MIPS-NEXT: srav $4, $2, $10 3611; MIPS-NEXT: seb $4, $4 3612; MIPS-NEXT: or $1, $zero, $4 3613; MIPS-NEXT: sllv $4, $4, $10 3614; MIPS-NEXT: slt $5, $4, $7 3615; MIPS-NEXT: move $3, $4 3616; MIPS-NEXT: movz $3, $7, $5 3617; MIPS-NEXT: and $3, $3, $8 3618; MIPS-NEXT: and $4, $2, $9 3619; MIPS-NEXT: or $4, $4, $3 3620; MIPS-NEXT: sc $4, 0($6) 3621; MIPS-NEXT: beqz $4, $BB9_1 3622; MIPS-NEXT: nop 3623; MIPS-NEXT: # %bb.2: # %entry 3624; MIPS-NEXT: .insn 3625; MIPS-NEXT: # %bb.3: # %entry 3626; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3627; MIPS-NEXT: # %bb.4: # %entry 3628; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3629; MIPS-NEXT: sync 3630; MIPS-NEXT: addiu $sp, $sp, 8 3631; MIPS-NEXT: jr $ra 3632; MIPS-NEXT: nop 3633; 3634; MIPSR6-LABEL: test_min_8: 3635; MIPSR6: # %bb.0: # %entry 3636; MIPSR6-NEXT: addiu $sp, $sp, -8 3637; MIPSR6-NEXT: .cfi_def_cfa_offset 8 3638; MIPSR6-NEXT: # kill: def $at killed $a1 3639; MIPSR6-NEXT: sync 3640; MIPSR6-NEXT: addiu $1, $zero, -4 3641; MIPSR6-NEXT: and $6, $4, $1 3642; MIPSR6-NEXT: andi $1, $4, 3 3643; MIPSR6-NEXT: xori $1, $1, 3 3644; MIPSR6-NEXT: sll $10, $1, 3 3645; MIPSR6-NEXT: ori $1, $zero, 255 3646; MIPSR6-NEXT: sllv $8, $1, $10 3647; MIPSR6-NEXT: nor $9, $zero, $8 3648; MIPSR6-NEXT: sllv $7, $5, $10 3649; MIPSR6-NEXT: $BB9_1: # %entry 3650; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 3651; MIPSR6-NEXT: ll $2, 0($6) 3652; MIPSR6-NEXT: srav $4, $2, $10 3653; MIPSR6-NEXT: seb $4, $4 3654; MIPSR6-NEXT: or $1, $zero, $4 3655; MIPSR6-NEXT: sllv $4, $4, $10 3656; MIPSR6-NEXT: slt $5, $4, $7 3657; MIPSR6-NEXT: selnez $3, $4, $5 3658; MIPSR6-NEXT: seleqz $5, $7, $5 3659; MIPSR6-NEXT: or $3, $3, $5 3660; MIPSR6-NEXT: and $3, $3, $8 3661; MIPSR6-NEXT: and $4, $2, $9 3662; MIPSR6-NEXT: or $4, $4, $3 3663; MIPSR6-NEXT: sc $4, 0($6) 3664; MIPSR6-NEXT: beqzc $4, $BB9_1 3665; MIPSR6-NEXT: nop 3666; MIPSR6-NEXT: # %bb.2: # %entry 3667; MIPSR6-NEXT: .insn 3668; MIPSR6-NEXT: # %bb.3: # %entry 3669; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3670; MIPSR6-NEXT: # %bb.4: # %entry 3671; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3672; MIPSR6-NEXT: sync 3673; MIPSR6-NEXT: addiu $sp, $sp, 8 3674; MIPSR6-NEXT: jrc $ra 3675; 3676; MM-LABEL: test_min_8: 3677; MM: # %bb.0: # %entry 3678; MM-NEXT: addiu $sp, $sp, -8 3679; MM-NEXT: .cfi_def_cfa_offset 8 3680; MM-NEXT: # kill: def $at killed $a1 3681; MM-NEXT: sync 3682; MM-NEXT: addiu $1, $zero, -4 3683; MM-NEXT: and $6, $4, $1 3684; MM-NEXT: andi $1, $4, 3 3685; MM-NEXT: xori $1, $1, 3 3686; MM-NEXT: sll $10, $1, 3 3687; MM-NEXT: ori $1, $zero, 255 3688; MM-NEXT: sllv $8, $1, $10 3689; MM-NEXT: nor $9, $zero, $8 3690; MM-NEXT: sllv $7, $5, $10 3691; MM-NEXT: $BB9_1: # %entry 3692; MM-NEXT: # =>This Inner Loop Header: Depth=1 3693; MM-NEXT: ll $2, 0($6) 3694; MM-NEXT: srav $4, $2, $10 3695; MM-NEXT: seb $4, $4 3696; MM-NEXT: or $1, $zero, $4 3697; MM-NEXT: sllv $4, $4, $10 3698; MM-NEXT: slt $5, $4, $7 3699; MM-NEXT: or $3, $4, $zero 3700; MM-NEXT: movz $3, $7, $5 3701; MM-NEXT: and $3, $3, $8 3702; MM-NEXT: and $4, $2, $9 3703; MM-NEXT: or $4, $4, $3 3704; MM-NEXT: sc $4, 0($6) 3705; MM-NEXT: beqzc $4, $BB9_1 3706; MM-NEXT: # %bb.2: # %entry 3707; MM-NEXT: .insn 3708; MM-NEXT: # %bb.3: # %entry 3709; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3710; MM-NEXT: # %bb.4: # %entry 3711; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3712; MM-NEXT: sync 3713; MM-NEXT: addiusp 8 3714; MM-NEXT: jrc $ra 3715; 3716; MMR6-LABEL: test_min_8: 3717; MMR6: # %bb.0: # %entry 3718; MMR6-NEXT: addiu $sp, $sp, -8 3719; MMR6-NEXT: .cfi_def_cfa_offset 8 3720; MMR6-NEXT: # kill: def $at killed $a1 3721; MMR6-NEXT: sync 3722; MMR6-NEXT: addiu $1, $zero, -4 3723; MMR6-NEXT: and $6, $4, $1 3724; MMR6-NEXT: andi $1, $4, 3 3725; MMR6-NEXT: xori $1, $1, 3 3726; MMR6-NEXT: sll $10, $1, 3 3727; MMR6-NEXT: ori $1, $zero, 255 3728; MMR6-NEXT: sllv $8, $1, $10 3729; MMR6-NEXT: nor $9, $zero, $8 3730; MMR6-NEXT: sllv $7, $5, $10 3731; MMR6-NEXT: $BB9_1: # %entry 3732; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 3733; MMR6-NEXT: ll $2, 0($6) 3734; MMR6-NEXT: srav $4, $2, $10 3735; MMR6-NEXT: seb $4, $4 3736; MMR6-NEXT: or $1, $zero, $4 3737; MMR6-NEXT: sllv $4, $4, $10 3738; MMR6-NEXT: slt $5, $4, $7 3739; MMR6-NEXT: selnez $3, $4, $5 3740; MMR6-NEXT: seleqz $5, $7, $5 3741; MMR6-NEXT: or $3, $3, $5 3742; MMR6-NEXT: and $3, $3, $8 3743; MMR6-NEXT: and $4, $2, $9 3744; MMR6-NEXT: or $4, $4, $3 3745; MMR6-NEXT: sc $4, 0($6) 3746; MMR6-NEXT: beqc $4, $zero, $BB9_1 3747; MMR6-NEXT: # %bb.2: # %entry 3748; MMR6-NEXT: .insn 3749; MMR6-NEXT: # %bb.3: # %entry 3750; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3751; MMR6-NEXT: # %bb.4: # %entry 3752; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3753; MMR6-NEXT: sync 3754; MMR6-NEXT: addiu $sp, $sp, 8 3755; MMR6-NEXT: jrc $ra 3756; 3757; MIPS32-LABEL: test_min_8: 3758; MIPS32: # %bb.0: # %entry 3759; MIPS32-NEXT: addiu $sp, $sp, -8 3760; MIPS32-NEXT: .cfi_def_cfa_offset 8 3761; MIPS32-NEXT: # kill: def $at killed $a1 3762; MIPS32-NEXT: sync 3763; MIPS32-NEXT: addiu $1, $zero, -4 3764; MIPS32-NEXT: and $6, $4, $1 3765; MIPS32-NEXT: andi $1, $4, 3 3766; MIPS32-NEXT: sll $10, $1, 3 3767; MIPS32-NEXT: ori $1, $zero, 255 3768; MIPS32-NEXT: sllv $8, $1, $10 3769; MIPS32-NEXT: nor $9, $zero, $8 3770; MIPS32-NEXT: sllv $7, $5, $10 3771; MIPS32-NEXT: $BB9_1: # %entry 3772; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 3773; MIPS32-NEXT: ll $2, 0($6) 3774; MIPS32-NEXT: srav $4, $2, $10 3775; MIPS32-NEXT: sll $4, $4, 24 3776; MIPS32-NEXT: sra $4, $4, 24 3777; MIPS32-NEXT: or $1, $zero, $4 3778; MIPS32-NEXT: sllv $4, $4, $10 3779; MIPS32-NEXT: slt $5, $4, $7 3780; MIPS32-NEXT: move $3, $4 3781; MIPS32-NEXT: movz $3, $7, $5 3782; MIPS32-NEXT: and $3, $3, $8 3783; MIPS32-NEXT: and $4, $2, $9 3784; MIPS32-NEXT: or $4, $4, $3 3785; MIPS32-NEXT: sc $4, 0($6) 3786; MIPS32-NEXT: beqz $4, $BB9_1 3787; MIPS32-NEXT: nop 3788; MIPS32-NEXT: # %bb.2: # %entry 3789; MIPS32-NEXT: .insn 3790; MIPS32-NEXT: # %bb.3: # %entry 3791; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3792; MIPS32-NEXT: # %bb.4: # %entry 3793; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3794; MIPS32-NEXT: sync 3795; MIPS32-NEXT: addiu $sp, $sp, 8 3796; MIPS32-NEXT: jr $ra 3797; MIPS32-NEXT: nop 3798; 3799; MIPSEL-LABEL: test_min_8: 3800; MIPSEL: # %bb.0: # %entry 3801; MIPSEL-NEXT: addiu $sp, $sp, -8 3802; MIPSEL-NEXT: .cfi_def_cfa_offset 8 3803; MIPSEL-NEXT: # kill: def $at killed $a1 3804; MIPSEL-NEXT: sync 3805; MIPSEL-NEXT: addiu $1, $zero, -4 3806; MIPSEL-NEXT: and $6, $4, $1 3807; MIPSEL-NEXT: andi $1, $4, 3 3808; MIPSEL-NEXT: sll $10, $1, 3 3809; MIPSEL-NEXT: ori $1, $zero, 255 3810; MIPSEL-NEXT: sllv $8, $1, $10 3811; MIPSEL-NEXT: nor $9, $zero, $8 3812; MIPSEL-NEXT: sllv $7, $5, $10 3813; MIPSEL-NEXT: $BB9_1: # %entry 3814; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 3815; MIPSEL-NEXT: ll $2, 0($6) 3816; MIPSEL-NEXT: srav $4, $2, $10 3817; MIPSEL-NEXT: seb $4, $4 3818; MIPSEL-NEXT: or $1, $zero, $4 3819; MIPSEL-NEXT: sllv $4, $4, $10 3820; MIPSEL-NEXT: slt $5, $4, $7 3821; MIPSEL-NEXT: move $3, $4 3822; MIPSEL-NEXT: movz $3, $7, $5 3823; MIPSEL-NEXT: and $3, $3, $8 3824; MIPSEL-NEXT: and $4, $2, $9 3825; MIPSEL-NEXT: or $4, $4, $3 3826; MIPSEL-NEXT: sc $4, 0($6) 3827; MIPSEL-NEXT: beqz $4, $BB9_1 3828; MIPSEL-NEXT: nop 3829; MIPSEL-NEXT: # %bb.2: # %entry 3830; MIPSEL-NEXT: .insn 3831; MIPSEL-NEXT: # %bb.3: # %entry 3832; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3833; MIPSEL-NEXT: # %bb.4: # %entry 3834; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3835; MIPSEL-NEXT: sync 3836; MIPSEL-NEXT: addiu $sp, $sp, 8 3837; MIPSEL-NEXT: jr $ra 3838; MIPSEL-NEXT: nop 3839; 3840; MIPSELR6-LABEL: test_min_8: 3841; MIPSELR6: # %bb.0: # %entry 3842; MIPSELR6-NEXT: addiu $sp, $sp, -8 3843; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 3844; MIPSELR6-NEXT: # kill: def $at killed $a1 3845; MIPSELR6-NEXT: sync 3846; MIPSELR6-NEXT: addiu $1, $zero, -4 3847; MIPSELR6-NEXT: and $6, $4, $1 3848; MIPSELR6-NEXT: andi $1, $4, 3 3849; MIPSELR6-NEXT: sll $10, $1, 3 3850; MIPSELR6-NEXT: ori $1, $zero, 255 3851; MIPSELR6-NEXT: sllv $8, $1, $10 3852; MIPSELR6-NEXT: nor $9, $zero, $8 3853; MIPSELR6-NEXT: sllv $7, $5, $10 3854; MIPSELR6-NEXT: $BB9_1: # %entry 3855; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 3856; MIPSELR6-NEXT: ll $2, 0($6) 3857; MIPSELR6-NEXT: srav $4, $2, $10 3858; MIPSELR6-NEXT: seb $4, $4 3859; MIPSELR6-NEXT: or $1, $zero, $4 3860; MIPSELR6-NEXT: sllv $4, $4, $10 3861; MIPSELR6-NEXT: slt $5, $4, $7 3862; MIPSELR6-NEXT: selnez $3, $4, $5 3863; MIPSELR6-NEXT: seleqz $5, $7, $5 3864; MIPSELR6-NEXT: or $3, $3, $5 3865; MIPSELR6-NEXT: and $3, $3, $8 3866; MIPSELR6-NEXT: and $4, $2, $9 3867; MIPSELR6-NEXT: or $4, $4, $3 3868; MIPSELR6-NEXT: sc $4, 0($6) 3869; MIPSELR6-NEXT: beqzc $4, $BB9_1 3870; MIPSELR6-NEXT: nop 3871; MIPSELR6-NEXT: # %bb.2: # %entry 3872; MIPSELR6-NEXT: .insn 3873; MIPSELR6-NEXT: # %bb.3: # %entry 3874; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3875; MIPSELR6-NEXT: # %bb.4: # %entry 3876; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3877; MIPSELR6-NEXT: sync 3878; MIPSELR6-NEXT: addiu $sp, $sp, 8 3879; MIPSELR6-NEXT: jrc $ra 3880; 3881; MMEL-LABEL: test_min_8: 3882; MMEL: # %bb.0: # %entry 3883; MMEL-NEXT: addiu $sp, $sp, -8 3884; MMEL-NEXT: .cfi_def_cfa_offset 8 3885; MMEL-NEXT: # kill: def $at killed $a1 3886; MMEL-NEXT: sync 3887; MMEL-NEXT: addiu $1, $zero, -4 3888; MMEL-NEXT: and $6, $4, $1 3889; MMEL-NEXT: andi $1, $4, 3 3890; MMEL-NEXT: sll $10, $1, 3 3891; MMEL-NEXT: ori $1, $zero, 255 3892; MMEL-NEXT: sllv $8, $1, $10 3893; MMEL-NEXT: nor $9, $zero, $8 3894; MMEL-NEXT: sllv $7, $5, $10 3895; MMEL-NEXT: $BB9_1: # %entry 3896; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 3897; MMEL-NEXT: ll $2, 0($6) 3898; MMEL-NEXT: srav $4, $2, $10 3899; MMEL-NEXT: seb $4, $4 3900; MMEL-NEXT: or $1, $zero, $4 3901; MMEL-NEXT: sllv $4, $4, $10 3902; MMEL-NEXT: slt $5, $4, $7 3903; MMEL-NEXT: or $3, $4, $zero 3904; MMEL-NEXT: movz $3, $7, $5 3905; MMEL-NEXT: and $3, $3, $8 3906; MMEL-NEXT: and $4, $2, $9 3907; MMEL-NEXT: or $4, $4, $3 3908; MMEL-NEXT: sc $4, 0($6) 3909; MMEL-NEXT: beqzc $4, $BB9_1 3910; MMEL-NEXT: # %bb.2: # %entry 3911; MMEL-NEXT: .insn 3912; MMEL-NEXT: # %bb.3: # %entry 3913; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3914; MMEL-NEXT: # %bb.4: # %entry 3915; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3916; MMEL-NEXT: sync 3917; MMEL-NEXT: addiusp 8 3918; MMEL-NEXT: jrc $ra 3919; 3920; MMELR6-LABEL: test_min_8: 3921; MMELR6: # %bb.0: # %entry 3922; MMELR6-NEXT: addiu $sp, $sp, -8 3923; MMELR6-NEXT: .cfi_def_cfa_offset 8 3924; MMELR6-NEXT: # kill: def $at killed $a1 3925; MMELR6-NEXT: sync 3926; MMELR6-NEXT: addiu $1, $zero, -4 3927; MMELR6-NEXT: and $6, $4, $1 3928; MMELR6-NEXT: andi $1, $4, 3 3929; MMELR6-NEXT: sll $10, $1, 3 3930; MMELR6-NEXT: ori $1, $zero, 255 3931; MMELR6-NEXT: sllv $8, $1, $10 3932; MMELR6-NEXT: nor $9, $zero, $8 3933; MMELR6-NEXT: sllv $7, $5, $10 3934; MMELR6-NEXT: $BB9_1: # %entry 3935; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 3936; MMELR6-NEXT: ll $2, 0($6) 3937; MMELR6-NEXT: srav $4, $2, $10 3938; MMELR6-NEXT: seb $4, $4 3939; MMELR6-NEXT: or $1, $zero, $4 3940; MMELR6-NEXT: sllv $4, $4, $10 3941; MMELR6-NEXT: slt $5, $4, $7 3942; MMELR6-NEXT: selnez $3, $4, $5 3943; MMELR6-NEXT: seleqz $5, $7, $5 3944; MMELR6-NEXT: or $3, $3, $5 3945; MMELR6-NEXT: and $3, $3, $8 3946; MMELR6-NEXT: and $4, $2, $9 3947; MMELR6-NEXT: or $4, $4, $3 3948; MMELR6-NEXT: sc $4, 0($6) 3949; MMELR6-NEXT: beqc $4, $zero, $BB9_1 3950; MMELR6-NEXT: # %bb.2: # %entry 3951; MMELR6-NEXT: .insn 3952; MMELR6-NEXT: # %bb.3: # %entry 3953; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 3954; MMELR6-NEXT: # %bb.4: # %entry 3955; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 3956; MMELR6-NEXT: sync 3957; MMELR6-NEXT: addiu $sp, $sp, 8 3958; MMELR6-NEXT: jrc $ra 3959; 3960; MIPS64-LABEL: test_min_8: 3961; MIPS64: # %bb.0: # %entry 3962; MIPS64-NEXT: daddiu $sp, $sp, -16 3963; MIPS64-NEXT: .cfi_def_cfa_offset 16 3964; MIPS64-NEXT: move $1, $5 3965; MIPS64-NEXT: sync 3966; MIPS64-NEXT: daddiu $2, $zero, -4 3967; MIPS64-NEXT: and $6, $4, $2 3968; MIPS64-NEXT: andi $2, $4, 3 3969; MIPS64-NEXT: xori $2, $2, 3 3970; MIPS64-NEXT: sll $10, $2, 3 3971; MIPS64-NEXT: ori $2, $zero, 255 3972; MIPS64-NEXT: sllv $8, $2, $10 3973; MIPS64-NEXT: nor $9, $zero, $8 3974; MIPS64-NEXT: sllv $7, $1, $10 3975; MIPS64-NEXT: .LBB9_1: # %entry 3976; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 3977; MIPS64-NEXT: ll $2, 0($6) 3978; MIPS64-NEXT: srav $4, $2, $10 3979; MIPS64-NEXT: seb $4, $4 3980; MIPS64-NEXT: or $1, $zero, $4 3981; MIPS64-NEXT: sllv $4, $4, $10 3982; MIPS64-NEXT: slt $5, $4, $7 3983; MIPS64-NEXT: move $3, $4 3984; MIPS64-NEXT: movz $3, $7, $5 3985; MIPS64-NEXT: and $3, $3, $8 3986; MIPS64-NEXT: and $4, $2, $9 3987; MIPS64-NEXT: or $4, $4, $3 3988; MIPS64-NEXT: sc $4, 0($6) 3989; MIPS64-NEXT: beqz $4, .LBB9_1 3990; MIPS64-NEXT: nop 3991; MIPS64-NEXT: # %bb.2: # %entry 3992; MIPS64-NEXT: .insn 3993; MIPS64-NEXT: # %bb.3: # %entry 3994; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 3995; MIPS64-NEXT: # %bb.4: # %entry 3996; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 3997; MIPS64-NEXT: sync 3998; MIPS64-NEXT: daddiu $sp, $sp, 16 3999; MIPS64-NEXT: jr $ra 4000; MIPS64-NEXT: nop 4001; 4002; MIPS64R6-LABEL: test_min_8: 4003; MIPS64R6: # %bb.0: # %entry 4004; MIPS64R6-NEXT: daddiu $sp, $sp, -16 4005; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 4006; MIPS64R6-NEXT: move $1, $5 4007; MIPS64R6-NEXT: sync 4008; MIPS64R6-NEXT: daddiu $2, $zero, -4 4009; MIPS64R6-NEXT: and $6, $4, $2 4010; MIPS64R6-NEXT: andi $2, $4, 3 4011; MIPS64R6-NEXT: xori $2, $2, 3 4012; MIPS64R6-NEXT: sll $10, $2, 3 4013; MIPS64R6-NEXT: ori $2, $zero, 255 4014; MIPS64R6-NEXT: sllv $8, $2, $10 4015; MIPS64R6-NEXT: nor $9, $zero, $8 4016; MIPS64R6-NEXT: sllv $7, $1, $10 4017; MIPS64R6-NEXT: .LBB9_1: # %entry 4018; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 4019; MIPS64R6-NEXT: ll $2, 0($6) 4020; MIPS64R6-NEXT: srav $4, $2, $10 4021; MIPS64R6-NEXT: seb $4, $4 4022; MIPS64R6-NEXT: or $1, $zero, $4 4023; MIPS64R6-NEXT: sllv $4, $4, $10 4024; MIPS64R6-NEXT: slt $5, $4, $7 4025; MIPS64R6-NEXT: selnez $3, $4, $5 4026; MIPS64R6-NEXT: seleqz $5, $7, $5 4027; MIPS64R6-NEXT: or $3, $3, $5 4028; MIPS64R6-NEXT: and $3, $3, $8 4029; MIPS64R6-NEXT: and $4, $2, $9 4030; MIPS64R6-NEXT: or $4, $4, $3 4031; MIPS64R6-NEXT: sc $4, 0($6) 4032; MIPS64R6-NEXT: beqzc $4, .LBB9_1 4033; MIPS64R6-NEXT: nop 4034; MIPS64R6-NEXT: # %bb.2: # %entry 4035; MIPS64R6-NEXT: .insn 4036; MIPS64R6-NEXT: # %bb.3: # %entry 4037; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4038; MIPS64R6-NEXT: # %bb.4: # %entry 4039; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4040; MIPS64R6-NEXT: sync 4041; MIPS64R6-NEXT: daddiu $sp, $sp, 16 4042; MIPS64R6-NEXT: jrc $ra 4043; 4044; MIPS64EL-LABEL: test_min_8: 4045; MIPS64EL: # %bb.0: # %entry 4046; MIPS64EL-NEXT: daddiu $sp, $sp, -16 4047; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 4048; MIPS64EL-NEXT: move $1, $5 4049; MIPS64EL-NEXT: sync 4050; MIPS64EL-NEXT: daddiu $2, $zero, -4 4051; MIPS64EL-NEXT: and $6, $4, $2 4052; MIPS64EL-NEXT: andi $2, $4, 3 4053; MIPS64EL-NEXT: sll $10, $2, 3 4054; MIPS64EL-NEXT: ori $2, $zero, 255 4055; MIPS64EL-NEXT: sllv $8, $2, $10 4056; MIPS64EL-NEXT: nor $9, $zero, $8 4057; MIPS64EL-NEXT: sllv $7, $1, $10 4058; MIPS64EL-NEXT: .LBB9_1: # %entry 4059; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 4060; MIPS64EL-NEXT: ll $2, 0($6) 4061; MIPS64EL-NEXT: srav $4, $2, $10 4062; MIPS64EL-NEXT: seb $4, $4 4063; MIPS64EL-NEXT: or $1, $zero, $4 4064; MIPS64EL-NEXT: sllv $4, $4, $10 4065; MIPS64EL-NEXT: slt $5, $4, $7 4066; MIPS64EL-NEXT: move $3, $4 4067; MIPS64EL-NEXT: movz $3, $7, $5 4068; MIPS64EL-NEXT: and $3, $3, $8 4069; MIPS64EL-NEXT: and $4, $2, $9 4070; MIPS64EL-NEXT: or $4, $4, $3 4071; MIPS64EL-NEXT: sc $4, 0($6) 4072; MIPS64EL-NEXT: beqz $4, .LBB9_1 4073; MIPS64EL-NEXT: nop 4074; MIPS64EL-NEXT: # %bb.2: # %entry 4075; MIPS64EL-NEXT: .insn 4076; MIPS64EL-NEXT: # %bb.3: # %entry 4077; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4078; MIPS64EL-NEXT: # %bb.4: # %entry 4079; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4080; MIPS64EL-NEXT: sync 4081; MIPS64EL-NEXT: daddiu $sp, $sp, 16 4082; MIPS64EL-NEXT: jr $ra 4083; MIPS64EL-NEXT: nop 4084; 4085; MIPS64ELR6-LABEL: test_min_8: 4086; MIPS64ELR6: # %bb.0: # %entry 4087; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 4088; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 4089; MIPS64ELR6-NEXT: move $1, $5 4090; MIPS64ELR6-NEXT: sync 4091; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 4092; MIPS64ELR6-NEXT: and $6, $4, $2 4093; MIPS64ELR6-NEXT: andi $2, $4, 3 4094; MIPS64ELR6-NEXT: sll $10, $2, 3 4095; MIPS64ELR6-NEXT: ori $2, $zero, 255 4096; MIPS64ELR6-NEXT: sllv $8, $2, $10 4097; MIPS64ELR6-NEXT: nor $9, $zero, $8 4098; MIPS64ELR6-NEXT: sllv $7, $1, $10 4099; MIPS64ELR6-NEXT: .LBB9_1: # %entry 4100; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 4101; MIPS64ELR6-NEXT: ll $2, 0($6) 4102; MIPS64ELR6-NEXT: srav $4, $2, $10 4103; MIPS64ELR6-NEXT: seb $4, $4 4104; MIPS64ELR6-NEXT: or $1, $zero, $4 4105; MIPS64ELR6-NEXT: sllv $4, $4, $10 4106; MIPS64ELR6-NEXT: slt $5, $4, $7 4107; MIPS64ELR6-NEXT: selnez $3, $4, $5 4108; MIPS64ELR6-NEXT: seleqz $5, $7, $5 4109; MIPS64ELR6-NEXT: or $3, $3, $5 4110; MIPS64ELR6-NEXT: and $3, $3, $8 4111; MIPS64ELR6-NEXT: and $4, $2, $9 4112; MIPS64ELR6-NEXT: or $4, $4, $3 4113; MIPS64ELR6-NEXT: sc $4, 0($6) 4114; MIPS64ELR6-NEXT: beqzc $4, .LBB9_1 4115; MIPS64ELR6-NEXT: nop 4116; MIPS64ELR6-NEXT: # %bb.2: # %entry 4117; MIPS64ELR6-NEXT: .insn 4118; MIPS64ELR6-NEXT: # %bb.3: # %entry 4119; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4120; MIPS64ELR6-NEXT: # %bb.4: # %entry 4121; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4122; MIPS64ELR6-NEXT: sync 4123; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 4124; MIPS64ELR6-NEXT: jrc $ra 4125entry: 4126 %0 = atomicrmw min ptr %ptr, i8 %val seq_cst 4127 ret i8 %0 4128} 4129 4130define i8 @test_umax_8(ptr nocapture %ptr, i8 signext %val) { 4131; MIPS-LABEL: test_umax_8: 4132; MIPS: # %bb.0: # %entry 4133; MIPS-NEXT: addiu $sp, $sp, -8 4134; MIPS-NEXT: .cfi_def_cfa_offset 8 4135; MIPS-NEXT: # kill: def $at killed $a1 4136; MIPS-NEXT: sync 4137; MIPS-NEXT: addiu $1, $zero, -4 4138; MIPS-NEXT: and $6, $4, $1 4139; MIPS-NEXT: andi $1, $4, 3 4140; MIPS-NEXT: xori $1, $1, 3 4141; MIPS-NEXT: sll $10, $1, 3 4142; MIPS-NEXT: ori $1, $zero, 255 4143; MIPS-NEXT: sllv $8, $1, $10 4144; MIPS-NEXT: nor $9, $zero, $8 4145; MIPS-NEXT: sllv $7, $5, $10 4146; MIPS-NEXT: $BB10_1: # %entry 4147; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 4148; MIPS-NEXT: ll $2, 0($6) 4149; MIPS-NEXT: srav $4, $2, $10 4150; MIPS-NEXT: andi $4, $4, 255 4151; MIPS-NEXT: or $1, $zero, $4 4152; MIPS-NEXT: sllv $4, $4, $10 4153; MIPS-NEXT: sltu $5, $4, $7 4154; MIPS-NEXT: move $3, $4 4155; MIPS-NEXT: movn $3, $7, $5 4156; MIPS-NEXT: and $3, $3, $8 4157; MIPS-NEXT: and $4, $2, $9 4158; MIPS-NEXT: or $4, $4, $3 4159; MIPS-NEXT: sc $4, 0($6) 4160; MIPS-NEXT: beqz $4, $BB10_1 4161; MIPS-NEXT: nop 4162; MIPS-NEXT: # %bb.2: # %entry 4163; MIPS-NEXT: .insn 4164; MIPS-NEXT: # %bb.3: # %entry 4165; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4166; MIPS-NEXT: # %bb.4: # %entry 4167; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4168; MIPS-NEXT: sync 4169; MIPS-NEXT: addiu $sp, $sp, 8 4170; MIPS-NEXT: jr $ra 4171; MIPS-NEXT: nop 4172; 4173; MIPSR6-LABEL: test_umax_8: 4174; MIPSR6: # %bb.0: # %entry 4175; MIPSR6-NEXT: addiu $sp, $sp, -8 4176; MIPSR6-NEXT: .cfi_def_cfa_offset 8 4177; MIPSR6-NEXT: # kill: def $at killed $a1 4178; MIPSR6-NEXT: sync 4179; MIPSR6-NEXT: addiu $1, $zero, -4 4180; MIPSR6-NEXT: and $6, $4, $1 4181; MIPSR6-NEXT: andi $1, $4, 3 4182; MIPSR6-NEXT: xori $1, $1, 3 4183; MIPSR6-NEXT: sll $10, $1, 3 4184; MIPSR6-NEXT: ori $1, $zero, 255 4185; MIPSR6-NEXT: sllv $8, $1, $10 4186; MIPSR6-NEXT: nor $9, $zero, $8 4187; MIPSR6-NEXT: sllv $7, $5, $10 4188; MIPSR6-NEXT: $BB10_1: # %entry 4189; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 4190; MIPSR6-NEXT: ll $2, 0($6) 4191; MIPSR6-NEXT: srav $4, $2, $10 4192; MIPSR6-NEXT: andi $4, $4, 255 4193; MIPSR6-NEXT: or $1, $zero, $4 4194; MIPSR6-NEXT: sllv $4, $4, $10 4195; MIPSR6-NEXT: sltu $5, $4, $7 4196; MIPSR6-NEXT: seleqz $3, $4, $5 4197; MIPSR6-NEXT: selnez $5, $7, $5 4198; MIPSR6-NEXT: or $3, $3, $5 4199; MIPSR6-NEXT: and $3, $3, $8 4200; MIPSR6-NEXT: and $4, $2, $9 4201; MIPSR6-NEXT: or $4, $4, $3 4202; MIPSR6-NEXT: sc $4, 0($6) 4203; MIPSR6-NEXT: beqzc $4, $BB10_1 4204; MIPSR6-NEXT: nop 4205; MIPSR6-NEXT: # %bb.2: # %entry 4206; MIPSR6-NEXT: .insn 4207; MIPSR6-NEXT: # %bb.3: # %entry 4208; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4209; MIPSR6-NEXT: # %bb.4: # %entry 4210; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4211; MIPSR6-NEXT: sync 4212; MIPSR6-NEXT: addiu $sp, $sp, 8 4213; MIPSR6-NEXT: jrc $ra 4214; 4215; MM-LABEL: test_umax_8: 4216; MM: # %bb.0: # %entry 4217; MM-NEXT: addiu $sp, $sp, -8 4218; MM-NEXT: .cfi_def_cfa_offset 8 4219; MM-NEXT: # kill: def $at killed $a1 4220; MM-NEXT: sync 4221; MM-NEXT: addiu $1, $zero, -4 4222; MM-NEXT: and $6, $4, $1 4223; MM-NEXT: andi $1, $4, 3 4224; MM-NEXT: xori $1, $1, 3 4225; MM-NEXT: sll $10, $1, 3 4226; MM-NEXT: ori $1, $zero, 255 4227; MM-NEXT: sllv $8, $1, $10 4228; MM-NEXT: nor $9, $zero, $8 4229; MM-NEXT: sllv $7, $5, $10 4230; MM-NEXT: $BB10_1: # %entry 4231; MM-NEXT: # =>This Inner Loop Header: Depth=1 4232; MM-NEXT: ll $2, 0($6) 4233; MM-NEXT: srav $4, $2, $10 4234; MM-NEXT: andi $4, $4, 255 4235; MM-NEXT: or $1, $zero, $4 4236; MM-NEXT: sllv $4, $4, $10 4237; MM-NEXT: sltu $5, $4, $7 4238; MM-NEXT: or $3, $4, $zero 4239; MM-NEXT: movn $3, $7, $5 4240; MM-NEXT: and $3, $3, $8 4241; MM-NEXT: and $4, $2, $9 4242; MM-NEXT: or $4, $4, $3 4243; MM-NEXT: sc $4, 0($6) 4244; MM-NEXT: beqzc $4, $BB10_1 4245; MM-NEXT: # %bb.2: # %entry 4246; MM-NEXT: .insn 4247; MM-NEXT: # %bb.3: # %entry 4248; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4249; MM-NEXT: # %bb.4: # %entry 4250; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4251; MM-NEXT: sync 4252; MM-NEXT: addiusp 8 4253; MM-NEXT: jrc $ra 4254; 4255; MMR6-LABEL: test_umax_8: 4256; MMR6: # %bb.0: # %entry 4257; MMR6-NEXT: addiu $sp, $sp, -8 4258; MMR6-NEXT: .cfi_def_cfa_offset 8 4259; MMR6-NEXT: # kill: def $at killed $a1 4260; MMR6-NEXT: sync 4261; MMR6-NEXT: addiu $1, $zero, -4 4262; MMR6-NEXT: and $6, $4, $1 4263; MMR6-NEXT: andi $1, $4, 3 4264; MMR6-NEXT: xori $1, $1, 3 4265; MMR6-NEXT: sll $10, $1, 3 4266; MMR6-NEXT: ori $1, $zero, 255 4267; MMR6-NEXT: sllv $8, $1, $10 4268; MMR6-NEXT: nor $9, $zero, $8 4269; MMR6-NEXT: sllv $7, $5, $10 4270; MMR6-NEXT: $BB10_1: # %entry 4271; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 4272; MMR6-NEXT: ll $2, 0($6) 4273; MMR6-NEXT: srav $4, $2, $10 4274; MMR6-NEXT: andi $4, $4, 255 4275; MMR6-NEXT: or $1, $zero, $4 4276; MMR6-NEXT: sllv $4, $4, $10 4277; MMR6-NEXT: sltu $5, $4, $7 4278; MMR6-NEXT: seleqz $3, $4, $5 4279; MMR6-NEXT: selnez $5, $7, $5 4280; MMR6-NEXT: or $3, $3, $5 4281; MMR6-NEXT: and $3, $3, $8 4282; MMR6-NEXT: and $4, $2, $9 4283; MMR6-NEXT: or $4, $4, $3 4284; MMR6-NEXT: sc $4, 0($6) 4285; MMR6-NEXT: beqc $4, $zero, $BB10_1 4286; MMR6-NEXT: # %bb.2: # %entry 4287; MMR6-NEXT: .insn 4288; MMR6-NEXT: # %bb.3: # %entry 4289; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4290; MMR6-NEXT: # %bb.4: # %entry 4291; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4292; MMR6-NEXT: sync 4293; MMR6-NEXT: addiu $sp, $sp, 8 4294; MMR6-NEXT: jrc $ra 4295; 4296; MIPS32-LABEL: test_umax_8: 4297; MIPS32: # %bb.0: # %entry 4298; MIPS32-NEXT: addiu $sp, $sp, -8 4299; MIPS32-NEXT: .cfi_def_cfa_offset 8 4300; MIPS32-NEXT: # kill: def $at killed $a1 4301; MIPS32-NEXT: sync 4302; MIPS32-NEXT: addiu $1, $zero, -4 4303; MIPS32-NEXT: and $6, $4, $1 4304; MIPS32-NEXT: andi $1, $4, 3 4305; MIPS32-NEXT: sll $10, $1, 3 4306; MIPS32-NEXT: ori $1, $zero, 255 4307; MIPS32-NEXT: sllv $8, $1, $10 4308; MIPS32-NEXT: nor $9, $zero, $8 4309; MIPS32-NEXT: sllv $7, $5, $10 4310; MIPS32-NEXT: $BB10_1: # %entry 4311; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 4312; MIPS32-NEXT: ll $2, 0($6) 4313; MIPS32-NEXT: srav $4, $2, $10 4314; MIPS32-NEXT: andi $4, $4, 255 4315; MIPS32-NEXT: or $1, $zero, $4 4316; MIPS32-NEXT: sllv $4, $4, $10 4317; MIPS32-NEXT: sltu $5, $4, $7 4318; MIPS32-NEXT: move $3, $4 4319; MIPS32-NEXT: movn $3, $7, $5 4320; MIPS32-NEXT: and $3, $3, $8 4321; MIPS32-NEXT: and $4, $2, $9 4322; MIPS32-NEXT: or $4, $4, $3 4323; MIPS32-NEXT: sc $4, 0($6) 4324; MIPS32-NEXT: beqz $4, $BB10_1 4325; MIPS32-NEXT: nop 4326; MIPS32-NEXT: # %bb.2: # %entry 4327; MIPS32-NEXT: .insn 4328; MIPS32-NEXT: # %bb.3: # %entry 4329; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4330; MIPS32-NEXT: # %bb.4: # %entry 4331; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4332; MIPS32-NEXT: sync 4333; MIPS32-NEXT: addiu $sp, $sp, 8 4334; MIPS32-NEXT: jr $ra 4335; MIPS32-NEXT: nop 4336; 4337; MIPSEL-LABEL: test_umax_8: 4338; MIPSEL: # %bb.0: # %entry 4339; MIPSEL-NEXT: addiu $sp, $sp, -8 4340; MIPSEL-NEXT: .cfi_def_cfa_offset 8 4341; MIPSEL-NEXT: # kill: def $at killed $a1 4342; MIPSEL-NEXT: sync 4343; MIPSEL-NEXT: addiu $1, $zero, -4 4344; MIPSEL-NEXT: and $6, $4, $1 4345; MIPSEL-NEXT: andi $1, $4, 3 4346; MIPSEL-NEXT: sll $10, $1, 3 4347; MIPSEL-NEXT: ori $1, $zero, 255 4348; MIPSEL-NEXT: sllv $8, $1, $10 4349; MIPSEL-NEXT: nor $9, $zero, $8 4350; MIPSEL-NEXT: sllv $7, $5, $10 4351; MIPSEL-NEXT: $BB10_1: # %entry 4352; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 4353; MIPSEL-NEXT: ll $2, 0($6) 4354; MIPSEL-NEXT: srav $4, $2, $10 4355; MIPSEL-NEXT: andi $4, $4, 255 4356; MIPSEL-NEXT: or $1, $zero, $4 4357; MIPSEL-NEXT: sllv $4, $4, $10 4358; MIPSEL-NEXT: sltu $5, $4, $7 4359; MIPSEL-NEXT: move $3, $4 4360; MIPSEL-NEXT: movn $3, $7, $5 4361; MIPSEL-NEXT: and $3, $3, $8 4362; MIPSEL-NEXT: and $4, $2, $9 4363; MIPSEL-NEXT: or $4, $4, $3 4364; MIPSEL-NEXT: sc $4, 0($6) 4365; MIPSEL-NEXT: beqz $4, $BB10_1 4366; MIPSEL-NEXT: nop 4367; MIPSEL-NEXT: # %bb.2: # %entry 4368; MIPSEL-NEXT: .insn 4369; MIPSEL-NEXT: # %bb.3: # %entry 4370; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4371; MIPSEL-NEXT: # %bb.4: # %entry 4372; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4373; MIPSEL-NEXT: sync 4374; MIPSEL-NEXT: addiu $sp, $sp, 8 4375; MIPSEL-NEXT: jr $ra 4376; MIPSEL-NEXT: nop 4377; 4378; MIPSELR6-LABEL: test_umax_8: 4379; MIPSELR6: # %bb.0: # %entry 4380; MIPSELR6-NEXT: addiu $sp, $sp, -8 4381; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 4382; MIPSELR6-NEXT: # kill: def $at killed $a1 4383; MIPSELR6-NEXT: sync 4384; MIPSELR6-NEXT: addiu $1, $zero, -4 4385; MIPSELR6-NEXT: and $6, $4, $1 4386; MIPSELR6-NEXT: andi $1, $4, 3 4387; MIPSELR6-NEXT: sll $10, $1, 3 4388; MIPSELR6-NEXT: ori $1, $zero, 255 4389; MIPSELR6-NEXT: sllv $8, $1, $10 4390; MIPSELR6-NEXT: nor $9, $zero, $8 4391; MIPSELR6-NEXT: sllv $7, $5, $10 4392; MIPSELR6-NEXT: $BB10_1: # %entry 4393; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 4394; MIPSELR6-NEXT: ll $2, 0($6) 4395; MIPSELR6-NEXT: srav $4, $2, $10 4396; MIPSELR6-NEXT: andi $4, $4, 255 4397; MIPSELR6-NEXT: or $1, $zero, $4 4398; MIPSELR6-NEXT: sllv $4, $4, $10 4399; MIPSELR6-NEXT: sltu $5, $4, $7 4400; MIPSELR6-NEXT: seleqz $3, $4, $5 4401; MIPSELR6-NEXT: selnez $5, $7, $5 4402; MIPSELR6-NEXT: or $3, $3, $5 4403; MIPSELR6-NEXT: and $3, $3, $8 4404; MIPSELR6-NEXT: and $4, $2, $9 4405; MIPSELR6-NEXT: or $4, $4, $3 4406; MIPSELR6-NEXT: sc $4, 0($6) 4407; MIPSELR6-NEXT: beqzc $4, $BB10_1 4408; MIPSELR6-NEXT: nop 4409; MIPSELR6-NEXT: # %bb.2: # %entry 4410; MIPSELR6-NEXT: .insn 4411; MIPSELR6-NEXT: # %bb.3: # %entry 4412; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4413; MIPSELR6-NEXT: # %bb.4: # %entry 4414; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4415; MIPSELR6-NEXT: sync 4416; MIPSELR6-NEXT: addiu $sp, $sp, 8 4417; MIPSELR6-NEXT: jrc $ra 4418; 4419; MMEL-LABEL: test_umax_8: 4420; MMEL: # %bb.0: # %entry 4421; MMEL-NEXT: addiu $sp, $sp, -8 4422; MMEL-NEXT: .cfi_def_cfa_offset 8 4423; MMEL-NEXT: # kill: def $at killed $a1 4424; MMEL-NEXT: sync 4425; MMEL-NEXT: addiu $1, $zero, -4 4426; MMEL-NEXT: and $6, $4, $1 4427; MMEL-NEXT: andi $1, $4, 3 4428; MMEL-NEXT: sll $10, $1, 3 4429; MMEL-NEXT: ori $1, $zero, 255 4430; MMEL-NEXT: sllv $8, $1, $10 4431; MMEL-NEXT: nor $9, $zero, $8 4432; MMEL-NEXT: sllv $7, $5, $10 4433; MMEL-NEXT: $BB10_1: # %entry 4434; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 4435; MMEL-NEXT: ll $2, 0($6) 4436; MMEL-NEXT: srav $4, $2, $10 4437; MMEL-NEXT: andi $4, $4, 255 4438; MMEL-NEXT: or $1, $zero, $4 4439; MMEL-NEXT: sllv $4, $4, $10 4440; MMEL-NEXT: sltu $5, $4, $7 4441; MMEL-NEXT: or $3, $4, $zero 4442; MMEL-NEXT: movn $3, $7, $5 4443; MMEL-NEXT: and $3, $3, $8 4444; MMEL-NEXT: and $4, $2, $9 4445; MMEL-NEXT: or $4, $4, $3 4446; MMEL-NEXT: sc $4, 0($6) 4447; MMEL-NEXT: beqzc $4, $BB10_1 4448; MMEL-NEXT: # %bb.2: # %entry 4449; MMEL-NEXT: .insn 4450; MMEL-NEXT: # %bb.3: # %entry 4451; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4452; MMEL-NEXT: # %bb.4: # %entry 4453; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4454; MMEL-NEXT: sync 4455; MMEL-NEXT: addiusp 8 4456; MMEL-NEXT: jrc $ra 4457; 4458; MMELR6-LABEL: test_umax_8: 4459; MMELR6: # %bb.0: # %entry 4460; MMELR6-NEXT: addiu $sp, $sp, -8 4461; MMELR6-NEXT: .cfi_def_cfa_offset 8 4462; MMELR6-NEXT: # kill: def $at killed $a1 4463; MMELR6-NEXT: sync 4464; MMELR6-NEXT: addiu $1, $zero, -4 4465; MMELR6-NEXT: and $6, $4, $1 4466; MMELR6-NEXT: andi $1, $4, 3 4467; MMELR6-NEXT: sll $10, $1, 3 4468; MMELR6-NEXT: ori $1, $zero, 255 4469; MMELR6-NEXT: sllv $8, $1, $10 4470; MMELR6-NEXT: nor $9, $zero, $8 4471; MMELR6-NEXT: sllv $7, $5, $10 4472; MMELR6-NEXT: $BB10_1: # %entry 4473; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 4474; MMELR6-NEXT: ll $2, 0($6) 4475; MMELR6-NEXT: srav $4, $2, $10 4476; MMELR6-NEXT: andi $4, $4, 255 4477; MMELR6-NEXT: or $1, $zero, $4 4478; MMELR6-NEXT: sllv $4, $4, $10 4479; MMELR6-NEXT: sltu $5, $4, $7 4480; MMELR6-NEXT: seleqz $3, $4, $5 4481; MMELR6-NEXT: selnez $5, $7, $5 4482; MMELR6-NEXT: or $3, $3, $5 4483; MMELR6-NEXT: and $3, $3, $8 4484; MMELR6-NEXT: and $4, $2, $9 4485; MMELR6-NEXT: or $4, $4, $3 4486; MMELR6-NEXT: sc $4, 0($6) 4487; MMELR6-NEXT: beqc $4, $zero, $BB10_1 4488; MMELR6-NEXT: # %bb.2: # %entry 4489; MMELR6-NEXT: .insn 4490; MMELR6-NEXT: # %bb.3: # %entry 4491; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4492; MMELR6-NEXT: # %bb.4: # %entry 4493; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4494; MMELR6-NEXT: sync 4495; MMELR6-NEXT: addiu $sp, $sp, 8 4496; MMELR6-NEXT: jrc $ra 4497; 4498; MIPS64-LABEL: test_umax_8: 4499; MIPS64: # %bb.0: # %entry 4500; MIPS64-NEXT: daddiu $sp, $sp, -16 4501; MIPS64-NEXT: .cfi_def_cfa_offset 16 4502; MIPS64-NEXT: move $1, $5 4503; MIPS64-NEXT: sync 4504; MIPS64-NEXT: daddiu $2, $zero, -4 4505; MIPS64-NEXT: and $6, $4, $2 4506; MIPS64-NEXT: andi $2, $4, 3 4507; MIPS64-NEXT: xori $2, $2, 3 4508; MIPS64-NEXT: sll $10, $2, 3 4509; MIPS64-NEXT: ori $2, $zero, 255 4510; MIPS64-NEXT: sllv $8, $2, $10 4511; MIPS64-NEXT: nor $9, $zero, $8 4512; MIPS64-NEXT: sllv $7, $1, $10 4513; MIPS64-NEXT: .LBB10_1: # %entry 4514; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 4515; MIPS64-NEXT: ll $2, 0($6) 4516; MIPS64-NEXT: srav $4, $2, $10 4517; MIPS64-NEXT: andi $4, $4, 255 4518; MIPS64-NEXT: or $1, $zero, $4 4519; MIPS64-NEXT: sllv $4, $4, $10 4520; MIPS64-NEXT: sltu $5, $4, $7 4521; MIPS64-NEXT: move $3, $4 4522; MIPS64-NEXT: movn $3, $7, $5 4523; MIPS64-NEXT: and $3, $3, $8 4524; MIPS64-NEXT: and $4, $2, $9 4525; MIPS64-NEXT: or $4, $4, $3 4526; MIPS64-NEXT: sc $4, 0($6) 4527; MIPS64-NEXT: beqz $4, .LBB10_1 4528; MIPS64-NEXT: nop 4529; MIPS64-NEXT: # %bb.2: # %entry 4530; MIPS64-NEXT: .insn 4531; MIPS64-NEXT: # %bb.3: # %entry 4532; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4533; MIPS64-NEXT: # %bb.4: # %entry 4534; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4535; MIPS64-NEXT: sync 4536; MIPS64-NEXT: daddiu $sp, $sp, 16 4537; MIPS64-NEXT: jr $ra 4538; MIPS64-NEXT: nop 4539; 4540; MIPS64R6-LABEL: test_umax_8: 4541; MIPS64R6: # %bb.0: # %entry 4542; MIPS64R6-NEXT: daddiu $sp, $sp, -16 4543; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 4544; MIPS64R6-NEXT: move $1, $5 4545; MIPS64R6-NEXT: sync 4546; MIPS64R6-NEXT: daddiu $2, $zero, -4 4547; MIPS64R6-NEXT: and $6, $4, $2 4548; MIPS64R6-NEXT: andi $2, $4, 3 4549; MIPS64R6-NEXT: xori $2, $2, 3 4550; MIPS64R6-NEXT: sll $10, $2, 3 4551; MIPS64R6-NEXT: ori $2, $zero, 255 4552; MIPS64R6-NEXT: sllv $8, $2, $10 4553; MIPS64R6-NEXT: nor $9, $zero, $8 4554; MIPS64R6-NEXT: sllv $7, $1, $10 4555; MIPS64R6-NEXT: .LBB10_1: # %entry 4556; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 4557; MIPS64R6-NEXT: ll $2, 0($6) 4558; MIPS64R6-NEXT: srav $4, $2, $10 4559; MIPS64R6-NEXT: andi $4, $4, 255 4560; MIPS64R6-NEXT: or $1, $zero, $4 4561; MIPS64R6-NEXT: sllv $4, $4, $10 4562; MIPS64R6-NEXT: sltu $5, $4, $7 4563; MIPS64R6-NEXT: seleqz $3, $4, $5 4564; MIPS64R6-NEXT: selnez $5, $7, $5 4565; MIPS64R6-NEXT: or $3, $3, $5 4566; MIPS64R6-NEXT: and $3, $3, $8 4567; MIPS64R6-NEXT: and $4, $2, $9 4568; MIPS64R6-NEXT: or $4, $4, $3 4569; MIPS64R6-NEXT: sc $4, 0($6) 4570; MIPS64R6-NEXT: beqzc $4, .LBB10_1 4571; MIPS64R6-NEXT: nop 4572; MIPS64R6-NEXT: # %bb.2: # %entry 4573; MIPS64R6-NEXT: .insn 4574; MIPS64R6-NEXT: # %bb.3: # %entry 4575; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4576; MIPS64R6-NEXT: # %bb.4: # %entry 4577; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4578; MIPS64R6-NEXT: sync 4579; MIPS64R6-NEXT: daddiu $sp, $sp, 16 4580; MIPS64R6-NEXT: jrc $ra 4581; 4582; MIPS64EL-LABEL: test_umax_8: 4583; MIPS64EL: # %bb.0: # %entry 4584; MIPS64EL-NEXT: daddiu $sp, $sp, -16 4585; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 4586; MIPS64EL-NEXT: move $1, $5 4587; MIPS64EL-NEXT: sync 4588; MIPS64EL-NEXT: daddiu $2, $zero, -4 4589; MIPS64EL-NEXT: and $6, $4, $2 4590; MIPS64EL-NEXT: andi $2, $4, 3 4591; MIPS64EL-NEXT: sll $10, $2, 3 4592; MIPS64EL-NEXT: ori $2, $zero, 255 4593; MIPS64EL-NEXT: sllv $8, $2, $10 4594; MIPS64EL-NEXT: nor $9, $zero, $8 4595; MIPS64EL-NEXT: sllv $7, $1, $10 4596; MIPS64EL-NEXT: .LBB10_1: # %entry 4597; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 4598; MIPS64EL-NEXT: ll $2, 0($6) 4599; MIPS64EL-NEXT: srav $4, $2, $10 4600; MIPS64EL-NEXT: andi $4, $4, 255 4601; MIPS64EL-NEXT: or $1, $zero, $4 4602; MIPS64EL-NEXT: sllv $4, $4, $10 4603; MIPS64EL-NEXT: sltu $5, $4, $7 4604; MIPS64EL-NEXT: move $3, $4 4605; MIPS64EL-NEXT: movn $3, $7, $5 4606; MIPS64EL-NEXT: and $3, $3, $8 4607; MIPS64EL-NEXT: and $4, $2, $9 4608; MIPS64EL-NEXT: or $4, $4, $3 4609; MIPS64EL-NEXT: sc $4, 0($6) 4610; MIPS64EL-NEXT: beqz $4, .LBB10_1 4611; MIPS64EL-NEXT: nop 4612; MIPS64EL-NEXT: # %bb.2: # %entry 4613; MIPS64EL-NEXT: .insn 4614; MIPS64EL-NEXT: # %bb.3: # %entry 4615; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4616; MIPS64EL-NEXT: # %bb.4: # %entry 4617; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4618; MIPS64EL-NEXT: sync 4619; MIPS64EL-NEXT: daddiu $sp, $sp, 16 4620; MIPS64EL-NEXT: jr $ra 4621; MIPS64EL-NEXT: nop 4622; 4623; MIPS64ELR6-LABEL: test_umax_8: 4624; MIPS64ELR6: # %bb.0: # %entry 4625; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 4626; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 4627; MIPS64ELR6-NEXT: move $1, $5 4628; MIPS64ELR6-NEXT: sync 4629; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 4630; MIPS64ELR6-NEXT: and $6, $4, $2 4631; MIPS64ELR6-NEXT: andi $2, $4, 3 4632; MIPS64ELR6-NEXT: sll $10, $2, 3 4633; MIPS64ELR6-NEXT: ori $2, $zero, 255 4634; MIPS64ELR6-NEXT: sllv $8, $2, $10 4635; MIPS64ELR6-NEXT: nor $9, $zero, $8 4636; MIPS64ELR6-NEXT: sllv $7, $1, $10 4637; MIPS64ELR6-NEXT: .LBB10_1: # %entry 4638; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 4639; MIPS64ELR6-NEXT: ll $2, 0($6) 4640; MIPS64ELR6-NEXT: srav $4, $2, $10 4641; MIPS64ELR6-NEXT: andi $4, $4, 255 4642; MIPS64ELR6-NEXT: or $1, $zero, $4 4643; MIPS64ELR6-NEXT: sllv $4, $4, $10 4644; MIPS64ELR6-NEXT: sltu $5, $4, $7 4645; MIPS64ELR6-NEXT: seleqz $3, $4, $5 4646; MIPS64ELR6-NEXT: selnez $5, $7, $5 4647; MIPS64ELR6-NEXT: or $3, $3, $5 4648; MIPS64ELR6-NEXT: and $3, $3, $8 4649; MIPS64ELR6-NEXT: and $4, $2, $9 4650; MIPS64ELR6-NEXT: or $4, $4, $3 4651; MIPS64ELR6-NEXT: sc $4, 0($6) 4652; MIPS64ELR6-NEXT: beqzc $4, .LBB10_1 4653; MIPS64ELR6-NEXT: nop 4654; MIPS64ELR6-NEXT: # %bb.2: # %entry 4655; MIPS64ELR6-NEXT: .insn 4656; MIPS64ELR6-NEXT: # %bb.3: # %entry 4657; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 4658; MIPS64ELR6-NEXT: # %bb.4: # %entry 4659; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 4660; MIPS64ELR6-NEXT: sync 4661; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 4662; MIPS64ELR6-NEXT: jrc $ra 4663entry: 4664 %0 = atomicrmw umax ptr %ptr, i8 %val seq_cst 4665 ret i8 %0 4666} 4667 4668define i8 @test_umin_8(ptr nocapture %ptr, i8 signext %val) { 4669; MIPS-LABEL: test_umin_8: 4670; MIPS: # %bb.0: # %entry 4671; MIPS-NEXT: addiu $sp, $sp, -8 4672; MIPS-NEXT: .cfi_def_cfa_offset 8 4673; MIPS-NEXT: # kill: def $at killed $a1 4674; MIPS-NEXT: sync 4675; MIPS-NEXT: addiu $1, $zero, -4 4676; MIPS-NEXT: and $6, $4, $1 4677; MIPS-NEXT: andi $1, $4, 3 4678; MIPS-NEXT: xori $1, $1, 3 4679; MIPS-NEXT: sll $10, $1, 3 4680; MIPS-NEXT: ori $1, $zero, 255 4681; MIPS-NEXT: sllv $8, $1, $10 4682; MIPS-NEXT: nor $9, $zero, $8 4683; MIPS-NEXT: sllv $7, $5, $10 4684; MIPS-NEXT: $BB11_1: # %entry 4685; MIPS-NEXT: # =>This Inner Loop Header: Depth=1 4686; MIPS-NEXT: ll $2, 0($6) 4687; MIPS-NEXT: srav $4, $2, $10 4688; MIPS-NEXT: andi $4, $4, 255 4689; MIPS-NEXT: or $1, $zero, $4 4690; MIPS-NEXT: sllv $4, $4, $10 4691; MIPS-NEXT: sltu $5, $4, $7 4692; MIPS-NEXT: move $3, $4 4693; MIPS-NEXT: movz $3, $7, $5 4694; MIPS-NEXT: and $3, $3, $8 4695; MIPS-NEXT: and $4, $2, $9 4696; MIPS-NEXT: or $4, $4, $3 4697; MIPS-NEXT: sc $4, 0($6) 4698; MIPS-NEXT: beqz $4, $BB11_1 4699; MIPS-NEXT: nop 4700; MIPS-NEXT: # %bb.2: # %entry 4701; MIPS-NEXT: .insn 4702; MIPS-NEXT: # %bb.3: # %entry 4703; MIPS-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4704; MIPS-NEXT: # %bb.4: # %entry 4705; MIPS-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4706; MIPS-NEXT: sync 4707; MIPS-NEXT: addiu $sp, $sp, 8 4708; MIPS-NEXT: jr $ra 4709; MIPS-NEXT: nop 4710; 4711; MIPSR6-LABEL: test_umin_8: 4712; MIPSR6: # %bb.0: # %entry 4713; MIPSR6-NEXT: addiu $sp, $sp, -8 4714; MIPSR6-NEXT: .cfi_def_cfa_offset 8 4715; MIPSR6-NEXT: # kill: def $at killed $a1 4716; MIPSR6-NEXT: sync 4717; MIPSR6-NEXT: addiu $1, $zero, -4 4718; MIPSR6-NEXT: and $6, $4, $1 4719; MIPSR6-NEXT: andi $1, $4, 3 4720; MIPSR6-NEXT: xori $1, $1, 3 4721; MIPSR6-NEXT: sll $10, $1, 3 4722; MIPSR6-NEXT: ori $1, $zero, 255 4723; MIPSR6-NEXT: sllv $8, $1, $10 4724; MIPSR6-NEXT: nor $9, $zero, $8 4725; MIPSR6-NEXT: sllv $7, $5, $10 4726; MIPSR6-NEXT: $BB11_1: # %entry 4727; MIPSR6-NEXT: # =>This Inner Loop Header: Depth=1 4728; MIPSR6-NEXT: ll $2, 0($6) 4729; MIPSR6-NEXT: srav $4, $2, $10 4730; MIPSR6-NEXT: andi $4, $4, 255 4731; MIPSR6-NEXT: or $1, $zero, $4 4732; MIPSR6-NEXT: sllv $4, $4, $10 4733; MIPSR6-NEXT: sltu $5, $4, $7 4734; MIPSR6-NEXT: selnez $3, $4, $5 4735; MIPSR6-NEXT: seleqz $5, $7, $5 4736; MIPSR6-NEXT: or $3, $3, $5 4737; MIPSR6-NEXT: and $3, $3, $8 4738; MIPSR6-NEXT: and $4, $2, $9 4739; MIPSR6-NEXT: or $4, $4, $3 4740; MIPSR6-NEXT: sc $4, 0($6) 4741; MIPSR6-NEXT: beqzc $4, $BB11_1 4742; MIPSR6-NEXT: nop 4743; MIPSR6-NEXT: # %bb.2: # %entry 4744; MIPSR6-NEXT: .insn 4745; MIPSR6-NEXT: # %bb.3: # %entry 4746; MIPSR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4747; MIPSR6-NEXT: # %bb.4: # %entry 4748; MIPSR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4749; MIPSR6-NEXT: sync 4750; MIPSR6-NEXT: addiu $sp, $sp, 8 4751; MIPSR6-NEXT: jrc $ra 4752; 4753; MM-LABEL: test_umin_8: 4754; MM: # %bb.0: # %entry 4755; MM-NEXT: addiu $sp, $sp, -8 4756; MM-NEXT: .cfi_def_cfa_offset 8 4757; MM-NEXT: # kill: def $at killed $a1 4758; MM-NEXT: sync 4759; MM-NEXT: addiu $1, $zero, -4 4760; MM-NEXT: and $6, $4, $1 4761; MM-NEXT: andi $1, $4, 3 4762; MM-NEXT: xori $1, $1, 3 4763; MM-NEXT: sll $10, $1, 3 4764; MM-NEXT: ori $1, $zero, 255 4765; MM-NEXT: sllv $8, $1, $10 4766; MM-NEXT: nor $9, $zero, $8 4767; MM-NEXT: sllv $7, $5, $10 4768; MM-NEXT: $BB11_1: # %entry 4769; MM-NEXT: # =>This Inner Loop Header: Depth=1 4770; MM-NEXT: ll $2, 0($6) 4771; MM-NEXT: srav $4, $2, $10 4772; MM-NEXT: andi $4, $4, 255 4773; MM-NEXT: or $1, $zero, $4 4774; MM-NEXT: sllv $4, $4, $10 4775; MM-NEXT: sltu $5, $4, $7 4776; MM-NEXT: or $3, $4, $zero 4777; MM-NEXT: movz $3, $7, $5 4778; MM-NEXT: and $3, $3, $8 4779; MM-NEXT: and $4, $2, $9 4780; MM-NEXT: or $4, $4, $3 4781; MM-NEXT: sc $4, 0($6) 4782; MM-NEXT: beqzc $4, $BB11_1 4783; MM-NEXT: # %bb.2: # %entry 4784; MM-NEXT: .insn 4785; MM-NEXT: # %bb.3: # %entry 4786; MM-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4787; MM-NEXT: # %bb.4: # %entry 4788; MM-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4789; MM-NEXT: sync 4790; MM-NEXT: addiusp 8 4791; MM-NEXT: jrc $ra 4792; 4793; MMR6-LABEL: test_umin_8: 4794; MMR6: # %bb.0: # %entry 4795; MMR6-NEXT: addiu $sp, $sp, -8 4796; MMR6-NEXT: .cfi_def_cfa_offset 8 4797; MMR6-NEXT: # kill: def $at killed $a1 4798; MMR6-NEXT: sync 4799; MMR6-NEXT: addiu $1, $zero, -4 4800; MMR6-NEXT: and $6, $4, $1 4801; MMR6-NEXT: andi $1, $4, 3 4802; MMR6-NEXT: xori $1, $1, 3 4803; MMR6-NEXT: sll $10, $1, 3 4804; MMR6-NEXT: ori $1, $zero, 255 4805; MMR6-NEXT: sllv $8, $1, $10 4806; MMR6-NEXT: nor $9, $zero, $8 4807; MMR6-NEXT: sllv $7, $5, $10 4808; MMR6-NEXT: $BB11_1: # %entry 4809; MMR6-NEXT: # =>This Inner Loop Header: Depth=1 4810; MMR6-NEXT: ll $2, 0($6) 4811; MMR6-NEXT: srav $4, $2, $10 4812; MMR6-NEXT: andi $4, $4, 255 4813; MMR6-NEXT: or $1, $zero, $4 4814; MMR6-NEXT: sllv $4, $4, $10 4815; MMR6-NEXT: sltu $5, $4, $7 4816; MMR6-NEXT: selnez $3, $4, $5 4817; MMR6-NEXT: seleqz $5, $7, $5 4818; MMR6-NEXT: or $3, $3, $5 4819; MMR6-NEXT: and $3, $3, $8 4820; MMR6-NEXT: and $4, $2, $9 4821; MMR6-NEXT: or $4, $4, $3 4822; MMR6-NEXT: sc $4, 0($6) 4823; MMR6-NEXT: beqc $4, $zero, $BB11_1 4824; MMR6-NEXT: # %bb.2: # %entry 4825; MMR6-NEXT: .insn 4826; MMR6-NEXT: # %bb.3: # %entry 4827; MMR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4828; MMR6-NEXT: # %bb.4: # %entry 4829; MMR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4830; MMR6-NEXT: sync 4831; MMR6-NEXT: addiu $sp, $sp, 8 4832; MMR6-NEXT: jrc $ra 4833; 4834; MIPS32-LABEL: test_umin_8: 4835; MIPS32: # %bb.0: # %entry 4836; MIPS32-NEXT: addiu $sp, $sp, -8 4837; MIPS32-NEXT: .cfi_def_cfa_offset 8 4838; MIPS32-NEXT: # kill: def $at killed $a1 4839; MIPS32-NEXT: sync 4840; MIPS32-NEXT: addiu $1, $zero, -4 4841; MIPS32-NEXT: and $6, $4, $1 4842; MIPS32-NEXT: andi $1, $4, 3 4843; MIPS32-NEXT: sll $10, $1, 3 4844; MIPS32-NEXT: ori $1, $zero, 255 4845; MIPS32-NEXT: sllv $8, $1, $10 4846; MIPS32-NEXT: nor $9, $zero, $8 4847; MIPS32-NEXT: sllv $7, $5, $10 4848; MIPS32-NEXT: $BB11_1: # %entry 4849; MIPS32-NEXT: # =>This Inner Loop Header: Depth=1 4850; MIPS32-NEXT: ll $2, 0($6) 4851; MIPS32-NEXT: srav $4, $2, $10 4852; MIPS32-NEXT: andi $4, $4, 255 4853; MIPS32-NEXT: or $1, $zero, $4 4854; MIPS32-NEXT: sllv $4, $4, $10 4855; MIPS32-NEXT: sltu $5, $4, $7 4856; MIPS32-NEXT: move $3, $4 4857; MIPS32-NEXT: movz $3, $7, $5 4858; MIPS32-NEXT: and $3, $3, $8 4859; MIPS32-NEXT: and $4, $2, $9 4860; MIPS32-NEXT: or $4, $4, $3 4861; MIPS32-NEXT: sc $4, 0($6) 4862; MIPS32-NEXT: beqz $4, $BB11_1 4863; MIPS32-NEXT: nop 4864; MIPS32-NEXT: # %bb.2: # %entry 4865; MIPS32-NEXT: .insn 4866; MIPS32-NEXT: # %bb.3: # %entry 4867; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4868; MIPS32-NEXT: # %bb.4: # %entry 4869; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4870; MIPS32-NEXT: sync 4871; MIPS32-NEXT: addiu $sp, $sp, 8 4872; MIPS32-NEXT: jr $ra 4873; MIPS32-NEXT: nop 4874; 4875; MIPSEL-LABEL: test_umin_8: 4876; MIPSEL: # %bb.0: # %entry 4877; MIPSEL-NEXT: addiu $sp, $sp, -8 4878; MIPSEL-NEXT: .cfi_def_cfa_offset 8 4879; MIPSEL-NEXT: # kill: def $at killed $a1 4880; MIPSEL-NEXT: sync 4881; MIPSEL-NEXT: addiu $1, $zero, -4 4882; MIPSEL-NEXT: and $6, $4, $1 4883; MIPSEL-NEXT: andi $1, $4, 3 4884; MIPSEL-NEXT: sll $10, $1, 3 4885; MIPSEL-NEXT: ori $1, $zero, 255 4886; MIPSEL-NEXT: sllv $8, $1, $10 4887; MIPSEL-NEXT: nor $9, $zero, $8 4888; MIPSEL-NEXT: sllv $7, $5, $10 4889; MIPSEL-NEXT: $BB11_1: # %entry 4890; MIPSEL-NEXT: # =>This Inner Loop Header: Depth=1 4891; MIPSEL-NEXT: ll $2, 0($6) 4892; MIPSEL-NEXT: srav $4, $2, $10 4893; MIPSEL-NEXT: andi $4, $4, 255 4894; MIPSEL-NEXT: or $1, $zero, $4 4895; MIPSEL-NEXT: sllv $4, $4, $10 4896; MIPSEL-NEXT: sltu $5, $4, $7 4897; MIPSEL-NEXT: move $3, $4 4898; MIPSEL-NEXT: movz $3, $7, $5 4899; MIPSEL-NEXT: and $3, $3, $8 4900; MIPSEL-NEXT: and $4, $2, $9 4901; MIPSEL-NEXT: or $4, $4, $3 4902; MIPSEL-NEXT: sc $4, 0($6) 4903; MIPSEL-NEXT: beqz $4, $BB11_1 4904; MIPSEL-NEXT: nop 4905; MIPSEL-NEXT: # %bb.2: # %entry 4906; MIPSEL-NEXT: .insn 4907; MIPSEL-NEXT: # %bb.3: # %entry 4908; MIPSEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4909; MIPSEL-NEXT: # %bb.4: # %entry 4910; MIPSEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4911; MIPSEL-NEXT: sync 4912; MIPSEL-NEXT: addiu $sp, $sp, 8 4913; MIPSEL-NEXT: jr $ra 4914; MIPSEL-NEXT: nop 4915; 4916; MIPSELR6-LABEL: test_umin_8: 4917; MIPSELR6: # %bb.0: # %entry 4918; MIPSELR6-NEXT: addiu $sp, $sp, -8 4919; MIPSELR6-NEXT: .cfi_def_cfa_offset 8 4920; MIPSELR6-NEXT: # kill: def $at killed $a1 4921; MIPSELR6-NEXT: sync 4922; MIPSELR6-NEXT: addiu $1, $zero, -4 4923; MIPSELR6-NEXT: and $6, $4, $1 4924; MIPSELR6-NEXT: andi $1, $4, 3 4925; MIPSELR6-NEXT: sll $10, $1, 3 4926; MIPSELR6-NEXT: ori $1, $zero, 255 4927; MIPSELR6-NEXT: sllv $8, $1, $10 4928; MIPSELR6-NEXT: nor $9, $zero, $8 4929; MIPSELR6-NEXT: sllv $7, $5, $10 4930; MIPSELR6-NEXT: $BB11_1: # %entry 4931; MIPSELR6-NEXT: # =>This Inner Loop Header: Depth=1 4932; MIPSELR6-NEXT: ll $2, 0($6) 4933; MIPSELR6-NEXT: srav $4, $2, $10 4934; MIPSELR6-NEXT: andi $4, $4, 255 4935; MIPSELR6-NEXT: or $1, $zero, $4 4936; MIPSELR6-NEXT: sllv $4, $4, $10 4937; MIPSELR6-NEXT: sltu $5, $4, $7 4938; MIPSELR6-NEXT: selnez $3, $4, $5 4939; MIPSELR6-NEXT: seleqz $5, $7, $5 4940; MIPSELR6-NEXT: or $3, $3, $5 4941; MIPSELR6-NEXT: and $3, $3, $8 4942; MIPSELR6-NEXT: and $4, $2, $9 4943; MIPSELR6-NEXT: or $4, $4, $3 4944; MIPSELR6-NEXT: sc $4, 0($6) 4945; MIPSELR6-NEXT: beqzc $4, $BB11_1 4946; MIPSELR6-NEXT: nop 4947; MIPSELR6-NEXT: # %bb.2: # %entry 4948; MIPSELR6-NEXT: .insn 4949; MIPSELR6-NEXT: # %bb.3: # %entry 4950; MIPSELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4951; MIPSELR6-NEXT: # %bb.4: # %entry 4952; MIPSELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4953; MIPSELR6-NEXT: sync 4954; MIPSELR6-NEXT: addiu $sp, $sp, 8 4955; MIPSELR6-NEXT: jrc $ra 4956; 4957; MMEL-LABEL: test_umin_8: 4958; MMEL: # %bb.0: # %entry 4959; MMEL-NEXT: addiu $sp, $sp, -8 4960; MMEL-NEXT: .cfi_def_cfa_offset 8 4961; MMEL-NEXT: # kill: def $at killed $a1 4962; MMEL-NEXT: sync 4963; MMEL-NEXT: addiu $1, $zero, -4 4964; MMEL-NEXT: and $6, $4, $1 4965; MMEL-NEXT: andi $1, $4, 3 4966; MMEL-NEXT: sll $10, $1, 3 4967; MMEL-NEXT: ori $1, $zero, 255 4968; MMEL-NEXT: sllv $8, $1, $10 4969; MMEL-NEXT: nor $9, $zero, $8 4970; MMEL-NEXT: sllv $7, $5, $10 4971; MMEL-NEXT: $BB11_1: # %entry 4972; MMEL-NEXT: # =>This Inner Loop Header: Depth=1 4973; MMEL-NEXT: ll $2, 0($6) 4974; MMEL-NEXT: srav $4, $2, $10 4975; MMEL-NEXT: andi $4, $4, 255 4976; MMEL-NEXT: or $1, $zero, $4 4977; MMEL-NEXT: sllv $4, $4, $10 4978; MMEL-NEXT: sltu $5, $4, $7 4979; MMEL-NEXT: or $3, $4, $zero 4980; MMEL-NEXT: movz $3, $7, $5 4981; MMEL-NEXT: and $3, $3, $8 4982; MMEL-NEXT: and $4, $2, $9 4983; MMEL-NEXT: or $4, $4, $3 4984; MMEL-NEXT: sc $4, 0($6) 4985; MMEL-NEXT: beqzc $4, $BB11_1 4986; MMEL-NEXT: # %bb.2: # %entry 4987; MMEL-NEXT: .insn 4988; MMEL-NEXT: # %bb.3: # %entry 4989; MMEL-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 4990; MMEL-NEXT: # %bb.4: # %entry 4991; MMEL-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 4992; MMEL-NEXT: sync 4993; MMEL-NEXT: addiusp 8 4994; MMEL-NEXT: jrc $ra 4995; 4996; MMELR6-LABEL: test_umin_8: 4997; MMELR6: # %bb.0: # %entry 4998; MMELR6-NEXT: addiu $sp, $sp, -8 4999; MMELR6-NEXT: .cfi_def_cfa_offset 8 5000; MMELR6-NEXT: # kill: def $at killed $a1 5001; MMELR6-NEXT: sync 5002; MMELR6-NEXT: addiu $1, $zero, -4 5003; MMELR6-NEXT: and $6, $4, $1 5004; MMELR6-NEXT: andi $1, $4, 3 5005; MMELR6-NEXT: sll $10, $1, 3 5006; MMELR6-NEXT: ori $1, $zero, 255 5007; MMELR6-NEXT: sllv $8, $1, $10 5008; MMELR6-NEXT: nor $9, $zero, $8 5009; MMELR6-NEXT: sllv $7, $5, $10 5010; MMELR6-NEXT: $BB11_1: # %entry 5011; MMELR6-NEXT: # =>This Inner Loop Header: Depth=1 5012; MMELR6-NEXT: ll $2, 0($6) 5013; MMELR6-NEXT: srav $4, $2, $10 5014; MMELR6-NEXT: andi $4, $4, 255 5015; MMELR6-NEXT: or $1, $zero, $4 5016; MMELR6-NEXT: sllv $4, $4, $10 5017; MMELR6-NEXT: sltu $5, $4, $7 5018; MMELR6-NEXT: selnez $3, $4, $5 5019; MMELR6-NEXT: seleqz $5, $7, $5 5020; MMELR6-NEXT: or $3, $3, $5 5021; MMELR6-NEXT: and $3, $3, $8 5022; MMELR6-NEXT: and $4, $2, $9 5023; MMELR6-NEXT: or $4, $4, $3 5024; MMELR6-NEXT: sc $4, 0($6) 5025; MMELR6-NEXT: beqc $4, $zero, $BB11_1 5026; MMELR6-NEXT: # %bb.2: # %entry 5027; MMELR6-NEXT: .insn 5028; MMELR6-NEXT: # %bb.3: # %entry 5029; MMELR6-NEXT: sw $1, 4($sp) # 4-byte Folded Spill 5030; MMELR6-NEXT: # %bb.4: # %entry 5031; MMELR6-NEXT: lw $2, 4($sp) # 4-byte Folded Reload 5032; MMELR6-NEXT: sync 5033; MMELR6-NEXT: addiu $sp, $sp, 8 5034; MMELR6-NEXT: jrc $ra 5035; 5036; MIPS64-LABEL: test_umin_8: 5037; MIPS64: # %bb.0: # %entry 5038; MIPS64-NEXT: daddiu $sp, $sp, -16 5039; MIPS64-NEXT: .cfi_def_cfa_offset 16 5040; MIPS64-NEXT: move $1, $5 5041; MIPS64-NEXT: sync 5042; MIPS64-NEXT: daddiu $2, $zero, -4 5043; MIPS64-NEXT: and $6, $4, $2 5044; MIPS64-NEXT: andi $2, $4, 3 5045; MIPS64-NEXT: xori $2, $2, 3 5046; MIPS64-NEXT: sll $10, $2, 3 5047; MIPS64-NEXT: ori $2, $zero, 255 5048; MIPS64-NEXT: sllv $8, $2, $10 5049; MIPS64-NEXT: nor $9, $zero, $8 5050; MIPS64-NEXT: sllv $7, $1, $10 5051; MIPS64-NEXT: .LBB11_1: # %entry 5052; MIPS64-NEXT: # =>This Inner Loop Header: Depth=1 5053; MIPS64-NEXT: ll $2, 0($6) 5054; MIPS64-NEXT: srav $4, $2, $10 5055; MIPS64-NEXT: andi $4, $4, 255 5056; MIPS64-NEXT: or $1, $zero, $4 5057; MIPS64-NEXT: sllv $4, $4, $10 5058; MIPS64-NEXT: sltu $5, $4, $7 5059; MIPS64-NEXT: move $3, $4 5060; MIPS64-NEXT: movz $3, $7, $5 5061; MIPS64-NEXT: and $3, $3, $8 5062; MIPS64-NEXT: and $4, $2, $9 5063; MIPS64-NEXT: or $4, $4, $3 5064; MIPS64-NEXT: sc $4, 0($6) 5065; MIPS64-NEXT: beqz $4, .LBB11_1 5066; MIPS64-NEXT: nop 5067; MIPS64-NEXT: # %bb.2: # %entry 5068; MIPS64-NEXT: .insn 5069; MIPS64-NEXT: # %bb.3: # %entry 5070; MIPS64-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 5071; MIPS64-NEXT: # %bb.4: # %entry 5072; MIPS64-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 5073; MIPS64-NEXT: sync 5074; MIPS64-NEXT: daddiu $sp, $sp, 16 5075; MIPS64-NEXT: jr $ra 5076; MIPS64-NEXT: nop 5077; 5078; MIPS64R6-LABEL: test_umin_8: 5079; MIPS64R6: # %bb.0: # %entry 5080; MIPS64R6-NEXT: daddiu $sp, $sp, -16 5081; MIPS64R6-NEXT: .cfi_def_cfa_offset 16 5082; MIPS64R6-NEXT: move $1, $5 5083; MIPS64R6-NEXT: sync 5084; MIPS64R6-NEXT: daddiu $2, $zero, -4 5085; MIPS64R6-NEXT: and $6, $4, $2 5086; MIPS64R6-NEXT: andi $2, $4, 3 5087; MIPS64R6-NEXT: xori $2, $2, 3 5088; MIPS64R6-NEXT: sll $10, $2, 3 5089; MIPS64R6-NEXT: ori $2, $zero, 255 5090; MIPS64R6-NEXT: sllv $8, $2, $10 5091; MIPS64R6-NEXT: nor $9, $zero, $8 5092; MIPS64R6-NEXT: sllv $7, $1, $10 5093; MIPS64R6-NEXT: .LBB11_1: # %entry 5094; MIPS64R6-NEXT: # =>This Inner Loop Header: Depth=1 5095; MIPS64R6-NEXT: ll $2, 0($6) 5096; MIPS64R6-NEXT: srav $4, $2, $10 5097; MIPS64R6-NEXT: andi $4, $4, 255 5098; MIPS64R6-NEXT: or $1, $zero, $4 5099; MIPS64R6-NEXT: sllv $4, $4, $10 5100; MIPS64R6-NEXT: sltu $5, $4, $7 5101; MIPS64R6-NEXT: selnez $3, $4, $5 5102; MIPS64R6-NEXT: seleqz $5, $7, $5 5103; MIPS64R6-NEXT: or $3, $3, $5 5104; MIPS64R6-NEXT: and $3, $3, $8 5105; MIPS64R6-NEXT: and $4, $2, $9 5106; MIPS64R6-NEXT: or $4, $4, $3 5107; MIPS64R6-NEXT: sc $4, 0($6) 5108; MIPS64R6-NEXT: beqzc $4, .LBB11_1 5109; MIPS64R6-NEXT: nop 5110; MIPS64R6-NEXT: # %bb.2: # %entry 5111; MIPS64R6-NEXT: .insn 5112; MIPS64R6-NEXT: # %bb.3: # %entry 5113; MIPS64R6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 5114; MIPS64R6-NEXT: # %bb.4: # %entry 5115; MIPS64R6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 5116; MIPS64R6-NEXT: sync 5117; MIPS64R6-NEXT: daddiu $sp, $sp, 16 5118; MIPS64R6-NEXT: jrc $ra 5119; 5120; MIPS64EL-LABEL: test_umin_8: 5121; MIPS64EL: # %bb.0: # %entry 5122; MIPS64EL-NEXT: daddiu $sp, $sp, -16 5123; MIPS64EL-NEXT: .cfi_def_cfa_offset 16 5124; MIPS64EL-NEXT: move $1, $5 5125; MIPS64EL-NEXT: sync 5126; MIPS64EL-NEXT: daddiu $2, $zero, -4 5127; MIPS64EL-NEXT: and $6, $4, $2 5128; MIPS64EL-NEXT: andi $2, $4, 3 5129; MIPS64EL-NEXT: sll $10, $2, 3 5130; MIPS64EL-NEXT: ori $2, $zero, 255 5131; MIPS64EL-NEXT: sllv $8, $2, $10 5132; MIPS64EL-NEXT: nor $9, $zero, $8 5133; MIPS64EL-NEXT: sllv $7, $1, $10 5134; MIPS64EL-NEXT: .LBB11_1: # %entry 5135; MIPS64EL-NEXT: # =>This Inner Loop Header: Depth=1 5136; MIPS64EL-NEXT: ll $2, 0($6) 5137; MIPS64EL-NEXT: srav $4, $2, $10 5138; MIPS64EL-NEXT: andi $4, $4, 255 5139; MIPS64EL-NEXT: or $1, $zero, $4 5140; MIPS64EL-NEXT: sllv $4, $4, $10 5141; MIPS64EL-NEXT: sltu $5, $4, $7 5142; MIPS64EL-NEXT: move $3, $4 5143; MIPS64EL-NEXT: movz $3, $7, $5 5144; MIPS64EL-NEXT: and $3, $3, $8 5145; MIPS64EL-NEXT: and $4, $2, $9 5146; MIPS64EL-NEXT: or $4, $4, $3 5147; MIPS64EL-NEXT: sc $4, 0($6) 5148; MIPS64EL-NEXT: beqz $4, .LBB11_1 5149; MIPS64EL-NEXT: nop 5150; MIPS64EL-NEXT: # %bb.2: # %entry 5151; MIPS64EL-NEXT: .insn 5152; MIPS64EL-NEXT: # %bb.3: # %entry 5153; MIPS64EL-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 5154; MIPS64EL-NEXT: # %bb.4: # %entry 5155; MIPS64EL-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 5156; MIPS64EL-NEXT: sync 5157; MIPS64EL-NEXT: daddiu $sp, $sp, 16 5158; MIPS64EL-NEXT: jr $ra 5159; MIPS64EL-NEXT: nop 5160; 5161; MIPS64ELR6-LABEL: test_umin_8: 5162; MIPS64ELR6: # %bb.0: # %entry 5163; MIPS64ELR6-NEXT: daddiu $sp, $sp, -16 5164; MIPS64ELR6-NEXT: .cfi_def_cfa_offset 16 5165; MIPS64ELR6-NEXT: move $1, $5 5166; MIPS64ELR6-NEXT: sync 5167; MIPS64ELR6-NEXT: daddiu $2, $zero, -4 5168; MIPS64ELR6-NEXT: and $6, $4, $2 5169; MIPS64ELR6-NEXT: andi $2, $4, 3 5170; MIPS64ELR6-NEXT: sll $10, $2, 3 5171; MIPS64ELR6-NEXT: ori $2, $zero, 255 5172; MIPS64ELR6-NEXT: sllv $8, $2, $10 5173; MIPS64ELR6-NEXT: nor $9, $zero, $8 5174; MIPS64ELR6-NEXT: sllv $7, $1, $10 5175; MIPS64ELR6-NEXT: .LBB11_1: # %entry 5176; MIPS64ELR6-NEXT: # =>This Inner Loop Header: Depth=1 5177; MIPS64ELR6-NEXT: ll $2, 0($6) 5178; MIPS64ELR6-NEXT: srav $4, $2, $10 5179; MIPS64ELR6-NEXT: andi $4, $4, 255 5180; MIPS64ELR6-NEXT: or $1, $zero, $4 5181; MIPS64ELR6-NEXT: sllv $4, $4, $10 5182; MIPS64ELR6-NEXT: sltu $5, $4, $7 5183; MIPS64ELR6-NEXT: selnez $3, $4, $5 5184; MIPS64ELR6-NEXT: seleqz $5, $7, $5 5185; MIPS64ELR6-NEXT: or $3, $3, $5 5186; MIPS64ELR6-NEXT: and $3, $3, $8 5187; MIPS64ELR6-NEXT: and $4, $2, $9 5188; MIPS64ELR6-NEXT: or $4, $4, $3 5189; MIPS64ELR6-NEXT: sc $4, 0($6) 5190; MIPS64ELR6-NEXT: beqzc $4, .LBB11_1 5191; MIPS64ELR6-NEXT: nop 5192; MIPS64ELR6-NEXT: # %bb.2: # %entry 5193; MIPS64ELR6-NEXT: .insn 5194; MIPS64ELR6-NEXT: # %bb.3: # %entry 5195; MIPS64ELR6-NEXT: sw $1, 12($sp) # 4-byte Folded Spill 5196; MIPS64ELR6-NEXT: # %bb.4: # %entry 5197; MIPS64ELR6-NEXT: lw $2, 12($sp) # 4-byte Folded Reload 5198; MIPS64ELR6-NEXT: sync 5199; MIPS64ELR6-NEXT: daddiu $sp, $sp, 16 5200; MIPS64ELR6-NEXT: jrc $ra 5201entry: 5202 %0 = atomicrmw umin ptr %ptr, i8 %val seq_cst 5203 ret i8 %0 5204} 5205