; LLVM IR from NVIDIA/TensorRT :: plugin/embLayerNormPlugin (embLayerNormPluginLegacy)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"struct.nvinfer1::DynamicPluginTensorDesc" = type { %"struct.nvinfer1::PluginTensorDesc", %"class.nvinfer1::Dims64", %"class.nvinfer1::Dims64", %"class.nvinfer1::Dims64" }
%"struct.nvinfer1::PluginTensorDesc" = type { %"class.nvinfer1::Dims64", i32, i32, float }
%"class.nvinfer1::Dims64" = type { i32, [8 x i64] }
%"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy" = type { %"class.nvinfer1::IPluginV2DynamicExt", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::unique_ptr", %"class.std::unique_ptr", %"class.std::unique_ptr.5", %"class.std::unique_ptr.5", %"class.std::unique_ptr.5", i64, i64, i64, i64, i64, %"struct.nvinfer1::plugin::bert::WeightsWithOwnership", %"struct.nvinfer1::plugin::bert::WeightsWithOwnership", %"struct.nvinfer1::plugin::bert::WeightsWithOwnership", %"struct.nvinfer1::plugin::bert::WeightsWithOwnership", %"struct.nvinfer1::plugin::bert::WeightsWithOwnership", i32, i8, i32, i32 }
%"class.nvinfer1::IPluginV2DynamicExt" = type { %"class.nvinfer1::IPluginV2Ext" }
%"class.nvinfer1::IPluginV2Ext" = type { %"class.nvinfer1::IPluginV2" }
%"class.nvinfer1::IPluginV2" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.std::unique_ptr.5" = type { %"struct.std::__uniq_ptr_data.6" }
%"struct.std::__uniq_ptr_data.6" = type { %"class.std::__uniq_ptr_impl.7" }
%"class.std::__uniq_ptr_impl.7" = type { %"class.std::tuple.8" }
%"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" }
%"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.12" }
%"struct.std::_Head_base.12" = type { ptr }
%"struct.nvinfer1::plugin::bert::WeightsWithOwnership" = type { %"class.nvinfer1::Weights" }
%"class.nvinfer1::Weights" = type { i32, ptr, i64 }

@.str = external hidden unnamed_addr constant [104 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [138 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [41 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #1

declare void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef, ptr noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN8nvinfer16plugin4bert31EmbLayerNormPluginDynamicLegacy15configurePluginEPKNS_23DynamicPluginTensorDescEiS5_i(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, i32 noundef %4) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  %14 = load ptr, ptr %6, align 8
  %15 = load i32, ptr %10, align 4, !tbaa !9
  %16 = icmp eq i32 %15, 2
  br i1 %16, label %19, label %17

17:                                               ; preds = %5
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.15, ptr noundef @.str, i32 noundef 256)
          to label %18 unwind label %341

18:                                               ; preds = %17
  br label %19

19:                                               ; preds = %18, %5
  %20 = load i32, ptr %8, align 4, !tbaa !9
  %21 = icmp eq i32 %20, 3
  br i1 %21, label %24, label %22

22:                                               ; preds = %19
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.10, ptr noundef @.str, i32 noundef 257)
          to label %23 unwind label %341

23:                                               ; preds = %22
  br label %24

24:                                               ; preds = %23, %19
  %25 = load ptr, ptr %7, align 8, !tbaa !5
  %26 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %25, i64 0
  %27 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %26, i32 0, i32 0
  %28 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %27, i32 0, i32 0
  %29 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %28, i32 0, i32 0
  %30 = load i32, ptr %29, align 8, !tbaa !11
  %31 = icmp eq i32 %30, 2
  br i1 %31, label %34, label %32

32:                                               ; preds = %24
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.17, ptr noundef @.str, i32 noundef 259)
          to label %33 unwind label %341

33:                                               ; preds = %32
  br label %34

34:                                               ; preds = %33, %24
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %35 = load ptr, ptr %7, align 8, !tbaa !5
  %36 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %35, i64 0
  %37 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %36, i32 0, i32 0
  %38 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %37, i32 0, i32 0
  %39 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %38, i32 0, i32 1
  %40 = getelementptr inbounds [8 x i64], ptr %39, i64 0, i64 0
  %41 = load i64, ptr %40, align 8, !tbaa !18
  %42 = trunc i64 %41 to i32
  store i32 %42, ptr %11, align 4, !tbaa !9
  %43 = load i32, ptr %11, align 4, !tbaa !9
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 9
  store i64 %44, ptr %45, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %46, i64 0
  %48 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %47, i32 0, i32 0
  %49 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %48, i32 0, i32 0
  %50 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %49, i32 0, i32 1
  %51 = getelementptr inbounds [8 x i64], ptr %50, i64 0, i64 1
  %52 = load i64, ptr %51, align 8, !tbaa !18
  %53 = trunc i64 %52 to i32
  store i32 %53, ptr %12, align 4, !tbaa !9
  %54 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 9
  %55 = load i64, ptr %54, align 8, !tbaa !20
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %56, i64 1
  %58 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %57, i32 0, i32 0
  %59 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %58, i32 0, i32 0
  %60 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %59, i32 0, i32 1
  %61 = getelementptr inbounds [8 x i64], ptr %60, i64 0, i64 0
  %62 = load i64, ptr %61, align 8, !tbaa !18
  %63 = icmp eq i64 %55, %62
  br i1 %63, label %66, label %64

