1 // RUN: %clang -x c -ffixed-point -S -emit-llvm -o - %s | FileCheck %s 2 // RUN: %clang -x c -ffixed-point -S -emit-llvm -o - --target=x86_64-scei-ps4 %s | FileCheck %s 3 // RUN: %clang -x c -ffixed-point -S -emit-llvm -o - --target=ppc64 %s | FileCheck %s 4 // RUN: %clang -x c -ffixed-point -S -emit-llvm -o - --target=x86_64-scei-ps4 %s | FileCheck %s 5 6 /* Primary signed _Accum */ 7 8 int size_SsA = sizeof(signed short _Accum); 9 int size_SA = sizeof(signed _Accum); 10 int size_SlA = sizeof(signed long _Accum); 11 int align_SsA = __alignof(signed short _Accum); 12 int align_SA = __alignof(signed _Accum); 13 int align_SlA = __alignof(signed long _Accum); 14 15 // CHECK: @size_SsA = {{.*}}global i{{[0-9]+}} 2 16 // CHECK-NEXT: @size_SA = {{.*}}global i{{[0-9]+}} 4 17 // CHECK-NEXT: @size_SlA = {{.*}}global i{{[0-9]+}} 8 18 // CHECK-NEXT: @align_SsA = {{.*}}global i{{[0-9]+}} 2 19 // CHECK-NEXT: @align_SA = {{.*}}global i{{[0-9]+}} 4 20 // CHECK-NEXT: @align_SlA = {{.*}}global i{{[0-9]+}} 8 21 22 /* Primary unsigned _Accum */ 23 24 int size_UsA = sizeof(unsigned short _Accum); 25 int size_UA = sizeof(unsigned _Accum); 26 int size_UlA = sizeof(unsigned long _Accum); 27 int align_UsA = __alignof(unsigned short _Accum); 28 int align_UA = __alignof(unsigned _Accum); 29 int align_UlA = __alignof(unsigned long _Accum); 30 31 // CHECK-NEXT: @size_UsA = {{.*}}global i{{[0-9]+}} 2 32 // CHECK-NEXT: @size_UA = {{.*}}global i{{[0-9]+}} 4 33 // CHECK-NEXT: @size_UlA = {{.*}}global i{{[0-9]+}} 8 34 // CHECK-NEXT: @align_UsA = {{.*}}global i{{[0-9]+}} 2 35 // CHECK-NEXT: @align_UA = {{.*}}global i{{[0-9]+}} 4 36 // CHECK-NEXT: @align_UlA = {{.*}}global i{{[0-9]+}} 8 37 38 /* Primary signed _Fract */ 39 40 int size_SsF = sizeof(signed short _Fract); 41 int size_SF = sizeof(signed _Fract); 42 int size_SlF = sizeof(signed long _Fract); 43 int align_SsF = __alignof(signed short _Fract); 44 int align_SF = __alignof(signed _Fract); 45 int align_SlF = __alignof(signed long _Fract); 46 47 // CHECK-NEXT: @size_SsF = {{.*}}global i{{[0-9]+}} 1 48 // CHECK-NEXT: @size_SF = {{.*}}global i{{[0-9]+}} 2 49 // CHECK-NEXT: @size_SlF = {{.*}}global i{{[0-9]+}} 4 50 // CHECK-NEXT: @align_SsF = {{.*}}global i{{[0-9]+}} 1 51 // CHECK-NEXT: @align_SF = {{.*}}global i{{[0-9]+}} 2 52 // CHECK-NEXT: @align_SlF = {{.*}}global i{{[0-9]+}} 4 53 54 /* Primary unsigned _Fract */ 55 56 int size_UsF = sizeof(unsigned short _Fract); 57 int size_UF = sizeof(unsigned _Fract); 58 int size_UlF = sizeof(unsigned long _Fract); 59 int align_UsF = __alignof(unsigned short _Fract); 60 int align_UF = __alignof(unsigned _Fract); 61 int align_UlF = __alignof(unsigned long _Fract); 62 63 // CHECK-NEXT: @size_UsF = {{.*}}global i{{[0-9]+}} 1 64 // CHECK-NEXT: @size_UF = {{.*}}global i{{[0-9]+}} 2 65 // CHECK-NEXT: @size_UlF = {{.*}}global i{{[0-9]+}} 4 66 // CHECK-NEXT: @align_UsF = {{.*}}global i{{[0-9]+}} 1 67 // CHECK-NEXT: @align_UF = {{.*}}global i{{[0-9]+}} 2 68 // CHECK-NEXT: @align_UlF = {{.*}}global i{{[0-9]+}} 4 69 70 /* Aliased _Accum */ 71 72 int size_sA = sizeof(short _Accum); 73 int size_A = sizeof(_Accum); 74 int size_lA = sizeof(long _Accum); 75 int align_sA = __alignof(short _Accum); 76 int align_A = __alignof(_Accum); 77 int align_lA = __alignof(long _Accum); 78 79 // CHECK-NEXT: @size_sA = {{.*}}global i{{[0-9]+}} 2 80 // CHECK-NEXT: @size_A = {{.*}}global i{{[0-9]+}} 4 81 // CHECK-NEXT: @size_lA = {{.*}}global i{{[0-9]+}} 8 82 // CHECK-NEXT: @align_sA = {{.*}}global i{{[0-9]+}} 2 83 // CHECK-NEXT: @align_A = {{.*}}global i{{[0-9]+}} 4 84 // CHECK-NEXT: @align_lA = {{.*}}global i{{[0-9]+}} 8 85 86 /* Aliased _Fract */ 87 88 int size_sF = sizeof(short _Fract); 89 int size_F = sizeof(_Fract); 90 int size_lF = sizeof(long _Fract); 91 int align_sF = __alignof(short _Fract); 92 int align_F = __alignof(_Fract); 93 int align_lF = __alignof(long _Fract); 94 95 // CHECK-NEXT: @size_sF = {{.*}}global i{{[0-9]+}} 1 96 // CHECK-NEXT: @size_F = {{.*}}global i{{[0-9]+}} 2 97 // CHECK-NEXT: @size_lF = {{.*}}global i{{[0-9]+}} 4 98 // CHECK-NEXT: @align_sF = {{.*}}global i{{[0-9]+}} 1 99 // CHECK-NEXT: @align_F = {{.*}}global i{{[0-9]+}} 2 100 // CHECK-NEXT: @align_lF = {{.*}}global i{{[0-9]+}} 4 101 102 /* Saturated signed _Accum */ 103 104 int size_SatSsA = sizeof(_Sat signed short _Accum); 105 int size_SatSA = sizeof(_Sat signed _Accum); 106 int size_SatSlA = sizeof(_Sat signed long _Accum); 107 int align_SatSsA = __alignof(_Sat signed short _Accum); 108 int align_SatSA = __alignof(_Sat signed _Accum); 109 int align_SatSlA = __alignof(_Sat signed long _Accum); 110 111 // CHECK: @size_SatSsA = {{.*}}global i{{[0-9]+}} 2 112 // CHECK-NEXT: @size_SatSA = {{.*}}global i{{[0-9]+}} 4 113 // CHECK-NEXT: @size_SatSlA = {{.*}}global i{{[0-9]+}} 8 114 // CHECK-NEXT: @align_SatSsA = {{.*}}global i{{[0-9]+}} 2 115 // CHECK-NEXT: @align_SatSA = {{.*}}global i{{[0-9]+}} 4 116 // CHECK-NEXT: @align_SatSlA = {{.*}}global i{{[0-9]+}} 8 117 118 /* Saturated unsigned _Accum */ 119 120 int size_SatUsA = sizeof(_Sat unsigned short _Accum); 121 int size_SatUA = sizeof(_Sat unsigned _Accum); 122 int size_SatUlA = sizeof(_Sat unsigned long _Accum); 123 int align_SatUsA = __alignof(_Sat unsigned short _Accum); 124 int align_SatUA = __alignof(_Sat unsigned _Accum); 125 int align_SatUlA = __alignof(_Sat unsigned long _Accum); 126 127 // CHECK-NEXT: @size_SatUsA = {{.*}}global i{{[0-9]+}} 2 128 // CHECK-NEXT: @size_SatUA = {{.*}}global i{{[0-9]+}} 4 129 // CHECK-NEXT: @size_SatUlA = {{.*}}global i{{[0-9]+}} 8 130 // CHECK-NEXT: @align_SatUsA = {{.*}}global i{{[0-9]+}} 2 131 // CHECK-NEXT: @align_SatUA = {{.*}}global i{{[0-9]+}} 4 132 // CHECK-NEXT: @align_SatUlA = {{.*}}global i{{[0-9]+}} 8 133 134 /* Saturated signed _Fract */ 135 136 int size_SatSsF = sizeof(_Sat signed short _Fract); 137 int size_SatSF = sizeof(_Sat signed _Fract); 138 int size_SatSlF = sizeof(_Sat signed long _Fract); 139 int align_SatSsF = __alignof(_Sat signed short _Fract); 140 int align_SatSF = __alignof(_Sat signed _Fract); 141 int align_SatSlF = __alignof(_Sat signed long _Fract); 142 143 // CHECK-NEXT: @size_SatSsF = {{.*}}global i{{[0-9]+}} 1 144 // CHECK-NEXT: @size_SatSF = {{.*}}global i{{[0-9]+}} 2 145 // CHECK-NEXT: @size_SatSlF = {{.*}}global i{{[0-9]+}} 4 146 // CHECK-NEXT: @align_SatSsF = {{.*}}global i{{[0-9]+}} 1 147 // CHECK-NEXT: @align_SatSF = {{.*}}global i{{[0-9]+}} 2 148 // CHECK-NEXT: @align_SatSlF = {{.*}}global i{{[0-9]+}} 4 149 150 /* Saturated unsigned _Fract */ 151 152 int size_SatUsF = sizeof(_Sat unsigned short _Fract); 153 int size_SatUF = sizeof(_Sat unsigned _Fract); 154 int size_SatUlF = sizeof(_Sat unsigned long _Fract); 155 int align_SatUsF = __alignof(_Sat unsigned short _Fract); 156 int align_SatUF = __alignof(_Sat unsigned _Fract); 157 int align_SatUlF = __alignof(_Sat unsigned long _Fract); 158 159 // CHECK-NEXT: @size_SatUsF = {{.*}}global i{{[0-9]+}} 1 160 // CHECK-NEXT: @size_SatUF = {{.*}}global i{{[0-9]+}} 2 161 // CHECK-NEXT: @size_SatUlF = {{.*}}global i{{[0-9]+}} 4 162 // CHECK-NEXT: @align_SatUsF = {{.*}}global i{{[0-9]+}} 1 163 // CHECK-NEXT: @align_SatUF = {{.*}}global i{{[0-9]+}} 2 164 // CHECK-NEXT: @align_SatUlF = {{.*}}global i{{[0-9]+}} 4 165 166 /* Aliased saturated signed _Accum */ 167 168 int size_SatsA = sizeof(_Sat short _Accum); 169 int size_SatA = sizeof(_Sat _Accum); 170 int size_SatlA = sizeof(_Sat long _Accum); 171 int align_SatsA = __alignof(_Sat short _Accum); 172 int align_SatA = __alignof(_Sat _Accum); 173 int align_SatlA = __alignof(_Sat long _Accum); 174 175 // CHECK-NEXT: @size_SatsA = {{.*}}global i{{[0-9]+}} 2 176 // CHECK-NEXT: @size_SatA = {{.*}}global i{{[0-9]+}} 4 177 // CHECK-NEXT: @size_SatlA = {{.*}}global i{{[0-9]+}} 8 178 // CHECK-NEXT: @align_SatsA = {{.*}}global i{{[0-9]+}} 2 179 // CHECK-NEXT: @align_SatA = {{.*}}global i{{[0-9]+}} 4 180 // CHECK-NEXT: @align_SatlA = {{.*}}global i{{[0-9]+}} 8 181 182 /* Aliased saturated _Fract */ 183 184 int size_SatsF = sizeof(_Sat short _Fract); 185 int size_SatF = sizeof(_Sat _Fract); 186 int size_SatlF = sizeof(_Sat long _Fract); 187 int align_SatsF = __alignof(_Sat short _Fract); 188 int align_SatF = __alignof(_Sat _Fract); 189 int align_SatlF = __alignof(_Sat long _Fract); 190 191 // CHECK-NEXT: @size_SatsF = {{.*}}global i{{[0-9]+}} 1 192 // CHECK-NEXT: @size_SatF = {{.*}}global i{{[0-9]+}} 2 193 // CHECK-NEXT: @size_SatlF = {{.*}}global i{{[0-9]+}} 4 194 // CHECK-NEXT: @align_SatsF = {{.*}}global i{{[0-9]+}} 1 195 // CHECK-NEXT: @align_SatF = {{.*}}global i{{[0-9]+}} 2 196 // CHECK-NEXT: @align_SatlF = {{.*}}global i{{[0-9]+}} 4 197