annotate clang/test/CodeGen/arm64-crc32.c @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children c4bab56944e8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // REQUIRES: aarch64-registered-target
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -triple arm64-none-linux-gnu \
anatofuz
parents:
diff changeset
3 // RUN: -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
anatofuz
parents:
diff changeset
4 // RUN: %clang_cc1 -triple aarch64-windows \
anatofuz
parents:
diff changeset
5 // RUN: -disable-O0-optnone -S -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
anatofuz
parents:
diff changeset
6 #include <stdint.h>
anatofuz
parents:
diff changeset
7
anatofuz
parents:
diff changeset
8 uint32_t crc32b(uint32_t a, uint8_t b)
anatofuz
parents:
diff changeset
9 {
anatofuz
parents:
diff changeset
10 return __builtin_arm_crc32b(a,b);
anatofuz
parents:
diff changeset
11 // CHECK: [[T0:%[0-9]+]] = zext i8 %b to i32
anatofuz
parents:
diff changeset
12 // CHECK: call i32 @llvm.aarch64.crc32b(i32 %a, i32 [[T0]])
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 uint32_t crc32cb(uint32_t a, uint8_t b)
anatofuz
parents:
diff changeset
16 {
anatofuz
parents:
diff changeset
17 return __builtin_arm_crc32cb(a,b);
anatofuz
parents:
diff changeset
18 // CHECK: [[T0:%[0-9]+]] = zext i8 %b to i32
anatofuz
parents:
diff changeset
19 // CHECK: call i32 @llvm.aarch64.crc32cb(i32 %a, i32 [[T0]])
anatofuz
parents:
diff changeset
20 }
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 uint32_t crc32h(uint32_t a, uint16_t b)
anatofuz
parents:
diff changeset
23 {
anatofuz
parents:
diff changeset
24 return __builtin_arm_crc32h(a,b);
anatofuz
parents:
diff changeset
25 // CHECK: [[T0:%[0-9]+]] = zext i16 %b to i32
anatofuz
parents:
diff changeset
26 // CHECK: call i32 @llvm.aarch64.crc32h(i32 %a, i32 [[T0]])
anatofuz
parents:
diff changeset
27 }
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 uint32_t crc32ch(uint32_t a, uint16_t b)
anatofuz
parents:
diff changeset
30 {
anatofuz
parents:
diff changeset
31 return __builtin_arm_crc32ch(a,b);
anatofuz
parents:
diff changeset
32 // CHECK: [[T0:%[0-9]+]] = zext i16 %b to i32
anatofuz
parents:
diff changeset
33 // CHECK: call i32 @llvm.aarch64.crc32ch(i32 %a, i32 [[T0]])
anatofuz
parents:
diff changeset
34 }
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36 uint32_t crc32w(uint32_t a, uint32_t b)
anatofuz
parents:
diff changeset
37 {
anatofuz
parents:
diff changeset
38 return __builtin_arm_crc32w(a,b);
anatofuz
parents:
diff changeset
39 // CHECK: call i32 @llvm.aarch64.crc32w(i32 %a, i32 %b)
anatofuz
parents:
diff changeset
40 }
anatofuz
parents:
diff changeset
41
anatofuz
parents:
diff changeset
42 uint32_t crc32cw(uint32_t a, uint32_t b)
anatofuz
parents:
diff changeset
43 {
anatofuz
parents:
diff changeset
44 return __builtin_arm_crc32cw(a,b);
anatofuz
parents:
diff changeset
45 // CHECK: call i32 @llvm.aarch64.crc32cw(i32 %a, i32 %b)
anatofuz
parents:
diff changeset
46 }
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 uint32_t crc32d(uint32_t a, uint64_t b)
anatofuz
parents:
diff changeset
49 {
anatofuz
parents:
diff changeset
50 return __builtin_arm_crc32d(a,b);
anatofuz
parents:
diff changeset
51 // CHECK: call i32 @llvm.aarch64.crc32x(i32 %a, i64 %b)
anatofuz
parents:
diff changeset
52 }
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 uint32_t crc32cd(uint32_t a, uint64_t b)
anatofuz
parents:
diff changeset
55 {
anatofuz
parents:
diff changeset
56 return __builtin_arm_crc32cd(a,b);
anatofuz
parents:
diff changeset
57 // CHECK: call i32 @llvm.aarch64.crc32cx(i32 %a, i64 %b)
anatofuz
parents:
diff changeset
58 }