@@ -751,3 +751,86 @@ llvm.func @vector_predication_intrinsics(%A: vector<8xi32>, %B: vector<8xi32>,
751
751
(vector <8 xi32 >, vector <8 xi32 >, vector <8 xi1 >, i32 ) -> vector <8 xi32 >
752
752
llvm.return
753
753
}
754
+
755
+ llvm.func @op_bundle_target ()
756
+
757
+ // CHECK-LABEL: @test_call_with_empty_opbundle
758
+ llvm.func @test_call_with_empty_opbundle () {
759
+ // CHECK: llvm.call @op_bundle_target() : () -> ()
760
+ llvm.call @op_bundle_target () [] : () -> ()
761
+ llvm.return
762
+ }
763
+
764
+ // CHECK-LABEL: @test_call_with_empty_opbundle_operands
765
+ llvm.func @test_call_with_empty_opbundle_operands () {
766
+ // CHECK: llvm.call @op_bundle_target() ["tag"()] : () -> ()
767
+ llvm.call @op_bundle_target () [" tag" ()] : () -> ()
768
+ llvm.return
769
+ }
770
+
771
+ // CHECK-LABEL: @test_call_with_opbundle
772
+ llvm.func @test_call_with_opbundle () {
773
+ %0 = llvm.mlir.constant (0 : i32 ) : i32
774
+ %1 = llvm.mlir.constant (1 : i32 ) : i32
775
+ %2 = llvm.mlir.constant (2 : i32 ) : i32
776
+ // CHECK: llvm.call @op_bundle_target() ["tag1"(%{{.+}}, %{{.+}} : i32, i32), "tag2"(%{{.+}} : i32)] : () -> ()
777
+ llvm.call @op_bundle_target () [" tag1" (%0 , %1 : i32 , i32 ), " tag2" (%2 : i32 )] : () -> ()
778
+ llvm.return
779
+ }
780
+
781
+ // CHECK-LABEL: @test_invoke_with_empty_opbundle
782
+ llvm.func @test_invoke_with_empty_opbundle () attributes { personality = @__gxx_personality_v0 } {
783
+ %0 = llvm.mlir.constant (1 : i32 ) : i32
784
+ %1 = llvm.mlir.constant (2 : i32 ) : i32
785
+ %2 = llvm.mlir.constant (3 : i32 ) : i32
786
+ // CHECK: llvm.invoke @op_bundle_target() to ^{{.+}} unwind ^{{.+}} : () -> ()
787
+ llvm.invoke @op_bundle_target () to ^bb2 unwind ^bb1 [] : () -> ()
788
+
789
+ ^bb1 :
790
+ %3 = llvm.landingpad cleanup : !llvm.struct <(ptr , i32 )>
791
+ llvm.return
792
+
793
+ ^bb2 :
794
+ llvm.return
795
+ }
796
+
797
+ // CHECK-LABEL: @test_invoke_with_empty_opbundle_operands
798
+ llvm.func @test_invoke_with_empty_opbundle_operands () attributes { personality = @__gxx_personality_v0 } {
799
+ %0 = llvm.mlir.constant (1 : i32 ) : i32
800
+ %1 = llvm.mlir.constant (2 : i32 ) : i32
801
+ %2 = llvm.mlir.constant (3 : i32 ) : i32
802
+ // CHECK: llvm.invoke @op_bundle_target() to ^{{.+}} unwind ^{{.+}} ["tag"()] : () -> ()
803
+ llvm.invoke @op_bundle_target () to ^bb2 unwind ^bb1 [" tag" ()] : () -> ()
804
+
805
+ ^bb1 :
806
+ %3 = llvm.landingpad cleanup : !llvm.struct <(ptr , i32 )>
807
+ llvm.return
808
+
809
+ ^bb2 :
810
+ llvm.return
811
+ }
812
+
813
+ // CHECK-LABEL: @test_invoke_with_opbundle
814
+ llvm.func @test_invoke_with_opbundle () attributes { personality = @__gxx_personality_v0 } {
815
+ %0 = llvm.mlir.constant (1 : i32 ) : i32
816
+ %1 = llvm.mlir.constant (2 : i32 ) : i32
817
+ %2 = llvm.mlir.constant (3 : i32 ) : i32
818
+ // CHECK: llvm.invoke @op_bundle_target() to ^{{.+}} unwind ^{{.+}} ["tag1"(%{{.+}}, %{{.+}} : i32, i32), "tag2"(%{{.+}} : i32)] : () -> ()
819
+ llvm.invoke @op_bundle_target () to ^bb2 unwind ^bb1 [" tag1" (%0 , %1 : i32 , i32 ), " tag2" (%2 : i32 )] : () -> ()
820
+
821
+ ^bb1 :
822
+ %3 = llvm.landingpad cleanup : !llvm.struct <(ptr , i32 )>
823
+ llvm.return
824
+
825
+ ^bb2 :
826
+ llvm.return
827
+ }
828
+
829
+ // CHECK-LABEL: @test_call_intrin_with_opbundle
830
+ llvm.func @test_call_intrin_with_opbundle (%arg0 : !llvm.ptr ) {
831
+ %0 = llvm.mlir.constant (1 : i1 ) : i1
832
+ %1 = llvm.mlir.constant (16 : i32 ) : i32
833
+ // CHECK: llvm.call_intrinsic "llvm.assume"(%{{.+}}) ["align"(%{{.+}}, %{{.+}} : !llvm.ptr, i32)] : (i1) -> ()
834
+ llvm.call_intrinsic " llvm.assume" (%0 ) [" align" (%arg0 , %1 : !llvm.ptr , i32 )] : (i1 ) -> ()
835
+ llvm.return
836
+ }
0 commit comments