@@ -751,3 +751,86 @@ llvm.func @vector_predication_intrinsics(%A: vector<8xi32>, %B: vector<8xi32>,
751751 (vector <8 xi32 >, vector <8 xi32 >, vector <8 xi1 >, i32 ) -> vector <8 xi32 >
752752 llvm.return
753753}
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