[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / Hexagon / bit-ext-sat.ll
blob713e3988457e188b618deb43d184c1bc2836163d
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 target triple = "hexagon"
5 ; CHECK-LABEL: xh_sh
6 ; CHECK: sath
7 ; CHECK-NOT: sxth
8 define i32 @xh_sh(i32 %x) local_unnamed_addr #0 {
9 entry:
10   %0 = tail call i32 @llvm.hexagon.A2.sath(i32 %x)
11   %1 = tail call i32 @llvm.hexagon.A2.sxth(i32 %0)
12   ret i32 %1
15 ; CHECK-LABEL: xb_sb
16 ; CHECK: satb
17 ; CHECK-NOT: sxtb
18 define i32 @xb_sb(i32 %x) local_unnamed_addr #0 {
19 entry:
20   %0 = tail call i32 @llvm.hexagon.A2.satb(i32 %x)
21   %1 = tail call i32 @llvm.hexagon.A2.sxtb(i32 %0)
22   ret i32 %1
25 ; CHECK-LABEL: xuh_suh
26 ; CHECK: satuh
27 ; CHECK-NOT: zxth
28 define i32 @xuh_suh(i32 %x) local_unnamed_addr #0 {
29 entry:
30   %0 = tail call i32 @llvm.hexagon.A2.satuh(i32 %x)
31   %1 = tail call i32 @llvm.hexagon.A2.zxth(i32 %0)
32   ret i32 %1
35 ; CHECK-LABEL: xub_sub
36 ; CHECK: satub
37 ; CHECK-NOT: zxtb
38 define i32 @xub_sub(i32 %x) local_unnamed_addr #0 {
39 entry:
40   %0 = tail call i32 @llvm.hexagon.A2.satub(i32 %x)
41   %1 = tail call i32 @llvm.hexagon.A2.zxtb(i32 %0)
42   ret i32 %1
46 declare i32 @llvm.hexagon.A2.sxtb(i32) #1
47 declare i32 @llvm.hexagon.A2.sxth(i32) #1
48 declare i32 @llvm.hexagon.A2.zxtb(i32) #1
49 declare i32 @llvm.hexagon.A2.zxth(i32) #1
51 declare i32 @llvm.hexagon.A2.satb(i32) #1
52 declare i32 @llvm.hexagon.A2.sath(i32) #1
53 declare i32 @llvm.hexagon.A2.satub(i32) #1
54 declare i32 @llvm.hexagon.A2.satuh(i32) #1
56 attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-hvx,-long-calls" }
57 attributes #1 = { nounwind readnone }