143 lines · plain
1; RUN: llc -mtriple=mips-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-MIPS32 %s2; RUN: llc -mtriple=mipsel-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-MIPS32 %s3; RUN: llc -mtriple=mips64-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-MIPS64 %s4; RUN: llc -mtriple=mips64el-unknown-linux-gnu < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-MIPS64 %s5 6define i32 @foo() nounwind noinline uwtable "function-instrument"="xray-always" {7; CHECK: .p2align 28; CHECK-MIPS64-LABEL: .Lxray_sled_0:9; CHECK-MIPS32-LABEL: $xray_sled_0:10; CHECK-NEXT: b [[TMP:(\.L|\$)tmp[0-9]+]]11; CHECK-NEXT: nop12; CHECK-NEXT: nop13; CHECK-NEXT: nop14; CHECK-NEXT: nop15; CHECK-NEXT: nop16; CHECK-NEXT: nop17; CHECK-NEXT: nop18; CHECK-NEXT: nop19; CHECK-NEXT: nop20; CHECK-NEXT: nop21; CHECK-NEXT: nop22; CHECK-MIPS64: nop23; CHECK-MIPS64: nop24; CHECK-MIPS64: nop25; CHECK-MIPS64: nop26; CHECK-NEXT: [[TMP]]:27; CHECK-MIPS32-NEXT: addiu $25, $25, 5228 ret i32 029; CHECK: .p2align 230; CHECK-MIPS64-LABEL: .Lxray_sled_1:31; CHECK-MIPS32-LABEL: $xray_sled_1:32; CHECK-NEXT: b [[TMP:(\.L|\$)tmp[0-9]+]]33; CHECK-NEXT: nop34; CHECK-NEXT: nop35; CHECK-NEXT: nop36; CHECK-NEXT: nop37; CHECK-NEXT: nop38; CHECK-NEXT: nop39; CHECK-NEXT: nop40; CHECK-NEXT: nop41; CHECK-NEXT: nop42; CHECK-NEXT: nop43; CHECK-NEXT: nop44; CHECK-MIPS64: nop45; CHECK-MIPS64: nop46; CHECK-MIPS64: nop47; CHECK-MIPS64: nop48; CHECK: [[TMP]]:49; CHECK-MIPS32: addiu $25, $25, 5250}51; CHECK: .section xray_instr_map,"ao",@progbits,foo52; CHECK-MIPS64: [[TMP:.Ltmp[0-9]+]]:53; CHECK-MIPS64-NEXT: .8byte .Lxray_sled_0-[[TMP]]54; CHECK-MIPS64-NEXT: .8byte .Lfunc_begin0-([[TMP]]+8)55; CHECK-MIPS32: [[TMP:\$tmp[0-9]+]]:56; CHECK-MIPS32-NEXT: .4byte $xray_sled_0-[[TMP]]57; CHECK-MIPS32-NEXT: .4byte $func_begin0-([[TMP]]+4)58 59; We test multiple returns in a single function to make sure we're getting all60; of them with XRay instrumentation.61define i32 @bar(i32 %i) nounwind noinline uwtable "function-instrument"="xray-always" {62; CHECK: .p2align 263; CHECK-MIPS64-LABEL: .Lxray_sled_2:64; CHECK-MIPS32-LABEL: $xray_sled_2:65; CHECK-NEXT: b [[TMP:(\.L|\$)tmp[0-9]+]]66; CHECK-NEXT: nop67; CHECK-NEXT: nop68; CHECK-NEXT: nop69; CHECK-NEXT: nop70; CHECK-NEXT: nop71; CHECK-NEXT: nop72; CHECK-NEXT: nop73; CHECK-NEXT: nop74; CHECK-NEXT: nop75; CHECK-NEXT: nop76; CHECK-NEXT: nop77; CHECK-MIPS64: nop78; CHECK-MIPS64: nop79; CHECK-MIPS64: nop80; CHECK-MIPS64: nop81; CHECK: [[TMP]]:82; CHECK-MIPS32: addiu $25, $25, 5283Test:84 %cond = icmp eq i32 %i, 085 br i1 %cond, label %IsEqual, label %NotEqual86IsEqual:87 ret i32 088; CHECK: .p2align 289; CHECK-MIPS64-LABEL: .Lxray_sled_3:90; CHECK-MIPS32-LABEL: $xray_sled_3:91; CHECK-NEXT: b [[TMP:(\.L|\$)tmp[0-9]+]]92; CHECK-NEXT: nop93; CHECK-NEXT: nop94; CHECK-NEXT: nop95; CHECK-NEXT: nop96; CHECK-NEXT: nop97; CHECK-NEXT: nop98; CHECK-NEXT: nop99; CHECK-NEXT: nop100; CHECK-NEXT: nop101; CHECK-NEXT: nop102; CHECK-NEXT: nop103; CHECK-MIPS64: nop104; CHECK-MIPS64: nop105; CHECK-MIPS64: nop106; CHECK-MIPS64: nop107; CHECK-NEXT: [[TMP]]:108; CHECK-MIPS32: addiu $25, $25, 52 109NotEqual:110 ret i32 1111; CHECK: .p2align 2112; CHECK-MIPS64-LABEL: .Lxray_sled_4:113; CHECK-MIPS32-LABEL: $xray_sled_4:114; CHECK-NEXT: b [[TMP:(\.L|\$)tmp[0-9]+]]115; CHECK-NEXT: nop116; CHECK-NEXT: nop117; CHECK-NEXT: nop118; CHECK-NEXT: nop119; CHECK-NEXT: nop120; CHECK-NEXT: nop121; CHECK-NEXT: nop122; CHECK-NEXT: nop123; CHECK-NEXT: nop124; CHECK-NEXT: nop125; CHECK-NEXT: nop126; CHECK-MIPS64: nop127; CHECK-MIPS64: nop128; CHECK-MIPS64: nop129; CHECK-MIPS64: nop130; CHECK-NEXT: [[TMP]]:131; CHECK-MIPS32: addiu $25, $25, 52132}133; CHECK: .section xray_instr_map,"ao",@progbits,bar134; CHECK-MIPS64: .8byte .Lxray_sled_2135; CHECK-MIPS64: .8byte .Lxray_sled_3136; CHECK-MIPS64: .8byte .Lxray_sled_4137; CHECK-MIPS32: [[TMP:\$tmp[0-9]+]]:138; CHECK-MIPS32-NEXT: .4byte $xray_sled_2-[[TMP]]139; CHECK-MIPS32: [[TMP:\$tmp[0-9]+]]:140; CHECK-MIPS32-NEXT: .4byte $xray_sled_3-[[TMP]]141; CHECK-MIPS32: [[TMP:\$tmp[0-9]+]]:142; CHECK-MIPS32-NEXT: .4byte $xray_sled_4-[[TMP]]143