1; This file tests the codegen of mergeable strings in AIX assembly only.
2; Once the codegen of mergeable strings for XCOFF object files is supported
3; the test in this file should be merged into aix-xcoff-data.ll with additional
4; tests for XCOFF object files.
5
6; RUN: llc -verify-machineinstrs -mcpu=pwr7 \
7; RUN:     -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s
8; RUN: llc -verify-machineinstrs -mcpu=pwr7 \
9; RUN:     -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s
10
11; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -filetype=obj -o %t.o < %s
12; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=CHECKOBJ %s
13
14@strA = private unnamed_addr constant [14 x i8] c"hello world!\0A\00", align 1
15@.str = private unnamed_addr constant [9 x i8] c"abcdefgh\00", align 1
16@p = global i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i32 0, i32 0), align 4
17
18; Function Attrs: noinline nounwind optnone
19define i8 @foo() #0 {
20entry:
21  %0 = load i8*, i8** @p, align 4
22  %1 = load i8, i8* %0, align 1
23  ret i8 %1
24}
25
26; CHECK:      .csect .rodata.str1.1[RO]
27; CHECK-NEXT: .LstrA:
28; CHECK-NEXT: .byte   104
29; CHECK-NEXT: .byte   101
30; CHECK-NEXT: .byte   108
31; CHECK-NEXT: .byte   108
32; CHECK-NEXT: .byte   111
33; CHECK-NEXT: .byte   32
34; CHECK-NEXT: .byte   119
35; CHECK-NEXT: .byte   111
36; CHECK-NEXT: .byte   114
37; CHECK-NEXT: .byte   108
38; CHECK-NEXT: .byte   100
39; CHECK-NEXT: .byte   33
40; CHECK-NEXT: .byte   10
41; CHECK-NEXT: .byte   0
42; CHECK-NEXT: .L.str:
43; CHECK-NEXT: .byte   97
44; CHECK-NEXT: .byte   98
45; CHECK-NEXT: .byte   99
46; CHECK-NEXT: .byte   100
47; CHECK-NEXT: .byte   101
48; CHECK-NEXT: .byte   102
49; CHECK-NEXT: .byte   103
50; CHECK-NEXT: .byte   104
51; CHECK-NEXT: .byte   0
52
53; CHECKOBJ: 00000010 .rodata.str1.1:
54; CHECKOBJ-NEXT:       10: 68 65 6c 6c                   xori 5, 3, 27756
55; CHECKOBJ-NEXT:       14: 6f 20 77 6f                   xoris 0, 25, 30575
56; CHECKOBJ-NEXT:       18: 72 6c 64 21                   andi. 12, 19, 25633
57; CHECKOBJ-NEXT:       1c: 0a 00 61 62                   tdlti   0, 24930{{[[:space:]] *}}
58; CHECKOBJ-NEXT: 0000001e .L.str:
59; CHECKOBJ-NEXT:       1e: 61 62 63 64                   ori 2, 11, 25444
60; CHECKOBJ-NEXT:       22: 65 66 67 68                   oris 6, 11, 26472
61; CHECKOBJ-NEXT:       26: 00                            <unknown>
62; CHECKOBJ-NEXT:       27: 00                            <unknown>
63