64:                                               ; preds = %34
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.18, ptr noundef @.str, i32 noundef 264)
          to label %65 unwind label %341

65:                                               ; preds = %64
  br label %66

66:                                               ; preds = %65, %34
  %67 = load i32, ptr %12, align 4, !tbaa !9
  %68 = sext i32 %67 to i64
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %69, i64 1
  %71 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %70, i32 0, i32 0
  %72 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %71, i32 0, i32 0
  %73 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %72, i32 0, i32 1
  %74 = getelementptr inbounds [8 x i64], ptr %73, i64 0, i64 1
  %75 = load i64, ptr %74, align 8, !tbaa !18
  %76 = icmp eq i64 %68, %75
  br i1 %76, label %79, label %77

77:                                               ; preds = %66
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.19, ptr noundef @.str, i32 noundef 265)
          to label %78 unwind label %341

78:                                               ; preds = %77
  br label %79

79:                                               ; preds = %78, %66
  %80 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 9
  %81 = load i64, ptr %80, align 8, !tbaa !20
  %82 = load ptr, ptr %7, align 8, !tbaa !5
  %83 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %82, i64 2
  %84 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %83, i32 0, i32 0
  %85 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %84, i32 0, i32 0
  %86 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %85, i32 0, i32 1
  %87 = getelementptr inbounds [8 x i64], ptr %86, i64 0, i64 0
  %88 = load i64, ptr %87, align 8, !tbaa !18
  %89 = icmp eq i64 %81, %88
  br i1 %89, label %92, label %90

90:                                               ; preds = %79
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.20, ptr noundef @.str, i32 noundef 266)
          to label %91 unwind label %341

91:                                               ; preds = %90
  br label %92

92:                                               ; preds = %91, %79
  %93 = load i32, ptr %12, align 4, !tbaa !9
  %94 = sext i32 %93 to i64
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %95, i64 2
  %97 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %97, i32 0, i32 0
  %99 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %98, i32 0, i32 1
  %100 = getelementptr inbounds [8 x i64], ptr %99, i64 0, i64 1
  %101 = load i64, ptr %100, align 8, !tbaa !18
  %102 = icmp eq i64 %94, %101
  br i1 %102, label %105, label %103

103:                                              ; preds = %92
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.21, ptr noundef @.str, i32 noundef 267)
          to label %104 unwind label %341

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104, %92
  %106 = load ptr, ptr %9, align 8, !tbaa !5
  %107 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %106, i64 0
  %108 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %107, i32 0, i32 0
  %109 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %108, i32 0, i32 0
  %110 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %109, i32 0, i32 0
  %111 = load i32, ptr %110, align 8, !tbaa !11
  %112 = icmp eq i32 %111, 5
  br i1 %112, label %115, label %113

113:                                              ; preds = %105
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.22, ptr noundef @.str, i32 noundef 269)
          to label %114 unwind label %341

114:                                              ; preds = %113
  br label %115

115:                                              ; preds = %114, %105
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %116, i64 0
  %118 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %117, i32 0, i32 0
  %119 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %118, i32 0, i32 0
  %120 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %119, i32 0, i32 1
  %121 = getelementptr inbounds [8 x i64], ptr %120, i64 0, i64 0
  %122 = load i64, ptr %121, align 8, !tbaa !18
  %123 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 9
  %124 = load i64, ptr %123, align 8, !tbaa !20
  %125 = icmp eq i64 %122, %124
  br i1 %125, label %128, label %126

126:                                              ; preds = %115
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.23, ptr noundef @.str, i32 noundef 270)
          to label %127 unwind label %341

127:                                              ; preds = %126
  br label %128

128:                                              ; preds = %127, %115
  %129 = load ptr, ptr %9, align 8, !tbaa !5
  %130 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %129, i64 0
  %131 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %130, i32 0, i32 0
  %132 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %131, i32 0, i32 0
  %133 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %132, i32 0, i32 1
  %134 = getelementptr inbounds [8 x i64], ptr %133, i64 0, i64 1
  %135 = load i64, ptr %134, align 8, !tbaa !18
  %136 = load i32, ptr %12, align 4, !tbaa !9
  %137 = sext i32 %136 to i64
  %138 = icmp eq i64 %135, %137
  br i1 %138, label %141, label %139

139:                                              ; preds = %128
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.24, ptr noundef @.str, i32 noundef 271)
          to label %140 unwind label %341

140:                                              ; preds = %139
  br label %141

141:                                              ; preds = %140, %128
  %142 = load ptr, ptr %9, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %142, i64 0
  %144 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %143, i32 0, i32 0
  %145 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %144, i32 0, i32 0
  %146 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %145, i32 0, i32 1
  %147 = getelementptr inbounds [8 x i64], ptr %146, i64 0, i64 2
  %148 = load i64, ptr %147, align 8, !tbaa !18
  %149 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 8
  %150 = load i64, ptr %149, align 8, !tbaa !42
  %151 = icmp eq i64 %148, %150
  br i1 %151, label %154, label %152

