93 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -verify-machineinstrs -stop-before=ppc-vsx-copy -vec-extabi \3; RUN: -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff < %s | \4; RUN: FileCheck --check-prefix=32BIT %s5 6; RUN: llc -verify-machineinstrs -stop-before=ppc-vsx-copy -vec-extabi \7; RUN: -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff < %s | \8; RUN: FileCheck --check-prefix=64BIT %s9 10define void @caller() {11 12 13 ; 32BIT-LABEL: name: caller14 ; 32BIT: bb.0.entry:15 ; 32BIT-NEXT: ADJCALLSTACKDOWN 88, 0, implicit-def dead $r1, implicit $r116 ; 32BIT-NEXT: [[LWZtoc:%[0-9]+]]:gprc = LWZtoc %const.0, $r2 :: (load (s32) from got)17 ; 32BIT-NEXT: [[LXVW4X:%[0-9]+]]:vsrc = LXVW4X $zero, killed [[LWZtoc]] :: (load (s128) from constant-pool)18 ; 32BIT-NEXT: [[LI:%[0-9]+]]:gprc = LI 6419 ; 32BIT-NEXT: STXVW4X killed [[LXVW4X]], $r1, killed [[LI]] :: (store (s128) into stack + 64)20 ; 32BIT-NEXT: [[LIS:%[0-9]+]]:gprc = LIS 3831421 ; 32BIT-NEXT: [[ORI:%[0-9]+]]:gprc = ORI killed [[LIS]], 6337622 ; 32BIT-NEXT: STW killed [[ORI]], 84, $r1 :: (store (s32) into stack + 84, basealign 16)23 ; 32BIT-NEXT: [[LIS1:%[0-9]+]]:gprc = LIS 1638924 ; 32BIT-NEXT: [[ORI1:%[0-9]+]]:gprc = ORI killed [[LIS1]], 4890525 ; 32BIT-NEXT: STW killed [[ORI1]], 80, $r1 :: (store (s32) into stack + 80, align 16)26 ; 32BIT-NEXT: [[LWZtoc1:%[0-9]+]]:gprc = LWZtoc %const.1, $r2 :: (load (s32) from got)27 ; 32BIT-NEXT: [[LXVW4X1:%[0-9]+]]:vsrc = LXVW4X $zero, killed [[LWZtoc1]] :: (load (s128) from constant-pool)28 ; 32BIT-NEXT: [[LWZtoc2:%[0-9]+]]:gprc_and_gprc_nor0 = LWZtoc %const.2, $r2 :: (load (s32) from got)29 ; 32BIT-NEXT: [[LFD:%[0-9]+]]:f8rc = LFD 0, killed [[LWZtoc2]] :: (load (s64) from constant-pool)30 ; 32BIT-NEXT: [[LIS2:%[0-9]+]]:gprc = LIS 1639331 ; 32BIT-NEXT: [[ORI2:%[0-9]+]]:gprc = ORI killed [[LIS2]], 869732 ; 32BIT-NEXT: [[LIS3:%[0-9]+]]:gprc = LIS 6146733 ; 32BIT-NEXT: [[ORI3:%[0-9]+]]:gprc = ORI killed [[LIS3]], 3441434 ; 32BIT-NEXT: [[LWZtoc3:%[0-9]+]]:gprc_and_gprc_nor0 = LWZtoc %const.3, $r2 :: (load (s32) from got)35 ; 32BIT-NEXT: [[LFD1:%[0-9]+]]:f8rc = LFD 0, killed [[LWZtoc3]] :: (load (s64) from constant-pool)36 ; 32BIT-NEXT: [[LI1:%[0-9]+]]:gprc = LI 5537 ; 32BIT-NEXT: $r3 = COPY [[LI1]]38 ; 32BIT-NEXT: $v2 = COPY [[LXVW4X1]]39 ; 32BIT-NEXT: $f1 = COPY [[LFD]]40 ; 32BIT-NEXT: $r9 = COPY [[ORI2]]41 ; 32BIT-NEXT: $r10 = COPY [[ORI3]]42 ; 32BIT-NEXT: $f2 = COPY [[LFD1]]43 ; 32BIT-NEXT: BL_NOP <mcsymbol .callee[PR]>, csr_aix32_altivec, implicit-def dead $lr, implicit $rm, implicit $r3, implicit $v2, implicit $f1, implicit $r9, implicit $r10, implicit $f2, implicit $r2, implicit-def $r1, implicit-def $v244 ; 32BIT-NEXT: ADJCALLSTACKUP 88, 0, implicit-def dead $r1, implicit $r145 ; 32BIT-NEXT: [[COPY:%[0-9]+]]:vsrc = COPY $v246 ; 32BIT-NEXT: BLR implicit $lr, implicit $rm47 ;48 ; 64BIT-LABEL: name: caller49 ; 64BIT: bb.0.entry:50 ; 64BIT-NEXT: ADJCALLSTACKDOWN 120, 0, implicit-def dead $r1, implicit $r151 ; 64BIT-NEXT: [[LDtocCPT:%[0-9]+]]:g8rc = LDtocCPT %const.0, $x2 :: (load (s64) from got)52 ; 64BIT-NEXT: [[LXVW4X:%[0-9]+]]:vsrc = LXVW4X $zero8, killed [[LDtocCPT]] :: (load (s128) from constant-pool)53 ; 64BIT-NEXT: [[LI8_:%[0-9]+]]:g8rc = LI8 9654 ; 64BIT-NEXT: STXVW4X killed [[LXVW4X]], $x1, killed [[LI8_]] :: (store (s128))55 ; 64BIT-NEXT: [[LIS8_:%[0-9]+]]:g8rc = LIS8 1638956 ; 64BIT-NEXT: [[ORI8_:%[0-9]+]]:g8rc = ORI8 killed [[LIS8_]], 4890557 ; 64BIT-NEXT: [[RLDIC:%[0-9]+]]:g8rc = RLDIC killed [[ORI8_]], 32, 158 ; 64BIT-NEXT: [[ORIS8_:%[0-9]+]]:g8rc = ORIS8 killed [[RLDIC]], 3831459 ; 64BIT-NEXT: [[ORI8_1:%[0-9]+]]:g8rc = ORI8 killed [[ORIS8_]], 6337660 ; 64BIT-NEXT: STD killed [[ORI8_1]], 112, $x1 :: (store (s64) into stack + 112, align 16)61 ; 64BIT-NEXT: [[LDtocCPT1:%[0-9]+]]:g8rc = LDtocCPT %const.1, $x2 :: (load (s64) from got)62 ; 64BIT-NEXT: [[LXVW4X1:%[0-9]+]]:vsrc = LXVW4X $zero8, killed [[LDtocCPT1]] :: (load (s128) from constant-pool)63 ; 64BIT-NEXT: [[LD:%[0-9]+]]:g8rc = LD 104, $x1 :: (load (s64))64 ; 64BIT-NEXT: [[LD1:%[0-9]+]]:g8rc = LD 96, $x1 :: (load (s64))65 ; 64BIT-NEXT: [[LDtocCPT2:%[0-9]+]]:g8rc_and_g8rc_nox0 = LDtocCPT %const.2, $x2 :: (load (s64) from got)66 ; 64BIT-NEXT: [[LFD:%[0-9]+]]:f8rc = LFD 0, killed [[LDtocCPT2]] :: (load (s64) from constant-pool)67 ; 64BIT-NEXT: [[LDtocCPT3:%[0-9]+]]:g8rc_and_g8rc_nox0 = LDtocCPT %const.3, $x2 :: (load (s64) from got)68 ; 64BIT-NEXT: [[LFD1:%[0-9]+]]:f8rc = LFD 0, killed [[LDtocCPT3]] :: (load (s64) from constant-pool)69 ; 64BIT-NEXT: [[LIS8_1:%[0-9]+]]:g8rc = LIS8 1639370 ; 64BIT-NEXT: [[ORI8_2:%[0-9]+]]:g8rc = ORI8 killed [[LIS8_1]], 869771 ; 64BIT-NEXT: [[RLDIC1:%[0-9]+]]:g8rc = RLDIC killed [[ORI8_2]], 32, 172 ; 64BIT-NEXT: [[ORIS8_1:%[0-9]+]]:g8rc = ORIS8 killed [[RLDIC1]], 6146773 ; 64BIT-NEXT: [[ORI8_3:%[0-9]+]]:g8rc = ORI8 killed [[ORIS8_1]], 3441474 ; 64BIT-NEXT: [[LI8_1:%[0-9]+]]:g8rc = LI8 5575 ; 64BIT-NEXT: $x3 = COPY [[LI8_1]]76 ; 64BIT-NEXT: $v2 = COPY [[LXVW4X1]]77 ; 64BIT-NEXT: $f1 = COPY [[LFD]]78 ; 64BIT-NEXT: $x7 = COPY [[ORI8_3]]79 ; 64BIT-NEXT: $x9 = COPY [[LD1]]80 ; 64BIT-NEXT: $x10 = COPY [[LD]]81 ; 64BIT-NEXT: $f2 = COPY [[LFD1]]82 ; 64BIT-NEXT: BL8_NOP <mcsymbol .callee[PR]>, csr_ppc64_altivec, implicit-def dead $lr8, implicit $rm, implicit $x3, implicit $v2, implicit $f1, implicit $x7, implicit $x9, implicit $x10, implicit $f2, implicit $x2, implicit-def $r1, implicit-def $v283 ; 64BIT-NEXT: ADJCALLSTACKUP 120, 0, implicit-def dead $r1, implicit $r184 ; 64BIT-NEXT: [[COPY:%[0-9]+]]:vsrc = COPY $v285 ; 64BIT-NEXT: BLR8 implicit $lr8, implicit $rm86entry:87 %call = tail call <4 x i32> (i32, <4 x i32>, double, ...) @callee(i32 signext 55, <4 x i32> <i32 170, i32 187, i32 204, i32 221>, double 3.141590e+00, <4 x i32> <i32 10, i32 20, i32 30, i32 40>, double 2.718280e+00)88 ret void89}90 91declare <4 x i32> @callee(i32 signext, <4 x i32>, double, ...)92 93