Clang Project

clang_source_code/test/CodeGen/builtins-hexagon-circ.c
1// REQUIRES: hexagon-registered-target
2// RUN: %clang_cc1 -triple hexagon-unknown-elf -emit-llvm %s -o - | FileCheck %s
3
4// CHECK-LABEL: test1
5// CHECK: @llvm.hexagon.L2.loadrub.pci
6unsigned 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
13unsigned 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
20unsigned 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
27short 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
34int 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
41long 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
48unsigned 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
55unsigned 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
62unsigned 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
69short 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
76int 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
83long 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
90void 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
97void 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
104void 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
111void 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
118void 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
125void 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
132void 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
139void 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
146void 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
153void test22(int mod, void *start, long long v) {
154  void *base = start;
155  __builtin_HEXAGON_S2_storerd_pcr(&base, mod, v, start);
156}
157