1 /* { dg-do compile } */
2 /* { dg-options "-march=armv8.4-a+sm4" } */
7 test_vsm3ss1q_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
9 return vsm3ss1q_u32 (a
, b
, c
);
12 /* { dg-final { scan-assembler-times "sm3ss1\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
15 test_vsm3tt1aq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
17 return vsm3tt1aq_u32 (a
, b
, c
, 3);
20 /* { dg-final { scan-assembler-times "sm3tt1a\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[3\\\]" 1 } } */
23 test_vsm3tt1bq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
25 return vsm3tt1bq_u32 (a
, b
, c
, 1);
28 /* { dg-final { scan-assembler-times "sm3tt1b\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[1\\\]" 1 } } */
31 test_vsm3tt2aq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
33 return vsm3tt2aq_u32 (a
, b
, c
, 2);
36 /* { dg-final { scan-assembler-times "sm3tt2a\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[2\\\]" 1 } } */
39 test_vsm3tt2bq_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
41 return vsm3tt2bq_u32 (a
, b
, c
, 3);
44 /* { dg-final { scan-assembler-times "sm3tt2b\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[3\\\]" 1 } } */
47 test_vsm3partw1q_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
49 return vsm3partw1q_u32 (a
, b
, c
);
52 /* { dg-final { scan-assembler-times "sm3partw1\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
55 test_vsm3partw2q_u32 (uint32x4_t a
, uint32x4_t b
, uint32x4_t c
)
57 return vsm3partw2q_u32 (a
, b
, c
);
60 /* { dg-final { scan-assembler-times "sm3partw2\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
65 test_vsm4eq_u32 (uint32x4_t a
, uint32x4_t b
)
67 return vsm4eq_u32 (a
, b
);
70 /* { dg-final { scan-assembler-times "sm4e\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */
73 test_vsm4ekeyq_u32 (uint32x4_t a
, uint32x4_t b
)
75 return vsm4ekeyq_u32 (a
, b
);
78 /* { dg-final { scan-assembler-times "sm4ekey\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s" 1 } } */