brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · faafcd2 Raw
227 lines · c
1// REQUIRES: msp430-registered-target2// RUN: %clang -target msp430 -Os -S -o- %s | FileCheck %s3 4volatile int N;5volatile int i16_1, i16_2;6volatile long i32_1, i32_2;7volatile long long i64_1, i64_2;8volatile float f1, f2;9volatile double d1, d2;10 11_Static_assert(sizeof(int) == 2, "Assumption failed");12_Static_assert(sizeof(long) == 4, "Assumption failed");13_Static_assert(sizeof(long long) == 8, "Assumption failed");14 15void complex_i16_arg_first(int _Complex x, int n) {16// CHECK-LABEL: @complex_i16_arg_first17  i16_1 = __real__ x;18// CHECK-DAG: mov r12, &i16_119  i16_2 = __imag__ x;20// CHECK-DAG: mov r13, &i16_221  N = n;22// CHECK-DAG: mov r14, &N23// CHECK:     ret24}25 26void complex_i16_arg_second(int n, int _Complex x) {27// CHECK-LABEL: @complex_i16_arg_second28  N = n;29// CHECK-DAG: mov r12, &N30  i16_1 = __real__ x;31// CHECK-DAG: mov r13, &i16_132  i16_2 = __imag__ x;33// CHECK-DAG: mov r14, &i16_234// CHECK:     ret35}36 37void complex_i32_arg_first(long _Complex x, int n) {38// CHECK-LABEL: @complex_i32_arg_first39  i32_1 = __real__ x;40// CHECK-DAG: mov r12, &i32_141// CHECK-DAG: mov r13, &i32_1+242  i32_2 = __imag__ x;43// CHECK-DAG: mov r14, &i32_244// CHECK-DAG: mov r15, &i32_2+245  N = n;46// CHECK-DAG: mov 2(r1), &N47// CHECK:     ret48}49 50void complex_i32_arg_second(int n, long _Complex x) {51// CHECK-LABEL: @complex_i32_arg_second52  N = n;53// CHECK-DAG: mov r12, &N54  i32_1 = __real__ x;55// CHECK-DAG: mov 2(r1), &i32_156// CHECK-DAG: mov 4(r1), &i32_1+257  i32_2 = __imag__ x;58// CHECK-DAG: mov 6(r1), &i32_259// CHECK-DAG: mov 8(r1), &i32_2+260// CHECK:     ret61}62 63void complex_i64_arg_first(long long _Complex x, int n) {64// CHECK-LABEL: @complex_i64_arg_first65  i64_1 = __real__ x;66// CHECK-DAG: mov 2(r1), &i64_167// CHECK-DAG: mov 4(r1), &i64_1+268// CHECK-DAG: mov 6(r1), &i64_1+469// CHECK-DAG: mov 8(r1), &i64_1+670  i64_2 = __imag__ x;71// CHECK-DAG: mov 10(r1), &i64_272// CHECK-DAG: mov 12(r1), &i64_2+273// CHECK-DAG: mov 14(r1), &i64_2+474// CHECK-DAG: mov 16(r1), &i64_2+675  N = n;76// CHECK-DAG: mov r12, &N77// CHECK:     ret78}79 80void complex_i64_arg_second(int n, long long _Complex x) {81// CHECK-LABEL: @complex_i64_arg_second82  N = n;83// CHECK-DAG: mov r12, &N84  i64_1 = __real__ x;85// CHECK-DAG: mov 2(r1), &i64_186// CHECK-DAG: mov 4(r1), &i64_1+287// CHECK-DAG: mov 6(r1), &i64_1+488// CHECK-DAG: mov 8(r1), &i64_1+689  i64_2 = __imag__ x;90// CHECK-DAG: mov 10(r1), &i64_291// CHECK-DAG: mov 12(r1), &i64_2+292// CHECK-DAG: mov 14(r1), &i64_2+493// CHECK-DAG: mov 16(r1), &i64_2+694// CHECK:     ret95}96 97void complex_float_arg_first(float _Complex x, int n) {98// CHECK-LABEL: @complex_float_arg_first99  f1 = __real__ x;100// CHECK-DAG: mov r12, &f1101// CHECK-DAG: mov r13, &f1+2102  f2 = __imag__ x;103// CHECK-DAG: mov r14, &f2104// CHECK-DAG: mov r15, &f2+2105  N = n;106// CHECK-DAG: mov 2(r1), &N107// CHECK:     ret108}109 110void complex_float_arg_second(int n, float _Complex x) {111// CHECK-LABEL: @complex_float_arg_second112  N = n;113// CHECK-DAG: mov r12, &N114  f1 = __real__ x;115// CHECK-DAG: mov 2(r1), &f1116// CHECK-DAG: mov 4(r1), &f1+2117  f2 = __imag__ x;118// CHECK-DAG: mov 6(r1), &f2119// CHECK-DAG: mov 8(r1), &f2+2120// CHECK:     ret121}122 123void complex_double_arg_first(double _Complex x, int n) {124// CHECK-LABEL: @complex_double_arg_first125  d1 = __real__ x;126// CHECK-DAG: mov 2(r1), &d1127// CHECK-DAG: mov 4(r1), &d1+2128// CHECK-DAG: mov 6(r1), &d1+4129// CHECK-DAG: mov 8(r1), &d1+6130  d2 = __imag__ x;131// CHECK-DAG: mov 10(r1), &d2132// CHECK-DAG: mov 12(r1), &d2+2133// CHECK-DAG: mov 14(r1), &d2+4134// CHECK-DAG: mov 16(r1), &d2+6135  N = n;136// CHECK-DAG: mov r12, &N137// CHECK:     ret138}139 140void complex_double_arg_second(int n, double _Complex x) {141// CHECK-LABEL: @complex_double_arg_second142  d1 = __real__ x;143// CHECK-DAG: mov 2(r1), &d1144// CHECK-DAG: mov 4(r1), &d1+2145// CHECK-DAG: mov 6(r1), &d1+4146// CHECK-DAG: mov 8(r1), &d1+6147  d2 = __imag__ x;148// CHECK-DAG: mov 10(r1), &d2149// CHECK-DAG: mov 12(r1), &d2+2150// CHECK-DAG: mov 14(r1), &d2+4151// CHECK-DAG: mov 16(r1), &d2+6152  N = n;153// CHECK-DAG: mov r12, &N154// CHECK:     ret155}156 157int _Complex complex_i16_res(void) {158// CHECK-LABEL: @complex_i16_res159  int _Complex res;160  __real__ res = 0x1122;161// CHECK-DAG: mov #4386, r12162  __imag__ res = 0x3344;163// CHECK-DAG: mov #13124, r13164  return res;165// CHECK:     ret166}167 168long _Complex complex_i32_res(void) {169// CHECK-LABEL: @complex_i32_res170  long _Complex res;171  __real__ res = 0x11223344;172// CHECK-DAG: mov #13124, r12173// CHECK-DAG: mov #4386,  r13174  __imag__ res = 0x55667788;175// CHECK-DAG: mov #30600, r14176// CHECK-DAG: mov #21862, r15177  return res;178// CHECK:     ret179}180 181long long _Complex complex_i64_res(void) {182// CHECK-LABEL: @complex_i64_res183  long long _Complex res;184  __real__ res = 0x1122334455667788;185// CHECK-DAG: mov #30600,  0(r12)186// CHECK-DAG: mov #21862,  2(r12)187// CHECK-DAG: mov #13124,  4(r12)188// CHECK-DAG: mov #4386,   6(r12)189  __imag__ res = 0x99aabbccddeeff00;190// CHECK-DAG: mov #-256,   8(r12)191// CHECK-DAG: mov #-8722,  10(r12)192// CHECK-DAG: mov #-17460, 12(r12)193// CHECK-DAG: mov #-26198, 14(r12)194  return res;195// CHECK:     ret196}197 198float _Complex complex_float_res(void) {199// CHECK-LABEL: @complex_float_res200  float _Complex res;201  __real__ res = 1;202// CHECK-DAG: clr r12203// CHECK-DAG: mov #16256, r13204  __imag__ res = -1;205// CHECK-DAG: clr r14206// CHECK-DAG: mov #-16512, r15207  return res;208// CHECK:     ret209}210 211double _Complex complex_double_res(void) {212// CHECK-LABEL: @complex_double_res213  double _Complex res;214  __real__ res = 1;215// CHECK-DAG: clr 0(r12)216// CHECK-DAG: clr 2(r12)217// CHECK-DAG: clr 4(r12)218// CHECK-DAG: mov #16368, 6(r12)219  __imag__ res = -1;220// CHECK-DAG: clr 8(r12)221// CHECK-DAG: clr 10(r12)222// CHECK-DAG: clr 12(r12)223// CHECK-DAG: mov #-16400, 14(r12)224  return res;225// CHECK:     ret226}227