brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · 2713d61 Raw
214 lines · plain
1; RUN: llc < %s -mtriple=ve | FileCheck %s2; RUN: llc < %s -mtriple=ve -relocation-model=pic | \3; RUN:     FileCheck %s -check-prefix=PIC4 5%struct.__jmp_buf_tag = type { [25 x i64], i64, [16 x i64] }6 7@buf = common global [1 x %struct.__jmp_buf_tag] zeroinitializer, align 88 9; Function Attrs: noinline nounwind optnone10define signext i32 @t_setjmp() {11; CHECK-LABEL: t_setjmp:12; CHECK:       .LBB{{[0-9]+}}_5:13; CHECK-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill14; CHECK-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill15; CHECK-NEXT:    st %s20, 64(, %s9) # 8-byte Folded Spill16; CHECK-NEXT:    st %s21, 72(, %s9) # 8-byte Folded Spill17; CHECK-NEXT:    st %s22, 80(, %s9) # 8-byte Folded Spill18; CHECK-NEXT:    st %s23, 88(, %s9) # 8-byte Folded Spill19; CHECK-NEXT:    st %s24, 96(, %s9) # 8-byte Folded Spill20; CHECK-NEXT:    st %s25, 104(, %s9) # 8-byte Folded Spill21; CHECK-NEXT:    st %s26, 112(, %s9) # 8-byte Folded Spill22; CHECK-NEXT:    st %s27, 120(, %s9) # 8-byte Folded Spill23; CHECK-NEXT:    st %s28, 128(, %s9) # 8-byte Folded Spill24; CHECK-NEXT:    st %s29, 136(, %s9) # 8-byte Folded Spill25; CHECK-NEXT:    st %s30, 144(, %s9) # 8-byte Folded Spill26; CHECK-NEXT:    st %s31, 152(, %s9) # 8-byte Folded Spill27; CHECK-NEXT:    st %s32, 160(, %s9) # 8-byte Folded Spill28; CHECK-NEXT:    st %s33, 168(, %s9) # 8-byte Folded Spill29; CHECK-NEXT:    lea %s0, buf@lo30; CHECK-NEXT:    and %s0, %s0, (32)031; CHECK-NEXT:    lea.sl %s0, buf@hi(, %s0)32; CHECK-NEXT:    st %s9, (, %s0)33; CHECK-NEXT:    st %s11, 16(, %s0)34; CHECK-NEXT:    lea %s1, .LBB{{[0-9]+}}_3@lo35; CHECK-NEXT:    and %s1, %s1, (32)036; CHECK-NEXT:    lea.sl %s1, .LBB{{[0-9]+}}_3@hi(, %s1)37; CHECK-NEXT:    st %s1, 8(, %s0)38; CHECK-NEXT:    # EH_SJlJ_SETUP .LBB{{[0-9]+}}_339; CHECK-NEXT:  # %bb.1:40; CHECK-NEXT:    lea %s0, 041; CHECK-NEXT:    br.l.t .LBB{{[0-9]+}}_242; CHECK-NEXT:  .LBB{{[0-9]+}}_3: # Block address taken43; CHECK-NEXT:    lea %s0, 144; CHECK-NEXT:  .LBB{{[0-9]+}}_2:45; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)146; CHECK-NEXT:    ld %s33, 168(, %s9) # 8-byte Folded Reload47; CHECK-NEXT:    ld %s32, 160(, %s9) # 8-byte Folded Reload48; CHECK-NEXT:    ld %s31, 152(, %s9) # 8-byte Folded Reload49; CHECK-NEXT:    ld %s30, 144(, %s9) # 8-byte Folded Reload50; CHECK-NEXT:    ld %s29, 136(, %s9) # 8-byte Folded Reload51; CHECK-NEXT:    ld %s28, 128(, %s9) # 8-byte Folded Reload52; CHECK-NEXT:    ld %s27, 120(, %s9) # 8-byte Folded Reload53; CHECK-NEXT:    ld %s26, 112(, %s9) # 8-byte Folded Reload54; CHECK-NEXT:    ld %s25, 104(, %s9) # 8-byte Folded Reload55; CHECK-NEXT:    ld %s24, 96(, %s9) # 8-byte Folded Reload56; CHECK-NEXT:    ld %s23, 88(, %s9) # 8-byte Folded Reload57; CHECK-NEXT:    ld %s22, 80(, %s9) # 8-byte Folded Reload58; CHECK-NEXT:    ld %s21, 72(, %s9) # 8-byte Folded Reload59; CHECK-NEXT:    ld %s20, 64(, %s9) # 8-byte Folded Reload60; CHECK-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload61; CHECK-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload62; CHECK-NEXT:    or %s11, 0, %s963;64; PIC-LABEL: t_setjmp:65; PIC:       # %bb.0:66; PIC-NEXT:    st %s9, (, %s11)67; PIC-NEXT:    st %s10, 8(, %s11)68; PIC-NEXT:    st %s15, 24(, %s11)69; PIC-NEXT:    st %s16, 32(, %s11)70; PIC-NEXT:    or %s9, 0, %s1171; PIC-NEXT:    lea %s11, -176(, %s11)72; PIC-NEXT:    brge.l %s11, %s8, .LBB0_573; PIC-NEXT:  # %bb.4:74; PIC-NEXT:    ld %s61, 24(, %s14)75; PIC-NEXT:    or %s62, 0, %s076; PIC-NEXT:    lea %s63, 31577; PIC-NEXT:    shm.l %s63, (%s61)78; PIC-NEXT:    shm.l %s8, 8(%s61)79; PIC-NEXT:    shm.l %s11, 16(%s61)80; PIC-NEXT:    monc81; PIC-NEXT:    or %s0, 0, %s6282; PIC-NEXT:  .LBB0_5:83; PIC-NEXT:    st %s18, 48(, %s9) # 8-byte Folded Spill84; PIC-NEXT:    st %s19, 56(, %s9) # 8-byte Folded Spill85; PIC-NEXT:    st %s20, 64(, %s9) # 8-byte Folded Spill86; PIC-NEXT:    st %s21, 72(, %s9) # 8-byte Folded Spill87; PIC-NEXT:    st %s22, 80(, %s9) # 8-byte Folded Spill88; PIC-NEXT:    st %s23, 88(, %s9) # 8-byte Folded Spill89; PIC-NEXT:    st %s24, 96(, %s9) # 8-byte Folded Spill90; PIC-NEXT:    st %s25, 104(, %s9) # 8-byte Folded Spill91; PIC-NEXT:    st %s26, 112(, %s9) # 8-byte Folded Spill92; PIC-NEXT:    st %s27, 120(, %s9) # 8-byte Folded Spill93; PIC-NEXT:    st %s28, 128(, %s9) # 8-byte Folded Spill94; PIC-NEXT:    st %s29, 136(, %s9) # 8-byte Folded Spill95; PIC-NEXT:    st %s30, 144(, %s9) # 8-byte Folded Spill96; PIC-NEXT:    st %s31, 152(, %s9) # 8-byte Folded Spill97; PIC-NEXT:    st %s32, 160(, %s9) # 8-byte Folded Spill98; PIC-NEXT:    st %s33, 168(, %s9) # 8-byte Folded Spill99; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)100; PIC-NEXT:    and %s15, %s15, (32)0101; PIC-NEXT:    sic %s16102; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)103; PIC-NEXT:    lea %s0, buf@got_lo104; PIC-NEXT:    and %s0, %s0, (32)0105; PIC-NEXT:    lea.sl %s0, buf@got_hi(, %s0)106; PIC-NEXT:    ld %s0, (%s0, %s15)107; PIC-NEXT:    st %s9, (, %s0)108; PIC-NEXT:    st %s11, 16(, %s0)109; PIC-NEXT:    lea %s1, .LBB0_3@gotoff_lo110; PIC-NEXT:    and %s1, %s1, (32)0111; PIC-NEXT:    lea.sl %s1, .LBB0_3@gotoff_hi(%s1, %s15)112; PIC-NEXT:    st %s1, 8(, %s0)113; PIC-NEXT:    # EH_SJlJ_SETUP .LBB0_3114; PIC-NEXT:  # %bb.1:115; PIC-NEXT:    lea %s0, 0116; PIC-NEXT:    br.l.t .LBB0_2117; PIC-NEXT:  .LBB0_3: # Block address taken118; PIC-NEXT:    lea %s0, 1119; PIC-NEXT:  .LBB0_2:120; PIC-NEXT:    adds.w.sx %s0, %s0, (0)1121; PIC-NEXT:    ld %s33, 168(, %s9) # 8-byte Folded Reload122; PIC-NEXT:    ld %s32, 160(, %s9) # 8-byte Folded Reload123; PIC-NEXT:    ld %s31, 152(, %s9) # 8-byte Folded Reload124; PIC-NEXT:    ld %s30, 144(, %s9) # 8-byte Folded Reload125; PIC-NEXT:    ld %s29, 136(, %s9) # 8-byte Folded Reload126; PIC-NEXT:    ld %s28, 128(, %s9) # 8-byte Folded Reload127; PIC-NEXT:    ld %s27, 120(, %s9) # 8-byte Folded Reload128; PIC-NEXT:    ld %s26, 112(, %s9) # 8-byte Folded Reload129; PIC-NEXT:    ld %s25, 104(, %s9) # 8-byte Folded Reload130; PIC-NEXT:    ld %s24, 96(, %s9) # 8-byte Folded Reload131; PIC-NEXT:    ld %s23, 88(, %s9) # 8-byte Folded Reload132; PIC-NEXT:    ld %s22, 80(, %s9) # 8-byte Folded Reload133; PIC-NEXT:    ld %s21, 72(, %s9) # 8-byte Folded Reload134; PIC-NEXT:    ld %s20, 64(, %s9) # 8-byte Folded Reload135; PIC-NEXT:    ld %s19, 56(, %s9) # 8-byte Folded Reload136; PIC-NEXT:    ld %s18, 48(, %s9) # 8-byte Folded Reload137; PIC-NEXT:    or %s11, 0, %s9138; PIC-NEXT:    ld %s16, 32(, %s11)139; PIC-NEXT:    ld %s15, 24(, %s11)140; PIC-NEXT:    ld %s10, 8(, %s11)141; PIC-NEXT:    ld %s9, (, %s11)142; PIC-NEXT:    b.l.t (, %s10)143  %1 = call ptr @llvm.frameaddress(i32 0)144  store ptr %1, ptr @buf, align 8145  %2 = call ptr @llvm.stacksave()146  store ptr %2, ptr getelementptr inbounds (ptr, ptr @buf, i64 2), align 8147  %3 = call i32 @llvm.eh.sjlj.setjmp(ptr @buf)148  ret i32 %3149}150 151; Function Attrs: nounwind readnone152declare ptr @llvm.frameaddress(i32)153 154; Function Attrs: nounwind155declare ptr @llvm.stacksave()156 157; Function Attrs: nounwind158declare i32 @llvm.eh.sjlj.setjmp(ptr)159 160; Function Attrs: noinline nounwind optnone161define void @t_longjmp() {162; CHECK-LABEL: t_longjmp:163; CHECK:       .LBB{{[0-9]+}}_2:164; CHECK-NEXT:    lea %s0, buf@lo165; CHECK-NEXT:    and %s0, %s0, (32)0166; CHECK-NEXT:    lea.sl %s0, buf@hi(, %s0)167; CHECK-NEXT:    ld %s9, (, %s0)168; CHECK-NEXT:    ld %s1, 8(, %s0)169; CHECK-NEXT:    or %s10, 0, %s0170; CHECK-NEXT:    ld %s11, 16(, %s0)171; CHECK-NEXT:    b.l.t (, %s1)172;173; PIC-LABEL: t_longjmp:174; PIC:       # %bb.0:175; PIC-NEXT:    st %s9, (, %s11)176; PIC-NEXT:    st %s10, 8(, %s11)177; PIC-NEXT:    st %s15, 24(, %s11)178; PIC-NEXT:    st %s16, 32(, %s11)179; PIC-NEXT:    or %s9, 0, %s11180; PIC-NEXT:    lea %s11, -176(, %s11)181; PIC-NEXT:    brge.l.t %s11, %s8, .LBB1_2182; PIC-NEXT:  # %bb.1:183; PIC-NEXT:    ld %s61, 24(, %s14)184; PIC-NEXT:    or %s62, 0, %s0185; PIC-NEXT:    lea %s63, 315186; PIC-NEXT:    shm.l %s63, (%s61)187; PIC-NEXT:    shm.l %s8, 8(%s61)188; PIC-NEXT:    shm.l %s11, 16(%s61)189; PIC-NEXT:    monc190; PIC-NEXT:    or %s0, 0, %s62191; PIC-NEXT:  .LBB1_2:192; PIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)193; PIC-NEXT:    and %s15, %s15, (32)0194; PIC-NEXT:    sic %s16195; PIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)196; PIC-NEXT:    lea %s0, buf@got_lo197; PIC-NEXT:    and %s0, %s0, (32)0198; PIC-NEXT:    lea.sl %s0, buf@got_hi(, %s0)199; PIC-NEXT:    ld %s0, (%s0, %s15)200; PIC-NEXT:    ld %s9, (, %s0)201; PIC-NEXT:    ld %s1, 8(, %s0)202; PIC-NEXT:    or %s10, 0, %s0203; PIC-NEXT:    ld %s11, 16(, %s0)204; PIC-NEXT:    b.l.t (, %s1)205  call void @llvm.eh.sjlj.longjmp(ptr @buf)206  unreachable207                                                  ; No predecessors!208  ret void209}210 211; Function Attrs: noreturn nounwind212declare void @llvm.eh.sjlj.longjmp(ptr)213 214