1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/MC/Hexagon/v60-shift.s
Sumanth Gundapaneni 262321d1ff [Hexagon] New HVX target features.
This patch lets the llvm tools handle the new HVX target features that
are added by frontend (clang). The target-features are of the form
"hvx-length64b" for 64 Byte HVX mode, "hvx-length128b" for 128 Byte mode HVX.
"hvx-double" is an alias to "hvx-length128b" and is soon will be deprecated.
The hvx version target feature is upgated form "+hvx" to "+hvxv{version_number}.
Eg: "+hvxv62"

For the correct HVX code generation, the user must use the following
target features.
For 64B mode: "+hvxv62" "+hvx-length64b"
For 128B mode: "+hvxv62" "+hvx-length128b"

Clang picks a default length if none is specified. If for some reason,
no hvx-length is specified to llvm, the compilation will bail out.
There is a corresponding clang patch.

Differential Revision: https://reviews.llvm.org/D38851

llvm-svn: 316101
2017-10-18 18:07:07 +00:00

40 lines
992 B
ArmAsm

#RUN: llvm-mc -triple=hexagon -mcpu=hexagonv60 -filetype=obj -mhvx %s | \
#RUN: llvm-objdump -triple=hexagon -mcpu=hexagonv60 -mhvx -d - | \
#RUN: FileCheck %s
#CHECK: 198fd829 { v9.uw = vlsr(v24.uw,{{ *}}r15) }
v9.uw=vlsr(v24.uw,r15)
#CHECK: 1999d645 { v5.uh = vlsr(v22.uh,{{ *}}r25) }
v5.uh=vlsr(v22.uh,r25)
#CHECK: 198cc303 { v3.h = vasl(v3.h,{{ *}}r12) }
v3.h=vasl(v3.h,r12)
#CHECK: 1965d7ac { v12.w = vasr(v23.w,{{ *}}r5) }
v12.w=vasr(v23.w,r5)
#CHECK: 197dddc3 { v3.h = vasr(v29.h,{{ *}}r29) }
v3.h=vasr(v29.h,r29)
#CHECK: 197adde8 { v8.w = vasl(v29.w,{{ *}}r26) }
v8.w=vasl(v29.w,r26)
#CHECK: 1977cc26 { v6 = vror(v12,{{ *}}r23) }
v6=vror(v12,r23)
#CHECK: 1e02cfad { v13.uw = vcl0(v15.uw) }
v13.uw=vcl0(v15.uw)
#CHECK: 1e02defb { v27.uh = vcl0(v30.uh) }
v27.uh=vcl0(v30.uh)
#CHECK: 1e03de90 { v16.w = vnormamt(v30.w) }
v16.w=vnormamt(v30.w)
#CHECK: 1e03d4a3 { v3.h = vnormamt(v20.h) }
v3.h=vnormamt(v20.h)
#CHECK: 1e02c2d8 { v24.h = vpopcount(v2.h) }
v24.h=vpopcount(v2.h)