brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · 945e0df Raw
263 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK3 4@var_char = external thread_local local_unnamed_addr global i8, align 15@var_short = external thread_local local_unnamed_addr global i16, align 26@var_int = external thread_local local_unnamed_addr global i32, align 47@var_long_long = external thread_local local_unnamed_addr global i64, align 88@var_float = external thread_local local_unnamed_addr global float, align 49@var_double = external thread_local local_unnamed_addr global double, align 810 11define dso_local zeroext i8 @test_char_one() {12; CHECK-LABEL: test_char_one:13; CHECK:       # %bb.0: # %entry14; CHECK-NEXT:    addis 3, 2, var_char@got@tprel@ha15; CHECK-NEXT:    ld 3, var_char@got@tprel@l(3)16; CHECK-NEXT:    lbzx 3, 3, var_char@tls17; CHECK-NEXT:    blr18entry:19  %0 = load i8, ptr @var_char, align 1, !tbaa !420  ret i8 %021}22 23define dso_local void @test_char_two(i32 signext %a) {24; CHECK-LABEL: test_char_two:25; CHECK:       # %bb.0: # %entry26; CHECK-NEXT:    addis 4, 2, var_char@got@tprel@ha27; CHECK-NEXT:    ld 4, var_char@got@tprel@l(4)28; CHECK-NEXT:    stbx 3, 4, var_char@tls29; CHECK-NEXT:    blr30entry:31  %conv = trunc i32 %a to i832  store i8 %conv, ptr @var_char, align 1, !tbaa !433  ret void34}35 36define dso_local zeroext i8 @test_char_three(i8 zeroext %a) {37; CHECK-LABEL: test_char_three:38; CHECK:       # %bb.0: # %entry39; CHECK-NEXT:    addis 4, 2, var_char@got@tprel@ha40; CHECK-NEXT:    ld 4, var_char@got@tprel@l(4)41; CHECK-NEXT:    lbzx 5, 4, var_char@tls42; CHECK-NEXT:    add 3, 5, 343; CHECK-NEXT:    stbx 3, 4, var_char@tls44; CHECK-NEXT:    clrldi 3, 3, 5645; CHECK-NEXT:    blr46entry:47  %0 = load i8, ptr @var_char, align 1, !tbaa !448  %add = add i8 %0, %a49  store i8 %add, ptr @var_char, align 1, !tbaa !450  ret i8 %add51}52 53define dso_local signext i16 @test_short_one() {54; CHECK-LABEL: test_short_one:55; CHECK:       # %bb.0: # %entry56; CHECK-NEXT:    addis 3, 2, var_short@got@tprel@ha57; CHECK-NEXT:    ld 3, var_short@got@tprel@l(3)58; CHECK-NEXT:    lhax 3, 3, var_short@tls59; CHECK-NEXT:    blr60entry:61  %0 = load i16, ptr @var_short, align 2, !tbaa !762  ret i16 %063}64 65define dso_local zeroext i16 @test_short_one_zeroext() {66; CHECK-LABEL: test_short_one_zeroext:67; CHECK:       # %bb.0: # %entry68; CHECK-NEXT:    addis 3, 2, var_short@got@tprel@ha69; CHECK-NEXT:    ld 3, var_short@got@tprel@l(3)70; CHECK-NEXT:    lhzx 3, 3, var_short@tls71; CHECK-NEXT:    blr72entry:73  %0 = load i16, ptr @var_short, align 2, !tbaa !774  ret i16 %075}76 77define dso_local void @test_short_two(i32 signext %a) {78; CHECK-LABEL: test_short_two:79; CHECK:       # %bb.0: # %entry80; CHECK-NEXT:    addis 4, 2, var_short@got@tprel@ha81; CHECK-NEXT:    ld 4, var_short@got@tprel@l(4)82; CHECK-NEXT:    sthx 3, 4, var_short@tls83; CHECK-NEXT:    blr84entry:85  %conv = trunc i32 %a to i1686  store i16 %conv, ptr @var_short, align 2, !tbaa !787  ret void88}89 90define dso_local signext i16 @test_short_three(i16 signext %a) {91; CHECK-LABEL: test_short_three:92; CHECK:       # %bb.0: # %entry93; CHECK-NEXT:    addis 4, 2, var_short@got@tprel@ha94; CHECK-NEXT:    ld 4, var_short@got@tprel@l(4)95; CHECK-NEXT:    lhzx 5, 4, var_short@tls96; CHECK-NEXT:    add 3, 5, 397; CHECK-NEXT:    sthx 3, 4, var_short@tls98; CHECK-NEXT:    extsh 3, 399; CHECK-NEXT:    blr100entry:101  %0 = load i16, ptr @var_short, align 2, !tbaa !7102  %add = add i16 %0, %a103  store i16 %add, ptr @var_short, align 2, !tbaa !7104  ret i16 %add105}106 107define dso_local signext i32 @test_int_one() {108; CHECK-LABEL: test_int_one:109; CHECK:       # %bb.0: # %entry110; CHECK-NEXT:    addis 3, 2, var_int@got@tprel@ha111; CHECK-NEXT:    ld 3, var_int@got@tprel@l(3)112; CHECK-NEXT:    lwax 3, 3, var_int@tls113; CHECK-NEXT:    blr114entry:115  %0 = load i32, ptr @var_int, align 4, !tbaa !9116  ret i32 %0117}118 119define dso_local zeroext i32 @test_int_one_zeroext() {120; CHECK-LABEL: test_int_one_zeroext:121; CHECK:       # %bb.0: # %entry122; CHECK-NEXT:    addis 3, 2, var_int@got@tprel@ha123; CHECK-NEXT:    ld 3, var_int@got@tprel@l(3)124; CHECK-NEXT:    lwzx 3, 3, var_int@tls125; CHECK-NEXT:    blr126entry:127  %0 = load i32, ptr @var_int, align 4, !tbaa !9128  ret i32 %0129}130 131define dso_local void @test_int_two(i32 signext %a) {132; CHECK-LABEL: test_int_two:133; CHECK:       # %bb.0: # %entry134; CHECK-NEXT:    addis 4, 2, var_int@got@tprel@ha135; CHECK-NEXT:    ld 4, var_int@got@tprel@l(4)136; CHECK-NEXT:    stwx 3, 4, var_int@tls137; CHECK-NEXT:    blr138entry:139  store i32 %a, ptr @var_int, align 4, !tbaa !9140  ret void141}142 143define dso_local signext i32 @test_int_three(i32 signext %a) {144; CHECK-LABEL: test_int_three:145; CHECK:       # %bb.0: # %entry146; CHECK-NEXT:    addis 4, 2, var_int@got@tprel@ha147; CHECK-NEXT:    ld 4, var_int@got@tprel@l(4)148; CHECK-NEXT:    lwzx 5, 4, var_int@tls149; CHECK-NEXT:    add 3, 5, 3150; CHECK-NEXT:    stwx 3, 4, var_int@tls151; CHECK-NEXT:    extsw 3, 3152; CHECK-NEXT:    blr153entry:154  %0 = load i32, ptr @var_int, align 4, !tbaa !9155  %add = add nsw i32 %0, %a156  store i32 %add, ptr @var_int, align 4, !tbaa !9157  ret i32 %add158}159 160define dso_local i64 @test_longlong_one() {161; CHECK-LABEL: test_longlong_one:162; CHECK:       # %bb.0: # %entry163; CHECK-NEXT:    addis 3, 2, var_long_long@got@tprel@ha164; CHECK-NEXT:    ld 3, var_long_long@got@tprel@l(3)165; CHECK-NEXT:    ldx 3, 3, var_long_long@tls166; CHECK-NEXT:    blr167entry:168  %0 = load i64, ptr @var_long_long, align 8, !tbaa !11169  ret i64 %0170}171 172define dso_local void @test_longlong_two(i32 signext %a) {173; CHECK-LABEL: test_longlong_two:174; CHECK:       # %bb.0: # %entry175; CHECK-NEXT:    addis 4, 2, var_long_long@got@tprel@ha176; CHECK-NEXT:    ld 4, var_long_long@got@tprel@l(4)177; CHECK-NEXT:    stdx 3, 4, var_long_long@tls178; CHECK-NEXT:    blr179entry:180  %conv = sext i32 %a to i64181  store i64 %conv, ptr @var_long_long, align 8, !tbaa !11182  ret void183}184 185define dso_local i64 @test_longlong_three(i64 %a) {186; CHECK-LABEL: test_longlong_three:187; CHECK:       # %bb.0: # %entry188; CHECK-NEXT:    addis 4, 2, var_long_long@got@tprel@ha189; CHECK-NEXT:    ld 4, var_long_long@got@tprel@l(4)190; CHECK-NEXT:    ldx 5, 4, var_long_long@tls191; CHECK-NEXT:    add 3, 5, 3192; CHECK-NEXT:    stdx 3, 4, var_long_long@tls193; CHECK-NEXT:    blr194entry:195  %0 = load i64, ptr @var_long_long, align 8, !tbaa !11196  %add = add nsw i64 %0, %a197  store i64 %add, ptr @var_long_long, align 8, !tbaa !11198  ret i64 %add199}200 201define float @test_float_one() {202; CHECK-LABEL: test_float_one:203; CHECK:       # %bb.0: # %entry204; CHECK-NEXT:    addis 3, 2, var_float@got@tprel@ha205; CHECK-NEXT:    ld 3, var_float@got@tprel@l(3)206; CHECK-NEXT:    lfsx 1, 3, var_float@tls207; CHECK-NEXT:    blr208entry:209  %0 = load float, ptr @var_float, align 4210  ret float %0211}212 213define void @test_float_two(float %a) {214; CHECK-LABEL: test_float_two:215; CHECK:       # %bb.0: # %entry216; CHECK-NEXT:    addis 3, 2, var_float@got@tprel@ha217; CHECK-NEXT:    ld 3, var_float@got@tprel@l(3)218; CHECK-NEXT:    stfsx 1, 3, var_float@tls219; CHECK-NEXT:    blr220entry:221  store float %a, ptr @var_float, align 4222  ret void223}224 225define double @test_double_one() {226; CHECK-LABEL: test_double_one:227; CHECK:       # %bb.0: # %entry228; CHECK-NEXT:    addis 3, 2, var_double@got@tprel@ha229; CHECK-NEXT:    ld 3, var_double@got@tprel@l(3)230; CHECK-NEXT:    lfdx 1, 3, var_double@tls231; CHECK-NEXT:    blr232entry:233  %0 = load double, ptr @var_double, align 8234  ret double %0235}236 237define void @test_double_two(double %a) {238; CHECK-LABEL: test_double_two:239; CHECK:       # %bb.0: # %entry240; CHECK-NEXT:    addis 3, 2, var_double@got@tprel@ha241; CHECK-NEXT:    ld 3, var_double@got@tprel@l(3)242; CHECK-NEXT:    stfdx 1, 3, var_double@tls243; CHECK-NEXT:    blr244entry:245  store double %a, ptr @var_double, align 8246  ret void247}248 249!llvm.module.flags = !{!0, !1, !2}250 251!0 = !{i32 1, !"wchar_size", i32 4}252!1 = !{i32 7, !"PIC Level", i32 1}253!2 = !{i32 7, !"PIE Level", i32 1}254!4 = !{!5, !5, i64 0}255!5 = !{!"omnipotent char", !6, i64 0}256!6 = !{!"Simple C/C++ TBAA"}257!7 = !{!8, !8, i64 0}258!8 = !{!"short", !5, i64 0}259!9 = !{!10, !10, i64 0}260!10 = !{!"int", !5, i64 0}261!11 = !{!12, !12, i64 0}262!12 = !{!"long long", !5, i64 0}263