brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 778fd0a Raw
142 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-644; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \5; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-646; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \7; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-328; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \9; RUN:   -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-6410 11declare i32 @llvm.ppc.lwarx(ptr)12define dso_local signext i32 @test_lwarx(ptr readnone %a) {13; CHECK-64-LABEL: test_lwarx:14; CHECK-64:       # %bb.0: # %entry15; CHECK-64-NEXT:    #APP16; CHECK-64-NEXT:    lwarx 3, 0, 317; CHECK-64-NEXT:    #NO_APP18; CHECK-64-NEXT:    extsw 3, 319; CHECK-64-NEXT:    blr20;21; CHECK-32-LABEL: test_lwarx:22; CHECK-32:       # %bb.0: # %entry23; CHECK-32-NEXT:    #APP24; CHECK-32-NEXT:    lwarx 3, 0, 325; CHECK-32-NEXT:    #NO_APP26; CHECK-32-NEXT:    blr27entry:28  %0 = call i32 asm sideeffect "lwarx $0, ${1:y}", "=r,*Z,~{memory}"(ptr elementtype(i32) %a)29  ret i32 %030}31 32declare i32 @llvm.ppc.stwcx(ptr, i32)33define dso_local signext i32 @test_stwcx(ptr %a, i32 signext %b) {34; CHECK-64-LABEL: test_stwcx:35; CHECK-64:       # %bb.0: # %entry36; CHECK-64-NEXT:    stwcx. 4, 0, 337; CHECK-64-NEXT:    mfocrf 3, 12838; CHECK-64-NEXT:    srwi 3, 3, 2839; CHECK-64-NEXT:    rlwinm 3, 3, 31, 31, 3140; CHECK-64-NEXT:    blr41;42; CHECK-32-LABEL: test_stwcx:43; CHECK-32:       # %bb.0: # %entry44; CHECK-32-NEXT:    stwcx. 4, 0, 345; CHECK-32-NEXT:    mfocrf 3, 12846; CHECK-32-NEXT:    srwi 3, 3, 2847; CHECK-32-NEXT:    rlwinm 3, 3, 31, 31, 3148; CHECK-32-NEXT:    blr49entry:50  %0 = tail call i32 @llvm.ppc.stwcx(ptr %a, i32 %b)51  ret i32 %052}53 54declare i32 @llvm.ppc.sthcx(ptr, i32)55define dso_local signext i32 @test_sthcx(ptr %a, i16 signext %val) {56; CHECK-64-LABEL: test_sthcx:57; CHECK-64:       # %bb.0: # %entry58; CHECK-64-NEXT:    sthcx. 4, 0, 359; CHECK-64-NEXT:    mfocrf 3, 12860; CHECK-64-NEXT:    srwi 3, 3, 2861; CHECK-64-NEXT:    rlwinm 3, 3, 31, 31, 3162; CHECK-64-NEXT:    blr63;64; CHECK-32-LABEL: test_sthcx:65; CHECK-32:       # %bb.0: # %entry66; CHECK-32-NEXT:    sthcx. 4, 0, 367; CHECK-32-NEXT:    mfocrf 3, 12868; CHECK-32-NEXT:    srwi 3, 3, 2869; CHECK-32-NEXT:    rlwinm 3, 3, 31, 31, 3170; CHECK-32-NEXT:    blr71entry:72  %0 = sext i16 %val to i3273  %1 = tail call i32 @llvm.ppc.sthcx(ptr %a, i32 %0)74  ret i32 %175}76 77declare i32 @llvm.ppc.stbcx(ptr, i32)78define signext i32 @test_stbcx(ptr %addr, i8 signext %val) {79; CHECK-64-LABEL: test_stbcx:80; CHECK-64:       # %bb.0: # %entry81; CHECK-64-NEXT:    stbcx. 4, 0, 382; CHECK-64-NEXT:    mfocrf 3, 12883; CHECK-64-NEXT:    srwi 3, 3, 2884; CHECK-64-NEXT:    rlwinm 3, 3, 31, 31, 3185; CHECK-64-NEXT:    blr86;87; CHECK-32-LABEL: test_stbcx:88; CHECK-32:       # %bb.0: # %entry89; CHECK-32-NEXT:    stbcx. 4, 0, 390; CHECK-32-NEXT:    mfocrf 3, 12891; CHECK-32-NEXT:    srwi 3, 3, 2892; CHECK-32-NEXT:    rlwinm 3, 3, 31, 31, 3193; CHECK-32-NEXT:    blr94entry:95  %conv = sext i8 %val to i3296  %0 = tail call i32 @llvm.ppc.stbcx(ptr %addr, i32 %conv)97  ret i32 %098}99 100define dso_local signext i16 @test_lharx(ptr %a) {101; CHECK-64-LABEL: test_lharx:102; CHECK-64:       # %bb.0: # %entry103; CHECK-64-NEXT:    #APP104; CHECK-64-NEXT:    lharx 3, 0, 3105; CHECK-64-NEXT:    #NO_APP106; CHECK-64-NEXT:    extsh 3, 3107; CHECK-64-NEXT:    blr108;109; CHECK-32-LABEL: test_lharx:110; CHECK-32:       # %bb.0: # %entry111; CHECK-32-NEXT:    #APP112; CHECK-32-NEXT:    lharx 3, 0, 3113; CHECK-32-NEXT:    #NO_APP114; CHECK-32-NEXT:    extsh 3, 3115; CHECK-32-NEXT:    blr116entry:117  %0 = tail call i16 asm sideeffect "lharx $0, ${1:y}", "=r,*Z,~{memory}"(ptr elementtype(i16) %a)118  ret i16 %0119}120 121; Function Attrs: nounwind uwtable122define dso_local zeroext i8 @test_lbarx(ptr %a) {123; CHECK-64-LABEL: test_lbarx:124; CHECK-64:       # %bb.0: # %entry125; CHECK-64-NEXT:    #APP126; CHECK-64-NEXT:    lbarx 3, 0, 3127; CHECK-64-NEXT:    #NO_APP128; CHECK-64-NEXT:    clrldi 3, 3, 56129; CHECK-64-NEXT:    blr130;131; CHECK-32-LABEL: test_lbarx:132; CHECK-32:       # %bb.0: # %entry133; CHECK-32-NEXT:    #APP134; CHECK-32-NEXT:    lbarx 3, 0, 3135; CHECK-32-NEXT:    #NO_APP136; CHECK-32-NEXT:    clrlwi 3, 3, 24137; CHECK-32-NEXT:    blr138entry:139  %0 = tail call i8 asm sideeffect "lbarx $0, ${1:y}", "=r,*Z,~{memory}"(ptr elementtype(i8) %a)140  ret i8 %0141}142