brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · bc50f88 Raw
126 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-LE3; RUN: llc -mtriple=powerpc64-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-BE4 5@as = dso_local local_unnamed_addr global i16 0, align 26@bs = dso_local local_unnamed_addr global i16 0, align 27@ai = dso_local local_unnamed_addr global i32 0, align 48@bi = dso_local local_unnamed_addr global i32 0, align 49 10define dso_local void @bswapStorei64Toi32() {11; CHECK-LABEL: bswapStorei64Toi32:12; CHECK:       # %bb.0: # %entry13; CHECK-NEXT:    addis 3, 2, ai@toc@ha14; CHECK-NEXT:    addis 4, 2, bi@toc@ha15; CHECK-NEXT:    lwa 3, ai@toc@l(3)16; CHECK-NEXT:    addi 4, 4, bi@toc@l17; CHECK-NEXT:    rldicl 3, 3, 32, 3218; CHECK-NEXT:    stwbrx 3, 0, 419; CHECK-NEXT:    blr20; CHECK-LE-LABEL: bswapStorei64Toi32:21; CHECK-LE:       # %bb.0: # %entry22; CHECK-LE-NEXT:    addis 3, 2, ai@toc@ha23; CHECK-LE-NEXT:    addis 4, 2, bi@toc@ha24; CHECK-LE-NEXT:    lwa 3, ai@toc@l(3)25; CHECK-LE-NEXT:    addi 4, 4, bi@toc@l26; CHECK-LE-NEXT:    rldicl 3, 3, 32, 3227; CHECK-LE-NEXT:    stwbrx 3, 0, 428; CHECK-LE-NEXT:    blr29;30; CHECK-BE-LABEL: bswapStorei64Toi32:31; CHECK-BE:       # %bb.0: # %entry32; CHECK-BE-NEXT:    addis 3, 2, ai@toc@ha33; CHECK-BE-NEXT:    addis 4, 2, bi@toc@ha34; CHECK-BE-NEXT:    lwa 3, ai@toc@l(3)35; CHECK-BE-NEXT:    addi 4, 4, bi@toc@l36; CHECK-BE-NEXT:    rldicl 3, 3, 32, 3237; CHECK-BE-NEXT:    stwbrx 3, 0, 438; CHECK-BE-NEXT:    blr39entry:40  %0 = load i32, ptr @ai, align 441  %conv.i = sext i32 %0 to i6442  %or26.i = tail call i64 @llvm.bswap.i64(i64 %conv.i)43  %conv = trunc i64 %or26.i to i3244  store i32 %conv, ptr @bi, align 445  ret void46}47 48define dso_local void @bswapStorei32Toi16() {49; CHECK-LABEL: bswapStorei32Toi16:50; CHECK:       # %bb.0: # %entry51; CHECK-NEXT:    addis 3, 2, as@toc@ha52; CHECK-NEXT:    addis 4, 2, bs@toc@ha53; CHECK-NEXT:    lha 3, as@toc@l(3)54; CHECK-NEXT:    addi 4, 4, bs@toc@l55; CHECK-NEXT:    srwi 3, 3, 1656; CHECK-NEXT:    sthbrx 3, 0, 457; CHECK-NEXT:    blr58; CHECK-LE-LABEL: bswapStorei32Toi16:59; CHECK-LE:       # %bb.0: # %entry60; CHECK-LE-NEXT:    addis 3, 2, as@toc@ha61; CHECK-LE-NEXT:    addis 4, 2, bs@toc@ha62; CHECK-LE-NEXT:    lha 3, as@toc@l(3)63; CHECK-LE-NEXT:    addi 4, 4, bs@toc@l64; CHECK-LE-NEXT:    srwi 3, 3, 1665; CHECK-LE-NEXT:    sthbrx 3, 0, 466; CHECK-LE-NEXT:    blr67;68; CHECK-BE-LABEL: bswapStorei32Toi16:69; CHECK-BE:       # %bb.0: # %entry70; CHECK-BE-NEXT:    addis 3, 2, as@toc@ha71; CHECK-BE-NEXT:    addis 4, 2, bs@toc@ha72; CHECK-BE-NEXT:    lha 3, as@toc@l(3)73; CHECK-BE-NEXT:    addi 4, 4, bs@toc@l74; CHECK-BE-NEXT:    srwi 3, 3, 1675; CHECK-BE-NEXT:    sthbrx 3, 0, 476; CHECK-BE-NEXT:    blr77entry:78  %0 = load i16, ptr @as, align 279  %conv.i = sext i16 %0 to i3280  %or26.i = tail call i32 @llvm.bswap.i32(i32 %conv.i)81  %conv = trunc i32 %or26.i to i1682  store i16 %conv, ptr @bs, align 283  ret void84}85 86define dso_local void @bswapStorei64Toi16() {87; CHECK-LABEL: bswapStorei64Toi16:88; CHECK:       # %bb.0: # %entry89; CHECK-NEXT:    addis 3, 2, as@toc@ha90; CHECK-NEXT:    addis 4, 2, bs@toc@ha91; CHECK-NEXT:    lha 3, as@toc@l(3)92; CHECK-NEXT:    addi 4, 4, bs@toc@l93; CHECK-NEXT:    rldicl 3, 3, 16, 4894; CHECK-NEXT:    sthbrx 3, 0, 495; CHECK-NEXT:    blr96; CHECK-LE-LABEL: bswapStorei64Toi16:97; CHECK-LE:       # %bb.0: # %entry98; CHECK-LE-NEXT:    addis 3, 2, as@toc@ha99; CHECK-LE-NEXT:    addis 4, 2, bs@toc@ha100; CHECK-LE-NEXT:    lha 3, as@toc@l(3)101; CHECK-LE-NEXT:    addi 4, 4, bs@toc@l102; CHECK-LE-NEXT:    rldicl 3, 3, 16, 48103; CHECK-LE-NEXT:    sthbrx 3, 0, 4104; CHECK-LE-NEXT:    blr105;106; CHECK-BE-LABEL: bswapStorei64Toi16:107; CHECK-BE:       # %bb.0: # %entry108; CHECK-BE-NEXT:    addis 3, 2, as@toc@ha109; CHECK-BE-NEXT:    addis 4, 2, bs@toc@ha110; CHECK-BE-NEXT:    lha 3, as@toc@l(3)111; CHECK-BE-NEXT:    addi 4, 4, bs@toc@l112; CHECK-BE-NEXT:    rldicl 3, 3, 16, 48113; CHECK-BE-NEXT:    sthbrx 3, 0, 4114; CHECK-BE-NEXT:    blr115entry:116  %0 = load i16, ptr @as, align 2117  %conv.i = sext i16 %0 to i64118  %or26.i = tail call i64 @llvm.bswap.i64(i64 %conv.i)119  %conv = trunc i64 %or26.i to i16120  store i16 %conv, ptr @bs, align 2121  ret void122}123 124declare i32 @llvm.bswap.i32(i32)125declare i64 @llvm.bswap.i64(i64)126