118 lines · plain
1;RUN: llc < %s -mtriple=r600 -mcpu=redwood2 3define amdgpu_vs void @main(<4 x float> inreg %reg0, <4 x float> inreg %reg1) {4main_body:5 %0 = extractelement <4 x float> %reg1, i32 06 %1 = extractelement <4 x float> %reg1, i32 17 %2 = extractelement <4 x float> %reg1, i32 28 %3 = extractelement <4 x float> %reg1, i32 39 %4 = bitcast float %0 to i3210 %5 = icmp eq i32 %4, 011 %6 = sext i1 %5 to i3212 %7 = bitcast i32 %6 to float13 %8 = bitcast float %7 to i3214 %9 = icmp ne i32 %8, 015 %. = select i1 %9, float 0x36A0000000000000, float %016 br label %LOOP17 18LOOP: ; preds = %LOOP47, %main_body19 %temp12.0 = phi float [ 0x36A0000000000000, %main_body ], [ %temp12.1, %LOOP47 ]20 %temp8.0 = phi float [ 0.000000e+00, %main_body ], [ %38, %LOOP47 ]21 %temp4.1 = phi float [ %., %main_body ], [ %52, %LOOP47 ]22 %10 = bitcast float %temp4.1 to i3223 %11 = icmp eq i32 %10, 124 %12 = sext i1 %11 to i3225 %13 = bitcast i32 %12 to float26 %14 = bitcast float %13 to i3227 %15 = icmp ne i32 %14, 028 br i1 %15, label %IF41, label %ENDIF4029 30IF41: ; preds = %LOOP31 %16 = insertelement <4 x float> poison, float %0, i32 032 %17 = insertelement <4 x float> %16, float %temp8.0, i32 133 %18 = insertelement <4 x float> %17, float %temp12.0, i32 234 %19 = insertelement <4 x float> %18, float 0.000000e+00, i32 335 call void @llvm.r600.store.stream.output(<4 x float> %19, i32 0, i32 0, i32 1)36 %20 = insertelement <4 x float> poison, float %0, i32 037 %21 = insertelement <4 x float> %20, float %temp8.0, i32 138 %22 = insertelement <4 x float> %21, float %temp12.0, i32 239 %23 = insertelement <4 x float> %22, float 0.000000e+00, i32 340 call void @llvm.r600.store.stream.output(<4 x float> %23, i32 0, i32 0, i32 2)41 %24 = insertelement <4 x float> poison, float %0, i32 042 %25 = insertelement <4 x float> %24, float %temp8.0, i32 143 %26 = insertelement <4 x float> %25, float %temp12.0, i32 244 %27 = insertelement <4 x float> %26, float 0.000000e+00, i32 345 call void @llvm.r600.store.stream.output(<4 x float> %27, i32 0, i32 0, i32 4)46 %28 = insertelement <4 x float> poison, float 0.000000e+00, i32 047 %29 = insertelement <4 x float> %28, float 0.000000e+00, i32 148 %30 = insertelement <4 x float> %29, float 0.000000e+00, i32 249 %31 = insertelement <4 x float> %30, float 0.000000e+00, i32 350 call void @llvm.r600.store.swizzle(<4 x float> %31, i32 60, i32 1)51 %32 = insertelement <4 x float> poison, float %0, i32 052 %33 = insertelement <4 x float> %32, float %temp8.0, i32 153 %34 = insertelement <4 x float> %33, float %temp12.0, i32 254 %35 = insertelement <4 x float> %34, float 0.000000e+00, i32 355 call void @llvm.r600.store.swizzle(<4 x float> %35, i32 0, i32 2)56 ret void57 58ENDIF40: ; preds = %LOOP59 %36 = bitcast float %temp8.0 to i3260 %37 = add i32 %36, 161 %38 = bitcast i32 %37 to float62 %39 = bitcast float %temp4.1 to i3263 %40 = urem i32 %39, 264 %41 = bitcast i32 %40 to float65 %42 = bitcast float %41 to i3266 %43 = icmp eq i32 %42, 067 %44 = sext i1 %43 to i3268 %45 = bitcast i32 %44 to float69 %46 = bitcast float %45 to i3270 %47 = icmp ne i32 %46, 071 %48 = bitcast float %temp4.1 to i3272 br i1 %47, label %IF44, label %ELSE4573 74IF44: ; preds = %ENDIF4075 %49 = udiv i32 %48, 276 br label %ENDIF4377 78ELSE45: ; preds = %ENDIF4079 %50 = mul i32 3, %4880 %51 = add i32 %50, 181 br label %ENDIF4382 83ENDIF43: ; preds = %ELSE45, %IF4484 %.sink = phi i32 [ %49, %IF44 ], [ %51, %ELSE45 ]85 %52 = bitcast i32 %.sink to float86 %53 = load <4 x float>, ptr addrspace(8) null87 %54 = extractelement <4 x float> %53, i32 088 %55 = bitcast float %54 to i3289 br label %LOOP4790 91LOOP47: ; preds = %ENDIF48, %ENDIF4392 %temp12.1 = phi float [ %temp12.0, %ENDIF43 ], [ %67, %ENDIF48 ]93 %temp28.0 = phi float [ 0.000000e+00, %ENDIF43 ], [ %70, %ENDIF48 ]94 %56 = bitcast float %temp28.0 to i3295 %57 = icmp uge i32 %56, %5596 %58 = sext i1 %57 to i3297 %59 = bitcast i32 %58 to float98 %60 = bitcast float %59 to i3299 %61 = icmp ne i32 %60, 0100 br i1 %61, label %LOOP, label %ENDIF48101 102ENDIF48: ; preds = %LOOP47103 %62 = bitcast float %temp12.1 to i32104 %63 = mul i32 %62, 2105 %64 = bitcast i32 %63 to float106 %65 = bitcast float %64 to i32107 %66 = urem i32 %65, 2147483647108 %67 = bitcast i32 %66 to float109 %68 = bitcast float %temp28.0 to i32110 %69 = add i32 %68, 1111 %70 = bitcast i32 %69 to float112 br label %LOOP47113}114 115declare void @llvm.r600.store.stream.output(<4 x float>, i32, i32, i32)116 117declare void @llvm.r600.store.swizzle(<4 x float>, i32, i32)118