mflr is kind of expensive on Power version smaller than 10, so we should schedule the store for the mflr's def away from mflr. In epilogue, the expensive mtlr has no user for its def, so it doesn't matter that the load and the mtlr are back-to-back. Reviewed By: RolandF Differential Revision: https://reviews.llvm.org/D137423
1205 lines
42 KiB
LLVM
1205 lines
42 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8LE
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9LE
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10LE
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8BE
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9BE
|
|
; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \
|
|
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10BE
|
|
|
|
define signext i8 @caller_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_9:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: stb r4, 56(r1)
|
|
; P8LE-NEXT: addi r5, r1, 71
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: lbz r4, 56(r1)
|
|
; P8LE-NEXT: stdx r3, 0, r5
|
|
; P8LE-NEXT: mr r3, r5
|
|
; P8LE-NEXT: stb r4, 79(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_9:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: stb r4, 56(r1)
|
|
; P9LE-NEXT: addi r4, r1, 71
|
|
; P9LE-NEXT: lbz r5, 56(r1)
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: stdx r3, 0, r4
|
|
; P9LE-NEXT: mr r3, r4
|
|
; P9LE-NEXT: stb r5, 79(r1)
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_9:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: stb r4, 56(r1)
|
|
; P10LE-NEXT: addi r4, r1, 71
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: lbz r5, 56(r1)
|
|
; P10LE-NEXT: stdx r3, 0, r4
|
|
; P10LE-NEXT: mr r3, r4
|
|
; P10LE-NEXT: stb r5, 79(r1)
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_9:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: stb r4, 200(r1)
|
|
; P8BE-NEXT: addi r5, r1, 135
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: lbz r4, 200(r1)
|
|
; P8BE-NEXT: stdx r3, 0, r5
|
|
; P8BE-NEXT: mr r3, r5
|
|
; P8BE-NEXT: stb r4, 143(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_9:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: stb r4, 200(r1)
|
|
; P9BE-NEXT: addi r4, r1, 135
|
|
; P9BE-NEXT: lbz r5, 200(r1)
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: stdx r3, 0, r4
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: stb r5, 143(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_9:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: stb r4, 200(r1)
|
|
; P10BE-NEXT: addi r4, r1, 135
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: lbz r5, 200(r1)
|
|
; P10BE-NEXT: stdx r3, 0, r4
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: stb r5, 143(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [9 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_9_callee_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_9_callee_9:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: stb r4, 56(r1)
|
|
; P8LE-NEXT: addi r5, r1, 71
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: lbz r4, 56(r1)
|
|
; P8LE-NEXT: stdx r3, 0, r5
|
|
; P8LE-NEXT: stb r4, 79(r1)
|
|
; P8LE-NEXT: lbz r4, 56(r1)
|
|
; P8LE-NEXT: ld r3, 48(r1)
|
|
; P8LE-NEXT: bl callee_9
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_9_callee_9:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: stb r4, 56(r1)
|
|
; P9LE-NEXT: addi r4, r1, 71
|
|
; P9LE-NEXT: lbz r5, 56(r1)
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: stdx r3, 0, r4
|
|
; P9LE-NEXT: lbz r4, 56(r1)
|
|
; P9LE-NEXT: ld r3, 48(r1)
|
|
; P9LE-NEXT: stb r5, 79(r1)
|
|
; P9LE-NEXT: bl callee_9
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_9_callee_9:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: stb r4, 56(r1)
|
|
; P10LE-NEXT: addi r4, r1, 71
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: lbz r5, 56(r1)
|
|
; P10LE-NEXT: stdx r3, 0, r4
|
|
; P10LE-NEXT: lbz r4, 56(r1)
|
|
; P10LE-NEXT: ld r3, 48(r1)
|
|
; P10LE-NEXT: stb r5, 79(r1)
|
|
; P10LE-NEXT: bl callee_9@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_9_callee_9:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: stb r4, 200(r1)
|
|
; P8BE-NEXT: addi r5, r1, 135
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: lbz r4, 200(r1)
|
|
; P8BE-NEXT: stdx r3, 0, r5
|
|
; P8BE-NEXT: stb r4, 143(r1)
|
|
; P8BE-NEXT: lbz r4, 200(r1)
|
|
; P8BE-NEXT: ld r3, 192(r1)
|
|
; P8BE-NEXT: bl callee_9
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_9_callee_9:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: stb r4, 200(r1)
|
|
; P9BE-NEXT: addi r4, r1, 135
|
|
; P9BE-NEXT: lbz r5, 200(r1)
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: stdx r3, 0, r4
|
|
; P9BE-NEXT: lbz r4, 200(r1)
|
|
; P9BE-NEXT: ld r3, 192(r1)
|
|
; P9BE-NEXT: stb r5, 143(r1)
|
|
; P9BE-NEXT: bl callee_9
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_9_callee_9:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: stb r4, 200(r1)
|
|
; P10BE-NEXT: addi r4, r1, 135
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: lbz r5, 200(r1)
|
|
; P10BE-NEXT: stdx r3, 0, r4
|
|
; P10BE-NEXT: lbz r4, 200(r1)
|
|
; P10BE-NEXT: ld r3, 192(r1)
|
|
; P10BE-NEXT: stb r5, 143(r1)
|
|
; P10BE-NEXT: bl callee_9
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [9 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
call void @callee_9(ptr nocapture readonly byval([9 x i8]) %data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_10(ptr nocapture readonly byval([10 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_10:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: sth r4, 56(r1)
|
|
; P8LE-NEXT: addi r5, r1, 70
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: lhz r4, 56(r1)
|
|
; P8LE-NEXT: stdx r3, 0, r5
|
|
; P8LE-NEXT: mr r3, r5
|
|
; P8LE-NEXT: sth r4, 78(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_10:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: sth r4, 56(r1)
|
|
; P9LE-NEXT: addi r4, r1, 70
|
|
; P9LE-NEXT: lhz r5, 56(r1)
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: stdx r3, 0, r4
|
|
; P9LE-NEXT: mr r3, r4
|
|
; P9LE-NEXT: sth r5, 78(r1)
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_10:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: sth r4, 56(r1)
|
|
; P10LE-NEXT: addi r4, r1, 70
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: lhz r5, 56(r1)
|
|
; P10LE-NEXT: stdx r3, 0, r4
|
|
; P10LE-NEXT: mr r3, r4
|
|
; P10LE-NEXT: sth r5, 78(r1)
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_10:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: sth r4, 200(r1)
|
|
; P8BE-NEXT: addi r5, r1, 134
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: lhz r4, 200(r1)
|
|
; P8BE-NEXT: stdx r3, 0, r5
|
|
; P8BE-NEXT: mr r3, r5
|
|
; P8BE-NEXT: sth r4, 142(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_10:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: sth r4, 200(r1)
|
|
; P9BE-NEXT: addi r4, r1, 134
|
|
; P9BE-NEXT: lhz r5, 200(r1)
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: stdx r3, 0, r4
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: sth r5, 142(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_10:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: sth r4, 200(r1)
|
|
; P10BE-NEXT: addi r4, r1, 134
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: lhz r5, 200(r1)
|
|
; P10BE-NEXT: stdx r3, 0, r4
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: sth r5, 142(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [10 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
%.elt9 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 9
|
|
%.unpack9 = load i8, ptr %.elt9, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
%.temp.9.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 9
|
|
store i8 %.unpack9, ptr %.temp.9.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_12(ptr nocapture readonly byval([12 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_12:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: stw r4, 56(r1)
|
|
; P8LE-NEXT: addi r5, r1, 68
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: lwz r4, 56(r1)
|
|
; P8LE-NEXT: std r3, 68(r1)
|
|
; P8LE-NEXT: mr r3, r5
|
|
; P8LE-NEXT: stw r4, 76(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_12:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: stw r4, 56(r1)
|
|
; P9LE-NEXT: addi r4, r1, 68
|
|
; P9LE-NEXT: lwz r5, 56(r1)
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: std r3, 68(r1)
|
|
; P9LE-NEXT: mr r3, r4
|
|
; P9LE-NEXT: stw r5, 76(r1)
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_12:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: stw r4, 56(r1)
|
|
; P10LE-NEXT: addi r4, r1, 68
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: lwz r5, 56(r1)
|
|
; P10LE-NEXT: std r3, 68(r1)
|
|
; P10LE-NEXT: mr r3, r4
|
|
; P10LE-NEXT: stw r5, 76(r1)
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_12:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: stw r4, 200(r1)
|
|
; P8BE-NEXT: addi r5, r1, 132
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: lwz r4, 200(r1)
|
|
; P8BE-NEXT: std r3, 132(r1)
|
|
; P8BE-NEXT: mr r3, r5
|
|
; P8BE-NEXT: stw r4, 140(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_12:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: stw r4, 200(r1)
|
|
; P9BE-NEXT: addi r4, r1, 132
|
|
; P9BE-NEXT: lwz r5, 200(r1)
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: std r3, 132(r1)
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: stw r5, 140(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_12:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: stw r4, 200(r1)
|
|
; P10BE-NEXT: addi r4, r1, 132
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: lwz r5, 200(r1)
|
|
; P10BE-NEXT: std r3, 132(r1)
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: stw r5, 140(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [12 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
%.elt9 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 9
|
|
%.unpack9 = load i8, ptr %.elt9, align 1
|
|
%.elt10 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 10
|
|
%.unpack10 = load i8, ptr %.elt10, align 1
|
|
%.elt11 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 11
|
|
%.unpack11 = load i8, ptr %.elt11, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
%.temp.9.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 9
|
|
store i8 %.unpack9, ptr %.temp.9.gep, align 1
|
|
%.temp.10.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 10
|
|
store i8 %.unpack10, ptr %.temp.10.gep, align 1
|
|
%.temp.11.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 11
|
|
store i8 %.unpack11, ptr %.temp.11.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_14(ptr nocapture readonly byval([14 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_14:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: stw r4, 56(r1)
|
|
; P8LE-NEXT: addi r5, r1, 66
|
|
; P8LE-NEXT: rldicl r4, r4, 32, 32
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: lwz r6, 56(r1)
|
|
; P8LE-NEXT: stdx r3, 0, r5
|
|
; P8LE-NEXT: mr r3, r5
|
|
; P8LE-NEXT: sth r4, 60(r1)
|
|
; P8LE-NEXT: stw r6, 74(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_14:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: stw r4, 56(r1)
|
|
; P9LE-NEXT: lwz r5, 56(r1)
|
|
; P9LE-NEXT: rldicl r4, r4, 32, 32
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: sth r4, 60(r1)
|
|
; P9LE-NEXT: addi r4, r1, 66
|
|
; P9LE-NEXT: stdx r3, 0, r4
|
|
; P9LE-NEXT: mr r3, r4
|
|
; P9LE-NEXT: stw r5, 74(r1)
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_14:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: stw r4, 56(r1)
|
|
; P10LE-NEXT: rldicl r4, r4, 32, 32
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: lwz r5, 56(r1)
|
|
; P10LE-NEXT: sth r4, 60(r1)
|
|
; P10LE-NEXT: addi r4, r1, 66
|
|
; P10LE-NEXT: stdx r3, 0, r4
|
|
; P10LE-NEXT: mr r3, r4
|
|
; P10LE-NEXT: stw r5, 74(r1)
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_14:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: rldicl r6, r4, 48, 16
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: addi r5, r1, 130
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: stdx r3, 0, r5
|
|
; P8BE-NEXT: mr r3, r5
|
|
; P8BE-NEXT: stw r6, 200(r1)
|
|
; P8BE-NEXT: lwz r6, 200(r1)
|
|
; P8BE-NEXT: sth r4, 204(r1)
|
|
; P8BE-NEXT: stw r6, 138(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_14:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: rldicl r5, r4, 48, 16
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: sth r4, 204(r1)
|
|
; P9BE-NEXT: addi r4, r1, 130
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: stw r5, 200(r1)
|
|
; P9BE-NEXT: stdx r3, 0, r4
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: lwz r5, 200(r1)
|
|
; P9BE-NEXT: stw r5, 138(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_14:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: rldicl r5, r4, 48, 16
|
|
; P10BE-NEXT: sth r4, 204(r1)
|
|
; P10BE-NEXT: addi r4, r1, 130
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: stw r5, 200(r1)
|
|
; P10BE-NEXT: stdx r3, 0, r4
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: lwz r5, 200(r1)
|
|
; P10BE-NEXT: stw r5, 138(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [14 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
%.elt9 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 9
|
|
%.unpack9 = load i8, ptr %.elt9, align 1
|
|
%.elt10 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 10
|
|
%.unpack10 = load i8, ptr %.elt10, align 1
|
|
%.elt11 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 11
|
|
%.unpack11 = load i8, ptr %.elt11, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
%.temp.9.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 9
|
|
store i8 %.unpack9, ptr %.temp.9.gep, align 1
|
|
%.temp.10.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 10
|
|
store i8 %.unpack10, ptr %.temp.10.gep, align 1
|
|
%.temp.11.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 11
|
|
store i8 %.unpack11, ptr %.temp.11.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_16(ptr nocapture readonly byval([16 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_16:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -80(r1)
|
|
; P8LE-NEXT: addi r5, r1, 64
|
|
; P8LE-NEXT: std r0, 96(r1)
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: std r4, 56(r1)
|
|
; P8LE-NEXT: std r3, 64(r1)
|
|
; P8LE-NEXT: mr r3, r5
|
|
; P8LE-NEXT: stw r4, 72(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 80
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_16:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -80(r1)
|
|
; P9LE-NEXT: addi r5, r1, 64
|
|
; P9LE-NEXT: std r0, 96(r1)
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: std r4, 56(r1)
|
|
; P9LE-NEXT: stw r4, 72(r1)
|
|
; P9LE-NEXT: std r3, 64(r1)
|
|
; P9LE-NEXT: mr r3, r5
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 80
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_16:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -80(r1)
|
|
; P10LE-NEXT: addi r5, r1, 64
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: std r4, 56(r1)
|
|
; P10LE-NEXT: stw r4, 72(r1)
|
|
; P10LE-NEXT: std r3, 64(r1)
|
|
; P10LE-NEXT: mr r3, r5
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 80
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_16:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: addi r5, r1, 128
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: rldicl r6, r4, 32, 32
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: std r4, 200(r1)
|
|
; P8BE-NEXT: std r3, 128(r1)
|
|
; P8BE-NEXT: mr r3, r5
|
|
; P8BE-NEXT: stw r6, 136(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_16:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: std r4, 200(r1)
|
|
; P9BE-NEXT: rldicl r5, r4, 32, 32
|
|
; P9BE-NEXT: addi r4, r1, 128
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: std r3, 128(r1)
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: stw r5, 136(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_16:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: std r4, 200(r1)
|
|
; P10BE-NEXT: rldicl r5, r4, 32, 32
|
|
; P10BE-NEXT: addi r4, r1, 128
|
|
; P10BE-NEXT: std r3, 128(r1)
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: stw r5, 136(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [16 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
%.elt9 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 9
|
|
%.unpack9 = load i8, ptr %.elt9, align 1
|
|
%.elt10 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 10
|
|
%.unpack10 = load i8, ptr %.elt10, align 1
|
|
%.elt11 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 11
|
|
%.unpack11 = load i8, ptr %.elt11, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
%.temp.9.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 9
|
|
store i8 %.unpack9, ptr %.temp.9.gep, align 1
|
|
%.temp.10.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 10
|
|
store i8 %.unpack10, ptr %.temp.10.gep, align 1
|
|
%.temp.11.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 11
|
|
store i8 %.unpack11, ptr %.temp.11.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
define signext i8 @caller_18(ptr nocapture readonly byval([18 x i8]) %data) #0 {
|
|
; P8LE-LABEL: caller_18:
|
|
; P8LE: # %bb.0: # %entry
|
|
; P8LE-NEXT: mflr r0
|
|
; P8LE-NEXT: stdu r1, -96(r1)
|
|
; P8LE-NEXT: addi r6, r1, 78
|
|
; P8LE-NEXT: std r0, 112(r1)
|
|
; P8LE-NEXT: std r3, 48(r1)
|
|
; P8LE-NEXT: std r4, 56(r1)
|
|
; P8LE-NEXT: stdx r3, 0, r6
|
|
; P8LE-NEXT: mr r3, r6
|
|
; P8LE-NEXT: sth r5, 64(r1)
|
|
; P8LE-NEXT: stw r4, 86(r1)
|
|
; P8LE-NEXT: bl callee
|
|
; P8LE-NEXT: nop
|
|
; P8LE-NEXT: li r3, 0
|
|
; P8LE-NEXT: addi r1, r1, 96
|
|
; P8LE-NEXT: ld r0, 16(r1)
|
|
; P8LE-NEXT: mtlr r0
|
|
; P8LE-NEXT: blr
|
|
;
|
|
; P9LE-LABEL: caller_18:
|
|
; P9LE: # %bb.0: # %entry
|
|
; P9LE-NEXT: mflr r0
|
|
; P9LE-NEXT: stdu r1, -96(r1)
|
|
; P9LE-NEXT: std r0, 112(r1)
|
|
; P9LE-NEXT: sth r5, 64(r1)
|
|
; P9LE-NEXT: addi r5, r1, 78
|
|
; P9LE-NEXT: std r3, 48(r1)
|
|
; P9LE-NEXT: std r4, 56(r1)
|
|
; P9LE-NEXT: stw r4, 86(r1)
|
|
; P9LE-NEXT: stdx r3, 0, r5
|
|
; P9LE-NEXT: mr r3, r5
|
|
; P9LE-NEXT: bl callee
|
|
; P9LE-NEXT: nop
|
|
; P9LE-NEXT: li r3, 0
|
|
; P9LE-NEXT: addi r1, r1, 96
|
|
; P9LE-NEXT: ld r0, 16(r1)
|
|
; P9LE-NEXT: mtlr r0
|
|
; P9LE-NEXT: blr
|
|
;
|
|
; P10LE-LABEL: caller_18:
|
|
; P10LE: # %bb.0: # %entry
|
|
; P10LE-NEXT: mflr r0
|
|
; P10LE-NEXT: std r0, 16(r1)
|
|
; P10LE-NEXT: stdu r1, -96(r1)
|
|
; P10LE-NEXT: sth r5, 64(r1)
|
|
; P10LE-NEXT: addi r5, r1, 78
|
|
; P10LE-NEXT: std r3, 48(r1)
|
|
; P10LE-NEXT: std r4, 56(r1)
|
|
; P10LE-NEXT: stw r4, 86(r1)
|
|
; P10LE-NEXT: stdx r3, 0, r5
|
|
; P10LE-NEXT: mr r3, r5
|
|
; P10LE-NEXT: bl callee@notoc
|
|
; P10LE-NEXT: li r3, 0
|
|
; P10LE-NEXT: addi r1, r1, 96
|
|
; P10LE-NEXT: ld r0, 16(r1)
|
|
; P10LE-NEXT: mtlr r0
|
|
; P10LE-NEXT: blr
|
|
;
|
|
; P8BE-LABEL: caller_18:
|
|
; P8BE: # %bb.0: # %entry
|
|
; P8BE-NEXT: mflr r0
|
|
; P8BE-NEXT: stdu r1, -144(r1)
|
|
; P8BE-NEXT: addi r6, r1, 126
|
|
; P8BE-NEXT: std r0, 160(r1)
|
|
; P8BE-NEXT: sth r5, 208(r1)
|
|
; P8BE-NEXT: rldicl r5, r4, 32, 32
|
|
; P8BE-NEXT: std r3, 192(r1)
|
|
; P8BE-NEXT: std r4, 200(r1)
|
|
; P8BE-NEXT: stdx r3, 0, r6
|
|
; P8BE-NEXT: mr r3, r6
|
|
; P8BE-NEXT: stw r5, 134(r1)
|
|
; P8BE-NEXT: bl callee
|
|
; P8BE-NEXT: nop
|
|
; P8BE-NEXT: li r3, 0
|
|
; P8BE-NEXT: addi r1, r1, 144
|
|
; P8BE-NEXT: ld r0, 16(r1)
|
|
; P8BE-NEXT: mtlr r0
|
|
; P8BE-NEXT: blr
|
|
;
|
|
; P9BE-LABEL: caller_18:
|
|
; P9BE: # %bb.0: # %entry
|
|
; P9BE-NEXT: mflr r0
|
|
; P9BE-NEXT: stdu r1, -144(r1)
|
|
; P9BE-NEXT: std r0, 160(r1)
|
|
; P9BE-NEXT: std r4, 200(r1)
|
|
; P9BE-NEXT: sth r5, 208(r1)
|
|
; P9BE-NEXT: rldicl r5, r4, 32, 32
|
|
; P9BE-NEXT: addi r4, r1, 126
|
|
; P9BE-NEXT: std r3, 192(r1)
|
|
; P9BE-NEXT: stdx r3, 0, r4
|
|
; P9BE-NEXT: mr r3, r4
|
|
; P9BE-NEXT: stw r5, 134(r1)
|
|
; P9BE-NEXT: bl callee
|
|
; P9BE-NEXT: nop
|
|
; P9BE-NEXT: li r3, 0
|
|
; P9BE-NEXT: addi r1, r1, 144
|
|
; P9BE-NEXT: ld r0, 16(r1)
|
|
; P9BE-NEXT: mtlr r0
|
|
; P9BE-NEXT: blr
|
|
;
|
|
; P10BE-LABEL: caller_18:
|
|
; P10BE: # %bb.0: # %entry
|
|
; P10BE-NEXT: mflr r0
|
|
; P10BE-NEXT: std r0, 16(r1)
|
|
; P10BE-NEXT: stdu r1, -144(r1)
|
|
; P10BE-NEXT: std r3, 192(r1)
|
|
; P10BE-NEXT: std r4, 200(r1)
|
|
; P10BE-NEXT: sth r5, 208(r1)
|
|
; P10BE-NEXT: rldicl r5, r4, 32, 32
|
|
; P10BE-NEXT: addi r4, r1, 126
|
|
; P10BE-NEXT: stdx r3, 0, r4
|
|
; P10BE-NEXT: mr r3, r4
|
|
; P10BE-NEXT: stw r5, 134(r1)
|
|
; P10BE-NEXT: bl callee
|
|
; P10BE-NEXT: nop
|
|
; P10BE-NEXT: li r3, 0
|
|
; P10BE-NEXT: addi r1, r1, 144
|
|
; P10BE-NEXT: ld r0, 16(r1)
|
|
; P10BE-NEXT: mtlr r0
|
|
; P10BE-NEXT: blr
|
|
entry:
|
|
%_param_data = alloca [18 x i8], align 1
|
|
%.unpack0 = load i8, ptr %data, align 1
|
|
%.elt1 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 1
|
|
%.unpack1 = load i8, ptr %.elt1, align 1
|
|
%.elt2 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 2
|
|
%.unpack2 = load i8, ptr %.elt2, align 1
|
|
%.elt3 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 3
|
|
%.unpack3 = load i8, ptr %.elt3, align 1
|
|
%.elt4 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 4
|
|
%.unpack4 = load i8, ptr %.elt4, align 1
|
|
%.elt5 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 5
|
|
%.unpack5 = load i8, ptr %.elt5, align 1
|
|
%.elt6 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 6
|
|
%.unpack6 = load i8, ptr %.elt6, align 1
|
|
%.elt7 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 7
|
|
%.unpack7 = load i8, ptr %.elt7, align 1
|
|
%.elt8 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 8
|
|
%.unpack8 = load i8, ptr %.elt8, align 1
|
|
%.elt9 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 9
|
|
%.unpack9 = load i8, ptr %.elt9, align 1
|
|
%.elt10 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 10
|
|
%.unpack10 = load i8, ptr %.elt10, align 1
|
|
%.elt11 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 11
|
|
%.unpack11 = load i8, ptr %.elt11, align 1
|
|
store i8 %.unpack0, ptr %_param_data, align 1
|
|
%.temp.1.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 1
|
|
store i8 %.unpack1, ptr %.temp.1.gep, align 1
|
|
%.temp.2.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 2
|
|
store i8 %.unpack2, ptr %.temp.2.gep, align 1
|
|
%.temp.3.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 3
|
|
store i8 %.unpack3, ptr %.temp.3.gep, align 1
|
|
%.temp.4.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 4
|
|
store i8 %.unpack4, ptr %.temp.4.gep, align 1
|
|
%.temp.5.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 5
|
|
store i8 %.unpack5, ptr %.temp.5.gep, align 1
|
|
%.temp.6.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 6
|
|
store i8 %.unpack6, ptr %.temp.6.gep, align 1
|
|
%.temp.7.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 7
|
|
store i8 %.unpack7, ptr %.temp.7.gep, align 1
|
|
%.temp.8.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 8
|
|
store i8 %.unpack8, ptr %.temp.8.gep, align 1
|
|
%.temp.9.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 9
|
|
store i8 %.unpack9, ptr %.temp.9.gep, align 1
|
|
%.temp.10.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 10
|
|
store i8 %.unpack10, ptr %.temp.10.gep, align 1
|
|
%.temp.11.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 11
|
|
store i8 %.unpack11, ptr %.temp.11.gep, align 1
|
|
call void @callee(ptr nonnull %_param_data)
|
|
ret i8 0
|
|
}
|
|
|
|
|
|
|
|
declare void @callee(ptr) local_unnamed_addr #0
|
|
declare void @callee_9(ptr nocapture readonly byval([9 x i8]) %data) local_unnamed_addr #0
|
|
|
|
attributes #0 = { nounwind }
|
|
|