152:                                              ; preds = %141
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.25, ptr noundef @.str, i32 noundef 272)
          to label %153 unwind label %341

153:                                              ; preds = %152
  br label %154

154:                                              ; preds = %153, %141
  %155 = load ptr, ptr %9, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %155, i64 0
  %157 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %156, i32 0, i32 0
  %158 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %157, i32 0, i32 0
  %159 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %158, i32 0, i32 1
  %160 = getelementptr inbounds [8 x i64], ptr %159, i64 0, i64 3
  %161 = load i64, ptr %160, align 8, !tbaa !18
  %162 = icmp eq i64 %161, 1
  br i1 %162, label %165, label %163

163:                                              ; preds = %154
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.26, ptr noundef @.str, i32 noundef 273)
          to label %164 unwind label %341

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164, %154
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %166, i64 0
  %168 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %167, i32 0, i32 0
  %169 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %168, i32 0, i32 0
  %170 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %169, i32 0, i32 1
  %171 = getelementptr inbounds [8 x i64], ptr %170, i64 0, i64 4
  %172 = load i64, ptr %171, align 8, !tbaa !18
  %173 = icmp eq i64 %172, 1
  br i1 %173, label %176, label %174

174:                                              ; preds = %165
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.27, ptr noundef @.str, i32 noundef 274)
          to label %175 unwind label %341

175:                                              ; preds = %174
  br label %176

176:                                              ; preds = %175, %165
  %177 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 19
  %178 = load i8, ptr %177, align 4, !tbaa !43, !range !44, !noundef !45
  %179 = trunc i8 %178 to i1
  br i1 %179, label %180, label %233

180:                                              ; preds = %176
  %181 = load ptr, ptr %9, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %181, i64 1
  %183 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %182, i32 0, i32 0
  %184 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %183, i32 0, i32 0
  %185 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %184, i32 0, i32 0
  %186 = load i32, ptr %185, align 8, !tbaa !11
  %187 = icmp eq i32 %186, 2
  br i1 %187, label %190, label %188

188:                                              ; preds = %180
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 279)
          to label %189 unwind label %341

189:                                              ; preds = %188
  br label %190

190:                                              ; preds = %189, %180
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %191, i64 1
  %193 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %192, i32 0, i32 0
  %194 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %193, i32 0, i32 0
  %195 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %194, i32 0, i32 1
  %196 = getelementptr inbounds [8 x i64], ptr %195, i64 0, i64 0
  %197 = load i64, ptr %196, align 8, !tbaa !18
  %198 = load i32, ptr %12, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = icmp eq i64 %197, %199
  br i1 %200, label %203, label %201

201:                                              ; preds = %190
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.29, ptr noundef @.str, i32 noundef 280)
          to label %202 unwind label %341

202:                                              ; preds = %201
  br label %203

203:                                              ; preds = %202, %190
  %204 = load ptr, ptr %9, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %204, i64 1
  %206 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %205, i32 0, i32 0
  %207 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %206, i32 0, i32 0
  %208 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %207, i32 0, i32 1
  %209 = getelementptr inbounds [8 x i64], ptr %208, i64 0, i64 1
  %210 = load i64, ptr %209, align 8, !tbaa !18
  %211 = icmp eq i64 %210, -1
  br i1 %211, label %232, label %212

212:                                              ; preds = %203
  %213 = load ptr, ptr %9, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %213, i64 1
  %215 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %214, i32 0, i32 0
  %216 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %215, i32 0, i32 0
  %217 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %216, i32 0, i32 1
  %218 = getelementptr inbounds [8 x i64], ptr %217, i64 0, i64 1
  %219 = load i64, ptr %218, align 8, !tbaa !18
  %220 = icmp eq i64 %219, 6144
  br i1 %220, label %232, label %221

221:                                              ; preds = %212
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %222, i64 1
  %224 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %223, i32 0, i32 0
  %225 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %224, i32 0, i32 0
  %226 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %225, i32 0, i32 1
  %227 = getelementptr inbounds [8 x i64], ptr %226, i64 0, i64 1
  %228 = load i64, ptr %227, align 8, !tbaa !18
  %229 = icmp eq i64 %228, 512
  br i1 %229, label %232, label %230

230:                                              ; preds = %221
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.30, ptr noundef @.str, i32 noundef 282)
          to label %231 unwind label %341

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231, %221, %212, %203
  br label %293

233:                                              ; preds = %176
  %234 = load i32, ptr %11, align 4, !tbaa !9
  %235 = icmp ne i32 %234, -1
  br i1 %235, label %236, label %292

236:                                              ; preds = %233
  %237 = load i32, ptr %12, align 4, !tbaa !9
  %238 = icmp ne i32 %237, -1
  br i1 %238, label %239, label %292

239:                                              ; preds = %236
  %240 = load ptr, ptr %9, align 8, !tbaa !5
  %241 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %240, i64 1
  %242 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %241, i32 0, i32 0
  %243 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %242, i32 0, i32 0
  %244 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %243, i32 0, i32 0
  %245 = load i32, ptr %244, align 8, !tbaa !11
  %246 = icmp eq i32 %245, 2
  br i1 %246, label %249, label %247

247:                                              ; preds = %239
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.28, ptr noundef @.str, i32 noundef 289)
          to label %248 unwind label %341

