xref: /llvm-project/clang/test/CodeGen/builtins-hexagon-circ.c (revision 6f3effbbf054e75039030d389752608efd5a0221)
1 // REQUIRES: hexagon-registered-target
2 // RUN: %clang_cc1 -triple hexagon-unknown-elf -target-cpu hexagonv60 -emit-llvm %s -o - | FileCheck %s
3 
4 // CHECK-LABEL: test1
5 // CHECK: @llvm.hexagon.L2.loadrub.pci
test1(int mod,void * start)6 unsigned char test1(int mod, void *start) {
7   unsigned char *base = start;
8   return __builtin_HEXAGON_L2_loadrub_pci(&base, 4, mod, start);
9 }
10 
11 // CHECK-LABEL: test2
12 // CHECK: @llvm.hexagon.L2.loadrb.pci
test2(int mod,void * start)13 unsigned char test2(int mod, void *start) {
14   char *base = start;
15   return __builtin_HEXAGON_L2_loadrb_pci(&base, 4, mod, start);
16 }
17 
18 // CHECK-LABEL: test3
19 // CHECK: @llvm.hexagon.L2.loadruh.pci
test3(int mod,void * start)20 unsigned short test3(int mod, void *start) {
21   unsigned short *base = start;
22   return __builtin_HEXAGON_L2_loadruh_pci(&base, 4, mod, start);
23 }
24 
25 // CHECK-LABEL: test4
26 // CHECK: @llvm.hexagon.L2.loadrh.pci
test4(int mod,void * start)27 short test4(int mod, void *start) {
28   short *base = start;
29   return __builtin_HEXAGON_L2_loadrh_pci(&base, 4, mod, start);
30 }
31 
32 // CHECK-LABEL: test5
33 // CHECK: @llvm.hexagon.L2.loadri.pci
test5(int mod,void * start)34 int test5(int mod, void *start) {
35   int *base = start;
36   return __builtin_HEXAGON_L2_loadri_pci(&base, 4, mod, start);
37 }
38 
39 // CHECK-LABEL: test6
40 // CHECK: @llvm.hexagon.L2.loadrd.pci
test6(int mod,void * start)41 long long test6(int mod, void *start) {
42   long long *base = start;
43   return __builtin_HEXAGON_L2_loadrd_pci(&base, 8, mod, start);
44 }
45 
46 // CHECK-LABEL: test7
47 // CHECK: @llvm.hexagon.L2.loadrub.pcr
test7(int mod,void * start)48 unsigned char test7(int mod, void *start) {
49   unsigned char *base = start;
50   return __builtin_HEXAGON_L2_loadrub_pcr(&base, mod, start);
51 }
52 
53 // CHECK-LABEL: test8
54 // CHECK: @llvm.hexagon.L2.loadrb.pcr
test8(int mod,void * start)55 unsigned char test8(int mod, void *start) {
56   char *base = start;
57   return __builtin_HEXAGON_L2_loadrb_pcr(&base, mod, start);
58 }
59 
60 // CHECK-LABEL: test9
61 // CHECK: @llvm.hexagon.L2.loadruh.pcr
test9(int mod,void * start)62 unsigned short test9(int mod, void *start) {
63   unsigned short *base = start;
64   return __builtin_HEXAGON_L2_loadruh_pcr(&base, mod, start);
65 }
66 
67 // CHECK-LABEL: test10
68 // CHECK: @llvm.hexagon.L2.loadrh.pcr
test10(int mod,void * start)69 short test10(int mod, void *start) {
70   short *base = start;
71   return __builtin_HEXAGON_L2_loadrh_pcr(&base, mod, start);
72 }
73 
74 // CHECK-LABEL: test11
75 // CHECK: @llvm.hexagon.L2.loadri.pcr
test11(int mod,void * start)76 int test11(int mod, void *start) {
77   int *base = start;
78   return __builtin_HEXAGON_L2_loadri_pcr(&base, mod, start);
79 }
80 
81 // CHECK-LABEL: test12
82 // CHECK: @llvm.hexagon.L2.loadrd.pcr
test12(int mod,void * start)83 long long test12(int mod, void *start) {
84   long long *base = start;
85   return __builtin_HEXAGON_L2_loadrd_pcr(&base, mod, start);
86 }
87 
88 // CHECK-LABEL: test13
89 // CHECK: @llvm.hexagon.S2.storerb.pci
test13(int mod,void * start,char v)90 void test13(int mod, void *start, char v) {
91   void *base = start;
92   __builtin_HEXAGON_S2_storerb_pci(&base, 4, mod, v, start);
93 }
94 
95 // CHECK-LABEL: test14
96 // CHECK: @llvm.hexagon.S2.storerh.pci
test14(int mod,void * start,short v)97 void test14(int mod, void *start, short v) {
98   void *base = start;
99   __builtin_HEXAGON_S2_storerh_pci(&base, 4, mod, v, start);
100 }
101 
102 // CHECK-LABEL: test15
103 // CHECK: @llvm.hexagon.S2.storerf.pci
test15(int mod,void * start,short v)104 void test15(int mod, void *start, short v) {
105   void *base = start;
106   __builtin_HEXAGON_S2_storerf_pci(&base, 4, mod, v, start);
107 }
108 
109 // CHECK-LABEL: test16
110 // CHECK: @llvm.hexagon.S2.storeri.pci
test16(int mod,void * start,int v)111 void test16(int mod, void *start, int v) {
112   void *base = start;
113   __builtin_HEXAGON_S2_storeri_pci(&base, 4, mod, v, start);
114 }
115 
116 // CHECK-LABEL: test17
117 // CHECK: @llvm.hexagon.S2.storerd.pci
test17(int mod,void * start,long long v)118 void test17(int mod, void *start, long long v) {
119   void *base = start;
120   __builtin_HEXAGON_S2_storerd_pci(&base, 8, mod, v, start);
121 }
122 
123 // CHECK-LABEL: test18
124 // CHECK: @llvm.hexagon.S2.storerb.pcr
test18(int mod,void * start,char v)125 void test18(int mod, void *start, char v) {
126   void *base = start;
127   __builtin_HEXAGON_S2_storerb_pcr(&base, mod, v, start);
128 }
129 
130 // CHECK-LABEL: test19
131 // CHECK: @llvm.hexagon.S2.storerh.pcr
test19(int mod,void * start,short v)132 void test19(int mod, void *start, short v) {
133   void *base = start;
134   __builtin_HEXAGON_S2_storerh_pcr(&base, mod, v, start);
135 }
136 
137 // CHECK-LABEL: test20
138 // CHECK: @llvm.hexagon.S2.storerf.pcr
test20(int mod,void * start,short v)139 void test20(int mod, void *start, short v) {
140   void *base = start;
141   __builtin_HEXAGON_S2_storerf_pcr(&base, mod, v, start);
142 }
143 
144 // CHECK-LABEL: test21
145 // CHECK: @llvm.hexagon.S2.storeri.pcr
test21(int mod,void * start,int v)146 void test21(int mod, void *start, int v) {
147   void *base = start;
148   __builtin_HEXAGON_S2_storeri_pcr(&base, mod, v, start);
149 }
150 
151 // CHECK-LABEL: test22
152 // CHECK: @llvm.hexagon.S2.storerd.pcr
test22(int mod,void * start,long long v)153 void test22(int mod, void *start, long long v) {
154   void *base = start;
155   __builtin_HEXAGON_S2_storerd_pcr(&base, mod, v, start);
156 }
157