brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 8d09c01 Raw
118 lines · plain
1; RUN: llc -O0 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-UNOPT,DEFCM2; RUN: llc -O1 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM3; RUN: llc -O2 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM4; RUN: llc -O3 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,DEFCM5; RUN: llc -O1 -code-model=large < %s | FileCheck %s --check-prefixes=CHECK,CHECK-OPT,LARGE6 7target triple = "aarch64-unknown-linux-gnu"8 9@foo = dso_local global i64 0, align 810@bar = dso_local global i64 0, align 811 12define i64 @multiple() !pcsections !0 {13; CHECK-LABEL: multiple:14; CHECK:       .Lfunc_begin0:15; CHECK:       // %bb.0: // %entry16; CHECK:       .Lpcsection0:17; CHECK-NEXT:    ldr18; CHECK-NEXT:    ret19; CHECK:       .section	section_no_aux,"awo",@progbits,.text20; CHECK-NEXT:  .Lpcsection_base0:21; DEFCM-NEXT:  .word	.Lfunc_begin0-.Lpcsection_base022; LARGE-NEXT:  .xword	.Lfunc_begin0-.Lpcsection_base023; CHECK-NEXT:  .word	.Lfunc_end0-.Lfunc_begin024; CHECK-NEXT:  .section	section_aux_42,"awo",@progbits,.text25; CHECK-NEXT:  .Lpcsection_base1:26; DEFCM-NEXT:  .word	.Lpcsection0-.Lpcsection_base127; LARGE-NEXT:  .xword	.Lpcsection0-.Lpcsection_base128; CHECK-NEXT:  .word	4229; CHECK-NEXT:  .section	section_aux_21264,"awo",@progbits,.text30; CHECK-NEXT:  .Lpcsection_base2:31; DEFCM-NEXT:  .word	.Lpcsection0-.Lpcsection_base232; LARGE-NEXT:  .xword	.Lpcsection0-.Lpcsection_base233; CHECK-NEXT:  .word	2126434; CHECK-NEXT:  .text35entry:36  %0 = load i64, ptr @bar, align 8, !pcsections !137  ret i64 %038}39 40define i64 @test_simple_atomic() {41; CHECK-LABEL: test_simple_atomic:42; CHECK:       .Lpcsection1:43; CHECK-NEXT:    ldr44; CHECK-NOT:   .Lpcsection245; CHECK:         ldr46; CHECK:         add47; CHECK-NEXT:    ret48; CHECK:       .section	section_no_aux,"awo",@progbits,.text49; CHECK-NEXT:  .Lpcsection_base3:50; DEFCM-NEXT:  .word	.Lpcsection1-.Lpcsection_base351; LARGE-NEXT:  .xword	.Lpcsection1-.Lpcsection_base352; CHECK-NEXT:  .text53entry:54  %0 = load atomic i64, ptr @foo monotonic, align 8, !pcsections !055  %1 = load i64, ptr @bar, align 856  %add = add nsw i64 %1, %057  ret i64 %add58}59 60define i64 @test_complex_atomic() {61; CHECK-LABEL: test_complex_atomic:62; ---63; CHECK-OPT:       .Lpcsection2:64; CHECK-OPT-NEXT:    ldxr65; CHECK-OPT:       .Lpcsection3:66; CHECK-OPT-NEXT:    add67; CHECK-OPT:       .Lpcsection4:68; CHECK-OPT-NEXT:    stxr69; CHECK-OPT:       .Lpcsection5:70; CHECK-OPT-NEXT:    cbnz71; ---72; CHECK-UNOPT:     .Lpcsection2:73; CHECK-UNOPT-NEXT:  ldr74; CHECK-UNOPT:     .Lpcsection4:75; CHECK-UNOPT-NEXT:  add76; CHECK-UNOPT:     .Lpcsection5:77; CHECK-UNOPT-NEXT:  ldaxr78; CHECK-UNOPT:     .Lpcsection6:79; CHECK-UNOPT-NEXT:  cmp80; CHECK-UNOPT:     .Lpcsection8:81; CHECK-UNOPT-NEXT:  stlxr82; CHECK-UNOPT:     .Lpcsection9:83; CHECK-UNOPT-NEXT:  cbnz84; CHECK-UNOPT:     .Lpcsection13:85; CHECK-UNOPT-NEXT:  b86; ---87; CHECK-NOT:   .Lpcsection88; CHECK:         ldr89; CHECK:         ret90; CHECK:       .section	section_no_aux,"awo",@progbits,.text91; CHECK-NEXT:  .Lpcsection_base4:92; DEFCM-NEXT:  .word	.Lpcsection2-.Lpcsection_base493; LARGE-NEXT:  .xword	.Lpcsection2-.Lpcsection_base494; CHECK-NEXT:  .Lpcsection_base5:95; DEFCM-NEXT:  .word	.Lpcsection3-.Lpcsection_base596; LARGE-NEXT:  .xword	.Lpcsection3-.Lpcsection_base597; CHECK-NEXT:  .Lpcsection_base6:98; DEFCM-NEXT:  .word	.Lpcsection4-.Lpcsection_base699; LARGE-NEXT:  .xword	.Lpcsection4-.Lpcsection_base6100; CHECK-NEXT:  .Lpcsection_base7:101; DEFCM-NEXT:  .word	.Lpcsection5-.Lpcsection_base7102; LARGE-NEXT:  .xword	.Lpcsection5-.Lpcsection_base7103; CHECK-UNOPT: .word	.Lpcsection13-.Lpcsection_base15104; CHECK-NEXT:  .text105entry:106  %0 = atomicrmw add ptr @foo, i64 1 monotonic, align 8, !pcsections !0107  %1 = load i64, ptr @bar, align 8108  %inc = add nsw i64 %1, 1109  store i64 %inc, ptr @bar, align 8110  %add = add nsw i64 %1, %0111  ret i64 %add112}113 114!0 = !{!"section_no_aux"}115!1 = !{!"section_aux_42", !2, !"section_aux_21264", !3}116!2 = !{i32 42}117!3 = !{i32 21264}118