248:                                              ; preds = %247
  br label %249

249:                                              ; preds = %248, %239
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %250, i64 1
  %252 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %251, i32 0, i32 0
  %253 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %252, i32 0, i32 0
  %254 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %253, i32 0, i32 1
  %255 = getelementptr inbounds [8 x i64], ptr %254, i64 0, i64 0
  %256 = load i64, ptr %255, align 8, !tbaa !18
  %257 = load i32, ptr %12, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = icmp eq i64 %256, %258
  br i1 %259, label %262, label %260

260:                                              ; preds = %249
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.29, ptr noundef @.str, i32 noundef 290)
          to label %261 unwind label %341

261:                                              ; preds = %260
  br label %262

262:                                              ; preds = %261, %249
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %263 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 21
  %264 = load i32, ptr %263, align 4, !tbaa !46
  %265 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 20
  %266 = load i32, ptr %265, align 8, !tbaa !47
  %267 = load i32, ptr %11, align 4, !tbaa !9
  %268 = invoke noundef i32 @_ZN8nvinfer16plugin4bert20getMHAMaskPackedSizeEiNS_8DataTypeEi(i32 noundef %264, i32 noundef %266, i32 noundef %267)
          to label %269 unwind label %341

269:                                              ; preds = %262
  store i32 %268, ptr %13, align 4, !tbaa !9
  %270 = load ptr, ptr %9, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %270, i64 1
  %272 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %271, i32 0, i32 0
  %273 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %272, i32 0, i32 0
  %274 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %273, i32 0, i32 1
  %275 = getelementptr inbounds [8 x i64], ptr %274, i64 0, i64 1
  %276 = load i64, ptr %275, align 8, !tbaa !18
  %277 = icmp eq i64 %276, -1
  br i1 %277, label %291, label %278

278:                                              ; preds = %269
  %279 = load ptr, ptr %9, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %279, i64 1
  %281 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %280, i32 0, i32 0
  %282 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %281, i32 0, i32 0
  %283 = getelementptr inbounds %"class.nvinfer1::Dims64", ptr %282, i32 0, i32 1
  %284 = getelementptr inbounds [8 x i64], ptr %283, i64 0, i64 1
  %285 = load i64, ptr %284, align 8, !tbaa !18
  %286 = load i32, ptr %13, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = icmp eq i64 %285, %287
  br i1 %288, label %291, label %289

289:                                              ; preds = %278
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.31, ptr noundef @.str, i32 noundef 293)
          to label %290 unwind label %341

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290, %278, %269
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %292

292:                                              ; preds = %291, %236, %233
  br label %293

293:                                              ; preds = %292, %232
  %294 = load ptr, ptr %7, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %294, i64 0
  %296 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %295, i32 0, i32 0
  %297 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %296, i32 0, i32 1
  %298 = load i32, ptr %297, align 8, !tbaa !48
  %299 = icmp eq i32 %298, 3
  br i1 %299, label %302, label %300

300:                                              ; preds = %293
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.32, ptr noundef @.str, i32 noundef 297)
          to label %301 unwind label %341

301:                                              ; preds = %300
  br label %302

302:                                              ; preds = %301, %293
  %303 = load ptr, ptr %7, align 8, !tbaa !5
  %304 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %303, i64 1
  %305 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %304, i32 0, i32 0
  %306 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %305, i32 0, i32 1
  %307 = load i32, ptr %306, align 8, !tbaa !48
  %308 = icmp eq i32 %307, 3
  br i1 %308, label %311, label %309

309:                                              ; preds = %302
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.33, ptr noundef @.str, i32 noundef 298)
          to label %310 unwind label %341

310:                                              ; preds = %309
  br label %311

311:                                              ; preds = %310, %302
  %312 = load ptr, ptr %7, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %312, i64 2
  %314 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %313, i32 0, i32 0
  %315 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %314, i32 0, i32 1
  %316 = load i32, ptr %315, align 8, !tbaa !48
  %317 = icmp eq i32 %316, 3
  br i1 %317, label %320, label %318

318:                                              ; preds = %311
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.34, ptr noundef @.str, i32 noundef 299)
          to label %319 unwind label %341

319:                                              ; preds = %318
  br label %320

320:                                              ; preds = %319, %311
  %321 = load ptr, ptr %9, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %321, i64 0
  %323 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %322, i32 0, i32 0
  %324 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %323, i32 0, i32 1
  %325 = load i32, ptr %324, align 8, !tbaa !48
  %326 = getelementptr inbounds %"class.nvinfer1::plugin::bert::EmbLayerNormPluginDynamicLegacy", ptr %14, i32 0, i32 18
  %327 = load i32, ptr %326, align 8, !tbaa !49
  %328 = icmp eq i32 %325, %327
  br i1 %328, label %331, label %329

329:                                              ; preds = %320
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.35, ptr noundef @.str, i32 noundef 300)
          to label %330 unwind label %341

330:                                              ; preds = %329
  br label %331

