@@ -541,3 +541,125 @@ func.func @findumsb(%arg0 : i64) -> () {
541
541
%2 = spirv.GL.FindUMsb %arg0 : i64
542
542
return
543
543
}
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