brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.2 KiB · a31ea56 Raw
402 lines · plain
1# RUN: llvm-mc -triple=powerpc64le -filetype=obj %s | \2# RUN: llvm-objdump -dr --mcpu=pwr10 - | FileCheck %s3# RUN: llvm-mc -triple=powerpc64 -filetype=obj %s | \4# RUN: llvm-objdump -dr --mcpu=pwr10 - | FileCheck %s5 6 7##8# This section of tests contains the MCBinaryExpr as the first parameter of the9# .reloc relocation.10##11	.text12	.abiversion 213	.globl	Minimal14	.p2align	415	.type	Minimal,@function16Minimal:17.LMinimal$local:18	pld 3, vec@got@pcrel(0), 119.Lpcrel1:20	.reloc .Lpcrel1-8,R_PPC64_PCREL_OPT,.-(.Lpcrel1-8)21	lwa 3, 4(3)22	blr23	.long	024	.quad	025# CHECK-LABEL:   Minimal26# CHECK:         pld 3, 0(0), 127# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec28# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x829# CHECK-NEXT:    lwa 3, 4(3)30# CHECK-NEXT:    blr31 32	.globl	SingleInsnBetween33	.p2align	434	.type	SingleInsnBetween,@function35SingleInsnBetween:36.LSingleInsnBetween$local:37	pld 3, vec@got@pcrel(0), 138.Lpcrel2:39        addi 3, 3, 4240	.reloc .Lpcrel2-8,R_PPC64_PCREL_OPT,.-(.Lpcrel2-8)41	lwa 3, 4(3)42	blr43	.long	044	.quad	045# CHECK-LABEL:   SingleInsnBetween46# CHECK:         pld 3, 0(0), 147# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec48# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0xc49# CHECK-NEXT:    addi 3, 3, 4250# CHECK-NEXT:    lwa 3, 4(3)51# CHECK-NEXT:    blr52 53 54	.globl	MultiInsnBetween                    # -- Begin function55	.p2align	456	.type	MultiInsnBetween,@function57MultiInsnBetween:58.LMultiInsnBetween$local:59	pld 3, vec@got@pcrel(0), 160.Lpcrel3:61        addi 3, 3, 4262        addi 3, 3, 4263        addi 3, 3, 4264        addi 3, 3, 4265        addi 3, 3, 4266	.reloc .Lpcrel3-8,R_PPC64_PCREL_OPT,.-(.Lpcrel3-8)67	lwa 3, 4(3)68	blr69	.long	070	.quad	071# CHECK-LABEL:   MultiInsnBetween72# CHECK:         pld 3, 0(0), 173# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec74# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x1c75# CHECK-NEXT:    addi 3, 3, 4276# CHECK-NEXT:    addi 3, 3, 4277# CHECK-NEXT:    addi 3, 3, 4278# CHECK-NEXT:    addi 3, 3, 4279# CHECK-NEXT:    addi 3, 3, 4280# CHECK-NEXT:    lwa 3, 4(3)81# CHECK-NEXT:    blr82 83	.globl	PrefixInsnBetween84	.p2align	685	.type	PrefixInsnBetween,@function86        .space          48       # Add a space to force an alignment of a paddi.87PrefixInsnBetween:88.LPrefixInsnBetween$local:89	pld 3, vec@got@pcrel(0), 190.Lpcrel4:91        addi 3, 3, 4292        paddi 3, 3, 42, 093        addi 3, 3, 4294        paddi 3, 3, 42, 095        addi 3, 3, 4296	.reloc .Lpcrel4-8,R_PPC64_PCREL_OPT,.-(.Lpcrel4-8)97	lwa 3, 4(3)98	blr99	.long	0100	.quad	0101# CHECK-LABEL:   PrefixInsnBetween102# CHECK:         pld 3, 0(0), 1103# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec104# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x28105# CHECK-NEXT:    addi 3, 3, 42106# CHECK-NEXT:    nop107# CHECK-NEXT:    paddi 3, 3, 42, 0108# CHECK-NEXT:    addi 3, 3, 42109# CHECK-NEXT:    paddi 3, 3, 42, 0110# CHECK-NEXT:    addi 3, 3, 42111# CHECK-NEXT:    lwa 3, 4(3)112# CHECK-NEXT:    blr113 114 115	.globl	SpaceBetween                    # -- Begin function116	.p2align	4117	.type	SpaceBetween,@function118SpaceBetween:119.LSpaceBetween$local:120	pld 3, vec@got@pcrel(0), 1121.Lpcrel5:122        addi 3, 3, 42123        paddi 3, 3, 42, 0124        addi 3, 3, 42125        .space 40, 0126        paddi 3, 3, 42, 0127        addi 3, 3, 42128	.reloc .Lpcrel5-8,R_PPC64_PCREL_OPT,.-(.Lpcrel5-8)129	lwa 3, 4(3)130	blr131	.long	0132	.quad	0133# CHECK-LABEL:   SpaceBetween134# CHECK:         pld 3, 0(0), 1135# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec136# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x50137# CHECK-NEXT:    addi 3, 3, 42138# CHECK-NEXT:    nop139# CHECK-NEXT:    paddi 3, 3, 42, 0140# CHECK-NEXT:    addi 3, 3, 42141# CHECK:         paddi 3, 3, 42, 0142# CHECK-NEXT:    addi 3, 3, 42143# CHECK-NEXT:    lwa 3, 4(3)144# CHECK-NEXT:    blr145 146 147	.globl	Plus148	.p2align	4149	.type	Plus,@function150Plus:151.LPlus$local:152.Lpcrel6:153        addi 3, 3, 42154        addi 3, 3, 42155	pld 3, vec@got@pcrel(0), 1156	.reloc .Lpcrel6+8,R_PPC64_PCREL_OPT,.-(.Lpcrel6+8)157	lwa 3, 4(3)158	blr159	.long	0160	.quad	0161# CHECK-LABEL:   Plus162# CHECK:         pld 3, 0(0), 1163# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8164# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec165# CHECK-NEXT:    lwa 3, 4(3)166# CHECK-NEXT:    blr167 168##169# This section of tests contains the variable MCSymbol as part of the170# MCSymbolRefExpr for the first parameter of the .reloc relocation.171##172	.globl	VarLabelMinimal                    # -- Begin function173	.p2align	4174	.type	VarLabelMinimal,@function175VarLabelMinimal:176.LVarLabelMinimal$local:177	pld 3, vec@got@pcrel(0), 1178.Lpcrel101=.-8179	.reloc .Lpcrel101,R_PPC64_PCREL_OPT,.-.Lpcrel101180	lwa 3, 4(3)181	blr182	.long	0183	.quad	0184# CHECK-LABEL:   VarLabelMinimal185# CHECK:         pld 3, 0(0), 1186# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec187# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8188# CHECK-NEXT:    lwa 3, 4(3)189# CHECK-NEXT:    blr190 191 192	.globl	VarLabelSingleInsnBetween193	.p2align	4194	.type	VarLabelSingleInsnBetween,@function195VarLabelSingleInsnBetween:196.LVarLabelSingleInsnBetween$local:197	pld 3, vec@got@pcrel(0), 1198.Lpcrel102=.-8199        addi 3, 3, 42200	.reloc .Lpcrel102,R_PPC64_PCREL_OPT,.-.Lpcrel102201	lwa 3, 4(3)202	blr203	.long	0204	.quad	0205# CHECK-LABEL:   VarLabelSingleInsnBetween206# CHECK:         pld 3, 0(0), 1207# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec208# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0xc209# CHECK-NEXT:    addi 3, 3, 42210# CHECK-NEXT:    lwa 3, 4(3)211# CHECK-NEXT:    blr212 213	.globl	VarLabelMultiInsnBetween                    # -- Begin function214	.p2align	4215	.type	VarLabelMultiInsnBetween,@function216VarLabelMultiInsnBetween:217.LVarLabelMultiInsnBetween$local:218	pld 3, vec@got@pcrel(0), 1219.Lpcrel103=.-8220        addi 3, 3, 42221        addi 3, 3, 42222        addi 3, 3, 42223        addi 3, 3, 42224        addi 3, 3, 42225	.reloc .Lpcrel103,R_PPC64_PCREL_OPT,.-.Lpcrel103226	lwa 3, 4(3)227	blr228	.long	0229	.quad	0230# CHECK-LABEL:   VarLabelMultiInsnBetween231# CHECK:         pld 3, 0(0), 1232# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec233# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x1c234# CHECK-NEXT:    addi 3, 3, 42235# CHECK-NEXT:    addi 3, 3, 42236# CHECK-NEXT:    addi 3, 3, 42237# CHECK-NEXT:    addi 3, 3, 42238# CHECK-NEXT:    addi 3, 3, 42239# CHECK-NEXT:    lwa 3, 4(3)240# CHECK-NEXT:    blr241 242 243	.globl	VarLabelPrefixInsnBetween                    # -- Begin function244	.p2align	4245	.type	VarLabelPrefixInsnBetween,@function246VarLabelPrefixInsnBetween:247.LVarLabelPrefixInsnBetween$local:248	pld 3, vec@got@pcrel(0), 1249.Lpcrel104=.-8250        addi 3, 3, 42251        paddi 3, 3, 42, 0252        addi 3, 3, 42253        paddi 3, 3, 42, 0254        addi 3, 3, 42255	.reloc .Lpcrel104,R_PPC64_PCREL_OPT,.-.Lpcrel104256	lwa 3, 4(3)257	blr258	.long	0259	.quad	0260# CHECK-LABEL:   VarLabelPrefixInsnBetween261# CHECK:         pld 3, 0(0), 1262# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec263# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x24264# CHECK-NEXT:    addi 3, 3, 42265# CHECK-NEXT:    paddi 3, 3, 42, 0266# CHECK-NEXT:    addi 3, 3, 42267# CHECK-NEXT:    paddi 3, 3, 42, 0268# CHECK-NEXT:    addi 3, 3, 42269# CHECK-NEXT:    lwa 3, 4(3)270# CHECK-NEXT:    blr271 272 273	.globl	VarLabelSpaceBetween                    # -- Begin function274	.p2align	4275	.type	VarLabelSpaceBetween,@function276VarLabelSpaceBetween:277.LVarLabelSpaceBetween$local:278	pld 3, vec@got@pcrel(0), 1279.Lpcrel105=.-8280        addi 3, 3, 42281        paddi 3, 3, 42, 0282        addi 3, 3, 42283        .space 40, 0284        paddi 3, 3, 42, 0285        addi 3, 3, 42286	.reloc .Lpcrel105,R_PPC64_PCREL_OPT,.-.Lpcrel105287	lwa 3, 4(3)288	blr289	.long	0290	.quad	0291# CHECK-LABEL:   VarLabelSpaceBetween292# CHECK:         pld 3, 0(0), 1293# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec294# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x4c295# CHECK-NEXT:    addi 3, 3, 42296# CHECK-NEXT:    paddi 3, 3, 42, 0297# CHECK-NEXT:    addi 3, 3, 42298# CHECK:         paddi 3, 3, 42, 0299# CHECK-NEXT:    addi 3, 3, 42300# CHECK-NEXT:    lwa 3, 4(3)301# CHECK-NEXT:    blr302 303 304	.globl	VarLabelPlus305	.p2align	4306	.type	VarLabelPlus,@function307VarLabelPlus:308.LVarLabelPlus$local:309.Lpcrel106:310        addi 3, 3, 42311        addi 3, 3, 42312	pld 3, vec@got@pcrel(0), 1313	.reloc .Lpcrel106+8,R_PPC64_PCREL_OPT,.-(.Lpcrel106+8)314	lwa 3, 4(3)315	blr316	.long	0317	.quad	0318# CHECK-LABEL:   VarLabelPlus319# CHECK:         pld 3, 0(0), 1320# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8321# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec322# CHECK-NEXT:    lwa 3, 4(3)323# CHECK-NEXT:    blr324 325# Check the situation where the PLD requires an alignment nop.326	.globl	AlignPLD327	.p2align	6328	.type	AlignPLD,@function329        .space          60      # Force the pld to require an alignment nop.330AlignPLD:331.LAlignPLD$local:332	pld 3, vec@got@pcrel(0), 1333.Lpcrel201:334	.reloc .Lpcrel201-8,R_PPC64_PCREL_OPT,.-(.Lpcrel201-8)335	lwa 3, 4(3)336	blr337# CHECK-LABEL:   AlignPLD338# CHECK:         nop339# CHECK-NEXT:    pld 3, 0(0), 1340# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec341# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8342# CHECK-NEXT:    lwa 3, 4(3)343# CHECK-NEXT:    blr344 345# The label and the pld are on the same line and so the nop is inserted before346# the label and the relocation should work.347	.globl	AlignPLDSameLine348	.p2align	6349	.type	AlignPLDSameLine,@function350        .space          60      # Force the pld to require an alignment nop.351AlignPLDSameLine:352.LAlignPLDSameLine$local:353.Lpcrel202: pld 3, vec@got@pcrel(0), 1354	.reloc .Lpcrel202,R_PPC64_PCREL_OPT,.-.Lpcrel202355	lwa 3, 4(3)356	blr357# CHECK-LABEL:   AlignPLDSameLine358# CHECK:         nop359# CHECK-NEXT:    pld 3, 0(0), 1360# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec361# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8362# CHECK-NEXT:    lwa 3, 4(3)363# CHECK-NEXT:    blr364 365	.globl	AlignPLDLabelBefore366	.p2align	6367	.type	AlignPLDLabelBefore,@function368        .space          60      # Force the pld to require an alignment nop.369AlignPLDLabelBefore:370.LAlignPLDLabelBefore$local:371.Label:372	pld 3, vec@got@pcrel(0), 1373.Lpcrel203:374	.reloc .Lpcrel203-8,R_PPC64_PCREL_OPT,.-(.Lpcrel203-8)375	lwa 3, 4(3)376	blr377# CHECK-LABEL:   AlignPLDLabelBefore378# CHECK:         nop379# CHECK-NEXT:    pld 3, 0(0), 1380# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec381# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8382# CHECK-NEXT:    lwa 3, 4(3)383# CHECK-NEXT:    blr384 385	.globl	AlignPLDLabelSameLine386	.p2align	6387	.type	AlignPLDLabelSameLine,@function388        .space          60      # Force the pld to require an alignment nop.389AlignPLDLabelSameLine:390.Label2: pld 3, vec@got@pcrel(0), 1391.Lpcrel204:392	.reloc .Lpcrel204-8,R_PPC64_PCREL_OPT,.-(.Lpcrel204-8)393	lwa 3, 4(3)394	blr395# CHECK-LABEL:   AlignPLDLabelSameLine396# CHECK:         nop397# CHECK-NEXT:    pld 3, 0(0), 1398# CHECK-NEXT:    R_PPC64_GOT_PCREL34	vec399# CHECK-NEXT:    R_PPC64_PCREL_OPT	*ABS*+0x8400# CHECK-NEXT:    lwa 3, 4(3)401# CHECK-NEXT:    blr402