brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 8d96993 Raw
98 lines · plain
1/// Check that file attributes are recorded in a .hexagon.attributes section.2 3q0&=vcmp.gt(v0.bf,v0.bf)     // hvxv73, hvx-qfloat4r3:2=cround(r1:0,#0x0)       // v67, audio5v3:0.w=vrmpyz(v0.b,r0.b)     // hvxv73, zreg6v1:0.sf=vadd(v0.bf,v0.bf)    // hvxv73, hvx-ieee-fp7 8// Note that the CPU version should be set with `--mcpu` and not with attributes9// because attributes are additive.10// RUN: llvm-mc -triple=hexagon --mcpu=hexagonv67 \11// RUN:   --mattr=+hvxv73,+hvx-qfloat,+hvx-ieee-fp,+zreg,+audio %s \12// RUN:   -filetype=obj --hexagon-add-build-attributes -o %t.o13 14// RUN: llvm-readelf -A %t.o | \15// RUN:   FileCheck %s --match-full-lines --implicit-check-not={{.}} --check-prefix=READELF16 17/// llvm-objudmp should be able to determine subtarget features18/// without manually passing in features when an attribute section is present.19// RUN: llvm-objdump -d %t.o | FileCheck %s --check-prefix=OBJDUMP20 21// RUN: llvm-mc -triple=hexagon --mcpu=hexagonv67 \22// RUN:   --mattr=+hvxv73,+hvx-qfloat,+hvx-ieee-fp,+zreg,+audio %s \23// RUN:   -filetype=asm --hexagon-add-build-attributes | \24// RUN:     FileCheck %s --match-full-lines --implicit-check-not={{.}} --check-prefix=ASM25 26//      READELF: BuildAttributes {27// READELF-NEXT:   FormatVersion: 0x4128// READELF-NEXT:   Section 1 {29// READELF-NEXT:     SectionLength: 3130// READELF-NEXT:     Vendor: hexagon31// READELF-NEXT:     Tag: Tag_File (0x1)32// READELF-NEXT:     Size: 1933// READELF-NEXT:     FileAttributes {34// READELF-NEXT:       Attribute {35// READELF-NEXT:         Tag: 436// READELF-NEXT:         TagName: arch37// READELF-NEXT:         Value: 6738// READELF-NEXT:       }39// READELF-NEXT:       Attribute {40// READELF-NEXT:         Tag: 541// READELF-NEXT:         TagName: hvx_arch42// READELF-NEXT:         Value: 7343// READELF-NEXT:       }44// READELF-NEXT:       Attribute {45// READELF-NEXT:         Tag: 646// READELF-NEXT:         TagName: hvx_ieeefp47// READELF-NEXT:         Value: 148// READELF-NEXT:       }49// READELF-NEXT:       Attribute {50// READELF-NEXT:         Tag: 751// READELF-NEXT:         TagName: hvx_qfloat52// READELF-NEXT:         Value: 153// READELF-NEXT:       }54// READELF-NEXT:       Attribute {55// READELF-NEXT:         Tag: 856// READELF-NEXT:         TagName: zreg57// READELF-NEXT:         Value: 158// READELF-NEXT:       }59// READELF-NEXT:       Attribute {60// READELF-NEXT:         Tag: 961// READELF-NEXT:         TagName: audio62// READELF-NEXT:         Value: 163// READELF-NEXT:       }64// READELF-NEXT:       Attribute {65// READELF-NEXT:         Tag: 1066// READELF-NEXT:         TagName: cabac67// READELF-NEXT:         Value: 168// READELF-NEXT:       }69// READELF-NEXT:     }70// READELF-NEXT:   }71// READELF-NEXT: }72 73//      OBJDUMP: 1c80e0d0 {      q0 &= vcmp.gt(v0.bf,v0.bf) }74// OBJDUMP-NEXT: 8ce0c042 {      r3:2 = cround(r1:0,#0x0) }75// OBJDUMP-NEXT: 19e8c000 {      v3:0.w = vrmpyz(v0.b,r0.b) }76// OBJDUMP-NEXT: 1d40e0c0 {      v1:0.sf = vadd(v0.bf,v0.bf) }77 78//      ASM: .attribute      4, 67   // Tag_arch79// ASM-NEXT: .attribute      5, 73   // Tag_hvx_arch80// ASM-NEXT: .attribute      6, 1    // Tag_hvx_ieeefp81// ASM-NEXT: .attribute      7, 1    // Tag_hvx_qfloat82// ASM-NEXT: .attribute      8, 1    // Tag_zreg83// ASM-NEXT: .attribute      9, 1    // Tag_audio84// ASM-NEXT: .attribute      10, 1   // Tag_cabac85// ASM-EMPTY:86// ASM-NEXT:        {87// ASM-NEXT:                q0 &= vcmp.gt(v0.bf,v0.bf)88// ASM-NEXT:        }89// ASM-NEXT:        {90// ASM-NEXT:                r3:2 = cround(r1:0,#0)91// ASM-NEXT:        }92// ASM-NEXT:        {93// ASM-NEXT:                v3:0.w = vrmpyz(v0.b,r0.b)94// ASM-NEXT:        }95// ASM-NEXT:        {96// ASM-NEXT:                v1:0.sf = vadd(v0.bf,v0.bf)97// ASM-NEXT:        }98