brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 305d25a Raw
67 lines · c
1// RUN: %clang_cc1 -triple thumbv8m.base-unknown-unknown-eabi   -emit-llvm -mrelocation-model static -mcmse -o - %s | FileCheck %s2// RUN: %clang_cc1 -triple thumbebv8m.base-unknown-unknown-eabi -emit-llvm -mrelocation-model static -mcmse -o - %s | FileCheck %s3 4#include <arm_cmse.h>5 6unsigned test_cmse_primitives(void *p) {7// CHECK: define {{.*}} i32 @test_cmse_primitives8  cmse_address_info_t tt_val, ttt_val;9  cmse_address_info_t tta_val, ttat_val;10  unsigned sum;11 12  tt_val = cmse_TT(p);13  ttt_val = cmse_TTT(p);14  tta_val = cmse_TTA(p);15  ttat_val = cmse_TTAT(p);16// CHECK: call i32 @llvm.arm.cmse.tt17// CHECK: call i32 @llvm.arm.cmse.ttt18// CHECK: call i32 @llvm.arm.cmse.tta19// CHECK: call i32 @llvm.arm.cmse.ttat20 21  sum = tt_val.value;22  sum += ttt_val.value;23  sum += tta_val.value;24  sum += ttat_val.value;25 26  sum += tt_val.flags.mpu_region;27  sum += tt_val.flags.sau_region;28  sum += tt_val.flags.mpu_region_valid;29  sum += tt_val.flags.sau_region_valid;30  sum += tt_val.flags.read_ok;31  sum += tt_val.flags.readwrite_ok;32  sum += tt_val.flags.nonsecure_read_ok;33  sum += tt_val.flags.nonsecure_readwrite_ok;34  sum += tt_val.flags.secure;35  sum += tt_val.flags.idau_region_valid;36  sum += tt_val.flags.idau_region;37 38  return sum;39}40 41void *test_address_range(void *p) {42// CHECK: define {{.*}} ptr @test_address_range43  return cmse_check_address_range(p, 128, CMSE_MPU_UNPRIV44                                        | CMSE_MPU_NONSECURE45                                        | CMSE_MPU_READWRITE);46// CHECK: call i32 @llvm.arm.cmse.tt47// CHECK: call i32 @llvm.arm.cmse.ttt48// CHECK: call i32 @llvm.arm.cmse.tta49// CHECK: call i32 @llvm.arm.cmse.ttat50}51 52typedef struct {53  int x, y, z;54} Point;55 56void test_pointed_object(void *p) {57// CHECK: define {{.*}} void @test_pointed_object58  Point *pt = (Point *)p;59  cmse_check_pointed_object(pt, CMSE_NONSECURE60                              | CMSE_MPU_READ61                              | CMSE_AU_NONSECURE);62// CHECK: call i32 @llvm.arm.cmse.tt63// CHECK: call i32 @llvm.arm.cmse.ttt64// CHECK: call i32 @llvm.arm.cmse.tta65// CHECK: call i32 @llvm.arm.cmse.ttat66}67