@@ -541,3 +541,125 @@ func.func @findumsb(%arg0 : i64) -> () {
541541 %2 = spirv.GL.FindUMsb %arg0 : i64
542542 return
543543}
544+
545+ // -----
546+
547+ //===----------------------------------------------------------------------===//
548+ // spirv.GL.Distance
549+ //===----------------------------------------------------------------------===//
550+
551+ func.func @distance_scalar (%arg0 : f32 , %arg1 : f32 ) {
552+ // CHECK: spirv.GL.Distance {{%.*}}, {{%.*}} : f32, f32 -> f32
553+ %0 = spirv.GL.Distance %arg0 , %arg1 : f32 , f32 -> f32
554+ return
555+ }
556+
557+ func.func @distance_vector (%arg0 : vector <3 xf32 >, %arg1 : vector <3 xf32 >) {
558+ // CHECK: spirv.GL.Distance {{%.*}}, {{%.*}} : vector<3xf32>, vector<3xf32> -> f32
559+ %0 = spirv.GL.Distance %arg0 , %arg1 : vector <3 xf32 >, vector <3 xf32 > -> f32
560+ return
561+ }
562+
563+ // -----
564+
565+ func.func @distance_invalid_type (%arg0 : i32 , %arg1 : i32 ) {
566+ // expected-error @+1 {{'spirv.GL.Distance' 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}}
567+ %0 = spirv.GL.Distance %arg0 , %arg1 : i32 , i32 -> f32
568+ return
569+ }
570+
571+ // -----
572+
573+ func.func @distance_arg_mismatch (%arg0 : vector <3 xf32 >, %arg1 : vector <4 xf32 >) {
574+ // expected-error @+1 {{'spirv.GL.Distance' op failed to verify that all of {p0, p1} have same type}}
575+ %0 = spirv.GL.Distance %arg0 , %arg1 : vector <3 xf32 >, vector <4 xf32 > -> f32
576+ return
577+ }
578+
579+ // -----
580+
581+ func.func @distance_invalid_vector_size (%arg0 : vector <5 xf32 >, %arg1 : vector <5 xf32 >) {
582+ // expected-error @+1 {{'spirv.GL.Distance' 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}}
583+ %0 = spirv.GL.Distance %arg0 , %arg1 : vector <5 xf32 >, vector <5 xf32 > -> f32
584+ return
585+ }
586+
587+ // -----
588+
589+ func.func @distance_invalid_result (%arg0 : f32 , %arg1 : f32 ) {
590+ // expected-error @+1 {{'spirv.GL.Distance' op result #0 must be 16/32/64-bit float}}
591+ %0 = spirv.GL.Distance %arg0 , %arg1 : f32 , f32 -> i32
592+ return
593+ }
594+
595+ // -----
596+
597+ //===----------------------------------------------------------------------===//
598+ // spirv.GL.Cross
599+ //===----------------------------------------------------------------------===//
600+
601+ func.func @cross (%arg0 : vector <3 xf32 >, %arg1 : vector <3 xf32 >) {
602+ %2 = spirv.GL.Cross %arg0 , %arg1 : vector <3 xf32 >
603+ // CHECK: %{{.+}} = spirv.GL.Cross %{{.+}}, %{{.+}} : vector<3xf32>
604+ return
605+ }
606+
607+ // -----
608+
609+ func.func @cross_invalid_type (%arg0 : vector <3 xi32 >, %arg1 : vector <3 xi32 >) {
610+ // 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>'}}
611+ %0 = spirv.GL.Cross %arg0 , %arg1 : vector <3 xi32 >
612+ return
613+ }
614+
615+ // -----
616+
617+ //===----------------------------------------------------------------------===//
618+ // spirv.GL.Normalize
619+ //===----------------------------------------------------------------------===//
620+
621+ func.func @normalize_scalar (%arg0 : f32 ) {
622+ %2 = spirv.GL.Normalize %arg0 : f32
623+ // CHECK: %{{.+}} = spirv.GL.Normalize %{{.+}} : f32
624+ return
625+ }
626+
627+ func.func @normalize_vector (%arg0 : vector <3 xf32 >) {
628+ %2 = spirv.GL.Normalize %arg0 : vector <3 xf32 >
629+ // CHECK: %{{.+}} = spirv.GL.Normalize %{{.+}} : vector<3xf32>
630+ return
631+ }
632+
633+ // -----
634+
635+ func.func @normalize_invalid_type (%arg0 : i32 ) {
636+ // 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}}
637+ %0 = spirv.GL.Normalize %arg0 : i32
638+ return
639+ }
640+
641+ // -----
642+
643+ //===----------------------------------------------------------------------===//
644+ // spirv.GL.Reflect
645+ //===----------------------------------------------------------------------===//
646+
647+ func.func @reflect_scalar (%arg0 : f32 , %arg1 : f32 ) {
648+ %2 = spirv.GL.Reflect %arg0 , %arg1 : f32
649+ // CHECK: %{{.+}} = spirv.GL.Reflect %{{.+}}, %{{.+}} : f32
650+ return
651+ }
652+
653+ func.func @reflect_vector (%arg0 : vector <3 xf32 >, %arg1 : vector <3 xf32 >) {
654+ %2 = spirv.GL.Reflect %arg0 , %arg1 : vector <3 xf32 >
655+ // CHECK: %{{.+}} = spirv.GL.Reflect %{{.+}}, %{{.+}} : vector<3xf32>
656+ return
657+ }
658+
659+ // -----
660+
661+ func.func @reflect_invalid_type (%arg0 : i32 , %arg1 : i32 ) {
662+ // 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}}
663+ %0 = spirv.GL.Reflect %arg0 , %arg1 : i32
664+ return
665+ }
0 commit comments