Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix-alloca-r31.ll
blobedfa0b98168e4bcccc4c8c61db5c60931a58a927
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \
3 ; RUN:     -mattr=+altivec -vec-extabi -xcoff-traceback-table=true < %s | \
4 ; RUN:   FileCheck --check-prefix=CHECK-ASM32 %s
6 ; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr4 \
7 ; RUN:     -mattr=+altivec -vec-extabi -xcoff-traceback-table=true < %s | \
8 ; RUN:   FileCheck --check-prefix=CHECK-ASM64 %s
10 @var = local_unnamed_addr global i32 0
12 define i32 @varalloca() local_unnamed_addr {
13 ; CHECK-ASM32-LABEL: varalloca:
14 ; CHECK-ASM32:       # %bb.0: # %entry
15 ; CHECK-ASM32-NEXT:    stw 31, -4(1)
16 ; CHECK-ASM32-NEXT:    stwu 1, -48(1)
17 ; CHECK-ASM32-NEXT:    lwz 3, L..C0(2) # @var
18 ; CHECK-ASM32-NEXT:    mr 31, 1
19 ; CHECK-ASM32-NEXT:    addi 4, 31, 48
20 ; CHECK-ASM32-NEXT:    lwz 3, 0(3)
21 ; CHECK-ASM32-NEXT:    addi 3, 3, 15
22 ; CHECK-ASM32-NEXT:    rlwinm 3, 3, 0, 0, 27
23 ; CHECK-ASM32-NEXT:    neg 3, 3
24 ; CHECK-ASM32-NEXT:    stwux 4, 1, 3
25 ; CHECK-ASM32-NEXT:    addi 3, 1, 32
26 ; CHECK-ASM32-NEXT:    lwz 3, 0(3)
27 ; CHECK-ASM32-NEXT:    lwz 1, 0(1)
28 ; CHECK-ASM32-NEXT:    lwz 31, -4(1)
29 ; CHECK-ASM32-NEXT:    blr
30 ; CHECK-ASM32-NEXT:    L..varalloca0:
31 ; CHECK-ASM32-NEXT:     .vbyte  4, 0x00000000                   # Traceback table begin
32 ; CHECK-ASM32-NEXT:     .byte   0x00                            # Version = 0
33 ; CHECK-ASM32-NEXT:     .byte   0x09                            # Language = CPlusPlus
34 ; CHECK-ASM32-NEXT:     .byte   0x20                            # -IsGlobaLinkage, -IsOutOfLineEpilogOrPrologue
35 ; CHECK-ASM32-NEXT:                                            # +HasTraceBackTableOffset, -IsInternalProcedure
36 ; CHECK-ASM32-NEXT:                                            # -HasControlledStorage, -IsTOCless
37 ; CHECK-ASM32-NEXT:                                            # -IsFloatingPointPresent
38 ; CHECK-ASM32-NEXT:                                            # -IsFloatingPointOperationLogOrAbortEnabled
39 ; CHECK-ASM32-NEXT:     .byte   0x60                            # -IsInterruptHandler, +IsFunctionNamePresent, +IsAllocaUsed
40 ; CHECK-ASM32-NEXT:                                            # OnConditionDirective = 0, -IsCRSaved, -IsLRSaved
41 ; CHECK-ASM32-NEXT:     .byte   0x80                            # +IsBackChainStored, -IsFixup, NumOfFPRsSaved = 0
42 ; CHECK-ASM32-NEXT:     .byte   0x01                            # -HasExtensionTable, -HasVectorInfo, NumOfGPRsSaved = 1
43 ; CHECK-ASM32-NEXT:     .byte   0x00                            # NumberOfFixedParms = 0
44 ; CHECK-ASM32-NEXT:     .byte   0x01                            # NumberOfFPParms = 0, +HasParmsOnStack
45 ; CHECK-ASM32-NEXT:     .vbyte  4, L..varalloca0-.varalloca     # Function size
46 ; CHECK-ASM32-NEXT:     .vbyte  2, 0x0009                       # Function name len = 9
47 ; CHECK-ASM32-NEXT:     .byte   "varalloca"                     # Function Name
48 ; CHECK-ASM32-NEXT:     .byte   0x1f                            # AllocaUsed
49 ; CHECK-ASM32-NEXT:                                            # -- End function
51 ; CHECK-ASM64-LABEL: varalloca:
52 ; CHECK-ASM64:       # %bb.0: # %entry
53 ; CHECK-ASM64-NEXT:    std 31, -8(1)
54 ; CHECK-ASM64-NEXT:    stdu 1, -64(1)
55 ; CHECK-ASM64-NEXT:    ld 3, L..C0(2) # @var
56 ; CHECK-ASM64-NEXT:    mr 31, 1
57 ; CHECK-ASM64-NEXT:    addi 4, 31, 64
58 ; CHECK-ASM64-NEXT:    lwz 3, 0(3)
59 ; CHECK-ASM64-NEXT:    addi 3, 3, 15
60 ; CHECK-ASM64-NEXT:    rldicl 3, 3, 60, 4
61 ; CHECK-ASM64-NEXT:    rldicl 3, 3, 4, 31
62 ; CHECK-ASM64-NEXT:    neg 3, 3
63 ; CHECK-ASM64-NEXT:    stdux 4, 1, 3
64 ; CHECK-ASM64-NEXT:    addi 3, 1, 48
65 ; CHECK-ASM64-NEXT:    lwz 3, 0(3)
66 ; CHECK-ASM64-NEXT:    ld 1, 0(1)
67 ; CHECK-ASM64-NEXT:    ld 31, -8(1)
68 ; CHECK-ASM64-NEXT:    blr
69 ; CHECK-ASM64-NEXT:    L..varalloca0:
70 ; CHECK-ASM64-NEXT:     .vbyte  4, 0x00000000                   # Traceback table begin
71 ; CHECK-ASM64-NEXT:     .byte   0x00                            # Version = 0
72 ; CHECK-ASM64-NEXT:     .byte   0x09                            # Language = CPlusPlus
73 ; CHECK-ASM64-NEXT:     .byte   0x20                            # -IsGlobaLinkage, -IsOutOfLineEpilogOrPrologue
74 ; CHECK-ASM64-NEXT:                                            # +HasTraceBackTableOffset, -IsInternalProcedure
75 ; CHECK-ASM64-NEXT:                                            # -HasControlledStorage, -IsTOCless
76 ; CHECK-ASM64-NEXT:                                            # -IsFloatingPointPresent
77 ; CHECK-ASM64-NEXT:                                            # -IsFloatingPointOperationLogOrAbortEnabled
78 ; CHECK-ASM64-NEXT:     .byte   0x60                            # -IsInterruptHandler, +IsFunctionNamePresent, +IsAllocaUsed
79 ; CHECK-ASM64-NEXT:                                            # OnConditionDirective = 0, -IsCRSaved, -IsLRSaved
80 ; CHECK-ASM64-NEXT:     .byte   0x80                            # +IsBackChainStored, -IsFixup, NumOfFPRsSaved = 0
81 ; CHECK-ASM64-NEXT:     .byte   0x01                            # -HasExtensionTable, -HasVectorInfo, NumOfGPRsSaved = 1
82 ; CHECK-ASM64-NEXT:     .byte   0x00                            # NumberOfFixedParms = 0
83 ; CHECK-ASM64-NEXT:     .byte   0x01                            # NumberOfFPParms = 0, +HasParmsOnStack
84 ; CHECK-ASM64-NEXT:     .vbyte  4, L..varalloca0-.varalloca     # Function size
85 ; CHECK-ASM64-NEXT:     .vbyte  2, 0x0009                       # Function name len = 9
86 ; CHECK-ASM64-NEXT:     .byte   "varalloca"                     # Function Name
87 ; CHECK-ASM64-NEXT:     .byte   0x1f                            # AllocaUsed
88 ; CHECK-ASM64-NEXT:                                            # -- End function
89 entry:
90   %0 = load i32, ptr @var
91   %1 = alloca i8, i32 %0
92   %2 = load i32, ptr %1
93   ret i32 %2