1; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false < %s | \ 2; RUN: FileCheck --check-prefixes=CHECK,CHECK32 %s 3; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false < %s | \ 4; RUN: FileCheck --check-prefixes=CHECK,CHECK64 %s 5 6; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff -data-sections=false -filetype=obj -o %t.o < %s 7; RUN: llvm-readobj --section-headers --file-header %t.o | \ 8; RUN: FileCheck --check-prefix=OBJ %s 9; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefix=SYMS %s 10; RUN: llvm-objdump -D %t.o | FileCheck --check-prefix=DIS %s 11 12; RUN: not --crash llc -verify-machineinstrs -mcpu=pwr7 -mtriple powerpc64-ibm-aix-xcoff -data-sections=false -filetype=obj < %s 2>&1 | \ 13; RUN: FileCheck --check-prefix=XCOFF64 %s 14; XCOFF64: LLVM ERROR: 64-bit XCOFF object files are not supported yet. 15 16@const_ivar = constant i32 35, align 4 17@const_llvar = constant i64 36, align 8 18@const_svar = constant i16 37, align 2 19@const_fvar = constant float 8.000000e+02, align 4 20@const_dvar = constant double 9.000000e+02, align 8 21@const_over_aligned = constant double 9.000000e+02, align 32 22@const_chrarray = constant [4 x i8] c"abcd", align 1 23@const_dblarr = constant [4 x double] [double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00], align 8 24 25; CHECK: .csect .rodata[RO],5 26; CHECK-NEXT: .globl const_ivar 27; CHECK-NEXT: .align 2 28; CHECK-NEXT: const_ivar: 29; CHECK-NEXT: .vbyte 4, 35 30; CHECK-NEXT: .globl const_llvar 31; CHECK-NEXT: .align 3 32; CHECK-NEXT: const_llvar: 33; CHECK32-NEXT: .vbyte 4, 0 34; CHECK32-NEXT: .vbyte 4, 36 35; CHECK64-NEXT: .vbyte 8, 36 36; CHECK-NEXT: .globl const_svar 37; CHECK-NEXT: .align 1 38; CHECK-NEXT: const_svar: 39; CHECK-NEXT: .vbyte 2, 37 40; CHECK-NEXT: .globl const_fvar 41; CHECK-NEXT: .align 2 42; CHECK-NEXT: const_fvar: 43; CHECK-NEXT: .vbyte 4, 0x44480000 44; CHECK-NEXT: .globl const_dvar 45; CHECK-NEXT: .align 3 46; CHECK-NEXT: const_dvar: 47; CHECK32-NEXT: .vbyte 4, 1082925056 48; CHECK32-NEXT: .vbyte 4, 0 49; CHECK64-NEXT: .vbyte 8, 0x408c200000000000 50; CHECK-NEXT: .globl const_over_aligned 51; CHECK-NEXT: .align 5 52; CHECK-NEXT: const_over_aligned: 53; CHECK32-NEXT: .vbyte 4, 1082925056 54; CHECK32-NEXT: .vbyte 4, 0 55; CHECK64-NEXT: .vbyte 8, 0x408c200000000000 56; CHECK-NEXT: .globl const_chrarray 57; CHECK-NEXT: const_chrarray: 58; CHECK-NEXT: .byte 'a,'b,'c,'d 59; CHECK-NEXT: .globl const_dblarr 60; CHECK-NEXT: .align 3 61; CHECK-NEXT: const_dblarr: 62; CHECK32-NEXT: .vbyte 4, 1072693248 63; CHECK32-NEXT: .vbyte 4, 0 64; CHECK64-NEXT: .vbyte 8, 0x3ff0000000000000 65; CHECK32-NEXT: .vbyte 4, 1073741824 66; CHECK32-NEXT: .vbyte 4, 0 67; CHECK64-NEXT: .vbyte 8, 0x4000000000000000 68; CHECK32-NEXT: .vbyte 4, 1074266112 69; CHECK32-NEXT: .vbyte 4, 0 70; CHECK64-NEXT: .vbyte 8, 0x4008000000000000 71; CHECK32-NEXT: .vbyte 4, 1074790400 72; CHECK32-NEXT: .vbyte 4, 0 73; CHECK64-NEXT: .vbyte 8, 0x4010000000000000 74 75 76; OBJ: File: {{.*}}aix-xcoff-rodata.ll.tmp.o 77; OBJ-NEXT: Format: aixcoff-rs6000 78; OBJ-NEXT: Arch: powerpc 79; OBJ-NEXT: AddressSize: 32bit 80; OBJ-NEXT: FileHeader { 81; OBJ-NEXT: Magic: 0x1DF 82; OBJ-NEXT: NumberOfSections: 1 83; OBJ-NEXT: TimeStamp: None (0x0) 84; OBJ-NEXT: SymbolTableOffset: 0x8C 85; OBJ-NEXT: SymbolTableEntries: 20 86; OBJ-NEXT: OptionalHeaderSize: 0x0 87; OBJ-NEXT: Flags: 0x0 88; OBJ-NEXT: } 89 90; OBJ: Sections [ 91; OBJ: Section { 92; OBJ-NEXT: Index: 1 93; OBJ-NEXT: Name: .text 94; OBJ-NEXT: PhysicalAddress: 0x0 95; OBJ-NEXT: VirtualAddress: 0x0 96; OBJ-NEXT: Size: 0x50 97; OBJ-NEXT: RawDataOffset: 0x3C 98; OBJ-NEXT: RelocationPointer: 0x0 99; OBJ-NEXT: LineNumberPointer: 0x0 100; OBJ-NEXT: NumberOfRelocations: 0 101; OBJ-NEXT: NumberOfLineNumbers: 0 102; OBJ-NEXT: Type: STYP_TEXT (0x20) 103; OBJ-NEXT: } 104; OBJ-NEXT: ] 105 106 107; SYMS: File: {{.*}}aix-xcoff-rodata.ll.tmp.o 108; SYMS-NEXT: Format: aixcoff-rs6000 109; SYMS-NEXT: Arch: powerpc 110; SYMS-NEXT: AddressSize: 32bit 111; SYMS: Symbols [ 112; SYMS: Symbol {{[{][[:space:]] *}}Index: [[#INDX:]]{{[[:space:]] *}}Name: .rodata 113; SYMS-NEXT: Value (RelocatableAddress): 0x0 114; SYMS-NEXT: Section: .text 115; SYMS-NEXT: Type: 0x0 116; SYMS-NEXT: StorageClass: C_HIDEXT (0x6B) 117; SYMS-NEXT: NumberOfAuxEntries: 1 118; SYMS-NEXT: CSECT Auxiliary Entry { 119; SYMS-NEXT: Index: [[#INDX+1]] 120; SYMS-NEXT: SectionLen: 80 121; SYMS-NEXT: ParameterHashIndex: 0x0 122; SYMS-NEXT: TypeChkSectNum: 0x0 123; SYMS-NEXT: SymbolAlignmentLog2: 5 124; SYMS-NEXT: SymbolType: XTY_SD (0x1) 125; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 126; SYMS-NEXT: StabInfoIndex: 0x0 127; SYMS-NEXT: StabSectNum: 0x0 128; SYMS-NEXT: } 129; SYMS-NEXT: } 130 131; SYMS: Symbol { 132; SYMS-NEXT: Index: [[#INDX+2]] 133; SYMS-NEXT: Name: const_ivar 134; SYMS-NEXT: Value (RelocatableAddress): 0x0 135; SYMS-NEXT: Section: .text 136; SYMS-NEXT: Type: 0x0 137; SYMS-NEXT: StorageClass: C_EXT (0x2) 138; SYMS-NEXT: NumberOfAuxEntries: 1 139; SYMS-NEXT: CSECT Auxiliary Entry { 140; SYMS-NEXT: Index: [[#INDX+3]] 141; SYMS-NEXT: ContainingCsectSymbolIndex: 2 142; SYMS-NEXT: ParameterHashIndex: 0x0 143; SYMS-NEXT: TypeChkSectNum: 0x0 144; SYMS-NEXT: SymbolAlignmentLog2: 0 145; SYMS-NEXT: SymbolType: XTY_LD (0x2) 146; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 147; SYMS-NEXT: StabInfoIndex: 0x0 148; SYMS-NEXT: StabSectNum: 0x0 149; SYMS-NEXT: } 150; SYMS-NEXT: } 151 152; SYMS: Symbol { 153; SYMS-NEXT: Index: [[#INDX+4]] 154; SYMS-NEXT: Name: const_llvar 155; SYMS-NEXT: Value (RelocatableAddress): 0x8 156; SYMS-NEXT: Section: .text 157; SYMS-NEXT: Type: 0x0 158; SYMS-NEXT: StorageClass: C_EXT (0x2) 159; SYMS-NEXT: NumberOfAuxEntries: 1 160; SYMS-NEXT: CSECT Auxiliary Entry { 161; SYMS-NEXT: Index: [[#INDX+5]] 162; SYMS-NEXT: ContainingCsectSymbolIndex: 2 163; SYMS-NEXT: ParameterHashIndex: 0x0 164; SYMS-NEXT: TypeChkSectNum: 0x0 165; SYMS-NEXT: SymbolAlignmentLog2: 0 166; SYMS-NEXT: SymbolType: XTY_LD (0x2) 167; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 168; SYMS-NEXT: StabInfoIndex: 0x0 169; SYMS-NEXT: StabSectNum: 0x0 170; SYMS-NEXT: } 171; SYMS-NEXT: } 172 173; SYMS: Symbol { 174; SYMS-NEXT: Index: [[#INDX+6]] 175; SYMS-NEXT: Name: const_svar 176; SYMS-NEXT: Value (RelocatableAddress): 0x10 177; SYMS-NEXT: Section: .text 178; SYMS-NEXT: Type: 0x0 179; SYMS-NEXT: StorageClass: C_EXT (0x2) 180; SYMS-NEXT: NumberOfAuxEntries: 1 181; SYMS-NEXT: CSECT Auxiliary Entry { 182; SYMS-NEXT: Index: [[#INDX+7]] 183; SYMS-NEXT: ContainingCsectSymbolIndex: 2 184; SYMS-NEXT: ParameterHashIndex: 0x0 185; SYMS-NEXT: TypeChkSectNum: 0x0 186; SYMS-NEXT: SymbolAlignmentLog2: 0 187; SYMS-NEXT: SymbolType: XTY_LD (0x2) 188; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 189; SYMS-NEXT: StabInfoIndex: 0x0 190; SYMS-NEXT: StabSectNum: 0x0 191; SYMS-NEXT: } 192; SYMS-NEXT: } 193 194; SYMS: Symbol { 195; SYMS-NEXT: Index: [[#INDX+8]] 196; SYMS-NEXT: Name: const_fvar 197; SYMS-NEXT: Value (RelocatableAddress): 0x14 198; SYMS-NEXT: Section: .text 199; SYMS-NEXT: Type: 0x0 200; SYMS-NEXT: StorageClass: C_EXT (0x2) 201; SYMS-NEXT: NumberOfAuxEntries: 1 202; SYMS-NEXT: CSECT Auxiliary Entry { 203; SYMS-NEXT: Index: [[#INDX+9]] 204; SYMS-NEXT: ContainingCsectSymbolIndex: 2 205; SYMS-NEXT: ParameterHashIndex: 0x0 206; SYMS-NEXT: TypeChkSectNum: 0x0 207; SYMS-NEXT: SymbolAlignmentLog2: 0 208; SYMS-NEXT: SymbolType: XTY_LD (0x2) 209; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 210; SYMS-NEXT: StabInfoIndex: 0x0 211; SYMS-NEXT: StabSectNum: 0x0 212; SYMS-NEXT: } 213; SYMS-NEXT: } 214 215; SYMS: Symbol { 216; SYMS-NEXT: Index: [[#INDX+10]] 217; SYMS-NEXT: Name: const_dvar 218; SYMS-NEXT: Value (RelocatableAddress): 0x18 219; SYMS-NEXT: Section: .text 220; SYMS-NEXT: Type: 0x0 221; SYMS-NEXT: StorageClass: C_EXT (0x2) 222; SYMS-NEXT: NumberOfAuxEntries: 1 223; SYMS-NEXT: CSECT Auxiliary Entry { 224; SYMS-NEXT: Index: [[#INDX+11]] 225; SYMS-NEXT: ContainingCsectSymbolIndex: 2 226; SYMS-NEXT: ParameterHashIndex: 0x0 227; SYMS-NEXT: TypeChkSectNum: 0x0 228; SYMS-NEXT: SymbolAlignmentLog2: 0 229; SYMS-NEXT: SymbolType: XTY_LD (0x2) 230; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 231; SYMS-NEXT: StabInfoIndex: 0x0 232; SYMS-NEXT: StabSectNum: 0x0 233; SYMS-NEXT: } 234; SYMS-NEXT: } 235 236; SYMS: Symbol { 237; SYMS-NEXT: Index: [[#INDX+12]] 238; SYMS-NEXT: Name: const_over_aligned 239; SYMS-NEXT: Value (RelocatableAddress): 0x20 240; SYMS-NEXT: Section: .text 241; SYMS-NEXT: Type: 0x0 242; SYMS-NEXT: StorageClass: C_EXT (0x2) 243; SYMS-NEXT: NumberOfAuxEntries: 1 244; SYMS-NEXT: CSECT Auxiliary Entry { 245; SYMS-NEXT: Index: [[#INDX+13]] 246; SYMS-NEXT: ContainingCsectSymbolIndex: 2 247; SYMS-NEXT: ParameterHashIndex: 0x0 248; SYMS-NEXT: TypeChkSectNum: 0x0 249; SYMS-NEXT: SymbolAlignmentLog2: 0 250; SYMS-NEXT: SymbolType: XTY_LD (0x2) 251; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 252; SYMS-NEXT: StabInfoIndex: 0x0 253; SYMS-NEXT: StabSectNum: 0x0 254; SYMS-NEXT: } 255; SYMS-NEXT: } 256 257; SYMS: Symbol { 258; SYMS-NEXT: Index: [[#INDX+14]] 259; SYMS-NEXT: Name: const_chrarray 260; SYMS-NEXT: Value (RelocatableAddress): 0x28 261; SYMS-NEXT: Section: .text 262; SYMS-NEXT: Type: 0x0 263; SYMS-NEXT: StorageClass: C_EXT (0x2) 264; SYMS-NEXT: NumberOfAuxEntries: 1 265; SYMS-NEXT: CSECT Auxiliary Entry { 266; SYMS-NEXT: Index: [[#INDX+15]] 267; SYMS-NEXT: ContainingCsectSymbolIndex: 2 268; SYMS-NEXT: ParameterHashIndex: 0x0 269; SYMS-NEXT: TypeChkSectNum: 0x0 270; SYMS-NEXT: SymbolAlignmentLog2: 0 271; SYMS-NEXT: SymbolType: XTY_LD (0x2) 272; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 273; SYMS-NEXT: StabInfoIndex: 0x0 274; SYMS-NEXT: StabSectNum: 0x0 275; SYMS-NEXT: } 276; SYMS-NEXT: } 277 278; SYMS: Symbol { 279; SYMS-NEXT: Index: [[#INDX+16]] 280; SYMS-NEXT: Name: const_dblarr 281; SYMS-NEXT: Value (RelocatableAddress): 0x30 282; SYMS-NEXT: Section: .text 283; SYMS-NEXT: Type: 0x0 284; SYMS-NEXT: StorageClass: C_EXT (0x2) 285; SYMS-NEXT: NumberOfAuxEntries: 1 286; SYMS-NEXT: CSECT Auxiliary Entry { 287; SYMS-NEXT: Index: [[#INDX+17]] 288; SYMS-NEXT: ContainingCsectSymbolIndex: 2 289; SYMS-NEXT: ParameterHashIndex: 0x0 290; SYMS-NEXT: TypeChkSectNum: 0x0 291; SYMS-NEXT: SymbolAlignmentLog2: 0 292; SYMS-NEXT: SymbolType: XTY_LD (0x2) 293; SYMS-NEXT: StorageMappingClass: XMC_RO (0x1) 294; SYMS-NEXT: StabInfoIndex: 0x0 295; SYMS-NEXT: StabSectNum: 0x0 296; SYMS-NEXT: } 297; SYMS-NEXT: } 298; SYMS: ] 299 300; DIS: Disassembly of section .text: 301; DIS: 00000000 <const_ivar>: 302; DIS-NEXT: 0: 00 00 00 23 303; DIS-NEXT: 4: 00 00 00 00 304 305; DIS: 00000008 <const_llvar>: 306; DIS-NEXT: 8: 00 00 00 00 307; DIS-NEXT: c: 00 00 00 24 308 309; DIS: 00000010 <const_svar>: 310; DIS-NEXT: 10: 00 25 00 00 311 312; DIS: 00000014 <const_fvar>: 313; DIS-NEXT: 14: 44 48 00 00 314 315; DIS: 00000018 <const_dvar>: 316; DIS-NEXT: 18: 40 8c 20 00 317; DIS-NEXT: 1c: 00 00 00 00 318 319; DIS: 00000020 <const_over_aligned>: 320; DIS-NEXT: 20: 40 8c 20 00 321; DIS-NEXT: 24: 00 00 00 00 322 323; DIS: 00000028 <const_chrarray>: 324; DIS-NEXT: 28: 61 62 63 64 325; DIS-NEXT: 2c: 00 00 00 00 326 327; DIS: 00000030 <const_dblarr>: 328; DIS-NEXT: 30: 3f f0 00 00 329; DIS-NEXT: 34: 00 00 00 00 330; DIS-NEXT: 38: 40 00 00 00 331; DIS-NEXT: 3c: 00 00 00 00 332; DIS-NEXT: 40: 40 08 00 00 333; DIS-NEXT: 44: 00 00 00 00 334; DIS-NEXT: 48: 40 10 00 00 335; DIS-NEXT: 4c: 00 00 00 00 336