331:                                              ; preds = %330, %320
  %332 = load ptr, ptr %9, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %332, i64 1
  %334 = getelementptr inbounds %"struct.nvinfer1::DynamicPluginTensorDesc", ptr %333, i32 0, i32 0
  %335 = getelementptr inbounds %"struct.nvinfer1::PluginTensorDesc", ptr %334, i32 0, i32 1
  %336 = load i32, ptr %335, align 8, !tbaa !48
  %337 = icmp eq i32 %336, 3
  br i1 %337, label %340, label %338

338:                                              ; preds = %331
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef @.str.36, ptr noundef @.str, i32 noundef 301)
          to label %339 unwind label %341

339:                                              ; preds = %338
  br label %340

340:                                              ; preds = %339, %331
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  ret void

341:                                              ; preds = %338, %329, %318, %309, %300, %289, %262, %260, %247, %230, %201, %188, %174, %163, %152, %139, %126, %113, %103, %90, %77, %64, %32, %22, %17
  %342 = landingpad { ptr, i32 }
          catch ptr null
  %343 = extractvalue { ptr, i32 } %342, 0
  call void @__clang_call_terminate(ptr %343) #6
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8nvinfer16plugin4bert20getMHAMaskPackedSizeEiNS_8DataTypeEi(i32 noundef, i32 noundef, i32 noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }
attributes #6 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTSN8nvinfer123DynamicPluginTensorDescE", !13, i64 0, !14, i64 88, !14, i64 160, !14, i64 232}
!13 = !{!"_ZTSN8nvinfer116PluginTensorDescE", !14, i64 0, !15, i64 72, !16, i64 76, !17, i64 80}
!14 = !{!"_ZTSN8nvinfer16Dims64E", !10, i64 0, !7, i64 8}
!15 = !{!"_ZTSN8nvinfer18DataTypeE", !7, i64 0}
!16 = !{!"_ZTSN8nvinfer112TensorFormatE", !7, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !19, i64 120}
!21 = !{!"_ZTSN8nvinfer16plugin4bert31EmbLayerNormPluginDynamicLegacyE", !22, i64 0, !25, i64 8, !25, i64 40, !27, i64 72, !27, i64 80, !33, i64 88, !33, i64 96, !33, i64 104, !19, i64 112, !19, i64 120, !19, i64 128, !19, i64 136, !19, i64 144, !39, i64 152, !39, i64 176, !39, i64 200, !39, i64 224, !39, i64 248, !15, i64 272, !41, i64 276, !15, i64 280, !10, i64 284}
!22 = !{!"_ZTSN8nvinfer119IPluginV2DynamicExtE", !23, i64 0}
!23 = !{!"_ZTSN8nvinfer112IPluginV2ExtE", !24, i64 0}
!24 = !{!"_ZTSN8nvinfer19IPluginV2E"}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !19, i64 8, !7, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!27 = !{!"_ZTSSt10unique_ptrIfN8nvinfer114pluginInternal11CudaDeleterIfEEE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_dataIfN8nvinfer114pluginInternal11CudaDeleterIfEELb1ELb1EE", !29, i64 0}
!29 = !{!"_ZTSSt15__uniq_ptr_implIfN8nvinfer114pluginInternal11CudaDeleterIfEEE", !30, i64 0}
!30 = !{!"_ZTSSt5tupleIJPfN8nvinfer114pluginInternal11CudaDeleterIfEEEE", !31, i64 0}
!31 = !{!"_ZTSSt11_Tuple_implILm0EJPfN8nvinfer114pluginInternal11CudaDeleterIfEEEE", !32, i64 0}
!32 = !{!"_ZTSSt10_Head_baseILm0EPfLb0EE", !6, i64 0}
!33 = !{!"_ZTSSt10unique_ptrIvN8nvinfer114pluginInternal11CudaDeleterIvEEE", !34, i64 0}
!34 = !{!"_ZTSSt15__uniq_ptr_dataIvN8nvinfer114pluginInternal11CudaDeleterIvEELb1ELb1EE", !35, i64 0}
!35 = !{!"_ZTSSt15__uniq_ptr_implIvN8nvinfer114pluginInternal11CudaDeleterIvEEE", !36, i64 0}
!36 = !{!"_ZTSSt5tupleIJPvN8nvinfer114pluginInternal11CudaDeleterIvEEEE", !37, i64 0}
!37 = !{!"_ZTSSt11_Tuple_implILm0EJPvN8nvinfer114pluginInternal11CudaDeleterIvEEEE", !38, i64 0}
!38 = !{!"_ZTSSt10_Head_baseILm0EPvLb0EE", !6, i64 0}
!39 = !{!"_ZTSN8nvinfer16plugin4bert20WeightsWithOwnershipE", !40, i64 0}
!40 = !{!"_ZTSN8nvinfer17WeightsE", !15, i64 0, !6, i64 8, !19, i64 16}
!41 = !{!"bool", !7, i64 0}
!42 = !{!21, !19, i64 112}
!43 = !{!21, !41, i64 276}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!21, !10, i64 284}
!47 = !{!21, !15, i64 280}
!48 = !{!12, !15, i64 72}
!49 = !{!21, !15, i64 272}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [104 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [138 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [41 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #0

declare void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN8nvinfer16plugin4bert31EmbLayerNormPluginDynamicLegacy15configurePluginEPKNS_23DynamicPluginTensorDescEiS5_i(ptr nocapture noundef nonnull align 8 dereferenceable(288) %0, ptr nocapture noundef readonly %1, i32 noundef %2, ptr nocapture noundef readonly %3, i32 noundef %4) unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = icmp eq i32 %4, 2
  br i1 %6, label %8, label %7

7:                                                ; preds = %5
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str, i32 noundef 256)
          to label %8 unwind label %149

8:                                                ; preds = %7, %5
  %9 = icmp eq i32 %2, 3
  br i1 %9, label %11, label %10

10:                                               ; preds = %8
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, i32 noundef 257)
          to label %11 unwind label %149

11:                                               ; preds = %10, %8
  %12 = load i32, ptr %1, align 8, !tbaa !5
  %13 = icmp eq i32 %12, 2
  br i1 %13, label %15, label %14

14:                                               ; preds = %11
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str, i32 noundef 259)
          to label %15 unwind label %149

