274 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=ve -exception-model=sjlj < %s | FileCheck %s3; RUN: llc -mtriple=ve -exception-model=sjlj -relocation-model=pic < %s | \4; RUN: FileCheck --check-prefix=PIC %s5 6@SomeGlobal = external dso_local global i87 8define dso_local i32 @foo(i32 %arg) local_unnamed_addr personality ptr @__gxx_personality_sj0 {9; CHECK-LABEL: foo:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: st %s9, (, %s11)12; CHECK-NEXT: st %s10, 8(, %s11)13; CHECK-NEXT: or %s9, 0, %s1114; CHECK-NEXT: lea %s11, -352(, %s11)15; CHECK-NEXT: brge.l %s11, %s8, .LBB0_816; CHECK-NEXT: # %bb.7: # %entry17; CHECK-NEXT: ld %s61, 24(, %s14)18; CHECK-NEXT: or %s62, 0, %s019; CHECK-NEXT: lea %s63, 31520; CHECK-NEXT: shm.l %s63, (%s61)21; CHECK-NEXT: shm.l %s8, 8(%s61)22; CHECK-NEXT: shm.l %s11, 16(%s61)23; CHECK-NEXT: monc24; CHECK-NEXT: or %s0, 0, %s6225; CHECK-NEXT: .LBB0_8: # %entry26; CHECK-NEXT: st %s18, 48(, %s9) # 8-byte Folded Spill27; CHECK-NEXT: st %s19, 56(, %s9) # 8-byte Folded Spill28; CHECK-NEXT: st %s20, 64(, %s9) # 8-byte Folded Spill29; CHECK-NEXT: st %s21, 72(, %s9) # 8-byte Folded Spill30; CHECK-NEXT: st %s22, 80(, %s9) # 8-byte Folded Spill31; CHECK-NEXT: st %s23, 88(, %s9) # 8-byte Folded Spill32; CHECK-NEXT: st %s24, 96(, %s9) # 8-byte Folded Spill33; CHECK-NEXT: st %s25, 104(, %s9) # 8-byte Folded Spill34; CHECK-NEXT: st %s26, 112(, %s9) # 8-byte Folded Spill35; CHECK-NEXT: st %s27, 120(, %s9) # 8-byte Folded Spill36; CHECK-NEXT: st %s28, 128(, %s9) # 8-byte Folded Spill37; CHECK-NEXT: st %s29, 136(, %s9) # 8-byte Folded Spill38; CHECK-NEXT: st %s30, 144(, %s9) # 8-byte Folded Spill39; CHECK-NEXT: st %s31, 152(, %s9) # 8-byte Folded Spill40; CHECK-NEXT: st %s32, 160(, %s9) # 8-byte Folded Spill41; CHECK-NEXT: st %s33, 168(, %s9) # 8-byte Folded Spill42; CHECK-NEXT: lea %s0, __gxx_personality_sj0@lo43; CHECK-NEXT: and %s0, %s0, (32)044; CHECK-NEXT: lea.sl %s0, __gxx_personality_sj0@hi(, %s0)45; CHECK-NEXT: st %s0, -56(, %s9)46; CHECK-NEXT: lea %s0, GCC_except_table0@lo47; CHECK-NEXT: and %s0, %s0, (32)048; CHECK-NEXT: lea.sl %s0, GCC_except_table0@hi(, %s0)49; CHECK-NEXT: st %s0, -48(, %s9)50; CHECK-NEXT: st %s9, -40(, %s9)51; CHECK-NEXT: st %s11, -24(, %s9)52; CHECK-NEXT: lea %s0, .LBB0_3@lo53; CHECK-NEXT: and %s0, %s0, (32)054; CHECK-NEXT: lea.sl %s0, .LBB0_3@hi(, %s0)55; CHECK-NEXT: st %s0, -32(, %s9)56; CHECK-NEXT: lea %s0, _Unwind_SjLj_Register@lo57; CHECK-NEXT: and %s0, %s0, (32)058; CHECK-NEXT: lea.sl %s12, _Unwind_SjLj_Register@hi(, %s0)59; CHECK-NEXT: lea %s0, -104(, %s9)60; CHECK-NEXT: bsic %s10, (, %s12)61; CHECK-NEXT: or %s0, 1, (0)162; CHECK-NEXT: st %s0, -96(, %s9)63; CHECK-NEXT: .Ltmp0:64; CHECK-NEXT: lea %s0, errorbar@lo65; CHECK-NEXT: and %s0, %s0, (32)066; CHECK-NEXT: lea.sl %s12, errorbar@hi(, %s0)67; CHECK-NEXT: bsic %s10, (, %s12)68; CHECK-NEXT: .Ltmp1:69; CHECK-NEXT: # %bb.1: # %exit70; CHECK-NEXT: lea %s0, _Unwind_SjLj_Unregister@lo71; CHECK-NEXT: and %s0, %s0, (32)072; CHECK-NEXT: lea.sl %s12, _Unwind_SjLj_Unregister@hi(, %s0)73; CHECK-NEXT: lea %s0, -104(, %s9)74; CHECK-NEXT: bsic %s10, (, %s12)75; CHECK-NEXT: or %s0, 0, (0)176; CHECK-NEXT: .LBB0_2: # %exit77; CHECK-NEXT: ld %s33, 168(, %s9) # 8-byte Folded Reload78; CHECK-NEXT: ld %s32, 160(, %s9) # 8-byte Folded Reload79; CHECK-NEXT: ld %s31, 152(, %s9) # 8-byte Folded Reload80; CHECK-NEXT: ld %s30, 144(, %s9) # 8-byte Folded Reload81; CHECK-NEXT: ld %s29, 136(, %s9) # 8-byte Folded Reload82; CHECK-NEXT: ld %s28, 128(, %s9) # 8-byte Folded Reload83; CHECK-NEXT: ld %s27, 120(, %s9) # 8-byte Folded Reload84; CHECK-NEXT: ld %s26, 112(, %s9) # 8-byte Folded Reload85; CHECK-NEXT: ld %s25, 104(, %s9) # 8-byte Folded Reload86; CHECK-NEXT: ld %s24, 96(, %s9) # 8-byte Folded Reload87; CHECK-NEXT: ld %s23, 88(, %s9) # 8-byte Folded Reload88; CHECK-NEXT: ld %s22, 80(, %s9) # 8-byte Folded Reload89; CHECK-NEXT: ld %s21, 72(, %s9) # 8-byte Folded Reload90; CHECK-NEXT: ld %s20, 64(, %s9) # 8-byte Folded Reload91; CHECK-NEXT: ld %s19, 56(, %s9) # 8-byte Folded Reload92; CHECK-NEXT: ld %s18, 48(, %s9) # 8-byte Folded Reload93; CHECK-NEXT: or %s11, 0, %s994; CHECK-NEXT: ld %s10, 8(, %s11)95; CHECK-NEXT: ld %s9, (, %s11)96; CHECK-NEXT: b.l.t (, %s10)97; CHECK-NEXT: .LBB0_3:98; CHECK-NEXT: ldl.zx %s0, -96(, %s9)99; CHECK-NEXT: brgt.l 1, %s0, .LBB0_4100; CHECK-NEXT: # %bb.5:101; CHECK-NEXT: lea %s0, abort@lo102; CHECK-NEXT: and %s0, %s0, (32)0103; CHECK-NEXT: lea.sl %s0, abort@hi(, %s0)104; CHECK-NEXT: bsic %s10, (, %s0)105; CHECK-NEXT: .LBB0_4:106; CHECK-NEXT: lea %s1, .LJTI0_0@lo107; CHECK-NEXT: and %s1, %s1, (32)0108; CHECK-NEXT: lea.sl %s1, .LJTI0_0@hi(, %s1)109; CHECK-NEXT: sll %s0, %s0, 3110; CHECK-NEXT: ld %s0, (%s0, %s1)111; CHECK-NEXT: b.l.t (, %s0)112; CHECK-NEXT: .LBB0_6: # %handle113; CHECK-NEXT: .Ltmp2:114; CHECK-NEXT: ld %s0, -88(, %s9)115; CHECK-NEXT: ld %s0, -80(, %s9)116; CHECK-NEXT: lea %s0, _Unwind_SjLj_Unregister@lo117; CHECK-NEXT: and %s0, %s0, (32)0118; CHECK-NEXT: lea.sl %s12, _Unwind_SjLj_Unregister@hi(, %s0)119; CHECK-NEXT: lea %s0, -104(, %s9)120; CHECK-NEXT: bsic %s10, (, %s12)121; CHECK-NEXT: or %s0, 1, (0)1122; CHECK-NEXT: br.l.t .LBB0_2123;124; PIC-LABEL: foo:125; PIC: # %bb.0: # %entry126; PIC-NEXT: st %s9, (, %s11)127; PIC-NEXT: st %s10, 8(, %s11)128; PIC-NEXT: st %s15, 24(, %s11)129; PIC-NEXT: st %s16, 32(, %s11)130; PIC-NEXT: or %s9, 0, %s11131; PIC-NEXT: lea %s11, -352(, %s11)132; PIC-NEXT: brge.l %s11, %s8, .LBB0_8133; PIC-NEXT: # %bb.7: # %entry134; PIC-NEXT: ld %s61, 24(, %s14)135; PIC-NEXT: or %s62, 0, %s0136; PIC-NEXT: lea %s63, 315137; PIC-NEXT: shm.l %s63, (%s61)138; PIC-NEXT: shm.l %s8, 8(%s61)139; PIC-NEXT: shm.l %s11, 16(%s61)140; PIC-NEXT: monc141; PIC-NEXT: or %s0, 0, %s62142; PIC-NEXT: .LBB0_8: # %entry143; PIC-NEXT: st %s18, 48(, %s9) # 8-byte Folded Spill144; PIC-NEXT: st %s19, 56(, %s9) # 8-byte Folded Spill145; PIC-NEXT: st %s20, 64(, %s9) # 8-byte Folded Spill146; PIC-NEXT: st %s21, 72(, %s9) # 8-byte Folded Spill147; PIC-NEXT: st %s22, 80(, %s9) # 8-byte Folded Spill148; PIC-NEXT: st %s23, 88(, %s9) # 8-byte Folded Spill149; PIC-NEXT: st %s24, 96(, %s9) # 8-byte Folded Spill150; PIC-NEXT: st %s25, 104(, %s9) # 8-byte Folded Spill151; PIC-NEXT: st %s26, 112(, %s9) # 8-byte Folded Spill152; PIC-NEXT: st %s27, 120(, %s9) # 8-byte Folded Spill153; PIC-NEXT: st %s28, 128(, %s9) # 8-byte Folded Spill154; PIC-NEXT: st %s29, 136(, %s9) # 8-byte Folded Spill155; PIC-NEXT: st %s30, 144(, %s9) # 8-byte Folded Spill156; PIC-NEXT: st %s31, 152(, %s9) # 8-byte Folded Spill157; PIC-NEXT: st %s32, 160(, %s9) # 8-byte Folded Spill158; PIC-NEXT: st %s33, 168(, %s9) # 8-byte Folded Spill159; PIC-NEXT: lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)160; PIC-NEXT: and %s15, %s15, (32)0161; PIC-NEXT: sic %s16162; PIC-NEXT: lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)163; PIC-NEXT: lea %s0, __gxx_personality_sj0@got_lo164; PIC-NEXT: and %s0, %s0, (32)0165; PIC-NEXT: lea.sl %s0, __gxx_personality_sj0@got_hi(, %s0)166; PIC-NEXT: ld %s0, (%s0, %s15)167; PIC-NEXT: st %s0, -56(, %s9)168; PIC-NEXT: lea %s0, GCC_except_table0@gotoff_lo169; PIC-NEXT: and %s0, %s0, (32)0170; PIC-NEXT: lea.sl %s0, GCC_except_table0@gotoff_hi(%s0, %s15)171; PIC-NEXT: st %s0, -48(, %s9)172; PIC-NEXT: st %s9, -40(, %s9)173; PIC-NEXT: st %s11, -24(, %s9)174; PIC-NEXT: lea %s0, .LBB0_3@gotoff_lo175; PIC-NEXT: and %s0, %s0, (32)0176; PIC-NEXT: lea.sl %s0, .LBB0_3@gotoff_hi(%s0, %s15)177; PIC-NEXT: st %s0, -32(, %s9)178; PIC-NEXT: lea %s12, _Unwind_SjLj_Register@plt_lo(-24)179; PIC-NEXT: and %s12, %s12, (32)0180; PIC-NEXT: sic %s16181; PIC-NEXT: lea.sl %s12, _Unwind_SjLj_Register@plt_hi(%s16, %s12)182; PIC-NEXT: lea %s0, -104(, %s9)183; PIC-NEXT: bsic %s10, (, %s12)184; PIC-NEXT: or %s0, 1, (0)1185; PIC-NEXT: st %s0, -96(, %s9)186; PIC-NEXT: .Ltmp0:187; PIC-NEXT: lea %s12, errorbar@plt_lo(-24)188; PIC-NEXT: and %s12, %s12, (32)0189; PIC-NEXT: sic %s16190; PIC-NEXT: lea.sl %s12, errorbar@plt_hi(%s16, %s12)191; PIC-NEXT: bsic %s10, (, %s12)192; PIC-NEXT: .Ltmp1:193; PIC-NEXT: # %bb.1: # %exit194; PIC-NEXT: lea %s12, _Unwind_SjLj_Unregister@plt_lo(-24)195; PIC-NEXT: and %s12, %s12, (32)0196; PIC-NEXT: sic %s16197; PIC-NEXT: lea.sl %s12, _Unwind_SjLj_Unregister@plt_hi(%s16, %s12)198; PIC-NEXT: lea %s0, -104(, %s9)199; PIC-NEXT: bsic %s10, (, %s12)200; PIC-NEXT: or %s0, 0, (0)1201; PIC-NEXT: .LBB0_2: # %exit202; PIC-NEXT: ld %s33, 168(, %s9) # 8-byte Folded Reload203; PIC-NEXT: ld %s32, 160(, %s9) # 8-byte Folded Reload204; PIC-NEXT: ld %s31, 152(, %s9) # 8-byte Folded Reload205; PIC-NEXT: ld %s30, 144(, %s9) # 8-byte Folded Reload206; PIC-NEXT: ld %s29, 136(, %s9) # 8-byte Folded Reload207; PIC-NEXT: ld %s28, 128(, %s9) # 8-byte Folded Reload208; PIC-NEXT: ld %s27, 120(, %s9) # 8-byte Folded Reload209; PIC-NEXT: ld %s26, 112(, %s9) # 8-byte Folded Reload210; PIC-NEXT: ld %s25, 104(, %s9) # 8-byte Folded Reload211; PIC-NEXT: ld %s24, 96(, %s9) # 8-byte Folded Reload212; PIC-NEXT: ld %s23, 88(, %s9) # 8-byte Folded Reload213; PIC-NEXT: ld %s22, 80(, %s9) # 8-byte Folded Reload214; PIC-NEXT: ld %s21, 72(, %s9) # 8-byte Folded Reload215; PIC-NEXT: ld %s20, 64(, %s9) # 8-byte Folded Reload216; PIC-NEXT: ld %s19, 56(, %s9) # 8-byte Folded Reload217; PIC-NEXT: ld %s18, 48(, %s9) # 8-byte Folded Reload218; PIC-NEXT: or %s11, 0, %s9219; PIC-NEXT: ld %s16, 32(, %s11)220; PIC-NEXT: ld %s15, 24(, %s11)221; PIC-NEXT: ld %s10, 8(, %s11)222; PIC-NEXT: ld %s9, (, %s11)223; PIC-NEXT: b.l.t (, %s10)224; PIC-NEXT: .LBB0_3:225; PIC-NEXT: ldl.zx %s0, -96(, %s9)226; PIC-NEXT: lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)227; PIC-NEXT: and %s15, %s15, (32)0228; PIC-NEXT: sic %s16229; PIC-NEXT: lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)230; PIC-NEXT: brgt.l 1, %s0, .LBB0_4231; PIC-NEXT: # %bb.5:232; PIC-NEXT: lea %s0, abort@plt_lo(-24)233; PIC-NEXT: and %s0, %s0, (32)0234; PIC-NEXT: sic %s16235; PIC-NEXT: lea.sl %s0, abort@plt_hi(%s16, %s0)236; PIC-NEXT: bsic %s10, (, %s0)237; PIC-NEXT: .LBB0_4:238; PIC-NEXT: lea %s1, .LJTI0_0@gotoff_lo239; PIC-NEXT: and %s1, %s1, (32)0240; PIC-NEXT: lea.sl %s1, .LJTI0_0@gotoff_hi(%s1, %s15)241; PIC-NEXT: sll %s0, %s0, 2242; PIC-NEXT: ldl.zx %s0, (%s0, %s1)243; PIC-NEXT: lea %s1, foo@gotoff_lo244; PIC-NEXT: and %s1, %s1, (32)0245; PIC-NEXT: lea.sl %s1, foo@gotoff_hi(%s1, %s15)246; PIC-NEXT: adds.l %s0, %s0, %s1247; PIC-NEXT: b.l.t (, %s0)248; PIC-NEXT: .LBB0_6: # %handle249; PIC-NEXT: .Ltmp2:250; PIC-NEXT: ld %s0, -88(, %s9)251; PIC-NEXT: ld %s0, -80(, %s9)252; PIC-NEXT: lea %s12, _Unwind_SjLj_Unregister@plt_lo(-24)253; PIC-NEXT: and %s12, %s12, (32)0254; PIC-NEXT: sic %s16255; PIC-NEXT: lea.sl %s12, _Unwind_SjLj_Unregister@plt_hi(%s16, %s12)256; PIC-NEXT: lea %s0, -104(, %s9)257; PIC-NEXT: bsic %s10, (, %s12)258; PIC-NEXT: or %s0, 1, (0)1259; PIC-NEXT: br.l.t .LBB0_2260entry:261 invoke void @errorbar() to label %exit unwind label %handle262 263handle:264 %error = landingpad { ptr, i32 } catch ptr @SomeGlobal265 ret i32 1266 267exit:268 ret i32 0269}270 271declare dso_local void @errorbar() local_unnamed_addr272 273declare dso_local i32 @__gxx_personality_sj0(...)274