7e463cfc9fea801de021c3c24b149de248d9e711
[oota-llvm.git] / test / CodeGen / Hexagon / intrinsics / xtype_perm.ll
1 ; RUN: llc -march=hexagon -O0 < %s | FileCheck %s
2 ; Hexagon Programmer's Reference Manual 11.10.6 XTYPE/PERM
3
4 ; Saturate
5 declare i32 @llvm.hexagon.A2.sat(i64)
6 define i32 @A2_sat(i64 %a) {
7   %z = call i32 @llvm.hexagon.A2.sat(i64 %a)
8   ret i32 %z
9 }
10 ; CHECK: r0 = sat(r1:0)
11
12 declare i32 @llvm.hexagon.A2.sath(i32)
13 define i32 @A2_sath(i32 %a) {
14   %z = call i32 @llvm.hexagon.A2.sath(i32 %a)
15   ret i32 %z
16 }
17 ; CHECK: r0 = sath(r0)
18
19 declare i32 @llvm.hexagon.A2.satuh(i32)
20 define i32 @A2_satuh(i32 %a) {
21   %z = call i32 @llvm.hexagon.A2.satuh(i32 %a)
22   ret i32 %z
23 }
24 ; CHECK: r0 = satuh(r0)
25
26 declare i32 @llvm.hexagon.A2.satub(i32)
27 define i32 @A2_satub(i32 %a) {
28   %z = call i32 @llvm.hexagon.A2.satub(i32 %a)
29   ret i32 %z
30 }
31 ; CHECK: r0 = satub(r0)
32
33 declare i32 @llvm.hexagon.A2.satb(i32)
34 define i32 @A2_satb(i32 %a) {
35   %z = call i32 @llvm.hexagon.A2.satb(i32 %a)
36   ret i32 %z
37 }
38 ; CHECK: r0 = satb(r0)
39
40 ; Swizzle bytes
41 declare i32 @llvm.hexagon.A2.swiz(i32)
42 define i32 @A2_swiz(i32 %a) {
43   %z = call i32 @llvm.hexagon.A2.swiz(i32 %a)
44   ret i32 %z
45 }
46 ; CHECK: r0 = swiz(r0)