644 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; 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=MIPS32R25; 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=MIPS32R68; 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=MIPS64R211; 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=MIPS64R614 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-MIPS32R218; 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-MIPS32R621; 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-MIPS64R224; 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-MIPS64R627 28@.str = private unnamed_addr constant [2 x i8] c"A\00", align 129@.str.1 = private unnamed_addr constant [2 x i8] c"B\00", align 130@.str.2 = private unnamed_addr constant [2 x i8] c"C\00", align 131@.str.3 = private unnamed_addr constant [2 x i8] c"D\00", align 132@.str.4 = private unnamed_addr constant [2 x i8] c"E\00", align 133@.str.5 = private unnamed_addr constant [2 x i8] c"F\00", align 134@.str.6 = private unnamed_addr constant [2 x i8] c"G\00", align 135@.str.7 = private unnamed_addr constant [1 x i8] zeroinitializer, align 136 37define ptr @_Z3fooi(i32 signext %Letter) {38; MIPS32R2-LABEL: _Z3fooi:39; MIPS32R2: # %bb.0: # %entry40; MIPS32R2-NEXT: addiu $sp, $sp, -1641; MIPS32R2-NEXT: .cfi_def_cfa_offset 1642; MIPS32R2-NEXT: sltiu $1, $4, 743; MIPS32R2-NEXT: beqz $1, $BB0_644; MIPS32R2-NEXT: sw $4, 4($sp)45; MIPS32R2-NEXT: # %bb.1: # %entry46; MIPS32R2-NEXT: sll $1, $4, 247; MIPS32R2-NEXT: lui $2, %hi($JTI0_0)48; MIPS32R2-NEXT: addu $1, $1, $249; MIPS32R2-NEXT: lw $1, %lo($JTI0_0)($1)50; MIPS32R2-NEXT: jr.hb $151; MIPS32R2-NEXT: nop52; MIPS32R2-NEXT: $BB0_2: # %sw.bb53; MIPS32R2-NEXT: lui $1, %hi($.str)54; MIPS32R2-NEXT: addiu $1, $1, %lo($.str)55; MIPS32R2-NEXT: j $BB0_1056; MIPS32R2-NEXT: sw $1, 8($sp)57; MIPS32R2-NEXT: $BB0_3: # %sw.bb458; MIPS32R2-NEXT: lui $1, %hi($.str.4)59; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.4)60; MIPS32R2-NEXT: j $BB0_1061; MIPS32R2-NEXT: sw $1, 8($sp)62; MIPS32R2-NEXT: $BB0_4: # %sw.bb263; MIPS32R2-NEXT: lui $1, %hi($.str.2)64; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.2)65; MIPS32R2-NEXT: j $BB0_1066; MIPS32R2-NEXT: sw $1, 8($sp)67; MIPS32R2-NEXT: $BB0_5: # %sw.bb368; MIPS32R2-NEXT: lui $1, %hi($.str.3)69; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.3)70; MIPS32R2-NEXT: j $BB0_1071; MIPS32R2-NEXT: sw $1, 8($sp)72; MIPS32R2-NEXT: $BB0_6: # %sw.epilog73; MIPS32R2-NEXT: lui $1, %hi($.str.7)74; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.7)75; MIPS32R2-NEXT: j $BB0_1076; MIPS32R2-NEXT: sw $1, 8($sp)77; MIPS32R2-NEXT: $BB0_7: # %sw.bb178; MIPS32R2-NEXT: lui $1, %hi($.str.1)79; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.1)80; MIPS32R2-NEXT: j $BB0_1081; MIPS32R2-NEXT: sw $1, 8($sp)82; MIPS32R2-NEXT: $BB0_8: # %sw.bb583; MIPS32R2-NEXT: lui $1, %hi($.str.5)84; MIPS32R2-NEXT: addiu $1, $1, %lo($.str.5)85; MIPS32R2-NEXT: j $BB0_1086; MIPS32R2-NEXT: sw $1, 8($sp)87; MIPS32R2-NEXT: $BB0_9: # %sw.bb688; 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: # %return92; MIPS32R2-NEXT: lw $2, 8($sp)93; MIPS32R2-NEXT: jr $ra94; MIPS32R2-NEXT: addiu $sp, $sp, 1695;96; MIPS32R6-LABEL: _Z3fooi:97; MIPS32R6: # %bb.0: # %entry98; MIPS32R6-NEXT: addiu $sp, $sp, -1699; MIPS32R6-NEXT: .cfi_def_cfa_offset 16100; MIPS32R6-NEXT: sltiu $1, $4, 7101; MIPS32R6-NEXT: beqz $1, $BB0_6102; MIPS32R6-NEXT: sw $4, 4($sp)103; MIPS32R6-NEXT: # %bb.1: # %entry104; MIPS32R6-NEXT: sll $1, $4, 2105; MIPS32R6-NEXT: lui $2, %hi($JTI0_0)106; MIPS32R6-NEXT: addu $1, $1, $2107; MIPS32R6-NEXT: lw $1, %lo($JTI0_0)($1)108; MIPS32R6-NEXT: jr.hb $1109; MIPS32R6-NEXT: nop110; MIPS32R6-NEXT: $BB0_2: # %sw.bb111; MIPS32R6-NEXT: lui $1, %hi($.str)112; MIPS32R6-NEXT: addiu $1, $1, %lo($.str)113; MIPS32R6-NEXT: j $BB0_10114; MIPS32R6-NEXT: sw $1, 8($sp)115; MIPS32R6-NEXT: $BB0_3: # %sw.bb4116; MIPS32R6-NEXT: lui $1, %hi($.str.4)117; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.4)118; MIPS32R6-NEXT: j $BB0_10119; MIPS32R6-NEXT: sw $1, 8($sp)120; MIPS32R6-NEXT: $BB0_4: # %sw.bb2121; MIPS32R6-NEXT: lui $1, %hi($.str.2)122; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.2)123; MIPS32R6-NEXT: j $BB0_10124; MIPS32R6-NEXT: sw $1, 8($sp)125; MIPS32R6-NEXT: $BB0_5: # %sw.bb3126; MIPS32R6-NEXT: lui $1, %hi($.str.3)127; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.3)128; MIPS32R6-NEXT: j $BB0_10129; MIPS32R6-NEXT: sw $1, 8($sp)130; MIPS32R6-NEXT: $BB0_6: # %sw.epilog131; MIPS32R6-NEXT: lui $1, %hi($.str.7)132; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.7)133; MIPS32R6-NEXT: j $BB0_10134; MIPS32R6-NEXT: sw $1, 8($sp)135; MIPS32R6-NEXT: $BB0_7: # %sw.bb1136; MIPS32R6-NEXT: lui $1, %hi($.str.1)137; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.1)138; MIPS32R6-NEXT: j $BB0_10139; MIPS32R6-NEXT: sw $1, 8($sp)140; MIPS32R6-NEXT: $BB0_8: # %sw.bb5141; MIPS32R6-NEXT: lui $1, %hi($.str.5)142; MIPS32R6-NEXT: addiu $1, $1, %lo($.str.5)143; MIPS32R6-NEXT: j $BB0_10144; MIPS32R6-NEXT: sw $1, 8($sp)145; MIPS32R6-NEXT: $BB0_9: # %sw.bb6146; 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: # %return150; MIPS32R6-NEXT: lw $2, 8($sp)151; MIPS32R6-NEXT: jr $ra152; MIPS32R6-NEXT: addiu $sp, $sp, 16153;154; MIPS64R2-LABEL: _Z3fooi:155; MIPS64R2: # %bb.0: # %entry156; MIPS64R2-NEXT: daddiu $sp, $sp, -16157; MIPS64R2-NEXT: .cfi_def_cfa_offset 16158; MIPS64R2-NEXT: dext $2, $4, 0, 32159; MIPS64R2-NEXT: sltiu $1, $2, 7160; MIPS64R2-NEXT: beqz $1, .LBB0_6161; MIPS64R2-NEXT: sw $4, 4($sp)162; MIPS64R2-NEXT: # %bb.1: # %entry163; MIPS64R2-NEXT: dsll $1, $2, 3164; MIPS64R2-NEXT: lui $2, %highest(.LJTI0_0)165; MIPS64R2-NEXT: daddiu $2, $2, %higher(.LJTI0_0)166; MIPS64R2-NEXT: dsll $2, $2, 16167; MIPS64R2-NEXT: daddiu $2, $2, %hi(.LJTI0_0)168; MIPS64R2-NEXT: dsll $2, $2, 16169; MIPS64R2-NEXT: daddu $1, $1, $2170; MIPS64R2-NEXT: ld $1, %lo(.LJTI0_0)($1)171; MIPS64R2-NEXT: jr.hb $1172; MIPS64R2-NEXT: nop173; MIPS64R2-NEXT: .LBB0_2: # %sw.bb174; MIPS64R2-NEXT: lui $1, %highest(.L.str)175; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str)176; MIPS64R2-NEXT: dsll $1, $1, 16177; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str)178; MIPS64R2-NEXT: dsll $1, $1, 16179; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str)180; MIPS64R2-NEXT: j .LBB0_10181; MIPS64R2-NEXT: sd $1, 8($sp)182; MIPS64R2-NEXT: .LBB0_3: # %sw.bb4183; MIPS64R2-NEXT: lui $1, %highest(.L.str.4)184; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.4)185; MIPS64R2-NEXT: dsll $1, $1, 16186; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.4)187; MIPS64R2-NEXT: dsll $1, $1, 16188; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.4)189; MIPS64R2-NEXT: j .LBB0_10190; MIPS64R2-NEXT: sd $1, 8($sp)191; MIPS64R2-NEXT: .LBB0_4: # %sw.bb2192; MIPS64R2-NEXT: lui $1, %highest(.L.str.2)193; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.2)194; MIPS64R2-NEXT: dsll $1, $1, 16195; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.2)196; MIPS64R2-NEXT: dsll $1, $1, 16197; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.2)198; MIPS64R2-NEXT: j .LBB0_10199; MIPS64R2-NEXT: sd $1, 8($sp)200; MIPS64R2-NEXT: .LBB0_5: # %sw.bb3201; MIPS64R2-NEXT: lui $1, %highest(.L.str.3)202; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.3)203; MIPS64R2-NEXT: dsll $1, $1, 16204; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.3)205; MIPS64R2-NEXT: dsll $1, $1, 16206; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.3)207; MIPS64R2-NEXT: j .LBB0_10208; MIPS64R2-NEXT: sd $1, 8($sp)209; MIPS64R2-NEXT: .LBB0_6: # %sw.epilog210; MIPS64R2-NEXT: lui $1, %highest(.L.str.7)211; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.7)212; MIPS64R2-NEXT: dsll $1, $1, 16213; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.7)214; MIPS64R2-NEXT: dsll $1, $1, 16215; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.7)216; MIPS64R2-NEXT: j .LBB0_10217; MIPS64R2-NEXT: sd $1, 8($sp)218; MIPS64R2-NEXT: .LBB0_7: # %sw.bb1219; MIPS64R2-NEXT: lui $1, %highest(.L.str.1)220; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.1)221; MIPS64R2-NEXT: dsll $1, $1, 16222; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.1)223; MIPS64R2-NEXT: dsll $1, $1, 16224; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.1)225; MIPS64R2-NEXT: j .LBB0_10226; MIPS64R2-NEXT: sd $1, 8($sp)227; MIPS64R2-NEXT: .LBB0_8: # %sw.bb5228; MIPS64R2-NEXT: lui $1, %highest(.L.str.5)229; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.5)230; MIPS64R2-NEXT: dsll $1, $1, 16231; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.5)232; MIPS64R2-NEXT: dsll $1, $1, 16233; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.5)234; MIPS64R2-NEXT: j .LBB0_10235; MIPS64R2-NEXT: sd $1, 8($sp)236; MIPS64R2-NEXT: .LBB0_9: # %sw.bb6237; MIPS64R2-NEXT: lui $1, %highest(.L.str.6)238; MIPS64R2-NEXT: daddiu $1, $1, %higher(.L.str.6)239; MIPS64R2-NEXT: dsll $1, $1, 16240; MIPS64R2-NEXT: daddiu $1, $1, %hi(.L.str.6)241; MIPS64R2-NEXT: dsll $1, $1, 16242; MIPS64R2-NEXT: daddiu $1, $1, %lo(.L.str.6)243; MIPS64R2-NEXT: sd $1, 8($sp)244; MIPS64R2-NEXT: .LBB0_10: # %return245; MIPS64R2-NEXT: ld $2, 8($sp)246; MIPS64R2-NEXT: jr $ra247; MIPS64R2-NEXT: daddiu $sp, $sp, 16248;249; MIPS64R6-LABEL: _Z3fooi:250; MIPS64R6: # %bb.0: # %entry251; MIPS64R6-NEXT: daddiu $sp, $sp, -16252; MIPS64R6-NEXT: .cfi_def_cfa_offset 16253; MIPS64R6-NEXT: dext $2, $4, 0, 32254; MIPS64R6-NEXT: sltiu $1, $2, 7255; MIPS64R6-NEXT: beqz $1, .LBB0_6256; MIPS64R6-NEXT: sw $4, 4($sp)257; MIPS64R6-NEXT: # %bb.1: # %entry258; MIPS64R6-NEXT: dsll $1, $2, 3259; MIPS64R6-NEXT: lui $2, %highest(.LJTI0_0)260; MIPS64R6-NEXT: daddiu $2, $2, %higher(.LJTI0_0)261; MIPS64R6-NEXT: dsll $2, $2, 16262; MIPS64R6-NEXT: daddiu $2, $2, %hi(.LJTI0_0)263; MIPS64R6-NEXT: dsll $2, $2, 16264; MIPS64R6-NEXT: daddu $1, $1, $2265; MIPS64R6-NEXT: ld $1, %lo(.LJTI0_0)($1)266; MIPS64R6-NEXT: jr.hb $1267; MIPS64R6-NEXT: nop268; MIPS64R6-NEXT: .LBB0_2: # %sw.bb269; MIPS64R6-NEXT: lui $1, %highest(.L.str)270; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str)271; MIPS64R6-NEXT: dsll $1, $1, 16272; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str)273; MIPS64R6-NEXT: dsll $1, $1, 16274; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str)275; MIPS64R6-NEXT: j .LBB0_10276; MIPS64R6-NEXT: sd $1, 8($sp)277; MIPS64R6-NEXT: .LBB0_3: # %sw.bb4278; MIPS64R6-NEXT: lui $1, %highest(.L.str.4)279; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.4)280; MIPS64R6-NEXT: dsll $1, $1, 16281; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.4)282; MIPS64R6-NEXT: dsll $1, $1, 16283; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.4)284; MIPS64R6-NEXT: j .LBB0_10285; MIPS64R6-NEXT: sd $1, 8($sp)286; MIPS64R6-NEXT: .LBB0_4: # %sw.bb2287; MIPS64R6-NEXT: lui $1, %highest(.L.str.2)288; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.2)289; MIPS64R6-NEXT: dsll $1, $1, 16290; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.2)291; MIPS64R6-NEXT: dsll $1, $1, 16292; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.2)293; MIPS64R6-NEXT: j .LBB0_10294; MIPS64R6-NEXT: sd $1, 8($sp)295; MIPS64R6-NEXT: .LBB0_5: # %sw.bb3296; MIPS64R6-NEXT: lui $1, %highest(.L.str.3)297; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.3)298; MIPS64R6-NEXT: dsll $1, $1, 16299; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.3)300; MIPS64R6-NEXT: dsll $1, $1, 16301; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.3)302; MIPS64R6-NEXT: j .LBB0_10303; MIPS64R6-NEXT: sd $1, 8($sp)304; MIPS64R6-NEXT: .LBB0_6: # %sw.epilog305; MIPS64R6-NEXT: lui $1, %highest(.L.str.7)306; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.7)307; MIPS64R6-NEXT: dsll $1, $1, 16308; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.7)309; MIPS64R6-NEXT: dsll $1, $1, 16310; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.7)311; MIPS64R6-NEXT: j .LBB0_10312; MIPS64R6-NEXT: sd $1, 8($sp)313; MIPS64R6-NEXT: .LBB0_7: # %sw.bb1314; MIPS64R6-NEXT: lui $1, %highest(.L.str.1)315; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.1)316; MIPS64R6-NEXT: dsll $1, $1, 16317; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.1)318; MIPS64R6-NEXT: dsll $1, $1, 16319; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.1)320; MIPS64R6-NEXT: j .LBB0_10321; MIPS64R6-NEXT: sd $1, 8($sp)322; MIPS64R6-NEXT: .LBB0_8: # %sw.bb5323; MIPS64R6-NEXT: lui $1, %highest(.L.str.5)324; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.5)325; MIPS64R6-NEXT: dsll $1, $1, 16326; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.5)327; MIPS64R6-NEXT: dsll $1, $1, 16328; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.5)329; MIPS64R6-NEXT: j .LBB0_10330; MIPS64R6-NEXT: sd $1, 8($sp)331; MIPS64R6-NEXT: .LBB0_9: # %sw.bb6332; MIPS64R6-NEXT: lui $1, %highest(.L.str.6)333; MIPS64R6-NEXT: daddiu $1, $1, %higher(.L.str.6)334; MIPS64R6-NEXT: dsll $1, $1, 16335; MIPS64R6-NEXT: daddiu $1, $1, %hi(.L.str.6)336; MIPS64R6-NEXT: dsll $1, $1, 16337; MIPS64R6-NEXT: daddiu $1, $1, %lo(.L.str.6)338; MIPS64R6-NEXT: sd $1, 8($sp)339; MIPS64R6-NEXT: .LBB0_10: # %return340; MIPS64R6-NEXT: ld $2, 8($sp)341; MIPS64R6-NEXT: jr $ra342; MIPS64R6-NEXT: daddiu $sp, $sp, 16343;344; PIC-MIPS32R2-LABEL: _Z3fooi:345; PIC-MIPS32R2: # %bb.0: # %entry346; PIC-MIPS32R2-NEXT: lui $2, %hi(_gp_disp)347; PIC-MIPS32R2-NEXT: addiu $2, $2, %lo(_gp_disp)348; PIC-MIPS32R2-NEXT: addiu $sp, $sp, -16349; PIC-MIPS32R2-NEXT: .cfi_def_cfa_offset 16350; PIC-MIPS32R2-NEXT: addu $2, $2, $25351; PIC-MIPS32R2-NEXT: sltiu $1, $4, 7352; PIC-MIPS32R2-NEXT: beqz $1, $BB0_6353; PIC-MIPS32R2-NEXT: sw $4, 4($sp)354; PIC-MIPS32R2-NEXT: # %bb.1: # %entry355; PIC-MIPS32R2-NEXT: sll $1, $4, 2356; PIC-MIPS32R2-NEXT: lw $3, %got($JTI0_0)($2)357; PIC-MIPS32R2-NEXT: addu $1, $1, $3358; PIC-MIPS32R2-NEXT: lw $1, %lo($JTI0_0)($1)359; PIC-MIPS32R2-NEXT: addu $1, $2, $1360; PIC-MIPS32R2-NEXT: jr.hb $1361; PIC-MIPS32R2-NEXT: nop362; PIC-MIPS32R2-NEXT: $BB0_2: # %sw.bb363; PIC-MIPS32R2-NEXT: lw $1, %got($.str)($2)364; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str)365; PIC-MIPS32R2-NEXT: b $BB0_10366; PIC-MIPS32R2-NEXT: sw $1, 8($sp)367; PIC-MIPS32R2-NEXT: $BB0_3: # %sw.bb4368; PIC-MIPS32R2-NEXT: lw $1, %got($.str.4)($2)369; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.4)370; PIC-MIPS32R2-NEXT: b $BB0_10371; PIC-MIPS32R2-NEXT: sw $1, 8($sp)372; PIC-MIPS32R2-NEXT: $BB0_4: # %sw.bb2373; PIC-MIPS32R2-NEXT: lw $1, %got($.str.2)($2)374; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.2)375; PIC-MIPS32R2-NEXT: b $BB0_10376; PIC-MIPS32R2-NEXT: sw $1, 8($sp)377; PIC-MIPS32R2-NEXT: $BB0_5: # %sw.bb3378; PIC-MIPS32R2-NEXT: lw $1, %got($.str.3)($2)379; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.3)380; PIC-MIPS32R2-NEXT: b $BB0_10381; PIC-MIPS32R2-NEXT: sw $1, 8($sp)382; PIC-MIPS32R2-NEXT: $BB0_6: # %sw.epilog383; PIC-MIPS32R2-NEXT: lw $1, %got($.str.7)($2)384; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.7)385; PIC-MIPS32R2-NEXT: b $BB0_10386; PIC-MIPS32R2-NEXT: sw $1, 8($sp)387; PIC-MIPS32R2-NEXT: $BB0_7: # %sw.bb1388; PIC-MIPS32R2-NEXT: lw $1, %got($.str.1)($2)389; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.1)390; PIC-MIPS32R2-NEXT: b $BB0_10391; PIC-MIPS32R2-NEXT: sw $1, 8($sp)392; PIC-MIPS32R2-NEXT: $BB0_8: # %sw.bb5393; PIC-MIPS32R2-NEXT: lw $1, %got($.str.5)($2)394; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.5)395; PIC-MIPS32R2-NEXT: b $BB0_10396; PIC-MIPS32R2-NEXT: sw $1, 8($sp)397; PIC-MIPS32R2-NEXT: $BB0_9: # %sw.bb6398; PIC-MIPS32R2-NEXT: lw $1, %got($.str.6)($2)399; PIC-MIPS32R2-NEXT: addiu $1, $1, %lo($.str.6)400; PIC-MIPS32R2-NEXT: sw $1, 8($sp)401; PIC-MIPS32R2-NEXT: $BB0_10: # %return402; PIC-MIPS32R2-NEXT: lw $2, 8($sp)403; PIC-MIPS32R2-NEXT: jr $ra404; PIC-MIPS32R2-NEXT: addiu $sp, $sp, 16405;406; PIC-MIPS32R6-LABEL: _Z3fooi:407; PIC-MIPS32R6: # %bb.0: # %entry408; PIC-MIPS32R6-NEXT: lui $2, %hi(_gp_disp)409; PIC-MIPS32R6-NEXT: addiu $2, $2, %lo(_gp_disp)410; PIC-MIPS32R6-NEXT: addiu $sp, $sp, -16411; PIC-MIPS32R6-NEXT: .cfi_def_cfa_offset 16412; PIC-MIPS32R6-NEXT: addu $2, $2, $25413; PIC-MIPS32R6-NEXT: sltiu $1, $4, 7414; PIC-MIPS32R6-NEXT: beqz $1, $BB0_6415; PIC-MIPS32R6-NEXT: sw $4, 4($sp)416; PIC-MIPS32R6-NEXT: # %bb.1: # %entry417; PIC-MIPS32R6-NEXT: sll $1, $4, 2418; PIC-MIPS32R6-NEXT: lw $3, %got($JTI0_0)($2)419; PIC-MIPS32R6-NEXT: addu $1, $1, $3420; PIC-MIPS32R6-NEXT: lw $1, %lo($JTI0_0)($1)421; PIC-MIPS32R6-NEXT: addu $1, $2, $1422; PIC-MIPS32R6-NEXT: jr.hb $1423; PIC-MIPS32R6-NEXT: nop424; PIC-MIPS32R6-NEXT: $BB0_2: # %sw.bb425; PIC-MIPS32R6-NEXT: lw $1, %got($.str)($2)426; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str)427; PIC-MIPS32R6-NEXT: b $BB0_10428; PIC-MIPS32R6-NEXT: sw $1, 8($sp)429; PIC-MIPS32R6-NEXT: $BB0_3: # %sw.bb4430; PIC-MIPS32R6-NEXT: lw $1, %got($.str.4)($2)431; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.4)432; PIC-MIPS32R6-NEXT: b $BB0_10433; PIC-MIPS32R6-NEXT: sw $1, 8($sp)434; PIC-MIPS32R6-NEXT: $BB0_4: # %sw.bb2435; PIC-MIPS32R6-NEXT: lw $1, %got($.str.2)($2)436; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.2)437; PIC-MIPS32R6-NEXT: b $BB0_10438; PIC-MIPS32R6-NEXT: sw $1, 8($sp)439; PIC-MIPS32R6-NEXT: $BB0_5: # %sw.bb3440; PIC-MIPS32R6-NEXT: lw $1, %got($.str.3)($2)441; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.3)442; PIC-MIPS32R6-NEXT: b $BB0_10443; PIC-MIPS32R6-NEXT: sw $1, 8($sp)444; PIC-MIPS32R6-NEXT: $BB0_6: # %sw.epilog445; PIC-MIPS32R6-NEXT: lw $1, %got($.str.7)($2)446; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.7)447; PIC-MIPS32R6-NEXT: b $BB0_10448; PIC-MIPS32R6-NEXT: sw $1, 8($sp)449; PIC-MIPS32R6-NEXT: $BB0_7: # %sw.bb1450; PIC-MIPS32R6-NEXT: lw $1, %got($.str.1)($2)451; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.1)452; PIC-MIPS32R6-NEXT: b $BB0_10453; PIC-MIPS32R6-NEXT: sw $1, 8($sp)454; PIC-MIPS32R6-NEXT: $BB0_8: # %sw.bb5455; PIC-MIPS32R6-NEXT: lw $1, %got($.str.5)($2)456; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.5)457; PIC-MIPS32R6-NEXT: b $BB0_10458; PIC-MIPS32R6-NEXT: sw $1, 8($sp)459; PIC-MIPS32R6-NEXT: $BB0_9: # %sw.bb6460; PIC-MIPS32R6-NEXT: lw $1, %got($.str.6)($2)461; PIC-MIPS32R6-NEXT: addiu $1, $1, %lo($.str.6)462; PIC-MIPS32R6-NEXT: sw $1, 8($sp)463; PIC-MIPS32R6-NEXT: $BB0_10: # %return464; PIC-MIPS32R6-NEXT: lw $2, 8($sp)465; PIC-MIPS32R6-NEXT: jr $ra466; PIC-MIPS32R6-NEXT: addiu $sp, $sp, 16467;468; PIC-MIPS64R2-LABEL: _Z3fooi:469; PIC-MIPS64R2: # %bb.0: # %entry470; PIC-MIPS64R2-NEXT: daddiu $sp, $sp, -16471; PIC-MIPS64R2-NEXT: .cfi_def_cfa_offset 16472; PIC-MIPS64R2-NEXT: lui $1, %hi(%neg(%gp_rel(_Z3fooi)))473; PIC-MIPS64R2-NEXT: daddu $1, $1, $25474; PIC-MIPS64R2-NEXT: daddiu $2, $1, %lo(%neg(%gp_rel(_Z3fooi)))475; PIC-MIPS64R2-NEXT: dext $3, $4, 0, 32476; PIC-MIPS64R2-NEXT: sltiu $1, $3, 7477; PIC-MIPS64R2-NEXT: beqz $1, .LBB0_6478; PIC-MIPS64R2-NEXT: sw $4, 4($sp)479; PIC-MIPS64R2-NEXT: # %bb.1: # %entry480; PIC-MIPS64R2-NEXT: dsll $1, $3, 3481; PIC-MIPS64R2-NEXT: ld $3, %got_page(.LJTI0_0)($2)482; PIC-MIPS64R2-NEXT: daddu $1, $1, $3483; PIC-MIPS64R2-NEXT: ld $1, %got_ofst(.LJTI0_0)($1)484; PIC-MIPS64R2-NEXT: daddu $1, $2, $1485; PIC-MIPS64R2-NEXT: jr.hb $1486; PIC-MIPS64R2-NEXT: nop487; PIC-MIPS64R2-NEXT: .LBB0_2: # %sw.bb488; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str)($2)489; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str)490; PIC-MIPS64R2-NEXT: b .LBB0_10491; PIC-MIPS64R2-NEXT: sd $1, 8($sp)492; PIC-MIPS64R2-NEXT: .LBB0_3: # %sw.bb4493; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.4)($2)494; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.4)495; PIC-MIPS64R2-NEXT: b .LBB0_10496; PIC-MIPS64R2-NEXT: sd $1, 8($sp)497; PIC-MIPS64R2-NEXT: .LBB0_4: # %sw.bb2498; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.2)($2)499; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.2)500; PIC-MIPS64R2-NEXT: b .LBB0_10501; PIC-MIPS64R2-NEXT: sd $1, 8($sp)502; PIC-MIPS64R2-NEXT: .LBB0_5: # %sw.bb3503; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.3)($2)504; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.3)505; PIC-MIPS64R2-NEXT: b .LBB0_10506; PIC-MIPS64R2-NEXT: sd $1, 8($sp)507; PIC-MIPS64R2-NEXT: .LBB0_6: # %sw.epilog508; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.7)($2)509; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.7)510; PIC-MIPS64R2-NEXT: b .LBB0_10511; PIC-MIPS64R2-NEXT: sd $1, 8($sp)512; PIC-MIPS64R2-NEXT: .LBB0_7: # %sw.bb1513; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.1)($2)514; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.1)515; PIC-MIPS64R2-NEXT: b .LBB0_10516; PIC-MIPS64R2-NEXT: sd $1, 8($sp)517; PIC-MIPS64R2-NEXT: .LBB0_8: # %sw.bb5518; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.5)($2)519; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.5)520; PIC-MIPS64R2-NEXT: b .LBB0_10521; PIC-MIPS64R2-NEXT: sd $1, 8($sp)522; PIC-MIPS64R2-NEXT: .LBB0_9: # %sw.bb6523; PIC-MIPS64R2-NEXT: ld $1, %got_page(.L.str.6)($2)524; PIC-MIPS64R2-NEXT: daddiu $1, $1, %got_ofst(.L.str.6)525; PIC-MIPS64R2-NEXT: sd $1, 8($sp)526; PIC-MIPS64R2-NEXT: .LBB0_10: # %return527; PIC-MIPS64R2-NEXT: ld $2, 8($sp)528; PIC-MIPS64R2-NEXT: jr $ra529; PIC-MIPS64R2-NEXT: daddiu $sp, $sp, 16530;531; PIC-MIPS64R6-LABEL: _Z3fooi:532; PIC-MIPS64R6: # %bb.0: # %entry533; PIC-MIPS64R6-NEXT: daddiu $sp, $sp, -16534; PIC-MIPS64R6-NEXT: .cfi_def_cfa_offset 16535; PIC-MIPS64R6-NEXT: lui $1, %hi(%neg(%gp_rel(_Z3fooi)))536; PIC-MIPS64R6-NEXT: daddu $1, $1, $25537; PIC-MIPS64R6-NEXT: daddiu $2, $1, %lo(%neg(%gp_rel(_Z3fooi)))538; PIC-MIPS64R6-NEXT: dext $3, $4, 0, 32539; PIC-MIPS64R6-NEXT: sltiu $1, $3, 7540; PIC-MIPS64R6-NEXT: beqz $1, .LBB0_6541; PIC-MIPS64R6-NEXT: sw $4, 4($sp)542; PIC-MIPS64R6-NEXT: # %bb.1: # %entry543; PIC-MIPS64R6-NEXT: dsll $1, $3, 3544; PIC-MIPS64R6-NEXT: ld $3, %got_page(.LJTI0_0)($2)545; PIC-MIPS64R6-NEXT: daddu $1, $1, $3546; PIC-MIPS64R6-NEXT: ld $1, %got_ofst(.LJTI0_0)($1)547; PIC-MIPS64R6-NEXT: daddu $1, $2, $1548; PIC-MIPS64R6-NEXT: jr.hb $1549; PIC-MIPS64R6-NEXT: nop550; PIC-MIPS64R6-NEXT: .LBB0_2: # %sw.bb551; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str)($2)552; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str)553; PIC-MIPS64R6-NEXT: b .LBB0_10554; PIC-MIPS64R6-NEXT: sd $1, 8($sp)555; PIC-MIPS64R6-NEXT: .LBB0_3: # %sw.bb4556; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.4)($2)557; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.4)558; PIC-MIPS64R6-NEXT: b .LBB0_10559; PIC-MIPS64R6-NEXT: sd $1, 8($sp)560; PIC-MIPS64R6-NEXT: .LBB0_4: # %sw.bb2561; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.2)($2)562; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.2)563; PIC-MIPS64R6-NEXT: b .LBB0_10564; PIC-MIPS64R6-NEXT: sd $1, 8($sp)565; PIC-MIPS64R6-NEXT: .LBB0_5: # %sw.bb3566; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.3)($2)567; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.3)568; PIC-MIPS64R6-NEXT: b .LBB0_10569; PIC-MIPS64R6-NEXT: sd $1, 8($sp)570; PIC-MIPS64R6-NEXT: .LBB0_6: # %sw.epilog571; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.7)($2)572; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.7)573; PIC-MIPS64R6-NEXT: b .LBB0_10574; PIC-MIPS64R6-NEXT: sd $1, 8($sp)575; PIC-MIPS64R6-NEXT: .LBB0_7: # %sw.bb1576; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.1)($2)577; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.1)578; PIC-MIPS64R6-NEXT: b .LBB0_10579; PIC-MIPS64R6-NEXT: sd $1, 8($sp)580; PIC-MIPS64R6-NEXT: .LBB0_8: # %sw.bb5581; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.5)($2)582; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.5)583; PIC-MIPS64R6-NEXT: b .LBB0_10584; PIC-MIPS64R6-NEXT: sd $1, 8($sp)585; PIC-MIPS64R6-NEXT: .LBB0_9: # %sw.bb6586; PIC-MIPS64R6-NEXT: ld $1, %got_page(.L.str.6)($2)587; PIC-MIPS64R6-NEXT: daddiu $1, $1, %got_ofst(.L.str.6)588; PIC-MIPS64R6-NEXT: sd $1, 8($sp)589; PIC-MIPS64R6-NEXT: .LBB0_10: # %return590; PIC-MIPS64R6-NEXT: ld $2, 8($sp)591; PIC-MIPS64R6-NEXT: jr $ra592; PIC-MIPS64R6-NEXT: daddiu $sp, $sp, 16593entry:594 %retval = alloca ptr, align 8595 %Letter.addr = alloca i32, align 4596 store i32 %Letter, ptr %Letter.addr, align 4597 %0 = load i32, ptr %Letter.addr, align 4598 switch i32 %0, label %sw.epilog [599 i32 0, label %sw.bb600 i32 1, label %sw.bb1601 i32 2, label %sw.bb2602 i32 3, label %sw.bb3603 i32 4, label %sw.bb4604 i32 5, label %sw.bb5605 i32 6, label %sw.bb6606 ]607 608sw.bb:609 store ptr @.str, ptr %retval, align 8610 br label %return611 612sw.bb1:613 store ptr @.str.1, ptr %retval, align 8614 br label %return615 616sw.bb2:617 store ptr @.str.2, ptr %retval, align 8618 br label %return619 620sw.bb3:621 store ptr @.str.3, ptr %retval, align 8622 br label %return623 624sw.bb4:625 store ptr @.str.4, ptr %retval, align 8626 br label %return627 628sw.bb5:629 store ptr @.str.5, ptr %retval, align 8630 br label %return631 632sw.bb6:633 store ptr @.str.6, ptr %retval, align 8634 br label %return635 636sw.epilog:637 store ptr @.str.7, ptr %retval, align 8638 br label %return639 640return:641 %1 = load ptr, ptr %retval, align 8642 ret ptr %1643}644