@@ -98,13 +98,41 @@ void TEST_CASE3() {
9898#endif
9999}
100100
101+ void TEST_CASE4 () {
102+ // Integer scalar move instructions
103+ uint32_t scalar = 0xdeadbeef ;
104+
105+ VSET (16 , e8 , m8 );
106+ VLOAD_8 (v8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
107+ asm volatile ("vmv.s.x v8, %[a]" :: [a ] "r" (scalar ));
108+ VCMP_U8 (13 , v8 , 0x000000ef , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
109+
110+ VSET (16 , e16 , m8 );
111+ VLOAD_16 (v8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
112+ asm volatile ("vmv.s.x v8, %[a]" :: [a ] "r" (scalar ));
113+ VCMP_U16 (14 , v8 , 0x0000beef , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
114+
115+ VSET (16 , e32 , m8 );
116+ VLOAD_32 (v8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
117+ asm volatile ("vmv.s.x v8, %[a]" :: [a ] "r" (scalar ));
118+ VCMP_U32 (15 , v8 , 0xdeadbeef , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
119+
120+ #if ELEN == 64
121+ VSET (16 , e64 , m8 );
122+ VLOAD_64 (v8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
123+ asm volatile ("vmv.s.x v8, %[a]" :: [a ] "r" (scalar ));
124+ VCMP_U64 (16 , v8 , 0xffffffffdeadbeef , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
125+ #endif
126+ }
127+
101128int main (void ) {
102129 INIT_CHECK ();
103130 enable_vec ();
104131
105132 TEST_CASE1 ();
106133 TEST_CASE2 ();
107134 TEST_CASE3 ();
135+ TEST_CASE4 ();
108136
109137 EXIT_CHECK ();
110138}
0 commit comments