1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -code-model=small -verify-machineinstrs < %s \ 3; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-SMALL 4; RUN: llc -mtriple=riscv32 -code-model=medium -verify-machineinstrs < %s \ 5; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-MEDIUM 6; RUN: llc -mtriple=riscv32 -relocation-model=pic -verify-machineinstrs < %s \ 7; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-PIC 8; RUN: llc -mtriple=riscv64 -code-model=small -verify-machineinstrs < %s \ 9; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-SMALL 10; RUN: llc -mtriple=riscv64 -code-model=medium -verify-machineinstrs < %s \ 11; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-MEDIUM 12; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs < %s \ 13; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-PIC 14; RUN: llc -mtriple=riscv32 -code-model=small -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 15; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-SMALL-7-ENTRIES 16; RUN: llc -mtriple=riscv32 -code-model=medium -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 17; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-MEDIUM-7-ENTRIES 18; RUN: llc -mtriple=riscv32 -relocation-model=pic -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 19; RUN: | FileCheck %s -check-prefixes=CHECK,RV32I-PIC-7-ENTRIES 20; RUN: llc -mtriple=riscv64 -code-model=small -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 21; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-SMALL-7-ENTRIES 22; RUN: llc -mtriple=riscv64 -code-model=medium -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 23; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-MEDIUM-7-ENTRIES 24; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs -riscv-min-jump-table-entries=7 < %s \ 25; RUN: | FileCheck %s -check-prefixes=CHECK,RV64I-PIC-7-ENTRIES 26 27define void @below_threshold(i32 signext %in, ptr %out) nounwind { 28; CHECK-LABEL: below_threshold: 29; CHECK: # %bb.0: # %entry 30; CHECK-NEXT: li a2, 2 31; CHECK-NEXT: blt a2, a0, .LBB0_4 32; CHECK-NEXT: # %bb.1: # %entry 33; CHECK-NEXT: li a2, 1 34; CHECK-NEXT: beq a0, a2, .LBB0_7 35; CHECK-NEXT: # %bb.2: # %entry 36; CHECK-NEXT: li a2, 2 37; CHECK-NEXT: bne a0, a2, .LBB0_10 38; CHECK-NEXT: # %bb.3: # %bb2 39; CHECK-NEXT: li a0, 3 40; CHECK-NEXT: j .LBB0_9 41; CHECK-NEXT: .LBB0_4: # %entry 42; CHECK-NEXT: li a2, 3 43; CHECK-NEXT: beq a0, a2, .LBB0_8 44; CHECK-NEXT: # %bb.5: # %entry 45; CHECK-NEXT: li a2, 4 46; CHECK-NEXT: bne a0, a2, .LBB0_10 47; CHECK-NEXT: # %bb.6: # %bb4 48; CHECK-NEXT: li a0, 1 49; CHECK-NEXT: j .LBB0_9 50; CHECK-NEXT: .LBB0_7: # %bb1 51; CHECK-NEXT: li a0, 4 52; CHECK-NEXT: j .LBB0_9 53; CHECK-NEXT: .LBB0_8: # %bb3 54; CHECK-NEXT: li a0, 2 55; CHECK-NEXT: .LBB0_9: # %exit 56; CHECK-NEXT: sw a0, 0(a1) 57; CHECK-NEXT: .LBB0_10: # %exit 58; CHECK-NEXT: ret 59entry: 60 switch i32 %in, label %exit [ 61 i32 1, label %bb1 62 i32 2, label %bb2 63 i32 3, label %bb3 64 i32 4, label %bb4 65 ] 66bb1: 67 store i32 4, ptr %out 68 br label %exit 69bb2: 70 store i32 3, ptr %out 71 br label %exit 72bb3: 73 store i32 2, ptr %out 74 br label %exit 75bb4: 76 store i32 1, ptr %out 77 br label %exit 78exit: 79 ret void 80} 81 82define void @above_threshold(i32 signext %in, ptr %out) nounwind { 83; RV32I-SMALL-LABEL: above_threshold: 84; RV32I-SMALL: # %bb.0: # %entry 85; RV32I-SMALL-NEXT: addi a0, a0, -1 86; RV32I-SMALL-NEXT: li a2, 5 87; RV32I-SMALL-NEXT: bltu a2, a0, .LBB1_9 88; RV32I-SMALL-NEXT: # %bb.1: # %entry 89; RV32I-SMALL-NEXT: slli a0, a0, 2 90; RV32I-SMALL-NEXT: lui a2, %hi(.LJTI1_0) 91; RV32I-SMALL-NEXT: addi a2, a2, %lo(.LJTI1_0) 92; RV32I-SMALL-NEXT: add a0, a0, a2 93; RV32I-SMALL-NEXT: lw a0, 0(a0) 94; RV32I-SMALL-NEXT: jr a0 95; RV32I-SMALL-NEXT: .LBB1_2: # %bb1 96; RV32I-SMALL-NEXT: li a0, 4 97; RV32I-SMALL-NEXT: j .LBB1_8 98; RV32I-SMALL-NEXT: .LBB1_3: # %bb5 99; RV32I-SMALL-NEXT: li a0, 100 100; RV32I-SMALL-NEXT: j .LBB1_8 101; RV32I-SMALL-NEXT: .LBB1_4: # %bb3 102; RV32I-SMALL-NEXT: li a0, 2 103; RV32I-SMALL-NEXT: j .LBB1_8 104; RV32I-SMALL-NEXT: .LBB1_5: # %bb4 105; RV32I-SMALL-NEXT: li a0, 1 106; RV32I-SMALL-NEXT: j .LBB1_8 107; RV32I-SMALL-NEXT: .LBB1_6: # %bb2 108; RV32I-SMALL-NEXT: li a0, 3 109; RV32I-SMALL-NEXT: j .LBB1_8 110; RV32I-SMALL-NEXT: .LBB1_7: # %bb6 111; RV32I-SMALL-NEXT: li a0, 200 112; RV32I-SMALL-NEXT: .LBB1_8: # %exit 113; RV32I-SMALL-NEXT: sw a0, 0(a1) 114; RV32I-SMALL-NEXT: .LBB1_9: # %exit 115; RV32I-SMALL-NEXT: ret 116; 117; RV32I-MEDIUM-LABEL: above_threshold: 118; RV32I-MEDIUM: # %bb.0: # %entry 119; RV32I-MEDIUM-NEXT: addi a0, a0, -1 120; RV32I-MEDIUM-NEXT: li a2, 5 121; RV32I-MEDIUM-NEXT: bltu a2, a0, .LBB1_9 122; RV32I-MEDIUM-NEXT: # %bb.1: # %entry 123; RV32I-MEDIUM-NEXT: slli a0, a0, 2 124; RV32I-MEDIUM-NEXT: .Lpcrel_hi0: 125; RV32I-MEDIUM-NEXT: auipc a2, %pcrel_hi(.LJTI1_0) 126; RV32I-MEDIUM-NEXT: addi a2, a2, %pcrel_lo(.Lpcrel_hi0) 127; RV32I-MEDIUM-NEXT: add a0, a0, a2 128; RV32I-MEDIUM-NEXT: lw a0, 0(a0) 129; RV32I-MEDIUM-NEXT: jr a0 130; RV32I-MEDIUM-NEXT: .LBB1_2: # %bb1 131; RV32I-MEDIUM-NEXT: li a0, 4 132; RV32I-MEDIUM-NEXT: j .LBB1_8 133; RV32I-MEDIUM-NEXT: .LBB1_3: # %bb5 134; RV32I-MEDIUM-NEXT: li a0, 100 135; RV32I-MEDIUM-NEXT: j .LBB1_8 136; RV32I-MEDIUM-NEXT: .LBB1_4: # %bb3 137; RV32I-MEDIUM-NEXT: li a0, 2 138; RV32I-MEDIUM-NEXT: j .LBB1_8 139; RV32I-MEDIUM-NEXT: .LBB1_5: # %bb4 140; RV32I-MEDIUM-NEXT: li a0, 1 141; RV32I-MEDIUM-NEXT: j .LBB1_8 142; RV32I-MEDIUM-NEXT: .LBB1_6: # %bb2 143; RV32I-MEDIUM-NEXT: li a0, 3 144; RV32I-MEDIUM-NEXT: j .LBB1_8 145; RV32I-MEDIUM-NEXT: .LBB1_7: # %bb6 146; RV32I-MEDIUM-NEXT: li a0, 200 147; RV32I-MEDIUM-NEXT: .LBB1_8: # %exit 148; RV32I-MEDIUM-NEXT: sw a0, 0(a1) 149; RV32I-MEDIUM-NEXT: .LBB1_9: # %exit 150; RV32I-MEDIUM-NEXT: ret 151; 152; RV32I-PIC-LABEL: above_threshold: 153; RV32I-PIC: # %bb.0: # %entry 154; RV32I-PIC-NEXT: addi a0, a0, -1 155; RV32I-PIC-NEXT: li a2, 5 156; RV32I-PIC-NEXT: bltu a2, a0, .LBB1_9 157; RV32I-PIC-NEXT: # %bb.1: # %entry 158; RV32I-PIC-NEXT: slli a0, a0, 2 159; RV32I-PIC-NEXT: .Lpcrel_hi0: 160; RV32I-PIC-NEXT: auipc a2, %pcrel_hi(.LJTI1_0) 161; RV32I-PIC-NEXT: addi a2, a2, %pcrel_lo(.Lpcrel_hi0) 162; RV32I-PIC-NEXT: add a0, a0, a2 163; RV32I-PIC-NEXT: lw a0, 0(a0) 164; RV32I-PIC-NEXT: add a0, a0, a2 165; RV32I-PIC-NEXT: jr a0 166; RV32I-PIC-NEXT: .LBB1_2: # %bb1 167; RV32I-PIC-NEXT: li a0, 4 168; RV32I-PIC-NEXT: j .LBB1_8 169; RV32I-PIC-NEXT: .LBB1_3: # %bb5 170; RV32I-PIC-NEXT: li a0, 100 171; RV32I-PIC-NEXT: j .LBB1_8 172; RV32I-PIC-NEXT: .LBB1_4: # %bb3 173; RV32I-PIC-NEXT: li a0, 2 174; RV32I-PIC-NEXT: j .LBB1_8 175; RV32I-PIC-NEXT: .LBB1_5: # %bb4 176; RV32I-PIC-NEXT: li a0, 1 177; RV32I-PIC-NEXT: j .LBB1_8 178; RV32I-PIC-NEXT: .LBB1_6: # %bb2 179; RV32I-PIC-NEXT: li a0, 3 180; RV32I-PIC-NEXT: j .LBB1_8 181; RV32I-PIC-NEXT: .LBB1_7: # %bb6 182; RV32I-PIC-NEXT: li a0, 200 183; RV32I-PIC-NEXT: .LBB1_8: # %exit 184; RV32I-PIC-NEXT: sw a0, 0(a1) 185; RV32I-PIC-NEXT: .LBB1_9: # %exit 186; RV32I-PIC-NEXT: ret 187; 188; RV64I-SMALL-LABEL: above_threshold: 189; RV64I-SMALL: # %bb.0: # %entry 190; RV64I-SMALL-NEXT: addi a0, a0, -1 191; RV64I-SMALL-NEXT: li a2, 5 192; RV64I-SMALL-NEXT: bltu a2, a0, .LBB1_9 193; RV64I-SMALL-NEXT: # %bb.1: # %entry 194; RV64I-SMALL-NEXT: slli a0, a0, 2 195; RV64I-SMALL-NEXT: lui a2, %hi(.LJTI1_0) 196; RV64I-SMALL-NEXT: addi a2, a2, %lo(.LJTI1_0) 197; RV64I-SMALL-NEXT: add a0, a0, a2 198; RV64I-SMALL-NEXT: lw a0, 0(a0) 199; RV64I-SMALL-NEXT: jr a0 200; RV64I-SMALL-NEXT: .LBB1_2: # %bb1 201; RV64I-SMALL-NEXT: li a0, 4 202; RV64I-SMALL-NEXT: j .LBB1_8 203; RV64I-SMALL-NEXT: .LBB1_3: # %bb5 204; RV64I-SMALL-NEXT: li a0, 100 205; RV64I-SMALL-NEXT: j .LBB1_8 206; RV64I-SMALL-NEXT: .LBB1_4: # %bb3 207; RV64I-SMALL-NEXT: li a0, 2 208; RV64I-SMALL-NEXT: j .LBB1_8 209; RV64I-SMALL-NEXT: .LBB1_5: # %bb4 210; RV64I-SMALL-NEXT: li a0, 1 211; RV64I-SMALL-NEXT: j .LBB1_8 212; RV64I-SMALL-NEXT: .LBB1_6: # %bb2 213; RV64I-SMALL-NEXT: li a0, 3 214; RV64I-SMALL-NEXT: j .LBB1_8 215; RV64I-SMALL-NEXT: .LBB1_7: # %bb6 216; RV64I-SMALL-NEXT: li a0, 200 217; RV64I-SMALL-NEXT: .LBB1_8: # %exit 218; RV64I-SMALL-NEXT: sw a0, 0(a1) 219; RV64I-SMALL-NEXT: .LBB1_9: # %exit 220; RV64I-SMALL-NEXT: ret 221; 222; RV64I-MEDIUM-LABEL: above_threshold: 223; RV64I-MEDIUM: # %bb.0: # %entry 224; RV64I-MEDIUM-NEXT: addi a0, a0, -1 225; RV64I-MEDIUM-NEXT: li a2, 5 226; RV64I-MEDIUM-NEXT: bltu a2, a0, .LBB1_9 227; RV64I-MEDIUM-NEXT: # %bb.1: # %entry 228; RV64I-MEDIUM-NEXT: slli a0, a0, 3 229; RV64I-MEDIUM-NEXT: .Lpcrel_hi0: 230; RV64I-MEDIUM-NEXT: auipc a2, %pcrel_hi(.LJTI1_0) 231; RV64I-MEDIUM-NEXT: addi a2, a2, %pcrel_lo(.Lpcrel_hi0) 232; RV64I-MEDIUM-NEXT: add a0, a0, a2 233; RV64I-MEDIUM-NEXT: ld a0, 0(a0) 234; RV64I-MEDIUM-NEXT: jr a0 235; RV64I-MEDIUM-NEXT: .LBB1_2: # %bb1 236; RV64I-MEDIUM-NEXT: li a0, 4 237; RV64I-MEDIUM-NEXT: j .LBB1_8 238; RV64I-MEDIUM-NEXT: .LBB1_3: # %bb5 239; RV64I-MEDIUM-NEXT: li a0, 100 240; RV64I-MEDIUM-NEXT: j .LBB1_8 241; RV64I-MEDIUM-NEXT: .LBB1_4: # %bb3 242; RV64I-MEDIUM-NEXT: li a0, 2 243; RV64I-MEDIUM-NEXT: j .LBB1_8 244; RV64I-MEDIUM-NEXT: .LBB1_5: # %bb4 245; RV64I-MEDIUM-NEXT: li a0, 1 246; RV64I-MEDIUM-NEXT: j .LBB1_8 247; RV64I-MEDIUM-NEXT: .LBB1_6: # %bb2 248; RV64I-MEDIUM-NEXT: li a0, 3 249; RV64I-MEDIUM-NEXT: j .LBB1_8 250; RV64I-MEDIUM-NEXT: .LBB1_7: # %bb6 251; RV64I-MEDIUM-NEXT: li a0, 200 252; RV64I-MEDIUM-NEXT: .LBB1_8: # %exit 253; RV64I-MEDIUM-NEXT: sw a0, 0(a1) 254; RV64I-MEDIUM-NEXT: .LBB1_9: # %exit 255; RV64I-MEDIUM-NEXT: ret 256; 257; RV64I-PIC-LABEL: above_threshold: 258; RV64I-PIC: # %bb.0: # %entry 259; RV64I-PIC-NEXT: addi a0, a0, -1 260; RV64I-PIC-NEXT: li a2, 5 261; RV64I-PIC-NEXT: bltu a2, a0, .LBB1_9 262; RV64I-PIC-NEXT: # %bb.1: # %entry 263; RV64I-PIC-NEXT: slli a0, a0, 2 264; RV64I-PIC-NEXT: .Lpcrel_hi0: 265; RV64I-PIC-NEXT: auipc a2, %pcrel_hi(.LJTI1_0) 266; RV64I-PIC-NEXT: addi a2, a2, %pcrel_lo(.Lpcrel_hi0) 267; RV64I-PIC-NEXT: add a0, a0, a2 268; RV64I-PIC-NEXT: lw a0, 0(a0) 269; RV64I-PIC-NEXT: add a0, a0, a2 270; RV64I-PIC-NEXT: jr a0 271; RV64I-PIC-NEXT: .LBB1_2: # %bb1 272; RV64I-PIC-NEXT: li a0, 4 273; RV64I-PIC-NEXT: j .LBB1_8 274; RV64I-PIC-NEXT: .LBB1_3: # %bb5 275; RV64I-PIC-NEXT: li a0, 100 276; RV64I-PIC-NEXT: j .LBB1_8 277; RV64I-PIC-NEXT: .LBB1_4: # %bb3 278; RV64I-PIC-NEXT: li a0, 2 279; RV64I-PIC-NEXT: j .LBB1_8 280; RV64I-PIC-NEXT: .LBB1_5: # %bb4 281; RV64I-PIC-NEXT: li a0, 1 282; RV64I-PIC-NEXT: j .LBB1_8 283; RV64I-PIC-NEXT: .LBB1_6: # %bb2 284; RV64I-PIC-NEXT: li a0, 3 285; RV64I-PIC-NEXT: j .LBB1_8 286; RV64I-PIC-NEXT: .LBB1_7: # %bb6 287; RV64I-PIC-NEXT: li a0, 200 288; RV64I-PIC-NEXT: .LBB1_8: # %exit 289; RV64I-PIC-NEXT: sw a0, 0(a1) 290; RV64I-PIC-NEXT: .LBB1_9: # %exit 291; RV64I-PIC-NEXT: ret 292; 293; RV32I-SMALL-7-ENTRIES-LABEL: above_threshold: 294; RV32I-SMALL-7-ENTRIES: # %bb.0: # %entry 295; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 3 296; RV32I-SMALL-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 297; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.1: # %entry 298; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 1 299; RV32I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 300; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.2: # %entry 301; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 2 302; RV32I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 303; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.3: # %entry 304; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 3 305; RV32I-SMALL-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 306; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.4: # %bb3 307; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 2 308; RV32I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 309; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_5: # %entry 310; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 4 311; RV32I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 312; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.6: # %entry 313; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 5 314; RV32I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 315; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.7: # %entry 316; RV32I-SMALL-7-ENTRIES-NEXT: li a2, 6 317; RV32I-SMALL-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 318; RV32I-SMALL-7-ENTRIES-NEXT: # %bb.8: # %bb6 319; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 200 320; RV32I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 321; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_9: # %bb1 322; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 4 323; RV32I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 324; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_10: # %bb4 325; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 1 326; RV32I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 327; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_11: # %bb2 328; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 3 329; RV32I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 330; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_12: # %bb5 331; RV32I-SMALL-7-ENTRIES-NEXT: li a0, 100 332; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_13: # %exit 333; RV32I-SMALL-7-ENTRIES-NEXT: sw a0, 0(a1) 334; RV32I-SMALL-7-ENTRIES-NEXT: .LBB1_14: # %exit 335; RV32I-SMALL-7-ENTRIES-NEXT: ret 336; 337; RV32I-MEDIUM-7-ENTRIES-LABEL: above_threshold: 338; RV32I-MEDIUM-7-ENTRIES: # %bb.0: # %entry 339; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 3 340; RV32I-MEDIUM-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 341; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.1: # %entry 342; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 1 343; RV32I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 344; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.2: # %entry 345; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 2 346; RV32I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 347; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.3: # %entry 348; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 3 349; RV32I-MEDIUM-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 350; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.4: # %bb3 351; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 2 352; RV32I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 353; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_5: # %entry 354; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 4 355; RV32I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 356; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.6: # %entry 357; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 5 358; RV32I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 359; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.7: # %entry 360; RV32I-MEDIUM-7-ENTRIES-NEXT: li a2, 6 361; RV32I-MEDIUM-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 362; RV32I-MEDIUM-7-ENTRIES-NEXT: # %bb.8: # %bb6 363; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 200 364; RV32I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 365; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_9: # %bb1 366; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 4 367; RV32I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 368; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_10: # %bb4 369; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 1 370; RV32I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 371; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_11: # %bb2 372; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 3 373; RV32I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 374; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_12: # %bb5 375; RV32I-MEDIUM-7-ENTRIES-NEXT: li a0, 100 376; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_13: # %exit 377; RV32I-MEDIUM-7-ENTRIES-NEXT: sw a0, 0(a1) 378; RV32I-MEDIUM-7-ENTRIES-NEXT: .LBB1_14: # %exit 379; RV32I-MEDIUM-7-ENTRIES-NEXT: ret 380; 381; RV32I-PIC-7-ENTRIES-LABEL: above_threshold: 382; RV32I-PIC-7-ENTRIES: # %bb.0: # %entry 383; RV32I-PIC-7-ENTRIES-NEXT: li a2, 3 384; RV32I-PIC-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 385; RV32I-PIC-7-ENTRIES-NEXT: # %bb.1: # %entry 386; RV32I-PIC-7-ENTRIES-NEXT: li a2, 1 387; RV32I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 388; RV32I-PIC-7-ENTRIES-NEXT: # %bb.2: # %entry 389; RV32I-PIC-7-ENTRIES-NEXT: li a2, 2 390; RV32I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 391; RV32I-PIC-7-ENTRIES-NEXT: # %bb.3: # %entry 392; RV32I-PIC-7-ENTRIES-NEXT: li a2, 3 393; RV32I-PIC-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 394; RV32I-PIC-7-ENTRIES-NEXT: # %bb.4: # %bb3 395; RV32I-PIC-7-ENTRIES-NEXT: li a0, 2 396; RV32I-PIC-7-ENTRIES-NEXT: j .LBB1_13 397; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_5: # %entry 398; RV32I-PIC-7-ENTRIES-NEXT: li a2, 4 399; RV32I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 400; RV32I-PIC-7-ENTRIES-NEXT: # %bb.6: # %entry 401; RV32I-PIC-7-ENTRIES-NEXT: li a2, 5 402; RV32I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 403; RV32I-PIC-7-ENTRIES-NEXT: # %bb.7: # %entry 404; RV32I-PIC-7-ENTRIES-NEXT: li a2, 6 405; RV32I-PIC-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 406; RV32I-PIC-7-ENTRIES-NEXT: # %bb.8: # %bb6 407; RV32I-PIC-7-ENTRIES-NEXT: li a0, 200 408; RV32I-PIC-7-ENTRIES-NEXT: j .LBB1_13 409; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_9: # %bb1 410; RV32I-PIC-7-ENTRIES-NEXT: li a0, 4 411; RV32I-PIC-7-ENTRIES-NEXT: j .LBB1_13 412; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_10: # %bb4 413; RV32I-PIC-7-ENTRIES-NEXT: li a0, 1 414; RV32I-PIC-7-ENTRIES-NEXT: j .LBB1_13 415; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_11: # %bb2 416; RV32I-PIC-7-ENTRIES-NEXT: li a0, 3 417; RV32I-PIC-7-ENTRIES-NEXT: j .LBB1_13 418; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_12: # %bb5 419; RV32I-PIC-7-ENTRIES-NEXT: li a0, 100 420; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_13: # %exit 421; RV32I-PIC-7-ENTRIES-NEXT: sw a0, 0(a1) 422; RV32I-PIC-7-ENTRIES-NEXT: .LBB1_14: # %exit 423; RV32I-PIC-7-ENTRIES-NEXT: ret 424; 425; RV64I-SMALL-7-ENTRIES-LABEL: above_threshold: 426; RV64I-SMALL-7-ENTRIES: # %bb.0: # %entry 427; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 3 428; RV64I-SMALL-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 429; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.1: # %entry 430; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 1 431; RV64I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 432; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.2: # %entry 433; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 2 434; RV64I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 435; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.3: # %entry 436; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 3 437; RV64I-SMALL-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 438; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.4: # %bb3 439; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 2 440; RV64I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 441; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_5: # %entry 442; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 4 443; RV64I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 444; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.6: # %entry 445; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 5 446; RV64I-SMALL-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 447; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.7: # %entry 448; RV64I-SMALL-7-ENTRIES-NEXT: li a2, 6 449; RV64I-SMALL-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 450; RV64I-SMALL-7-ENTRIES-NEXT: # %bb.8: # %bb6 451; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 200 452; RV64I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 453; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_9: # %bb1 454; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 4 455; RV64I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 456; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_10: # %bb4 457; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 1 458; RV64I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 459; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_11: # %bb2 460; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 3 461; RV64I-SMALL-7-ENTRIES-NEXT: j .LBB1_13 462; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_12: # %bb5 463; RV64I-SMALL-7-ENTRIES-NEXT: li a0, 100 464; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_13: # %exit 465; RV64I-SMALL-7-ENTRIES-NEXT: sw a0, 0(a1) 466; RV64I-SMALL-7-ENTRIES-NEXT: .LBB1_14: # %exit 467; RV64I-SMALL-7-ENTRIES-NEXT: ret 468; 469; RV64I-MEDIUM-7-ENTRIES-LABEL: above_threshold: 470; RV64I-MEDIUM-7-ENTRIES: # %bb.0: # %entry 471; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 3 472; RV64I-MEDIUM-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 473; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.1: # %entry 474; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 1 475; RV64I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 476; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.2: # %entry 477; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 2 478; RV64I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 479; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.3: # %entry 480; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 3 481; RV64I-MEDIUM-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 482; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.4: # %bb3 483; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 2 484; RV64I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 485; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_5: # %entry 486; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 4 487; RV64I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 488; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.6: # %entry 489; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 5 490; RV64I-MEDIUM-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 491; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.7: # %entry 492; RV64I-MEDIUM-7-ENTRIES-NEXT: li a2, 6 493; RV64I-MEDIUM-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 494; RV64I-MEDIUM-7-ENTRIES-NEXT: # %bb.8: # %bb6 495; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 200 496; RV64I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 497; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_9: # %bb1 498; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 4 499; RV64I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 500; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_10: # %bb4 501; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 1 502; RV64I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 503; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_11: # %bb2 504; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 3 505; RV64I-MEDIUM-7-ENTRIES-NEXT: j .LBB1_13 506; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_12: # %bb5 507; RV64I-MEDIUM-7-ENTRIES-NEXT: li a0, 100 508; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_13: # %exit 509; RV64I-MEDIUM-7-ENTRIES-NEXT: sw a0, 0(a1) 510; RV64I-MEDIUM-7-ENTRIES-NEXT: .LBB1_14: # %exit 511; RV64I-MEDIUM-7-ENTRIES-NEXT: ret 512; 513; RV64I-PIC-7-ENTRIES-LABEL: above_threshold: 514; RV64I-PIC-7-ENTRIES: # %bb.0: # %entry 515; RV64I-PIC-7-ENTRIES-NEXT: li a2, 3 516; RV64I-PIC-7-ENTRIES-NEXT: blt a2, a0, .LBB1_5 517; RV64I-PIC-7-ENTRIES-NEXT: # %bb.1: # %entry 518; RV64I-PIC-7-ENTRIES-NEXT: li a2, 1 519; RV64I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_9 520; RV64I-PIC-7-ENTRIES-NEXT: # %bb.2: # %entry 521; RV64I-PIC-7-ENTRIES-NEXT: li a2, 2 522; RV64I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_11 523; RV64I-PIC-7-ENTRIES-NEXT: # %bb.3: # %entry 524; RV64I-PIC-7-ENTRIES-NEXT: li a2, 3 525; RV64I-PIC-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 526; RV64I-PIC-7-ENTRIES-NEXT: # %bb.4: # %bb3 527; RV64I-PIC-7-ENTRIES-NEXT: li a0, 2 528; RV64I-PIC-7-ENTRIES-NEXT: j .LBB1_13 529; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_5: # %entry 530; RV64I-PIC-7-ENTRIES-NEXT: li a2, 4 531; RV64I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_10 532; RV64I-PIC-7-ENTRIES-NEXT: # %bb.6: # %entry 533; RV64I-PIC-7-ENTRIES-NEXT: li a2, 5 534; RV64I-PIC-7-ENTRIES-NEXT: beq a0, a2, .LBB1_12 535; RV64I-PIC-7-ENTRIES-NEXT: # %bb.7: # %entry 536; RV64I-PIC-7-ENTRIES-NEXT: li a2, 6 537; RV64I-PIC-7-ENTRIES-NEXT: bne a0, a2, .LBB1_14 538; RV64I-PIC-7-ENTRIES-NEXT: # %bb.8: # %bb6 539; RV64I-PIC-7-ENTRIES-NEXT: li a0, 200 540; RV64I-PIC-7-ENTRIES-NEXT: j .LBB1_13 541; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_9: # %bb1 542; RV64I-PIC-7-ENTRIES-NEXT: li a0, 4 543; RV64I-PIC-7-ENTRIES-NEXT: j .LBB1_13 544; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_10: # %bb4 545; RV64I-PIC-7-ENTRIES-NEXT: li a0, 1 546; RV64I-PIC-7-ENTRIES-NEXT: j .LBB1_13 547; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_11: # %bb2 548; RV64I-PIC-7-ENTRIES-NEXT: li a0, 3 549; RV64I-PIC-7-ENTRIES-NEXT: j .LBB1_13 550; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_12: # %bb5 551; RV64I-PIC-7-ENTRIES-NEXT: li a0, 100 552; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_13: # %exit 553; RV64I-PIC-7-ENTRIES-NEXT: sw a0, 0(a1) 554; RV64I-PIC-7-ENTRIES-NEXT: .LBB1_14: # %exit 555; RV64I-PIC-7-ENTRIES-NEXT: ret 556entry: 557 switch i32 %in, label %exit [ 558 i32 1, label %bb1 559 i32 2, label %bb2 560 i32 3, label %bb3 561 i32 4, label %bb4 562 i32 5, label %bb5 563 i32 6, label %bb6 564 ] 565bb1: 566 store i32 4, ptr %out 567 br label %exit 568bb2: 569 store i32 3, ptr %out 570 br label %exit 571bb3: 572 store i32 2, ptr %out 573 br label %exit 574bb4: 575 store i32 1, ptr %out 576 br label %exit 577bb5: 578 store i32 100, ptr %out 579 br label %exit 580bb6: 581 store i32 200, ptr %out 582 br label %exit 583exit: 584 ret void 585} 586