15:                                               ; preds = %14, %11
  %16 = getelementptr inbounds i8, ptr %1, i64 8
  %17 = load i64, ptr %16, align 8, !tbaa !15
  %18 = trunc i64 %17 to i32
  %sext = shl i64 %17, 32
  %19 = ashr exact i64 %sext, 32
  %20 = getelementptr inbounds i8, ptr %0, i64 120
  store i64 %19, ptr %20, align 8, !tbaa !17
  %21 = getelementptr inbounds i8, ptr %1, i64 16
  %22 = load i64, ptr %21, align 8, !tbaa !15
  %23 = getelementptr inbounds i8, ptr %1, i64 312
  %24 = load i64, ptr %23, align 8, !tbaa !15
  %25 = icmp eq i64 %19, %24
  br i1 %25, label %27, label %26

26:                                               ; preds = %15
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str, i32 noundef 264)
          to label %27 unwind label %149

27:                                               ; preds = %26, %15
  %sext42 = shl i64 %22, 32
  %28 = ashr exact i64 %sext42, 32
  %29 = getelementptr inbounds i8, ptr %1, i64 320
  %30 = load i64, ptr %29, align 8, !tbaa !15
  %31 = icmp eq i64 %28, %30
  br i1 %31, label %33, label %32

32:                                               ; preds = %27
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str, i32 noundef 265)
          to label %33 unwind label %149

33:                                               ; preds = %32, %27
  %34 = load i64, ptr %20, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %1, i64 616
  %36 = load i64, ptr %35, align 8, !tbaa !15
  %37 = icmp eq i64 %34, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %33
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str, i32 noundef 266)
          to label %39 unwind label %149

39:                                               ; preds = %38, %33
  %40 = getelementptr inbounds i8, ptr %1, i64 624
  %41 = load i64, ptr %40, align 8, !tbaa !15
  %42 = icmp eq i64 %28, %41
  br i1 %42, label %44, label %43

43:                                               ; preds = %39
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str, i32 noundef 267)
          to label %44 unwind label %149

44:                                               ; preds = %43, %39
  %45 = load i32, ptr %3, align 8, !tbaa !5
  %46 = icmp eq i32 %45, 5
  br i1 %46, label %48, label %47

47:                                               ; preds = %44
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str, i32 noundef 269)
          to label %48 unwind label %149

48:                                               ; preds = %47, %44
  %49 = getelementptr inbounds i8, ptr %3, i64 8
  %50 = load i64, ptr %49, align 8, !tbaa !15
  %51 = load i64, ptr %20, align 8, !tbaa !17
  %52 = icmp eq i64 %50, %51
  br i1 %52, label %54, label %53

53:                                               ; preds = %48
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str, i32 noundef 270)
          to label %54 unwind label %149

54:                                               ; preds = %53, %48
  %55 = getelementptr inbounds i8, ptr %3, i64 16
  %56 = load i64, ptr %55, align 8, !tbaa !15
  %57 = icmp eq i64 %56, %28
  br i1 %57, label %59, label %58

58:                                               ; preds = %54
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str, i32 noundef 271)
          to label %59 unwind label %149

59:                                               ; preds = %58, %54
  %60 = getelementptr inbounds i8, ptr %3, i64 24
  %61 = load i64, ptr %60, align 8, !tbaa !15
  %62 = getelementptr inbounds i8, ptr %0, i64 112
  %63 = load i64, ptr %62, align 8, !tbaa !40
  %64 = icmp eq i64 %61, %63
  br i1 %64, label %66, label %65

65:                                               ; preds = %59
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str, i32 noundef 272)
          to label %66 unwind label %149

66:                                               ; preds = %65, %59
  %67 = getelementptr inbounds i8, ptr %3, i64 32
  %68 = load i64, ptr %67, align 8, !tbaa !15
  %69 = icmp eq i64 %68, 1
  br i1 %69, label %71, label %70

70:                                               ; preds = %66
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.26, ptr noundef nonnull @.str, i32 noundef 273)
          to label %71 unwind label %149

71:                                               ; preds = %70, %66
  %72 = getelementptr inbounds i8, ptr %3, i64 40
  %73 = load i64, ptr %72, align 8, !tbaa !15
  %74 = icmp eq i64 %73, 1
  br i1 %74, label %76, label %75

75:                                               ; preds = %71
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str, i32 noundef 274)
          to label %76 unwind label %149

