@@ -130,7 +130,15 @@ int main(void) {
130130 P (object_size , (s0 , 3 ));
131131
132132 // Whatever
133-
133+ P (bswapg , ((char )N ));
134+ P (bswapg , ((short )N ));
135+ P (bswapg , ((int )N ));
136+ P (bswapg , ((unsigned long )N ));
137+ P (bswapg , ((_BitInt (8 ))N ));
138+ P (bswapg , ((_BitInt (16 ))N ));
139+ P (bswapg , ((_BitInt (32 ))N ));
140+ P (bswapg , ((_BitInt (64 ))N ));
141+ P (bswapg , ((_BitInt (128 ))N ));
134142 P (bswap16 , (N ));
135143 P (bswap32 , (N ));
136144 P (bswap64 , (N ));
@@ -1277,3 +1285,35 @@ void test_builtin_ctzg(unsigned char uc, unsigned short us, unsigned int ui,
12771285}
12781286
12791287#endif
1288+
1289+ // CHECK-LABEL: define{{.*}} void @test_builtin_bswapg
1290+ void test_builtin_bswapg (unsigned char uc , unsigned short us , unsigned int ui ,
1291+ unsigned long ul , unsigned long long ull ,
1292+ unsigned __int128 ui128 , _BitInt (8 ) bi8 ,
1293+ _BitInt (16 ) bi16 , _BitInt (32 ) bi32 ,
1294+ _BitInt (64 ) bi64 , _BitInt (128 ) bi128 ) {
1295+ uc = __builtin_bswapg (uc );
1296+ // CHECK: %1 = load i8, ptr %uc.addr
1297+ // CHECK: store i8 %1, ptr %uc.addr
1298+ us = __builtin_bswapg (us );
1299+ // CHECK: call i16 @llvm.bswap.i16
1300+ ui = __builtin_bswapg (ui );
1301+ // CHECK: call i32 @llvm.bswap.i32
1302+ ul = __builtin_bswapg (ul );
1303+ // CHECK: call i64 @llvm.bswap.i64
1304+ ull = __builtin_bswapg (ull );
1305+ // CHECK: call i64 @llvm.bswap.i64
1306+ ui128 = __builtin_bswapg (ui128 );
1307+ // CHECK: call i128 @llvm.bswap.i128
1308+ bi8 = __builtin_bswapg (bi8 );
1309+ // CHECK: %17 = load i8, ptr %bi8.addr, align 1
1310+ // CHECK: store i8 %17, ptr %bi8.addr
1311+ bi16 = __builtin_bswapg (bi16 );
1312+ // CHECK: call i16 @llvm.bswap.i16
1313+ bi32 = __builtin_bswapg (bi32 );
1314+ // CHECK: call i32 @llvm.bswap.i32
1315+ bi64 = __builtin_bswapg (bi64 );
1316+ // CHECK: call i64 @llvm.bswap.i64
1317+ bi128 = __builtin_bswapg (bi128 );
1318+ // CHECK: call i128 @llvm.bswap.i128
1319+ }
0 commit comments