@@ -583,3 +583,75 @@ func.func @distance_invalid_result(%arg0 : f32, %arg1 : f32) {
583583 %0 = spirv.GL.Distance %arg0 , %arg1 : f32 , f32 -> i32
584584 return
585585}
586+
587+ // -----
588+
589+ //===----------------------------------------------------------------------===//
590+ // spirv.GL.Cross
591+ //===----------------------------------------------------------------------===//
592+
593+ func.func @cross (%arg0 : vector <3 xf32 >, %arg1 : vector <3 xf32 >) {
594+ %2 = spirv.GL.Cross %arg0 , %arg1 : vector <3 xf32 >
595+ // CHECK: %{{.+}} = spirv.GL.Cross %{{.+}}, %{{.+}} : vector<3xf32>
596+ return
597+ }
598+
599+ // -----
600+
601+ func.func @cross_invalid_type (%arg0 : vector <3 xi32 >, %arg1 : vector <3 xi32 >) {
602+ // expected-error @+1 {{'spirv.GL.Cross' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values of length 2/3/4/8/16, but got 'vector<3xi32>'}}
603+ %0 = spirv.GL.Cross %arg0 , %arg1 : vector <3 xi32 >
604+ return
605+ }
606+
607+ // -----
608+
609+ //===----------------------------------------------------------------------===//
610+ // spirv.GL.Normalize
611+ //===----------------------------------------------------------------------===//
612+
613+ func.func @normalize_scalar (%arg0 : f32 ) {
614+ %2 = spirv.GL.Normalize %arg0 : f32
615+ // CHECK: %{{.+}} = spirv.GL.Normalize %{{.+}} : f32
616+ return
617+ }
618+
619+ func.func @normalize_vector (%arg0 : vector <3 xf32 >) {
620+ %2 = spirv.GL.Normalize %arg0 : vector <3 xf32 >
621+ // CHECK: %{{.+}} = spirv.GL.Normalize %{{.+}} : vector<3xf32>
622+ return
623+ }
624+
625+ // -----
626+
627+ func.func @normalize_invalid_type (%arg0 : i32 ) {
628+ // expected-error @+1 {{'spirv.GL.Normalize' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
629+ %0 = spirv.GL.Normalize %arg0 : i32
630+ return
631+ }
632+
633+ // -----
634+
635+ //===----------------------------------------------------------------------===//
636+ // spirv.GL.Reflect
637+ //===----------------------------------------------------------------------===//
638+
639+ func.func @reflect_scalar (%arg0 : f32 , %arg1 : f32 ) {
640+ %2 = spirv.GL.Reflect %arg0 , %arg1 : f32
641+ // CHECK: %{{.+}} = spirv.GL.Reflect %{{.+}}, %{{.+}} : f32
642+ return
643+ }
644+
645+ func.func @reflect_vector (%arg0 : vector <3 xf32 >, %arg1 : vector <3 xf32 >) {
646+ %2 = spirv.GL.Reflect %arg0 , %arg1 : vector <3 xf32 >
647+ // CHECK: %{{.+}} = spirv.GL.Reflect %{{.+}}, %{{.+}} : vector<3xf32>
648+ return
649+ }
650+
651+ // -----
652+
653+ func.func @reflect_invalid_type (%arg0 : i32 , %arg1 : i32 ) {
654+ // expected-error @+1 {{'spirv.GL.Reflect' op operand #0 must be 16/32/64-bit float or vector of 16/32/64-bit float values}}
655+ %0 = spirv.GL.Reflect %arg0 , %arg1 : i32
656+ return
657+ }
0 commit comments