76:                                               ; preds = %75, %71
  %77 = getelementptr inbounds i8, ptr %0, i64 276
  %78 = load i8, ptr %77, align 4, !tbaa !41, !range !42, !noundef !43
  %79 = trunc nuw i8 %78 to i1
  br i1 %79, label %80, label %93

80:                                               ; preds = %76
  %81 = getelementptr inbounds i8, ptr %3, i64 304
  %82 = load i32, ptr %81, align 8, !tbaa !5
  %83 = icmp eq i32 %82, 2
  br i1 %83, label %85, label %84

84:                                               ; preds = %80
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 279)
          to label %85 unwind label %149

85:                                               ; preds = %84, %80
  %86 = getelementptr inbounds i8, ptr %3, i64 312
  %87 = load i64, ptr %86, align 8, !tbaa !15
  %88 = icmp eq i64 %87, %28
  br i1 %88, label %90, label %89

89:                                               ; preds = %85
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str, i32 noundef 280)
          to label %90 unwind label %149

90:                                               ; preds = %89, %85
  %91 = getelementptr inbounds i8, ptr %3, i64 320
  %92 = load i64, ptr %91, align 8, !tbaa !15
  switch i64 %92, label %.invoke [
    i64 -1, label %121
    i64 6144, label %121
    i64 512, label %121
  ]

93:                                               ; preds = %76
  %94 = icmp ne i32 %18, -1
  %95 = and i64 %22, 4294967295
  %96 = icmp ne i64 %95, 4294967295
  %or.cond = select i1 %94, i1 %96, i1 false
  br i1 %or.cond, label %97, label %121

97:                                               ; preds = %93
  %98 = getelementptr inbounds i8, ptr %3, i64 304
  %99 = load i32, ptr %98, align 8, !tbaa !5
  %100 = icmp eq i32 %99, 2
  br i1 %100, label %102, label %101

101:                                              ; preds = %97
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.28, ptr noundef nonnull @.str, i32 noundef 289)
          to label %102 unwind label %149

102:                                              ; preds = %101, %97
  %103 = getelementptr inbounds i8, ptr %3, i64 312
  %104 = load i64, ptr %103, align 8, !tbaa !15
  %105 = icmp eq i64 %104, %28
  br i1 %105, label %107, label %106

106:                                              ; preds = %102
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str, i32 noundef 290)
          to label %107 unwind label %149

107:                                              ; preds = %106, %102
  %108 = getelementptr inbounds i8, ptr %0, i64 284
  %109 = load i32, ptr %108, align 4, !tbaa !44
  %110 = getelementptr inbounds i8, ptr %0, i64 280
  %111 = load i32, ptr %110, align 8, !tbaa !45
  %112 = invoke noundef i32 @_ZN8nvinfer16plugin4bert20getMHAMaskPackedSizeEiNS_8DataTypeEi(i32 noundef %109, i32 noundef %111, i32 noundef %18)
          to label %113 unwind label %149

113:                                              ; preds = %107
  %114 = getelementptr inbounds i8, ptr %3, i64 320
  %115 = load i64, ptr %114, align 8, !tbaa !15
  %116 = icmp eq i64 %115, -1
  %117 = sext i32 %112 to i64
  %118 = icmp eq i64 %115, %117
  %or.cond44 = or i1 %116, %118
  br i1 %or.cond44, label %121, label %.invoke

.invoke:                                          ; preds = %113, %90
  %119 = phi ptr [ @.str.30, %90 ], [ @.str.31, %113 ]
  %120 = phi i32 [ 282, %90 ], [ 293, %113 ]
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull %119, ptr noundef nonnull @.str, i32 noundef %120)
          to label %121 unwind label %149

121:                                              ; preds = %.invoke, %113, %90, %90, %90, %93
  %122 = getelementptr inbounds i8, ptr %1, i64 72
  %123 = load i32, ptr %122, align 8, !tbaa !46
  %124 = icmp eq i32 %123, 3
  br i1 %124, label %126, label %125

125:                                              ; preds = %121
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str, i32 noundef 297)
          to label %126 unwind label %149

126:                                              ; preds = %125, %121
  %127 = getelementptr inbounds i8, ptr %1, i64 376
  %128 = load i32, ptr %127, align 8, !tbaa !46
  %129 = icmp eq i32 %128, 3
  br i1 %129, label %131, label %130

130:                                              ; preds = %126
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str, i32 noundef 298)
          to label %131 unwind label %149

131:                                              ; preds = %130, %126
  %132 = getelementptr inbounds i8, ptr %1, i64 680
  %133 = load i32, ptr %132, align 8, !tbaa !46
  %134 = icmp eq i32 %133, 3
  br i1 %134, label %136, label %135

135:                                              ; preds = %131
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str, i32 noundef 299)
          to label %136 unwind label %149

136:                                              ; preds = %135, %131
  %137 = getelementptr inbounds i8, ptr %3, i64 72
  %138 = load i32, ptr %137, align 8, !tbaa !46
  %139 = getelementptr inbounds i8, ptr %0, i64 272
  %140 = load i32, ptr %139, align 8, !tbaa !47
  %141 = icmp eq i32 %138, %140
  br i1 %141, label %143, label %142

