134 lines · plain
1; RUN: llc -mtriple=mips-elf < %s | FileCheck %s -check-prefix=O322; RUN: llc -mtriple=mips64-elf -target-abi=n32 < %s | FileCheck %s -check-prefix=N323; RUN: llc -mtriple=mips64-elf < %s | FileCheck %s -check-prefix=N644; RUN: llc -mtriple=mipsel-windows-gnu < %s | FileCheck %s -check-prefix=MIPSEL5 6; We only use the '$' prefix on O32. The others use the ELF convention.7; O32: $JTI0_08; N32: .LJTI0_09; N64: .LJTI0_010 11; Check basic block labels while we're at it.12; O32: $BB0_2:13; N32: .LBB0_2:14; N64: .LBB0_2:15 16; MIPSEL-LABEL: _Z3fooi:17; MIPSEL: # %bb.0: # %entry18; MIPSEL-NEXT: addiu $sp, $sp, -1619; MIPSEL-NEXT: sltiu $1, $4, 720; MIPSEL-NEXT: beqz $1, .LBB0_621; MIPSEL-NEXT: sw $4, 4($sp)22; MIPSEL-NEXT: # %bb.1: # %entry23; MIPSEL-NEXT: sll $1, $4, 224; MIPSEL-NEXT: lui $2, %hi($JTI0_0)25; MIPSEL-NEXT: addu $1, $1, $226; MIPSEL-NEXT: lw $1, %lo($JTI0_0)($1)27; MIPSEL-NEXT: jr $128; MIPSEL-NEXT: nop29; MIPSEL-NEXT: .LBB0_2: # %sw.bb30; MIPSEL-NEXT: lui $1, %hi($.str)31; MIPSEL-NEXT: addiu $1, $1, %lo($.str)32; MIPSEL-NEXT: j .LBB0_1033; MIPSEL-NEXT: sw $1, 8($sp)34; MIPSEL-NEXT: .LBB0_3: # %sw.bb435; MIPSEL-NEXT: lui $1, %hi($.str.4)36; MIPSEL-NEXT: addiu $1, $1, %lo($.str.4)37; MIPSEL-NEXT: j .LBB0_1038; MIPSEL-NEXT: sw $1, 8($sp)39; MIPSEL-NEXT: .LBB0_4: # %sw.bb240; MIPSEL-NEXT: lui $1, %hi($.str.2)41; MIPSEL-NEXT: addiu $1, $1, %lo($.str.2)42; MIPSEL-NEXT: j .LBB0_1043; MIPSEL-NEXT: sw $1, 8($sp)44; MIPSEL-NEXT: .LBB0_5: # %sw.bb345; MIPSEL-NEXT: lui $1, %hi($.str.3)46; MIPSEL-NEXT: addiu $1, $1, %lo($.str.3)47; MIPSEL-NEXT: j .LBB0_1048; MIPSEL-NEXT: sw $1, 8($sp)49; MIPSEL-NEXT: .LBB0_6: # %sw.epilog50; MIPSEL-NEXT: lui $1, %hi($.str.7)51; MIPSEL-NEXT: addiu $1, $1, %lo($.str.7)52; MIPSEL-NEXT: j .LBB0_1053; MIPSEL-NEXT: sw $1, 8($sp)54; MIPSEL-NEXT: .LBB0_7: # %sw.bb155; MIPSEL-NEXT: lui $1, %hi($.str.1)56; MIPSEL-NEXT: addiu $1, $1, %lo($.str.1)57; MIPSEL-NEXT: j .LBB0_1058; MIPSEL-NEXT: sw $1, 8($sp)59; MIPSEL-NEXT: .LBB0_8: # %sw.bb560; MIPSEL-NEXT: lui $1, %hi($.str.5)61; MIPSEL-NEXT: addiu $1, $1, %lo($.str.5)62; MIPSEL-NEXT: j .LBB0_1063; MIPSEL-NEXT: sw $1, 8($sp)64; MIPSEL-NEXT: .LBB0_9: # %sw.bb665; MIPSEL-NEXT: lui $1, %hi($.str.6)66; MIPSEL-NEXT: addiu $1, $1, %lo($.str.6)67; MIPSEL-NEXT: sw $1, 8($sp)68; MIPSEL-NEXT: .LBB0_10: # %return69; MIPSEL-NEXT: lw $2, 8($sp)70; MIPSEL-NEXT: jr $ra71; MIPSEL-NEXT: addiu $sp, $sp, 1672 73@.str = private unnamed_addr constant [2 x i8] c"A\00", align 174@.str.1 = private unnamed_addr constant [2 x i8] c"B\00", align 175@.str.2 = private unnamed_addr constant [2 x i8] c"C\00", align 176@.str.3 = private unnamed_addr constant [2 x i8] c"D\00", align 177@.str.4 = private unnamed_addr constant [2 x i8] c"E\00", align 178@.str.5 = private unnamed_addr constant [2 x i8] c"F\00", align 179@.str.6 = private unnamed_addr constant [2 x i8] c"G\00", align 180@.str.7 = private unnamed_addr constant [1 x i8] zeroinitializer, align 181 82define ptr @_Z3fooi(i32 signext %Letter) {83entry:84 %retval = alloca ptr, align 885 %Letter.addr = alloca i32, align 486 store i32 %Letter, ptr %Letter.addr, align 487 %0 = load i32, ptr %Letter.addr, align 488 switch i32 %0, label %sw.epilog [89 i32 0, label %sw.bb90 i32 1, label %sw.bb191 i32 2, label %sw.bb292 i32 3, label %sw.bb393 i32 4, label %sw.bb494 i32 5, label %sw.bb595 i32 6, label %sw.bb696 ]97 98sw.bb:99 store ptr @.str, ptr %retval, align 8100 br label %return101 102sw.bb1:103 store ptr @.str.1, ptr %retval, align 8104 br label %return105 106sw.bb2:107 store ptr @.str.2, ptr %retval, align 8108 br label %return109 110sw.bb3:111 store ptr @.str.3, ptr %retval, align 8112 br label %return113 114sw.bb4:115 store ptr @.str.4, ptr %retval, align 8116 br label %return117 118sw.bb5:119 store ptr @.str.5, ptr %retval, align 8120 br label %return121 122sw.bb6:123 store ptr @.str.6, ptr %retval, align 8124 br label %return125 126sw.epilog:127 store ptr @.str.7, ptr %retval, align 8128 br label %return129 130return:131 %1 = load ptr, ptr %retval, align 8132 ret ptr %1133}134