fixed_point_to_bool.c 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // RUN: %clang_cc1 -ffixed-point -S -emit-llvm %s -o - | FileCheck %s
  2. // RUN: %clang_cc1 -ffixed-point -S -emit-llvm %s -o - -fpadding-on-unsigned-fixed-point | FileCheck %s
  3. _Bool global_b = 1.0k; // @global_b = {{*.}}global i8 1, align 1
  4. _Bool global_b2 = 0.0k; // @global_b2 = {{*.}}global i8 0, align 1
  5. void func() {
  6. _Accum a = 0.5k;
  7. unsigned _Accum ua = 0.5uk;
  8. _Bool b;
  9. // CHECK: store i8 1, i8* %b, align 1
  10. // CHECK-NEXT: store i8 0, i8* %b, align 1
  11. // CHECK: store i8 1, i8* %b, align 1
  12. // CHECK-NEXT: store i8 0, i8* %b, align 1
  13. b = 0.5k;
  14. b = 0.0k;
  15. b = 0.5uk;
  16. b = 0.0uk;
  17. // CHECK-NEXT: store i8 1, i8* %b, align 1
  18. // CHECK-NEXT: store i8 0, i8* %b, align 1
  19. // CHECK-NEXT: store i8 1, i8* %b, align 1
  20. // CHECK-NEXT: store i8 0, i8* %b, align 1
  21. b = (_Bool)0.5r;
  22. b = (_Bool)0.0r;
  23. b = (_Bool)0.5ur;
  24. b = (_Bool)0.0ur;
  25. // CHECK-NEXT: [[ACCUM:%[0-9a-z]+]] = load i32, i32* %a, align 4
  26. // CHECK-NEXT: [[NOTZERO:%[0-9a-z]+]] = icmp ne i32 [[ACCUM]], 0
  27. // CHECK-NEXT: [[FROMBOOL:%[0-9a-z]+]] = zext i1 [[NOTZERO]] to i8
  28. // CHECK-NEXT: store i8 [[FROMBOOL]], i8* %b, align 1
  29. b = a;
  30. // CHECK-NEXT: [[ACCUM:%[0-9a-z]+]] = load i32, i32* %ua, align 4
  31. // CHECK-NEXT: [[NOTZERO:%[0-9a-z]+]] = icmp ne i32 [[ACCUM]], 0
  32. // CHECK-NEXT: [[FROMBOOL:%[0-9a-z]+]] = zext i1 [[NOTZERO]] to i8
  33. // CHECK-NEXT: store i8 [[FROMBOOL]], i8* %b, align 1
  34. b = ua;
  35. // CHECK-NEXT: [[ACCUM:%[0-9a-z]+]] = load i32, i32* %a, align 4
  36. // CHECK-NEXT: [[NOTZERO:%[0-9a-z]+]] = icmp ne i32 [[ACCUM]], 0
  37. // CHECK-NEXT: br i1 [[NOTZERO]], label %if.then, label %if.end
  38. if (a) {
  39. }
  40. // CHECK: [[ACCUM:%[0-9a-z]+]] = load i32, i32* %ua, align 4
  41. // CHECK-NEXT: [[NOTZERO:%[0-9a-z]+]] = icmp ne i32 [[ACCUM]], 0
  42. // CHECK-NEXT: br i1 [[NOTZERO]], label %if.then{{[0-9]+}}, label %if.end{{[0-9]+}}
  43. if (ua) {
  44. }
  45. }