| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefix=CHECK-P10-LE |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefix=CHECK-P10-BE |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9 |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P8,CHECK-P8-LE |
| ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ |
| ; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ |
| ; RUN: < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P8,CHECK-P8-BE |
| |
| @GlobLd1 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 |
| @GlobSt1 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 |
| @GlobLd2 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 |
| @GlobSt2 = dso_local local_unnamed_addr global [20 x i8] zeroinitializer, align 1 |
| @GlobLd3 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 |
| @GlobSt3 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 |
| @GlobLd4 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 |
| @GlobSt4 = dso_local local_unnamed_addr global [20 x i16] zeroinitializer, align 2 |
| @GlobLd5 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 |
| @GlobSt5 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 |
| @GlobLd6 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 |
| @GlobSt6 = dso_local local_unnamed_addr global [20 x i32] zeroinitializer, align 4 |
| @GlobLd7 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 |
| @GlobSt7 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 |
| @GlobLd8 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 |
| @GlobSt8 = dso_local local_unnamed_addr global [20 x i64] zeroinitializer, align 8 |
| @GlobLd9 = dso_local local_unnamed_addr global [20 x float] zeroinitializer, align 4 |
| @GlobSt9 = dso_local local_unnamed_addr global [20 x float] zeroinitializer, align 4 |
| @GlobLd10 = dso_local local_unnamed_addr global [20 x double] zeroinitializer, align 8 |
| @GlobSt10 = dso_local local_unnamed_addr global [20 x double] zeroinitializer, align 8 |
| @GlobLd11 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 |
| @GlobSt11 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 |
| @GlobLd12 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 |
| @GlobSt12 = dso_local local_unnamed_addr global [20 x <16 x i8>] zeroinitializer, align 16 |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob1PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob1PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob1PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob1PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha |
| ; CHECK-NEXT: lbz r3, GlobLd1@toc@l(r3) |
| ; CHECK-NEXT: stb r3, GlobSt1@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd1, i64 0, i64 0), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt1, i64 0, i64 0), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob1PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob1PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob1PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd1@toc@l |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt1@toc@l |
| ; CHECK-P10-BE-NEXT: lbz r3, 3(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, 3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob1PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd1@toc@l |
| ; CHECK-NEXT: addi r4, r4, GlobSt1@toc@l |
| ; CHECK-NEXT: lbz r3, 3(r3) |
| ; CHECK-NEXT: stb r3, 3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd1, i64 0, i64 3), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt1, i64 0, i64 3), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob1PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob1PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob1PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob1PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha+4 |
| ; CHECK-NEXT: lbz r3, GlobLd1@toc@l+4(r3) |
| ; CHECK-NEXT: stb r3, GlobSt1@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd1, i64 0, i64 4), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt1, i64 0, i64 4), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob1PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob1PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd1@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt1@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob1PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd1@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt1@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd1@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt1@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob1PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd1@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt1@toc@ha+16 |
| ; CHECK-NEXT: lbz r3, GlobLd1@toc@l+16(r3) |
| ; CHECK-NEXT: stb r3, GlobSt1@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd1, i64 0, i64 16), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt1, i64 0, i64 16), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob1PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob1PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd1@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt1@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lbzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stbx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob1PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd1@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt1@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd1@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt1@toc@l |
| ; CHECK-P10-BE-NEXT: lbzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stbx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob1PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd1@toc@ha |
| ; CHECK-NEXT: addis r5, r2, GlobSt1@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd1@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt1@toc@l |
| ; CHECK-NEXT: lbzx r4, r4, r3 |
| ; CHECK-NEXT: stbx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i8], [20 x i8]* @GlobLd1, i64 0, i64 %Idx |
| %0 = load i8, i8* %arrayidx, align 1 |
| %arrayidx1 = getelementptr inbounds [20 x i8], [20 x i8]* @GlobSt1, i64 0, i64 %Idx |
| store i8 %0, i8* %arrayidx1, align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob2PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob2PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob2PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob2PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha |
| ; CHECK-NEXT: lbz r3, GlobLd2@toc@l(r3) |
| ; CHECK-NEXT: stb r3, GlobSt2@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd2, i64 0, i64 0), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt2, i64 0, i64 0), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob2PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob2PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob2PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd2@toc@l |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt2@toc@l |
| ; CHECK-P10-BE-NEXT: lbz r3, 3(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, 3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob2PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd2@toc@l |
| ; CHECK-NEXT: addi r4, r4, GlobSt2@toc@l |
| ; CHECK-NEXT: lbz r3, 3(r3) |
| ; CHECK-NEXT: stb r3, 3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd2, i64 0, i64 3), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt2, i64 0, i64 3), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob2PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob2PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob2PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob2PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha+4 |
| ; CHECK-NEXT: lbz r3, GlobLd2@toc@l+4(r3) |
| ; CHECK-NEXT: stb r3, GlobSt2@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd2, i64 0, i64 4), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt2, i64 0, i64 4), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob2PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob2PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plbz r3, GlobLd2@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstb r3, GlobSt2@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob2PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd2@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt2@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lbz r3, GlobLd2@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: stb r3, GlobSt2@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob2PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd2@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt2@toc@ha+16 |
| ; CHECK-NEXT: lbz r3, GlobLd2@toc@l+16(r3) |
| ; CHECK-NEXT: stb r3, GlobSt2@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i8, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobLd2, i64 0, i64 16), align 1 |
| store i8 %0, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @GlobSt2, i64 0, i64 16), align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob2PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob2PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd2@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt2@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lbzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stbx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob2PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd2@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt2@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd2@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt2@toc@l |
| ; CHECK-P10-BE-NEXT: lbzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stbx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob2PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd2@toc@ha |
| ; CHECK-NEXT: addis r5, r2, GlobSt2@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd2@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt2@toc@l |
| ; CHECK-NEXT: lbzx r4, r4, r3 |
| ; CHECK-NEXT: stbx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i8], [20 x i8]* @GlobLd2, i64 0, i64 %Idx |
| %0 = load i8, i8* %arrayidx, align 1 |
| %arrayidx1 = getelementptr inbounds [20 x i8], [20 x i8]* @GlobSt2, i64 0, i64 %Idx |
| store i8 %0, i8* %arrayidx1, align 1 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob3PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob3PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob3PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob3PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha |
| ; CHECK-NEXT: lhz r3, GlobLd3@toc@l(r3) |
| ; CHECK-NEXT: sth r3, GlobSt3@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd3, i64 0, i64 0), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt3, i64 0, i64 0), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob3PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob3PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob3PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd3@toc@l |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt3@toc@l |
| ; CHECK-P10-BE-NEXT: lhz r3, 3(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, 3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob3PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd3@toc@l |
| ; CHECK-NEXT: addi r4, r4, GlobSt3@toc@l |
| ; CHECK-NEXT: lhz r3, 3(r3) |
| ; CHECK-NEXT: sth r3, 3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i16]* @GlobLd3 to i8*), i64 3) to i16*), align 2 |
| store i16 %0, i16* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i16]* @GlobSt3 to i8*), i64 3) to i16*), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob3PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob3PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob3PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob3PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha+4 |
| ; CHECK-NEXT: lhz r3, GlobLd3@toc@l+4(r3) |
| ; CHECK-NEXT: sth r3, GlobSt3@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd3, i64 0, i64 2), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt3, i64 0, i64 2), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob3PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob3PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd3@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt3@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob3PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd3@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt3@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd3@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt3@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob3PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd3@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt3@toc@ha+16 |
| ; CHECK-NEXT: lhz r3, GlobLd3@toc@l+16(r3) |
| ; CHECK-NEXT: sth r3, GlobSt3@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd3, i64 0, i64 8), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt3, i64 0, i64 8), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob3PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob3PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 1 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd3@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt3@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lhzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: sthx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob3PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd3@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 1 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt3@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd3@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt3@toc@l |
| ; CHECK-P10-BE-NEXT: lhzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: sthx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob3PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd3@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 1 |
| ; CHECK-NEXT: addis r5, r2, GlobSt3@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd3@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt3@toc@l |
| ; CHECK-NEXT: lhzx r4, r4, r3 |
| ; CHECK-NEXT: sthx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i16], [20 x i16]* @GlobLd3, i64 0, i64 %Idx |
| %0 = load i16, i16* %arrayidx, align 2 |
| %arrayidx1 = getelementptr inbounds [20 x i16], [20 x i16]* @GlobSt3, i64 0, i64 %Idx |
| store i16 %0, i16* %arrayidx1, align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob4PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob4PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob4PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob4PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha |
| ; CHECK-NEXT: lhz r3, GlobLd4@toc@l(r3) |
| ; CHECK-NEXT: sth r3, GlobSt4@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd4, i64 0, i64 0), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt4, i64 0, i64 0), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob4PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob4PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob4PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd4@toc@l |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt4@toc@l |
| ; CHECK-P10-BE-NEXT: lhz r3, 3(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, 3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob4PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd4@toc@l |
| ; CHECK-NEXT: addi r4, r4, GlobSt4@toc@l |
| ; CHECK-NEXT: lhz r3, 3(r3) |
| ; CHECK-NEXT: sth r3, 3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i16]* @GlobLd4 to i8*), i64 3) to i16*), align 2 |
| store i16 %0, i16* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i16]* @GlobSt4 to i8*), i64 3) to i16*), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob4PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob4PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob4PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob4PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha+4 |
| ; CHECK-NEXT: lhz r3, GlobLd4@toc@l+4(r3) |
| ; CHECK-NEXT: sth r3, GlobSt4@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd4, i64 0, i64 2), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt4, i64 0, i64 2), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob4PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob4PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plhz r3, GlobLd4@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: psth r3, GlobSt4@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob4PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd4@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt4@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lhz r3, GlobLd4@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: sth r3, GlobSt4@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob4PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd4@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt4@toc@ha+16 |
| ; CHECK-NEXT: lhz r3, GlobLd4@toc@l+16(r3) |
| ; CHECK-NEXT: sth r3, GlobSt4@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i16, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobLd4, i64 0, i64 8), align 2 |
| store i16 %0, i16* getelementptr inbounds ([20 x i16], [20 x i16]* @GlobSt4, i64 0, i64 8), align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob4PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob4PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 1 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd4@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt4@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lhzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: sthx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob4PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd4@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 1 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt4@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd4@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt4@toc@l |
| ; CHECK-P10-BE-NEXT: lhzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: sthx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob4PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd4@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 1 |
| ; CHECK-NEXT: addis r5, r2, GlobSt4@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd4@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt4@toc@l |
| ; CHECK-NEXT: lhzx r4, r4, r3 |
| ; CHECK-NEXT: sthx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i16], [20 x i16]* @GlobLd4, i64 0, i64 %Idx |
| %0 = load i16, i16* %arrayidx, align 2 |
| %arrayidx1 = getelementptr inbounds [20 x i16], [20 x i16]* @GlobSt4, i64 0, i64 %Idx |
| store i16 %0, i16* %arrayidx1, align 2 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob5PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob5PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob5PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob5PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd5@toc@l(r3) |
| ; CHECK-NEXT: stw r3, GlobSt5@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd5, i64 0, i64 0), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt5, i64 0, i64 0), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob5PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob5PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob5PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+3(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob5PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd5@toc@l+3(r3) |
| ; CHECK-NEXT: stw r3, GlobSt5@toc@l+3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i32]* @GlobLd5 to i8*), i64 3) to i32*), align 4 |
| store i32 %0, i32* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i32]* @GlobSt5 to i8*), i64 3) to i32*), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob5PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob5PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob5PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob5PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha+4 |
| ; CHECK-NEXT: lwz r3, GlobLd5@toc@l+4(r3) |
| ; CHECK-NEXT: stw r3, GlobSt5@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd5, i64 0, i64 1), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt5, i64 0, i64 1), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob5PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob5PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd5@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt5@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob5PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd5@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt5@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd5@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt5@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob5PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd5@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt5@toc@ha+16 |
| ; CHECK-NEXT: lwz r3, GlobLd5@toc@l+16(r3) |
| ; CHECK-NEXT: stw r3, GlobSt5@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd5, i64 0, i64 4), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt5, i64 0, i64 4), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob5PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob5PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd5@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt5@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob5PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd5@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt5@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd5@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt5@toc@l |
| ; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob5PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd5@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 2 |
| ; CHECK-NEXT: addis r5, r2, GlobSt5@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd5@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt5@toc@l |
| ; CHECK-NEXT: lwzx r4, r4, r3 |
| ; CHECK-NEXT: stwx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* @GlobLd5, i64 0, i64 %Idx |
| %0 = load i32, i32* %arrayidx, align 4 |
| %arrayidx1 = getelementptr inbounds [20 x i32], [20 x i32]* @GlobSt5, i64 0, i64 %Idx |
| store i32 %0, i32* %arrayidx1, align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob6PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob6PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob6PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob6PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd6@toc@l(r3) |
| ; CHECK-NEXT: stw r3, GlobSt6@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd6, i64 0, i64 0), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt6, i64 0, i64 0), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob6PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob6PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob6PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+3(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob6PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd6@toc@l+3(r3) |
| ; CHECK-NEXT: stw r3, GlobSt6@toc@l+3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i32]* @GlobLd6 to i8*), i64 3) to i32*), align 4 |
| store i32 %0, i32* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i32]* @GlobSt6 to i8*), i64 3) to i32*), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob6PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob6PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob6PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob6PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha+4 |
| ; CHECK-NEXT: lwz r3, GlobLd6@toc@l+4(r3) |
| ; CHECK-NEXT: stw r3, GlobSt6@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd6, i64 0, i64 1), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt6, i64 0, i64 1), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob6PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob6PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd6@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt6@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob6PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd6@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt6@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd6@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt6@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob6PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd6@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt6@toc@ha+16 |
| ; CHECK-NEXT: lwz r3, GlobLd6@toc@l+16(r3) |
| ; CHECK-NEXT: stw r3, GlobSt6@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i32, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobLd6, i64 0, i64 4), align 4 |
| store i32 %0, i32* getelementptr inbounds ([20 x i32], [20 x i32]* @GlobSt6, i64 0, i64 4), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob6PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob6PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd6@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt6@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob6PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd6@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt6@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd6@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt6@toc@l |
| ; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob6PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd6@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 2 |
| ; CHECK-NEXT: addis r5, r2, GlobSt6@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd6@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt6@toc@l |
| ; CHECK-NEXT: lwzx r4, r4, r3 |
| ; CHECK-NEXT: stwx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i32], [20 x i32]* @GlobLd6, i64 0, i64 %Idx |
| %0 = load i32, i32* %arrayidx, align 4 |
| %arrayidx1 = getelementptr inbounds [20 x i32], [20 x i32]* @GlobSt6, i64 0, i64 %Idx |
| store i32 %0, i32* %arrayidx1, align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob7PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob7PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob7PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob7PtrPlus0: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt7@toc@l(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob7PtrPlus0: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt7@toc@l(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobLd7, i64 0, i64 0), align 8 |
| store i64 %0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobSt7, i64 0, i64 0), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob7PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob7PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob7PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt7@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd7@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt7@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r3, r3, r4 |
| ; CHECK-P10-BE-NEXT: stdx r3, r5, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob7PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-NEXT: li r4, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt7@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd7@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt7@toc@l |
| ; CHECK-NEXT: ldx r3, r3, r4 |
| ; CHECK-NEXT: stdx r3, r5, r4 |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i64, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobLd7 to i8*), i64 3) to i64*), align 8 |
| store i64 %0, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobSt7 to i8*), i64 3) to i64*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob7PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob7PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob7PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob7PtrPlus4: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l+4(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt7@toc@l+4(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob7PtrPlus4: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l+4(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt7@toc@l+4(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobLd7 to i8*), i64 4) to i64*), align 8 |
| store i64 %0, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobSt7 to i8*), i64 4) to i64*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob7PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob7PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd7@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt7@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob7PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd7@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt7@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd7@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt7@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob7PtrPlus16: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd7@toc@ha+16 |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt7@toc@ha+16 |
| ; CHECK-P9-NEXT: ld r3, GlobLd7@toc@l+16(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt7@toc@l+16(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob7PtrPlus16: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd7@toc@ha+16 |
| ; CHECK-P8-NEXT: ld r3, GlobLd7@toc@l+16(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt7@toc@ha+16 |
| ; CHECK-P8-NEXT: std r3, GlobSt7@toc@l+16(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobLd7, i64 0, i64 2), align 8 |
| store i64 %0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobSt7, i64 0, i64 2), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob7PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob7PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd7@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt7@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob7PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd7@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt7@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd7@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt7@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob7PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd7@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt7@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd7@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt7@toc@l |
| ; CHECK-NEXT: ldx r4, r4, r3 |
| ; CHECK-NEXT: stdx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i64], [20 x i64]* @GlobLd7, i64 0, i64 %Idx |
| %0 = load i64, i64* %arrayidx, align 8 |
| %arrayidx1 = getelementptr inbounds [20 x i64], [20 x i64]* @GlobSt7, i64 0, i64 %Idx |
| store i64 %0, i64* %arrayidx1, align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob8PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob8PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob8PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob8PtrPlus0: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt8@toc@l(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob8PtrPlus0: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt8@toc@l(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobLd8, i64 0, i64 0), align 8 |
| store i64 %0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobSt8, i64 0, i64 0), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob8PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob8PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob8PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt8@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd8@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt8@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r3, r3, r4 |
| ; CHECK-P10-BE-NEXT: stdx r3, r5, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob8PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-NEXT: li r4, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt8@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd8@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt8@toc@l |
| ; CHECK-NEXT: ldx r3, r3, r4 |
| ; CHECK-NEXT: stdx r3, r5, r4 |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load i64, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobLd8 to i8*), i64 3) to i64*), align 8 |
| store i64 %0, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobSt8 to i8*), i64 3) to i64*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob8PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob8PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob8PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob8PtrPlus4: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l+4(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt8@toc@l+4(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob8PtrPlus4: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l+4(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt8@toc@l+4(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobLd8 to i8*), i64 4) to i64*), align 8 |
| store i64 %0, i64* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x i64]* @GlobSt8 to i8*), i64 4) to i64*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob8PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob8PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd8@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt8@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob8PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd8@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt8@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd8@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt8@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob8PtrPlus16: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd8@toc@ha+16 |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt8@toc@ha+16 |
| ; CHECK-P9-NEXT: ld r3, GlobLd8@toc@l+16(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt8@toc@l+16(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob8PtrPlus16: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd8@toc@ha+16 |
| ; CHECK-P8-NEXT: ld r3, GlobLd8@toc@l+16(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt8@toc@ha+16 |
| ; CHECK-P8-NEXT: std r3, GlobSt8@toc@l+16(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load i64, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobLd8, i64 0, i64 2), align 8 |
| store i64 %0, i64* getelementptr inbounds ([20 x i64], [20 x i64]* @GlobSt8, i64 0, i64 2), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob8PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob8PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd8@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt8@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob8PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd8@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt8@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd8@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt8@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob8PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd8@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt8@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd8@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt8@toc@l |
| ; CHECK-NEXT: ldx r4, r4, r3 |
| ; CHECK-NEXT: stdx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x i64], [20 x i64]* @GlobLd8, i64 0, i64 %Idx |
| %0 = load i64, i64* %arrayidx, align 8 |
| %arrayidx1 = getelementptr inbounds [20 x i64], [20 x i64]* @GlobSt8, i64 0, i64 %Idx |
| store i64 %0, i64* %arrayidx1, align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob9PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob9PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob9PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob9PtrPlus0: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd9@toc@l(r3) |
| ; CHECK-NEXT: stw r3, GlobSt9@toc@l(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load float, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobLd9, i64 0, i64 0), align 4 |
| store float %0, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobSt9, i64 0, i64 0), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob9PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob9PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob9PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+3(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+3(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob9PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha |
| ; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha |
| ; CHECK-NEXT: lwz r3, GlobLd9@toc@l+3(r3) |
| ; CHECK-NEXT: stw r3, GlobSt9@toc@l+3(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load float, float* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x float]* @GlobLd9 to i8*), i64 3) to float*), align 4 |
| store float %0, float* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x float]* @GlobSt9 to i8*), i64 3) to float*), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob9PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob9PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob9PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha+4 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob9PtrPlus4: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha+4 |
| ; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha+4 |
| ; CHECK-NEXT: lwz r3, GlobLd9@toc@l+4(r3) |
| ; CHECK-NEXT: stw r3, GlobSt9@toc@l+4(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load float, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobLd9, i64 0, i64 1), align 4 |
| store float %0, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobSt9, i64 0, i64 1), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob9PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob9PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plwz r3, GlobLd9@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstw r3, GlobSt9@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob9PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd9@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt9@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: lwz r3, GlobLd9@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: stw r3, GlobSt9@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob9PtrPlus16: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd9@toc@ha+16 |
| ; CHECK-NEXT: addis r4, r2, GlobSt9@toc@ha+16 |
| ; CHECK-NEXT: lwz r3, GlobLd9@toc@l+16(r3) |
| ; CHECK-NEXT: stw r3, GlobSt9@toc@l+16(r4) |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load float, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobLd9, i64 0, i64 4), align 4 |
| store float %0, float* getelementptr inbounds ([20 x float], [20 x float]* @GlobSt9, i64 0, i64 4), align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob9PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob9PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd9@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt9@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob9PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd9@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 2 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt9@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd9@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt9@toc@l |
| ; CHECK-P10-BE-NEXT: lwzx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stwx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob9PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd9@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 2 |
| ; CHECK-NEXT: addis r5, r2, GlobSt9@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd9@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt9@toc@l |
| ; CHECK-NEXT: lwzx r4, r4, r3 |
| ; CHECK-NEXT: stwx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x float], [20 x float]* @GlobLd9, i64 0, i64 %Idx |
| %0 = load float, float* %arrayidx, align 4 |
| %arrayidx1 = getelementptr inbounds [20 x float], [20 x float]* @GlobSt9, i64 0, i64 %Idx |
| store float %0, float* %arrayidx1, align 4 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob10PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob10PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob10PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob10PtrPlus0: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt10@toc@l(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob10PtrPlus0: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt10@toc@l(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load double, double* getelementptr inbounds ([20 x double], [20 x double]* @GlobLd10, i64 0, i64 0), align 8 |
| store double %0, double* getelementptr inbounds ([20 x double], [20 x double]* @GlobSt10, i64 0, i64 0), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob10PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob10PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob10PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt10@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd10@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt10@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r3, r3, r4 |
| ; CHECK-P10-BE-NEXT: stdx r3, r5, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob10PtrPlus3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-NEXT: li r4, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt10@toc@ha |
| ; CHECK-NEXT: addi r3, r3, GlobLd10@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt10@toc@l |
| ; CHECK-NEXT: ldx r3, r3, r4 |
| ; CHECK-NEXT: stdx r3, r5, r4 |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = load double, double* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x double]* @GlobLd10 to i8*), i64 3) to double*), align 8 |
| store double %0, double* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x double]* @GlobSt10 to i8*), i64 3) to double*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob10PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob10PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob10PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l+4(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l+4(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob10PtrPlus4: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l+4(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt10@toc@l+4(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob10PtrPlus4: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha |
| ; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l+4(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha |
| ; CHECK-P8-NEXT: std r3, GlobSt10@toc@l+4(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load double, double* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x double]* @GlobLd10 to i8*), i64 4) to double*), align 8 |
| store double %0, double* bitcast (i8* getelementptr inbounds (i8, i8* bitcast ([20 x double]* @GlobSt10 to i8*), i64 4) to double*), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob10PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob10PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: pld r3, GlobLd10@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstd r3, GlobSt10@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob10PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd10@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt10@toc@ha+16 |
| ; CHECK-P10-BE-NEXT: ld r3, GlobLd10@toc@l+16(r3) |
| ; CHECK-P10-BE-NEXT: std r3, GlobSt10@toc@l+16(r4) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob10PtrPlus16: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd10@toc@ha+16 |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt10@toc@ha+16 |
| ; CHECK-P9-NEXT: ld r3, GlobLd10@toc@l+16(r3) |
| ; CHECK-P9-NEXT: std r3, GlobSt10@toc@l+16(r4) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LABEL: testGlob10PtrPlus16: |
| ; CHECK-P8: # %bb.0: # %entry |
| ; CHECK-P8-NEXT: addis r3, r2, GlobLd10@toc@ha+16 |
| ; CHECK-P8-NEXT: ld r3, GlobLd10@toc@l+16(r3) |
| ; CHECK-P8-NEXT: addis r4, r2, GlobSt10@toc@ha+16 |
| ; CHECK-P8-NEXT: std r3, GlobSt10@toc@l+16(r4) |
| ; CHECK-P8-NEXT: blr |
| entry: |
| %0 = load double, double* getelementptr inbounds ([20 x double], [20 x double]* @GlobLd10, i64 0, i64 2), align 8 |
| store double %0, double* getelementptr inbounds ([20 x double], [20 x double]* @GlobSt10, i64 0, i64 2), align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob10PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob10PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd10@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: paddi r5, 0, GlobSt10@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-LE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob10PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd10@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 3 |
| ; CHECK-P10-BE-NEXT: addis r5, r2, GlobSt10@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd10@toc@l |
| ; CHECK-P10-BE-NEXT: addi r5, r5, GlobSt10@toc@l |
| ; CHECK-P10-BE-NEXT: ldx r4, r4, r3 |
| ; CHECK-P10-BE-NEXT: stdx r4, r5, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-LABEL: testGlob10PtrPlusVar: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: addis r4, r2, GlobLd10@toc@ha |
| ; CHECK-NEXT: sldi r3, r3, 3 |
| ; CHECK-NEXT: addis r5, r2, GlobSt10@toc@ha |
| ; CHECK-NEXT: addi r4, r4, GlobLd10@toc@l |
| ; CHECK-NEXT: addi r5, r5, GlobSt10@toc@l |
| ; CHECK-NEXT: ldx r4, r4, r3 |
| ; CHECK-NEXT: stdx r4, r5, r3 |
| ; CHECK-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x double], [20 x double]* @GlobLd10, i64 0, i64 %Idx |
| %0 = load double, double* %arrayidx, align 8 |
| %arrayidx1 = getelementptr inbounds [20 x double], [20 x double]* @GlobSt10, i64 0, i64 %Idx |
| store double %0, double* %arrayidx1, align 8 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob11PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob11PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob11PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, 0, r3 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, 0, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob11PtrPlus0: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, 0, r3 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, 0, r3 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob11PtrPlus0: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, 0, r3 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, 0, r3 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob11PtrPlus0: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, 0, r3 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, 0, r3 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd11, i64 0, i64 0), align 16 |
| store <16 x i8> %0, <16 x i8>* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt11, i64 0, i64 0), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob11PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob11PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob11PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 3 |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob11PtrPlus3: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P9-NEXT: li r4, 3 |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob11PtrPlus3: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 3 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob11PtrPlus3: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 3 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd11, i64 0, i64 0, i64 3) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt11, i64 0, i64 0, i64 3) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob11PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob11PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob11PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 4 |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob11PtrPlus4: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P9-NEXT: li r4, 4 |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob11PtrPlus4: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 4 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob11PtrPlus4: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 4 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd11, i64 0, i64 0, i64 4) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt11, i64 0, i64 0, i64 4) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob11PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob11PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd11@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt11@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob11PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P10-BE-NEXT: lxv vs0, 16(r3) |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P10-BE-NEXT: stxv vs0, 16(r3) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob11PtrPlus16: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P9-NEXT: lxv vs0, 16(r3) |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P9-NEXT: stxv vs0, 16(r3) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob11PtrPlus16: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 16 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob11PtrPlus16: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd11@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 16 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd11@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt11@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd11, i64 0, i64 1, i64 0) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt11, i64 0, i64 1, i64 0) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob11PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob11PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd11@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobSt11@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob11PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd11@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd11@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt11@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt11@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob11PtrPlusVar: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r4, r2, GlobLd11@toc@ha |
| ; CHECK-P9-NEXT: sldi r3, r3, 4 |
| ; CHECK-P9-NEXT: addi r4, r4, GlobLd11@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt11@toc@ha |
| ; CHECK-P9-NEXT: addi r4, r4, GlobSt11@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob11PtrPlusVar: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r4, r2, GlobLd11@toc@ha |
| ; CHECK-P8-LE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P8-LE-NEXT: addi r4, r4, GlobLd11@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r4, r3 |
| ; CHECK-P8-LE-NEXT: addis r4, r2, GlobSt11@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r4, r4, GlobSt11@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r4, r3 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob11PtrPlusVar: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r4, r2, GlobLd11@toc@ha |
| ; CHECK-P8-BE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P8-BE-NEXT: addi r4, r4, GlobLd11@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r4, r3 |
| ; CHECK-P8-BE-NEXT: addis r4, r2, GlobSt11@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r4, r4, GlobSt11@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r4, r3 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd11, i64 0, i64 %Idx |
| %0 = load <16 x i8>, <16 x i8>* %arrayidx, align 16 |
| %arrayidx1 = getelementptr inbounds [20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt11, i64 0, i64 %Idx |
| store <16 x i8> %0, <16 x i8>* %arrayidx1, align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob12PtrPlus0() { |
| ; CHECK-P10-LE-LABEL: testGlob12PtrPlus0: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob12PtrPlus0: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, 0, r3 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, 0, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob12PtrPlus0: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, 0, r3 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, 0, r3 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob12PtrPlus0: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, 0, r3 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, 0, r3 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob12PtrPlus0: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, 0, r3 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, 0, r3 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd12, i64 0, i64 0), align 16 |
| store <16 x i8> %0, <16 x i8>* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt12, i64 0, i64 0), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob12PtrPlus3() { |
| ; CHECK-P10-LE-LABEL: testGlob12PtrPlus3: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+3(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob12PtrPlus3: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 3 |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob12PtrPlus3: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P9-NEXT: li r4, 3 |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob12PtrPlus3: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 3 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob12PtrPlus3: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 3 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd12, i64 0, i64 0, i64 3) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt12, i64 0, i64 0, i64 3) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob12PtrPlus4() { |
| ; CHECK-P10-LE-LABEL: testGlob12PtrPlus4: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+4(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob12PtrPlus4: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P10-BE-NEXT: li r4, 4 |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob12PtrPlus4: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P9-NEXT: li r4, 4 |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r3, r4 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob12PtrPlus4: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 4 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob12PtrPlus4: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 4 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd12, i64 0, i64 0, i64 4) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt12, i64 0, i64 0, i64 4) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob12PtrPlus16() { |
| ; CHECK-P10-LE-LABEL: testGlob12PtrPlus16: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: plxv vs0, GlobLd12@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: pstxv vs0, GlobSt12@PCREL+16(0), 1 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob12PtrPlus16: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P10-BE-NEXT: lxv vs0, 16(r3) |
| ; CHECK-P10-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P10-BE-NEXT: stxv vs0, 16(r3) |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob12PtrPlus16: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P9-NEXT: lxv vs0, 16(r3) |
| ; CHECK-P9-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P9-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P9-NEXT: stxv vs0, 16(r3) |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob12PtrPlus16: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-LE-NEXT: li r4, 16 |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r3, r4 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob12PtrPlus16: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobLd12@toc@ha |
| ; CHECK-P8-BE-NEXT: li r4, 16 |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobLd12@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: addis r3, r2, GlobSt12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r3, r3, GlobSt12@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r3, r4 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %0 = load <16 x i8>, <16 x i8>* bitcast (i8* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd12, i64 0, i64 1, i64 0) to <16 x i8>*), align 16 |
| store <16 x i8> %0, <16 x i8>* bitcast (i8* getelementptr inbounds ([20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt12, i64 0, i64 1, i64 0) to <16 x i8>*), align 16 |
| ret void |
| } |
| |
| ; Function Attrs: nofree norecurse nounwind uwtable willreturn |
| define dso_local void @testGlob12PtrPlusVar(i64 %Idx) { |
| ; CHECK-P10-LE-LABEL: testGlob12PtrPlusVar: |
| ; CHECK-P10-LE: # %bb.0: # %entry |
| ; CHECK-P10-LE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobLd12@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P10-LE-NEXT: paddi r4, 0, GlobSt12@PCREL, 1 |
| ; CHECK-P10-LE-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P10-LE-NEXT: blr |
| ; |
| ; CHECK-P10-BE-LABEL: testGlob12PtrPlusVar: |
| ; CHECK-P10-BE: # %bb.0: # %entry |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobLd12@toc@ha |
| ; CHECK-P10-BE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobLd12@toc@l |
| ; CHECK-P10-BE-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P10-BE-NEXT: addis r4, r2, GlobSt12@toc@ha |
| ; CHECK-P10-BE-NEXT: addi r4, r4, GlobSt12@toc@l |
| ; CHECK-P10-BE-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P10-BE-NEXT: blr |
| ; |
| ; CHECK-P9-LABEL: testGlob12PtrPlusVar: |
| ; CHECK-P9: # %bb.0: # %entry |
| ; CHECK-P9-NEXT: addis r4, r2, GlobLd12@toc@ha |
| ; CHECK-P9-NEXT: sldi r3, r3, 4 |
| ; CHECK-P9-NEXT: addi r4, r4, GlobLd12@toc@l |
| ; CHECK-P9-NEXT: lxvx vs0, r4, r3 |
| ; CHECK-P9-NEXT: addis r4, r2, GlobSt12@toc@ha |
| ; CHECK-P9-NEXT: addi r4, r4, GlobSt12@toc@l |
| ; CHECK-P9-NEXT: stxvx vs0, r4, r3 |
| ; CHECK-P9-NEXT: blr |
| ; |
| ; CHECK-P8-LE-LABEL: testGlob12PtrPlusVar: |
| ; CHECK-P8-LE: # %bb.0: # %entry |
| ; CHECK-P8-LE-NEXT: addis r4, r2, GlobLd12@toc@ha |
| ; CHECK-P8-LE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P8-LE-NEXT: addi r4, r4, GlobLd12@toc@l |
| ; CHECK-P8-LE-NEXT: lvx v2, r4, r3 |
| ; CHECK-P8-LE-NEXT: addis r4, r2, GlobSt12@toc@ha |
| ; CHECK-P8-LE-NEXT: addi r4, r4, GlobSt12@toc@l |
| ; CHECK-P8-LE-NEXT: stvx v2, r4, r3 |
| ; CHECK-P8-LE-NEXT: blr |
| ; |
| ; CHECK-P8-BE-LABEL: testGlob12PtrPlusVar: |
| ; CHECK-P8-BE: # %bb.0: # %entry |
| ; CHECK-P8-BE-NEXT: addis r4, r2, GlobLd12@toc@ha |
| ; CHECK-P8-BE-NEXT: sldi r3, r3, 4 |
| ; CHECK-P8-BE-NEXT: addi r4, r4, GlobLd12@toc@l |
| ; CHECK-P8-BE-NEXT: lxvw4x vs0, r4, r3 |
| ; CHECK-P8-BE-NEXT: addis r4, r2, GlobSt12@toc@ha |
| ; CHECK-P8-BE-NEXT: addi r4, r4, GlobSt12@toc@l |
| ; CHECK-P8-BE-NEXT: stxvw4x vs0, r4, r3 |
| ; CHECK-P8-BE-NEXT: blr |
| entry: |
| %arrayidx = getelementptr inbounds [20 x <16 x i8>], [20 x <16 x i8>]* @GlobLd12, i64 0, i64 %Idx |
| %0 = load <16 x i8>, <16 x i8>* %arrayidx, align 16 |
| %arrayidx1 = getelementptr inbounds [20 x <16 x i8>], [20 x <16 x i8>]* @GlobSt12, i64 0, i64 %Idx |
| store <16 x i8> %0, <16 x i8>* %arrayidx1, align 16 |
| ret void |
| } |