142:                                              ; preds = %136
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str, i32 noundef 300)
          to label %143 unwind label %149

143:                                              ; preds = %142, %136
  %144 = getelementptr inbounds i8, ptr %3, i64 376
  %145 = load i32, ptr %144, align 8, !tbaa !46
  %146 = icmp eq i32 %145, 3
  br i1 %146, label %148, label %147

147:                                              ; preds = %143
  invoke void @_ZN8nvinfer16plugin15reportAssertionEPKcS2_i(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str, i32 noundef 301)
          to label %148 unwind label %149

148:                                              ; preds = %147, %143
  ret void

149:                                              ; preds = %.invoke, %147, %142, %135, %130, %125, %107, %106, %101, %89, %84, %75, %70, %65, %58, %53, %47, %43, %38, %32, %26, %14, %10, %7
  %150 = landingpad { ptr, i32 }
          catch ptr null
  %151 = extractvalue { ptr, i32 } %150, 0
  tail call void @__clang_call_terminate(ptr %151) #4
  unreachable
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN8nvinfer16plugin4bert20getMHAMaskPackedSizeEiNS_8DataTypeEi(i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

attributes #0 = { noinline noreturn nounwind uwtable "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 0}
!6 = !{!"_ZTSN8nvinfer123DynamicPluginTensorDescE", !7, i64 0, !8, i64 88, !8, i64 160, !8, i64 232}
!7 = !{!"_ZTSN8nvinfer116PluginTensorDescE", !8, i64 0, !12, i64 72, !13, i64 76, !14, i64 80}
!8 = !{!"_ZTSN8nvinfer16Dims64E", !9, i64 0, !10, i64 8}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSN8nvinfer18DataTypeE", !10, i64 0}
!13 = !{!"_ZTSN8nvinfer112TensorFormatE", !10, i64 0}
!14 = !{!"float", !10, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !10, i64 0}
!17 = !{!18, !16, i64 120}
!18 = !{!"_ZTSN8nvinfer16plugin4bert31EmbLayerNormPluginDynamicLegacyE", !19, i64 0, !22, i64 8, !22, i64 40, !25, i64 72, !25, i64 80, !31, i64 88, !31, i64 96, !31, i64 104, !16, i64 112, !16, i64 120, !16, i64 128, !16, i64 136, !16, i64 144, !37, i64 152, !37, i64 176, !37, i64 200, !37, i64 224, !37, i64 248, !12, i64 272, !39, i64 276, !12, i64 280, !9, i64 284}
!19 = !{!"_ZTSN8nvinfer119IPluginV2DynamicExtE", !20, i64 0}
!20 = !{!"_ZTSN8nvinfer112IPluginV2ExtE", !21, i64 0}
!21 = !{!"_ZTSN8nvinfer19IPluginV2E"}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !16, i64 8, !10, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !24, i64 0}
!24 = !{!"any pointer", !10, i64 0}
!25 = !{!"_ZTSSt10unique_ptrIfN8nvinfer114pluginInternal11CudaDeleterIfEEE", !26, i64 0}
!26 = !{!"_ZTSSt15__uniq_ptr_dataIfN8nvinfer114pluginInternal11CudaDeleterIfEELb1ELb1EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_implIfN8nvinfer114pluginInternal11CudaDeleterIfEEE", !28, i64 0}
!28 = !{!"_ZTSSt5tupleIJPfN8nvinfer114pluginInternal11CudaDeleterIfEEEE", !29, i64 0}
!29 = !{!"_ZTSSt11_Tuple_implILm0EJPfN8nvinfer114pluginInternal11CudaDeleterIfEEEE", !30, i64 0}
!30 = !{!"_ZTSSt10_Head_baseILm0EPfLb0EE", !24, i64 0}
!31 = !{!"_ZTSSt10unique_ptrIvN8nvinfer114pluginInternal11CudaDeleterIvEEE", !32, i64 0}
!32 = !{!"_ZTSSt15__uniq_ptr_dataIvN8nvinfer114pluginInternal11CudaDeleterIvEELb1ELb1EE", !33, i64 0}
!33 = !{!"_ZTSSt15__uniq_ptr_implIvN8nvinfer114pluginInternal11CudaDeleterIvEEE", !34, i64 0}
!34 = !{!"_ZTSSt5tupleIJPvN8nvinfer114pluginInternal11CudaDeleterIvEEEE", !35, i64 0}
!35 = !{!"_ZTSSt11_Tuple_implILm0EJPvN8nvinfer114pluginInternal11CudaDeleterIvEEEE", !36, i64 0}
!36 = !{!"_ZTSSt10_Head_baseILm0EPvLb0EE", !24, i64 0}
!37 = !{!"_ZTSN8nvinfer16plugin4bert20WeightsWithOwnershipE", !38, i64 0}
!38 = !{!"_ZTSN8nvinfer17WeightsE", !12, i64 0, !24, i64 8, !16, i64 16}
!39 = !{!"bool", !10, i64 0}
!40 = !{!18, !16, i64 112}
!41 = !{!18, !39, i64 276}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = !{!18, !9, i64 284}
!45 = !{!18, !12, i64 280}
!46 = !{!6, !12, i64 72}
!47 = !{!18, !12, i64 272}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass