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