285 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=mipsel-unknown-linux-gnu -O3 -relocation-model=pic < %s \3; RUN: | FileCheck %s -check-prefix=NOLONGBRANCH4 5; RUN: llc -mtriple=mipsel-unknown-linux-gnu -force-mips-long-branch -O3 -relocation-model=pic < %s \6; RUN: | FileCheck %s -check-prefix=O32-PIC7; RUN: llc -mtriple=mipsel-unknown-linux-gnu -force-mips-long-branch -O3 -relocation-model=static < %s \8; RUN: | FileCheck %s -check-prefix=O32-STATIC9; RUN: llc -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r6 -force-mips-long-branch -O3 \10; RUN: -relocation-model=pic < %s | FileCheck %s -check-prefix=O32-R6-PIC11 12; RUN: llc -mtriple=mips64el-unknown-linux-gnu -mcpu=mips4 -target-abi=n64 -force-mips-long-branch -O3 -relocation-model=pic \13; RUN: < %s | FileCheck %s -check-prefix=MIPS414; RUN: llc -mtriple=mips64el-unknown-linux-gnu -mcpu=mips64 -target-abi=n64 -force-mips-long-branch -O3 -relocation-model=pic \15; RUN: < %s | FileCheck %s -check-prefix=MIPS6416; RUN: llc -mtriple=mips64el-unknown-linux-gnu -mcpu=mips64r6 -target-abi=n64 -force-mips-long-branch -O3 \17; RUN: -relocation-model=pic < %s | FileCheck %s -check-prefix=N64-R618 19; RUN: llc -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r2 -mattr=micromips \20; RUN: -force-mips-long-branch -O3 -relocation-model=pic < %s | FileCheck %s -check-prefix=MICROMIPS21; RUN: llc -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r2 -mattr=micromips \22; RUN: -force-mips-long-branch -O3 -relocation-model=static < %s | FileCheck %s -check-prefix=MICROMIPSSTATIC23 24; RUN: llc -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r6 -mattr=micromips \25; RUN: -force-mips-long-branch -O3 -relocation-model=static < %s | FileCheck %s -check-prefix=MICROMIPSR6STATIC26; RUN: llc -mtriple=mipsel-unknown-linux-gnu -mcpu=mips32r6 -mattr=micromips \27; RUN: -force-mips-long-branch -O3 -relocation-model=pic < %s | FileCheck %s -check-prefix=MICROMIPSR6PIC28 29@x = external global i3230 31define void @test1(i32 signext %s) {32; NOLONGBRANCH-LABEL: test1:33; NOLONGBRANCH: # %bb.0: # %entry34; NOLONGBRANCH-NEXT: lui $2, %hi(_gp_disp)35; NOLONGBRANCH-NEXT: addiu $2, $2, %lo(_gp_disp)36; NOLONGBRANCH-NEXT: beqz $4, $BB0_237; NOLONGBRANCH-NEXT: addu $2, $2, $2538; NOLONGBRANCH-NEXT: # %bb.1: # %then39; NOLONGBRANCH-NEXT: lw $1, %got(x)($2)40; NOLONGBRANCH-NEXT: addiu $2, $zero, 141; NOLONGBRANCH-NEXT: sw $2, 0($1)42; NOLONGBRANCH-NEXT: $BB0_2: # %end43; NOLONGBRANCH-NEXT: jr $ra44; NOLONGBRANCH-NEXT: nop45;46; O32-PIC-LABEL: test1:47; O32-PIC: # %bb.0: # %entry48; O32-PIC-NEXT: lui $2, %hi(_gp_disp)49; O32-PIC-NEXT: addiu $2, $2, %lo(_gp_disp)50; O32-PIC-NEXT: bnez $4, $BB0_351; O32-PIC-NEXT: addu $2, $2, $2552; O32-PIC-NEXT: # %bb.1: # %entry53; O32-PIC-NEXT: addiu $sp, $sp, -854; O32-PIC-NEXT: sw $ra, 0($sp)55; O32-PIC-NEXT: lui $1, %hi($BB0_4-$BB0_2)56; O32-PIC-NEXT: bal $BB0_257; O32-PIC-NEXT: addiu $1, $1, %lo($BB0_4-$BB0_2)58; O32-PIC-NEXT: $BB0_2: # %entry59; O32-PIC-NEXT: addu $1, $ra, $160; O32-PIC-NEXT: lw $ra, 0($sp)61; O32-PIC-NEXT: jr $162; O32-PIC-NEXT: addiu $sp, $sp, 863; O32-PIC-NEXT: $BB0_3: # %then64; O32-PIC-NEXT: lw $1, %got(x)($2)65; O32-PIC-NEXT: addiu $2, $zero, 166; O32-PIC-NEXT: sw $2, 0($1)67; O32-PIC-NEXT: $BB0_4: # %end68; O32-PIC-NEXT: jr $ra69; O32-PIC-NEXT: nop70;71; O32-STATIC-LABEL: test1:72; O32-STATIC: # %bb.0: # %entry73; O32-STATIC-NEXT: bnez $4, $BB0_274; O32-STATIC-NEXT: nop75; O32-STATIC-NEXT: # %bb.1: # %entry76; O32-STATIC-NEXT: j $BB0_377; O32-STATIC-NEXT: nop78; O32-STATIC-NEXT: $BB0_2: # %then79; O32-STATIC-NEXT: lui $1, %hi(x)80; O32-STATIC-NEXT: addiu $2, $zero, 181; O32-STATIC-NEXT: sw $2, %lo(x)($1)82; O32-STATIC-NEXT: $BB0_3: # %end83; O32-STATIC-NEXT: jr $ra84; O32-STATIC-NEXT: nop85;86; O32-R6-PIC-LABEL: test1:87; O32-R6-PIC: # %bb.0: # %entry88; O32-R6-PIC-NEXT: lui $2, %hi(_gp_disp)89; O32-R6-PIC-NEXT: addiu $2, $2, %lo(_gp_disp)90; O32-R6-PIC-NEXT: bnez $4, $BB0_391; O32-R6-PIC-NEXT: addu $2, $2, $2592; O32-R6-PIC-NEXT: # %bb.1: # %entry93; O32-R6-PIC-NEXT: addiu $sp, $sp, -894; O32-R6-PIC-NEXT: sw $ra, 0($sp)95; O32-R6-PIC-NEXT: lui $1, %hi($BB0_4-$BB0_2)96; O32-R6-PIC-NEXT: addiu $1, $1, %lo($BB0_4-$BB0_2)97; O32-R6-PIC-NEXT: balc $BB0_298; O32-R6-PIC-NEXT: $BB0_2: # %entry99; O32-R6-PIC-NEXT: addu $1, $ra, $1100; O32-R6-PIC-NEXT: lw $ra, 0($sp)101; O32-R6-PIC-NEXT: addiu $sp, $sp, 8102; O32-R6-PIC-NEXT: jrc $1103; O32-R6-PIC-NEXT: $BB0_3: # %then104; O32-R6-PIC-NEXT: lw $1, %got(x)($2)105; O32-R6-PIC-NEXT: addiu $2, $zero, 1106; O32-R6-PIC-NEXT: sw $2, 0($1)107; O32-R6-PIC-NEXT: $BB0_4: # %end108; O32-R6-PIC-NEXT: jrc $ra109;110; O32-R6-STATIC-LABEL: test1:111; O32-R6-STATIC: # %bb.0: # %entry112; O32-R6-STATIC-NEXT: bnezc $4, $BB0_2113; O32-R6-STATIC-NEXT: nop114; O32-R6-STATIC-NEXT: # %bb.1: # %entry115; O32-R6-STATIC-NEXT: bc $BB0_3116; O32-R6-STATIC-NEXT: $BB0_2: # %then117; O32-R6-STATIC-NEXT: lui $1, %hi(x)118; O32-R6-STATIC-NEXT: addiu $2, $zero, 1119; O32-R6-STATIC-NEXT: sw $2, %lo(x)($1)120; O32-R6-STATIC-NEXT: $BB0_3: # %end121; O32-R6-STATIC-NEXT: jrc $ra122;123; MIPS4-LABEL: test1:124; MIPS4: # %bb.0: # %entry125; MIPS4-NEXT: lui $1, %hi(%neg(%gp_rel(test1)))126; MIPS4-NEXT: bnez $4, .LBB0_3127; MIPS4-NEXT: daddu $2, $1, $25128; MIPS4-NEXT: # %bb.1: # %entry129; MIPS4-NEXT: daddiu $sp, $sp, -16130; MIPS4-NEXT: sd $ra, 0($sp)131; MIPS4-NEXT: daddiu $1, $zero, %hi(.LBB0_4-.LBB0_2)132; MIPS4-NEXT: dsll $1, $1, 16133; MIPS4-NEXT: bal .LBB0_2134; MIPS4-NEXT: daddiu $1, $1, %lo(.LBB0_4-.LBB0_2)135; MIPS4-NEXT: .LBB0_2: # %entry136; MIPS4-NEXT: daddu $1, $ra, $1137; MIPS4-NEXT: ld $ra, 0($sp)138; MIPS4-NEXT: jr $1139; MIPS4-NEXT: daddiu $sp, $sp, 16140; MIPS4-NEXT: .LBB0_3: # %then141; MIPS4-NEXT: daddiu $1, $2, %lo(%neg(%gp_rel(test1)))142; MIPS4-NEXT: addiu $2, $zero, 1143; MIPS4-NEXT: ld $1, %got_disp(x)($1)144; MIPS4-NEXT: sw $2, 0($1)145; MIPS4-NEXT: .LBB0_4: # %end146; MIPS4-NEXT: jr $ra147; MIPS4-NEXT: nop148;149; MIPS64-LABEL: test1:150; MIPS64: # %bb.0: # %entry151; MIPS64-NEXT: lui $1, %hi(%neg(%gp_rel(test1)))152; MIPS64-NEXT: bnez $4, .LBB0_3153; MIPS64-NEXT: daddu $2, $1, $25154; MIPS64-NEXT: # %bb.1: # %entry155; MIPS64-NEXT: daddiu $sp, $sp, -16156; MIPS64-NEXT: sd $ra, 0($sp)157; MIPS64-NEXT: daddiu $1, $zero, %hi(.LBB0_4-.LBB0_2)158; MIPS64-NEXT: dsll $1, $1, 16159; MIPS64-NEXT: bal .LBB0_2160; MIPS64-NEXT: daddiu $1, $1, %lo(.LBB0_4-.LBB0_2)161; MIPS64-NEXT: .LBB0_2: # %entry162; MIPS64-NEXT: daddu $1, $ra, $1163; MIPS64-NEXT: ld $ra, 0($sp)164; MIPS64-NEXT: jr $1165; MIPS64-NEXT: daddiu $sp, $sp, 16166; MIPS64-NEXT: .LBB0_3: # %then167; MIPS64-NEXT: daddiu $1, $2, %lo(%neg(%gp_rel(test1)))168; MIPS64-NEXT: addiu $2, $zero, 1169; MIPS64-NEXT: ld $1, %got_disp(x)($1)170; MIPS64-NEXT: sw $2, 0($1)171; MIPS64-NEXT: .LBB0_4: # %end172; MIPS64-NEXT: jr $ra173; MIPS64-NEXT: nop174;175; N64-R6-LABEL: test1:176; N64-R6: # %bb.0: # %entry177; N64-R6-NEXT: lui $1, %hi(%neg(%gp_rel(test1)))178; N64-R6-NEXT: bnez $4, .LBB0_3179; N64-R6-NEXT: daddu $2, $1, $25180; N64-R6-NEXT: # %bb.1: # %entry181; N64-R6-NEXT: daddiu $sp, $sp, -16182; N64-R6-NEXT: sd $ra, 0($sp)183; N64-R6-NEXT: daddiu $1, $zero, %hi(.LBB0_4-.LBB0_2)184; N64-R6-NEXT: dsll $1, $1, 16185; N64-R6-NEXT: daddiu $1, $1, %lo(.LBB0_4-.LBB0_2)186; N64-R6-NEXT: balc .LBB0_2187; N64-R6-NEXT: .LBB0_2: # %entry188; N64-R6-NEXT: daddu $1, $ra, $1189; N64-R6-NEXT: ld $ra, 0($sp)190; N64-R6-NEXT: daddiu $sp, $sp, 16191; N64-R6-NEXT: jrc $1192; N64-R6-NEXT: .LBB0_3: # %then193; N64-R6-NEXT: daddiu $1, $2, %lo(%neg(%gp_rel(test1)))194; N64-R6-NEXT: addiu $2, $zero, 1195; N64-R6-NEXT: ld $1, %got_disp(x)($1)196; N64-R6-NEXT: sw $2, 0($1)197; N64-R6-NEXT: .LBB0_4: # %end198; N64-R6-NEXT: jrc $ra199;200; MICROMIPS-LABEL: test1:201; MICROMIPS: # %bb.0: # %entry202; MICROMIPS-NEXT: lui $2, %hi(_gp_disp)203; MICROMIPS-NEXT: addiu $2, $2, %lo(_gp_disp)204; MICROMIPS-NEXT: bnez $4, $BB0_3205; MICROMIPS-NEXT: addu $2, $2, $25206; MICROMIPS-NEXT: # %bb.1: # %entry207; MICROMIPS-NEXT: addiu $sp, $sp, -8208; MICROMIPS-NEXT: sw $ra, 0($sp)209; MICROMIPS-NEXT: lui $1, %hi($BB0_4-$BB0_2)210; MICROMIPS-NEXT: bal $BB0_2211; MICROMIPS-NEXT: addiu $1, $1, %lo($BB0_4-$BB0_2)212; MICROMIPS-NEXT: $BB0_2: # %entry213; MICROMIPS-NEXT: addu $1, $ra, $1214; MICROMIPS-NEXT: lw $ra, 0($sp)215; MICROMIPS-NEXT: jr $1216; MICROMIPS-NEXT: addiu $sp, $sp, 8217; MICROMIPS-NEXT: $BB0_3: # %then218; MICROMIPS-NEXT: lw $2, %got(x)($2)219; MICROMIPS-NEXT: li16 $3, 1220; MICROMIPS-NEXT: sw16 $3, 0($2)221; MICROMIPS-NEXT: $BB0_4: # %end222; MICROMIPS-NEXT: jrc $ra223;224; MICROMIPSSTATIC-LABEL: test1:225; MICROMIPSSTATIC: # %bb.0: # %entry226; MICROMIPSSTATIC-NEXT: bnezc $4, $BB0_2227; MICROMIPSSTATIC-NEXT: # %bb.1: # %entry228; MICROMIPSSTATIC-NEXT: j $BB0_3229; MICROMIPSSTATIC-NEXT: nop230; MICROMIPSSTATIC-NEXT: $BB0_2: # %then231; MICROMIPSSTATIC-NEXT: lui $1, %hi(x)232; MICROMIPSSTATIC-NEXT: li16 $2, 1233; MICROMIPSSTATIC-NEXT: sw $2, %lo(x)($1)234; MICROMIPSSTATIC-NEXT: $BB0_3: # %end235; MICROMIPSSTATIC-NEXT: jrc $ra236;237; MICROMIPSR6STATIC-LABEL: test1:238; MICROMIPSR6STATIC: # %bb.0: # %entry239; MICROMIPSR6STATIC-NEXT: bnezc $4, $BB0_2240; MICROMIPSR6STATIC-NEXT: # %bb.1: # %entry241; MICROMIPSR6STATIC-NEXT: bc $BB0_3242; MICROMIPSR6STATIC-NEXT: $BB0_2: # %then243; MICROMIPSR6STATIC-NEXT: lui $1, %hi(x)244; MICROMIPSR6STATIC-NEXT: li16 $2, 1245; MICROMIPSR6STATIC-NEXT: sw $2, %lo(x)($1)246; MICROMIPSR6STATIC-NEXT: $BB0_3: # %end247; MICROMIPSR6STATIC-NEXT: jrc $ra248;249; MICROMIPSR6PIC-LABEL: test1:250; MICROMIPSR6PIC: # %bb.0: # %entry251; MICROMIPSR6PIC-NEXT: lui $2, %hi(_gp_disp)252; MICROMIPSR6PIC-NEXT: addiu $2, $2, %lo(_gp_disp)253; MICROMIPSR6PIC-NEXT: addu $2, $2, $25254; MICROMIPSR6PIC-NEXT: bnezc $4, $BB0_3255; MICROMIPSR6PIC-NEXT: # %bb.1: # %entry256; MICROMIPSR6PIC-NEXT: addiu $sp, $sp, -8257; MICROMIPSR6PIC-NEXT: sw $ra, 0($sp)258; MICROMIPSR6PIC-NEXT: lui $1, %hi($BB0_4-$BB0_2)259; MICROMIPSR6PIC-NEXT: addiu $1, $1, %lo($BB0_4-$BB0_2)260; MICROMIPSR6PIC-NEXT: balc $BB0_2261; MICROMIPSR6PIC-NEXT: $BB0_2: # %entry262; MICROMIPSR6PIC-NEXT: addu $1, $ra, $1263; MICROMIPSR6PIC-NEXT: lw $ra, 0($sp)264; MICROMIPSR6PIC-NEXT: addiu $sp, $sp, 8265; MICROMIPSR6PIC-NEXT: jic $1, 0266; MICROMIPSR6PIC-NEXT: $BB0_3: # %then267; MICROMIPSR6PIC-NEXT: lw $2, %got(x)($2)268; MICROMIPSR6PIC-NEXT: li16 $3, 1269; MICROMIPSR6PIC-NEXT: sw16 $3, 0($2)270; MICROMIPSR6PIC-NEXT: $BB0_4: # %end271; MICROMIPSR6PIC-NEXT: jrc $ra272 273entry:274 %cmp = icmp eq i32 %s, 0275 br i1 %cmp, label %end, label %then276 277then:278 store i32 1, ptr @x, align 4279 br label %end280 281end:282 ret void283 284}285