Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/PowerPC/aix-cc-byval-mem.ll
Show First 20 Lines • Show All 82 Lines • ▼ Show 20 Lines | |||||
; Confirm the expected memcpy call is independent of the call to test_byval_mem2. | ; Confirm the expected memcpy call is independent of the call to test_byval_mem2. | ||||
; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-NEXT: %0:gprc = nuw ADDI $r1, 56 | ; 32BIT-NEXT: %0:gprc = nuw ADDI $r1, 56 | ||||
; 32BIT-NEXT: %1:gprc = LWZtoc @gS256, $r2 :: (load 4 from got) | ; 32BIT-NEXT: %1:gprc = LWZtoc @gS256, $r2 :: (load 4 from got) | ||||
; 32BIT-NEXT: %2:gprc = LI 256 | ; 32BIT-NEXT: %2:gprc = LI 256 | ||||
; 32BIT-DAG: $r3 = COPY %0 | ; 32BIT-DAG: $r3 = COPY %0 | ||||
; 32BIT-DAG: $r4 = COPY %1 | ; 32BIT-DAG: $r4 = COPY %1 | ||||
; 32BIT-DAG: $r5 = COPY %2 | ; 32BIT-DAG: $r5 = COPY %2 | ||||
; 32BIT-NEXT: BL_NOP &.memcpy, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ; 32BIT-NEXT: BL_NOP &".memcpy[PR]", csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT: ADJCALLSTACKDOWN 312, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 312, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r4 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r4 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ||||
; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem2>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem2>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 312, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 312, 0, implicit-def dead $r1, implicit $r1 | ||||
; CHECKASM-LABEL: .call_test_byval_mem2: | ; CHECKASM-LABEL: .call_test_byval_mem2: | ||||
; ASM32BIT: stwu 1, -320(1) | ; ASM32BIT: stwu 1, -320(1) | ||||
; ASM32BIT-DAG: addi 3, 1, 56 | ; ASM32BIT-DAG: addi 3, 1, 56 | ||||
; ASM32BIT-DAG: lwz 4, L..C{{[0-9]+}}(2) | ; ASM32BIT-DAG: lwz 4, L..C{{[0-9]+}}(2) | ||||
; ASM32BIT-DAG: li 5, 256 | ; ASM32BIT-DAG: li 5, 256 | ||||
; ASM32BIT-NEXT: bl .memcpy | ; ASM32BIT-NEXT: bl .memcpy[PR] | ||||
; ASM32BIT: bl .test_byval_mem2 | ; ASM32BIT: bl .test_byval_mem2 | ||||
; ASM32BIT: addi 1, 1, 320 | ; ASM32BIT: addi 1, 1, 320 | ||||
; Confirm the expected memcpy call is independent of the call to test_byval_mem2. | ; Confirm the expected memcpy call is independent of the call to test_byval_mem2. | ||||
; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT-NEXT: %0:g8rc = nuw ADDI8 $x1, 112 | ; 64BIT-NEXT: %0:g8rc = nuw ADDI8 $x1, 112 | ||||
; 64BIT-NEXT: %1:g8rc = LDtoc @gS256, $x2 :: (load 8 from got) | ; 64BIT-NEXT: %1:g8rc = LDtoc @gS256, $x2 :: (load 8 from got) | ||||
; 64BIT-NEXT: %2:g8rc = LI8 256 | ; 64BIT-NEXT: %2:g8rc = LI8 256 | ||||
; 64BIT-DAG: $x3 = COPY %0 | ; 64BIT-DAG: $x3 = COPY %0 | ||||
; 64BIT-DAG: $x4 = COPY %1 | ; 64BIT-DAG: $x4 = COPY %1 | ||||
; 64BIT-DAG: $x5 = COPY %2 | ; 64BIT-DAG: $x5 = COPY %2 | ||||
; 64BIT-NEXT: BL8_NOP &.memcpy, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x2, implicit-def $r1, implicit-def $x3 | ; 64BIT-NEXT: BL8_NOP &".memcpy[PR]", csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x2, implicit-def $r1, implicit-def $x3 | ||||
; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT: ADJCALLSTACKDOWN 368, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT: ADJCALLSTACKDOWN 368, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT-DAG: $x3 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x3 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x4 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x4 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x5 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x5 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x6 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x6 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x7 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x7 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x8 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x8 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x9 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x9 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x10 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x10 = COPY %{{[0-9]+}} | ||||
; 64BIT-NEXT: BL8_NOP <mcsymbol .test_byval_mem2>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1 | ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_byval_mem2>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1 | ||||
; 64BIT-NEXT: ADJCALLSTACKUP 368, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT-NEXT: ADJCALLSTACKUP 368, 0, implicit-def dead $r1, implicit $r1 | ||||
; ASM64BIT: stdu 1, -368(1) | ; ASM64BIT: stdu 1, -368(1) | ||||
; ASM64BIT-DAG: addi 3, 1, 112 | ; ASM64BIT-DAG: addi 3, 1, 112 | ||||
; ASM64BIT-DAG: ld 4, L..C{{[0-9]+}}(2) | ; ASM64BIT-DAG: ld 4, L..C{{[0-9]+}}(2) | ||||
; ASM64BIT-DAG: li 5, 256 | ; ASM64BIT-DAG: li 5, 256 | ||||
; ASM64BIT-NEXT: bl .memcpy | ; ASM64BIT-NEXT: bl .memcpy[PR] | ||||
; ASM64BIT: bl .test_byval_mem2 | ; ASM64BIT: bl .test_byval_mem2 | ||||
; ASM64BIT: addi 1, 1, 368 | ; ASM64BIT: addi 1, 1, 368 | ||||
define zeroext i8 @test_byval_mem2(i32, i32, i32, i32, i32, i32, i32, i32, %struct_S256* byval(%struct_S256) align 1 %s) { | define zeroext i8 @test_byval_mem2(i32, i32, i32, i32, i32, i32, i32, i32, %struct_S256* byval(%struct_S256) align 1 %s) { | ||||
entry: | entry: | ||||
%gep = getelementptr inbounds %struct_S256, %struct_S256* %s, i32 0, i32 0, i32 255 | %gep = getelementptr inbounds %struct_S256, %struct_S256* %s, i32 0, i32 0, i32 255 | ||||
%load = load i8, i8* %gep, align 1 | %load = load i8, i8* %gep, align 1 | ||||
Show All 32 Lines | |||||
; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-NEXT: %0:gprc_and_gprc_nor0 = LWZtoc @gS57, $r2 :: (load 4 from got) | ; 32BIT-NEXT: %0:gprc_and_gprc_nor0 = LWZtoc @gS57, $r2 :: (load 4 from got) | ||||
; 32BIT-NEXT: %1:gprc = nuw ADDI %0, 24 | ; 32BIT-NEXT: %1:gprc = nuw ADDI %0, 24 | ||||
; 32BIT-NEXT: %2:gprc = nuw ADDI $r1, 56 | ; 32BIT-NEXT: %2:gprc = nuw ADDI $r1, 56 | ||||
; 32BIT-NEXT: %3:gprc = LI 33 | ; 32BIT-NEXT: %3:gprc = LI 33 | ||||
; 32BIT-DAG: $r3 = COPY %2 | ; 32BIT-DAG: $r3 = COPY %2 | ||||
; 32BIT-DAG: $r4 = COPY %1 | ; 32BIT-DAG: $r4 = COPY %1 | ||||
; 32BIT-DAG: $r5 = COPY %3 | ; 32BIT-DAG: $r5 = COPY %3 | ||||
; 32BIT-NEXT: BL_NOP &.memcpy, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ; 32BIT-NEXT: BL_NOP &".memcpy[PR]", csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT: ADJCALLSTACKDOWN 92, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 92, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $f1 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $f1 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ||||
; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem3>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem3>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $f1, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 92, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 92, 0, implicit-def dead $r1, implicit $r1 | ||||
; CHECKASM-LABEL: .call_test_byval_mem3: | ; CHECKASM-LABEL: .call_test_byval_mem3: | ||||
; ASM32BIT: stwu 1, -112(1) | ; ASM32BIT: stwu 1, -112(1) | ||||
; ASM32BIT-DAG: lwz [[REG:[0-9]+]], L..C{{[0-9]+}}(2) | ; ASM32BIT-DAG: lwz [[REG:[0-9]+]], L..C{{[0-9]+}}(2) | ||||
; ASM32BIT-DAG: addi 3, 1, 56 | ; ASM32BIT-DAG: addi 3, 1, 56 | ||||
; ASM32BIT-DAG: addi 4, [[REG]], 24 | ; ASM32BIT-DAG: addi 4, [[REG]], 24 | ||||
; ASM32BIT-DAG: li 5, 33 | ; ASM32BIT-DAG: li 5, 33 | ||||
; ASM32BIT-NEXT: bl .memcpy | ; ASM32BIT-NEXT: bl .memcpy[PR] | ||||
; ASM32BIT-DAG: lwz 5, 0([[REG]]) | ; ASM32BIT-DAG: lwz 5, 0([[REG]]) | ||||
; ASM32BIT-DAG: lwz 6, 4([[REG]]) | ; ASM32BIT-DAG: lwz 6, 4([[REG]]) | ||||
; ASM32BIT-DAG: lwz 7, 8([[REG]]) | ; ASM32BIT-DAG: lwz 7, 8([[REG]]) | ||||
; ASM32BIT-DAG: lwz 8, 12([[REG]]) | ; ASM32BIT-DAG: lwz 8, 12([[REG]]) | ||||
; ASM32BIT-DAG: lwz 9, 16([[REG]]) | ; ASM32BIT-DAG: lwz 9, 16([[REG]]) | ||||
; ASM32BIT-DAG: lwz 10, 20([[REG]]) | ; ASM32BIT-DAG: lwz 10, 20([[REG]]) | ||||
; ASM32BIT: bl .test_byval_mem3 | ; ASM32BIT: bl .test_byval_mem3 | ||||
; ASM32BIT: addi 1, 1, 112 | ; ASM32BIT: addi 1, 1, 112 | ||||
▲ Show 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | |||||
; Confirm the expected memcpy call is independent of the call to test_byval_mem4. | ; Confirm the expected memcpy call is independent of the call to test_byval_mem4. | ||||
; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-NEXT: %3:gprc = nuw ADDI $r1, 60 | ; 32BIT-NEXT: %3:gprc = nuw ADDI $r1, 60 | ||||
; 32BIT-NEXT: %4:gprc = LWZtoc @gS256, $r2 :: (load 4 from got) | ; 32BIT-NEXT: %4:gprc = LWZtoc @gS256, $r2 :: (load 4 from got) | ||||
; 32BIT-NEXT: %5:gprc = LI 256 | ; 32BIT-NEXT: %5:gprc = LI 256 | ||||
; 32BIT-DAG: $r3 = COPY %3 | ; 32BIT-DAG: $r3 = COPY %3 | ||||
; 32BIT-DAG: $r4 = COPY %4 | ; 32BIT-DAG: $r4 = COPY %4 | ||||
; 32BIT-DAG: $r5 = COPY %5 | ; 32BIT-DAG: $r5 = COPY %5 | ||||
; 32BIT-NEXT: BL_NOP &.memcpy, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ; 32BIT-NEXT: BL_NOP &".memcpy[PR]", csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r2, implicit-def $r1, implicit-def $r3 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT: ADJCALLSTACKDOWN 316, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT: ADJCALLSTACKDOWN 316, 0, implicit-def dead $r1, implicit $r1 | ||||
; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r3 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r4 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r4 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r5 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r6 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r7 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r8 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r9 = COPY %{{[0-9]+}} | ||||
; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ; 32BIT-DAG: $r10 = COPY %{{[0-9]+}} | ||||
; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem4>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ; 32BIT-NEXT: BL_NOP <mcsymbol .test_byval_mem4>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $r4, implicit $r5, implicit $r6, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1 | ||||
; 32BIT-NEXT: ADJCALLSTACKUP 316, 0, implicit-def dead $r1, implicit $r1 | ; 32BIT-NEXT: ADJCALLSTACKUP 316, 0, implicit-def dead $r1, implicit $r1 | ||||
; ASM32BIT: stwu 1, -336(1) | ; ASM32BIT: stwu 1, -336(1) | ||||
; ASM32BIT-NEXT: stw [[REG1:[0-9]+]], {{[0-9]+}}(1) | ; ASM32BIT-NEXT: stw [[REG1:[0-9]+]], {{[0-9]+}}(1) | ||||
; ASM32BIT: lwz [[REG1]], L..C{{[0-9]+}}(2) | ; ASM32BIT: lwz [[REG1]], L..C{{[0-9]+}}(2) | ||||
; ASM32BIT-DAG: lhz [[REG2:[0-9]+]], 28([[REG1]]) | ; ASM32BIT-DAG: lhz [[REG2:[0-9]+]], 28([[REG1]]) | ||||
; ASM32BIT-DAG: sth [[REG2]], 56(1) | ; ASM32BIT-DAG: sth [[REG2]], 56(1) | ||||
; ASM32BIT-DAG: lbz [[REG3:[0-9]+]], 30([[REG1]]) | ; ASM32BIT-DAG: lbz [[REG3:[0-9]+]], 30([[REG1]]) | ||||
; ASM32BIT-DAG: stb [[REG3]], 58(1) | ; ASM32BIT-DAG: stb [[REG3]], 58(1) | ||||
; ASM32BIT-DAG: addi 3, 1, 60 | ; ASM32BIT-DAG: addi 3, 1, 60 | ||||
; ASM32BIT-DAG: lwz 4, L..C{{[0-9]+}}(2) | ; ASM32BIT-DAG: lwz 4, L..C{{[0-9]+}}(2) | ||||
; ASM32BIT-DAG: li 5, 256 | ; ASM32BIT-DAG: li 5, 256 | ||||
; ASM32BIT-NEXT: bl .memcpy | ; ASM32BIT-NEXT: bl .memcpy[PR] | ||||
; ASM32BIT-DAG: lwz 4, 0([[REG1]]) | ; ASM32BIT-DAG: lwz 4, 0([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 5, 4([[REG1]]) | ; ASM32BIT-DAG: lwz 5, 4([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 6, 8([[REG1]]) | ; ASM32BIT-DAG: lwz 6, 8([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 7, 12([[REG1]]) | ; ASM32BIT-DAG: lwz 7, 12([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 8, 16([[REG1]]) | ; ASM32BIT-DAG: lwz 8, 16([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 9, 20([[REG1]]) | ; ASM32BIT-DAG: lwz 9, 20([[REG1]]) | ||||
; ASM32BIT-DAG: lwz 10, 24([[REG1]]) | ; ASM32BIT-DAG: lwz 10, 24([[REG1]]) | ||||
; ASM32BIT: bl .test_byval_mem4 | ; ASM32BIT: bl .test_byval_mem4 | ||||
; ASM32BIT: addi 1, 1, 336 | ; ASM32BIT: addi 1, 1, 336 | ||||
; Confirm the expected memcpy call is independent of the call to test_byval_mem4. | ; Confirm the expected memcpy call is independent of the call to test_byval_mem4. | ||||
; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT-NEXT: %0:g8rc_and_g8rc_nox0 = LDtoc @gS256, $x2 :: (load 8 from got) | ; 64BIT-NEXT: %0:g8rc_and_g8rc_nox0 = LDtoc @gS256, $x2 :: (load 8 from got) | ||||
; 64BIT-NEXT: %1:g8rc = nuw ADDI8 %0, 24 | ; 64BIT-NEXT: %1:g8rc = nuw ADDI8 %0, 24 | ||||
; 64BIT-NEXT: %2:g8rc = nuw ADDI8 $x1, 112 | ; 64BIT-NEXT: %2:g8rc = nuw ADDI8 $x1, 112 | ||||
; 64BIT-NEXT: %3:g8rc = LI8 232 | ; 64BIT-NEXT: %3:g8rc = LI8 232 | ||||
; 64BIT-DAG: $x3 = COPY %2 | ; 64BIT-DAG: $x3 = COPY %2 | ||||
; 64BIT-DAG: $x4 = COPY %1 | ; 64BIT-DAG: $x4 = COPY %1 | ||||
; 64BIT-DAG: $x5 = COPY %3 | ; 64BIT-DAG: $x5 = COPY %3 | ||||
; 64BIT-NEXT: BL8_NOP &.memcpy, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x2, implicit-def $r1, implicit-def $x3 | ; 64BIT-NEXT: BL8_NOP &".memcpy[PR]", csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x2, implicit-def $r1, implicit-def $x3 | ||||
; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT-NEXT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT: ADJCALLSTACKDOWN 344, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT: ADJCALLSTACKDOWN 344, 0, implicit-def dead $r1, implicit $r1 | ||||
; 64BIT-DAG: $x3 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x3 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x4 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x4 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x5 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x5 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x6 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x6 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x7 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x7 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x8 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x8 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x9 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x9 = COPY %{{[0-9]+}} | ||||
; 64BIT-DAG: $x10 = COPY %{{[0-9]+}} | ; 64BIT-DAG: $x10 = COPY %{{[0-9]+}} | ||||
; 64BIT-NEXT: BL8_NOP <mcsymbol .test_byval_mem4>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1 | ; 64BIT-NEXT: BL8_NOP <mcsymbol .test_byval_mem4>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7, implicit $x8, implicit $x9, implicit $x10, implicit $x2, implicit-def $r1 | ||||
; 64BIT-NEXT: ADJCALLSTACKUP 344, 0, implicit-def dead $r1, implicit $r1 | ; 64BIT-NEXT: ADJCALLSTACKUP 344, 0, implicit-def dead $r1, implicit $r1 | ||||
; ASM64BIT: stdu 1, -368(1) | ; ASM64BIT: stdu 1, -368(1) | ||||
; ASM64BIT-DAG: ld [[REG1:[0-9]+]], L..C{{[0-9]+}}(2) | ; ASM64BIT-DAG: ld [[REG1:[0-9]+]], L..C{{[0-9]+}}(2) | ||||
; ASM64BIT-DAG: addi 3, 1, 112 | ; ASM64BIT-DAG: addi 3, 1, 112 | ||||
; ASM64BIT-DAG: addi 4, [[REG1]], 24 | ; ASM64BIT-DAG: addi 4, [[REG1]], 24 | ||||
; ASM64BIT-DAG: li 5, 232 | ; ASM64BIT-DAG: li 5, 232 | ||||
; ASM64BIT-NEXT: bl .memcpy | ; ASM64BIT-NEXT: bl .memcpy[PR] | ||||
; ASM64BIT-DAG: ld [[REG2:[0-9]+]], L..C{{[0-9]+}}(2) | ; ASM64BIT-DAG: ld [[REG2:[0-9]+]], L..C{{[0-9]+}}(2) | ||||
; ASM64BIT-DAG: ld 4, 0([[REG2]]) | ; ASM64BIT-DAG: ld 4, 0([[REG2]]) | ||||
; ASM64BIT-DAG: ld 5, 8([[REG2]]) | ; ASM64BIT-DAG: ld 5, 8([[REG2]]) | ||||
; ASM64BIT-DAG: ld 6, 16([[REG2]]) | ; ASM64BIT-DAG: ld 6, 16([[REG2]]) | ||||
; ASM64BIT-DAG: lwz [[REG3:[0-9]+]], 24([[REG2]]) | ; ASM64BIT-DAG: lwz [[REG3:[0-9]+]], 24([[REG2]]) | ||||
; ASM64BIT-DAG: lhz [[REG4:[0-9]+]], 28([[REG2]]) | ; ASM64BIT-DAG: lhz [[REG4:[0-9]+]], 28([[REG2]]) | ||||
; ASM64BIT-DAG: lbz 7, 30([[REG2]]) | ; ASM64BIT-DAG: lbz 7, 30([[REG2]]) | ||||
; ASM64BIT-DAG: rlwinm 7, 7, 8, 16, 23 | ; ASM64BIT-DAG: rlwinm 7, 7, 8, 16, 23 | ||||
▲ Show 20 Lines • Show All 62 Lines • Show Last 20 Lines |