[polly] r271878 - Use minimal types for generated expressions
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 6 02:57:43 PDT 2016
Author: jdoerfert
Date: Mon Jun 6 04:57:41 2016
New Revision: 271878
URL: http://llvm.org/viewvc/llvm-project?rev=271878&view=rev
Log:
Use minimal types for generated expressions
We now use the minimal necessary bit width for the generated code. If
operations might overflow (add/sub/mul) we will try to adjust the types in
order to ensure a non-wrapping computation. If the type adjustment is not
possible, thus the necessary type is bigger than the type value of
--polly-max-expr-bit-width, we will use assumptions to verify the computation
will not wrap. However, for run-time checks we cannot build assumptions but
instead utilize overflow tracking intrinsics.
Modified:
polly/trunk/include/polly/CodeGen/IslExprBuilder.h
polly/trunk/lib/CodeGen/IslExprBuilder.cpp
polly/trunk/lib/CodeGen/IslNodeBuilder.cpp
polly/trunk/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
polly/trunk/test/Isl/CodeGen/MemAccess/codegen_address_space.ll
polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md.ll
polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md_float.ll
polly/trunk/test/Isl/CodeGen/MemAccess/different_types.ll
polly/trunk/test/Isl/CodeGen/MemAccess/multiple_types.ll
polly/trunk/test/Isl/CodeGen/MemAccess/simple_stride_test.ll
polly/trunk/test/Isl/CodeGen/MemAccess/update_access_functions.ll
polly/trunk/test/Isl/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
polly/trunk/test/Isl/CodeGen/OpenMP/new_multidim_access.ll
polly/trunk/test/Isl/CodeGen/OpenMP/recomputed-srem.ll
polly/trunk/test/Isl/CodeGen/RuntimeDebugBuilder/combine_different_values.ll
polly/trunk/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll
polly/trunk/test/Isl/CodeGen/aliasing_different_pointer_types.ll
polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_1.ll
polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_2.ll
polly/trunk/test/Isl/CodeGen/aliasing_struct_element.ll
polly/trunk/test/Isl/CodeGen/annotated_alias_scopes.ll
polly/trunk/test/Isl/CodeGen/invariant_cannot_handle_void.ll
polly/trunk/test/Isl/CodeGen/invariant_load.ll
polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer.ll
polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional.ll
polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional_2.ll
polly/trunk/test/Isl/CodeGen/invariant_load_condition.ll
polly/trunk/test/Isl/CodeGen/invariant_load_different_sized_types.ll
polly/trunk/test/Isl/CodeGen/invariant_load_escaping.ll
polly/trunk/test/Isl/CodeGen/invariant_load_escaping_second_scop.ll
polly/trunk/test/Isl/CodeGen/invariant_load_ptr_ptr_noalias.ll
polly/trunk/test/Isl/CodeGen/invariant_load_scalar_dep.ll
polly/trunk/test/Isl/CodeGen/multiple-types-invariant-load.ll
polly/trunk/test/Isl/CodeGen/no-overflow-tracking.ll
polly/trunk/test/Isl/CodeGen/non-affine-switch.ll
polly/trunk/test/Isl/CodeGen/non-affine-update.ll
polly/trunk/test/Isl/CodeGen/non_affine_float_compare.ll
polly/trunk/test/Isl/CodeGen/phi_conditional_simple_1.ll
polly/trunk/test/Isl/CodeGen/phi_loop_carried_float.ll
polly/trunk/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
polly/trunk/test/Isl/CodeGen/phi_scalar_simple_2.ll
polly/trunk/test/Isl/CodeGen/run-time-condition-with-scev-parameters.ll
polly/trunk/test/Isl/CodeGen/scalar-store-from-same-bb.ll
polly/trunk/test/Isl/CodeGen/scev_expansion_in_nonaffine.ll
polly/trunk/test/Isl/CodeGen/scop_never_executed_runtime_check_location.ll
polly/trunk/test/Isl/CodeGen/switch-in-non-affine-region.ll
polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type.ll
polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll
polly/trunk/test/ScopInfo/invariant_load_zext_parameter.ll
Modified: polly/trunk/include/polly/CodeGen/IslExprBuilder.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/CodeGen/IslExprBuilder.h?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/include/polly/CodeGen/IslExprBuilder.h (original)
+++ polly/trunk/include/polly/CodeGen/IslExprBuilder.h Mon Jun 6 04:57:41 2016
@@ -69,24 +69,17 @@ namespace polly {
/// When lowering to LLVM-IR we need to chose both the size of the data type and
/// the sign of the operations we use.
///
-/// At the moment, we hardcode i64 bit signed computations. Our experience has
-/// shown that 64 bit are generally large enough for the loop bounds that appear
-/// in the wild. Signed computations are needed, as loop bounds may become
-/// negative.
+/// We use the minimal necessary bit width for the generated code and always
+/// interpret values as signed. If operations might overflow (add/sub/mul) we
+/// will try to adjust the types in order to ensure a non-wrapping computation.
+/// If the type adjustment is not possible (e.g., the necessary type is bigger
+/// than the type value of --polly-max-expr-bit-width) we will use assumptions
+/// to verify the computation will not wrap. However, for run-time checks we
+/// cannot build assumptions but instead utilize overflow tracking intrinsics.
///
/// It is possible to track overflows that occured in the generated IR. See the
/// description of @see OverflowState for more information.
///
-/// FIXME: Hardcoding sizes can cause issues:
-///
-/// - On embedded systems and especially for high-level-synthesis 64 bit
-/// computations are very costly.
-///
-/// The right approach is to compute the minimal necessary bitwidth and
-/// signedness for each subexpression during in the isl AST generation and
-/// to use this information in our IslAstGenerator. Preliminary patches are
-/// available, but have not been committed yet.
-///
class IslExprBuilder {
public:
/// @brief A map from isl_ids to llvm::Values.
@@ -128,6 +121,26 @@ public:
/// The same as unifyTypes above but for three values instead of two.
void unifyTypes(llvm::Value *&V0, llvm::Value *&V1, llvm::Value *&V2);
+ /// @brief Adjust the types of @p V0 and @p V1 in-place.
+ ///
+ /// @param V0 One operand of an operation.
+ /// @param V1 Another operand of an operation.
+ /// @param RequiredBitWidth The bit with required for a safe operation.
+ ///
+ /// @return True if the new type has at least @p RequiredBitWidth bits.
+ bool adjustTypesForSafeComputation(llvm::Value *&V0, llvm::Value *&V1,
+ unsigned RequiredBitWidth);
+
+ /// @brief Unify the types of @p LHS and @p RHS in-place for an add/sub op.
+ ///
+ /// @return False if an additive operation of @p LHS and @p RHS can overflow.
+ bool adjustTypesForSafeAddition(llvm::Value *&LHS, llvm::Value *&RHS);
+
+ /// @brief Unify the types of @p LHS and @p RHS in-place for a mul op.
+ ///
+ /// @return False if a multiplication of @p LHS and @p RHS can overflow.
+ bool adjustTypesForSafeMultiplication(llvm::Value *&LHS, llvm::Value *&RHS);
+
/// @brief Return the type with which this expression should be computed.
///
/// The type needs to be large enough to hold all possible input and all
Modified: polly/trunk/lib/CodeGen/IslExprBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/IslExprBuilder.cpp?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/IslExprBuilder.cpp (original)
+++ polly/trunk/lib/CodeGen/IslExprBuilder.cpp Mon Jun 6 04:57:41 2016
@@ -39,6 +39,12 @@ static cl::opt<OverflowTrackingChoice> O
clEnumValEnd),
cl::Hidden, cl::init(OT_REQUEST), cl::ZeroOrMore, cl::cat(PollyCategory));
+// @TODO This should actually be derived from the DataLayout.
+static cl::opt<unsigned> PollyMaxAllowedBitWidth(
+ "polly-max-expr-bit-width",
+ cl::desc("The maximal bit with for generated expressions."), cl::Hidden,
+ cl::ZeroOrMore, cl::init(64), cl::cat(PollyCategory));
+
IslExprBuilder::IslExprBuilder(Scop &S, PollyIRBuilder &Builder,
IDToValueTy &IDToValue, ValueMapT &GlobalMap,
const DataLayout &DL, ScalarEvolution &SE,
@@ -74,13 +80,23 @@ Value *IslExprBuilder::getOverflowState(
Value *IslExprBuilder::createBinOp(BinaryOperator::BinaryOps Opc, Value *LHS,
Value *RHS, const Twine &Name) {
- // @TODO Temporarily promote types of potentially overflowing binary
- // operations to at least i64.
- Value *I64C = Builder.getInt64(0);
- unifyTypes(LHS, RHS, I64C);
+ // Flag that is true if the computation cannot overflow.
+ bool IsSafeToCompute = false;
+ switch (Opc) {
+ case Instruction::Add:
+ case Instruction::Sub:
+ IsSafeToCompute = adjustTypesForSafeAddition(LHS, RHS);
+ break;
+ case Instruction::Mul:
+ IsSafeToCompute = adjustTypesForSafeMultiplication(LHS, RHS);
+ break;
+ default:
+ llvm_unreachable("Unknown binary operator!");
+ }
- // Handle the plain operation (without overflow tracking) first.
- if (!OverflowState) {
+ // Handle the plain operation (without overflow tracking or a safe
+ // computation) first.
+ if (!OverflowState || (IsSafeToCompute && (OTMode != OT_ALWAYS))) {
switch (Opc) {
case Instruction::Add:
return Builder.CreateNSWAdd(LHS, RHS, Name);
@@ -164,6 +180,40 @@ void IslExprBuilder::unifyTypes(Value *&
V2 = Builder.CreateSExt(V2, MaxT);
}
+bool IslExprBuilder::adjustTypesForSafeComputation(Value *&LHS, Value *&RHS,
+ unsigned RequiredBitWidth) {
+ unsigned LBitWidth = LHS->getType()->getPrimitiveSizeInBits();
+ unsigned RBitWidth = RHS->getType()->getPrimitiveSizeInBits();
+ unsigned MaxUsedBitWidth = std::max(LBitWidth, RBitWidth);
+
+ // @TODO For now use the maximal bit width if the required one is to large but
+ // note that this is not sound.
+ unsigned MaxAllowedBitWidth = PollyMaxAllowedBitWidth;
+ unsigned NewBitWidth =
+ std::max(MaxUsedBitWidth, std::min(MaxAllowedBitWidth, RequiredBitWidth));
+
+ Type *Ty = Builder.getIntNTy(NewBitWidth);
+ LHS = Builder.CreateSExt(LHS, Ty);
+ RHS = Builder.CreateSExt(RHS, Ty);
+
+ // If the new bit width is not large enough the computation is not sound.
+ return NewBitWidth == RequiredBitWidth;
+}
+
+bool IslExprBuilder::adjustTypesForSafeAddition(Value *&LHS, Value *&RHS) {
+ unsigned LBitWidth = LHS->getType()->getPrimitiveSizeInBits();
+ unsigned RBitWidth = RHS->getType()->getPrimitiveSizeInBits();
+ return adjustTypesForSafeComputation(LHS, RHS,
+ std::max(LBitWidth, RBitWidth) + 1);
+}
+
+bool IslExprBuilder::adjustTypesForSafeMultiplication(Value *&LHS,
+ Value *&RHS) {
+ unsigned LBitWidth = LHS->getType()->getPrimitiveSizeInBits();
+ unsigned RBitWidth = RHS->getType()->getPrimitiveSizeInBits();
+ return adjustTypesForSafeComputation(LHS, RHS, LBitWidth + RBitWidth);
+}
+
Value *IslExprBuilder::createOpUnary(__isl_take isl_ast_expr *Expr) {
assert(isl_ast_expr_get_op_type(Expr) == isl_ast_op_minus &&
"Unsupported unary operation");
@@ -195,10 +245,6 @@ Value *IslExprBuilder::createOpNAry(__is
V = Builder.CreateSelect(Builder.CreateICmp(Pred, V, OpV), V, OpV);
}
- // TODO: We can truncate the result, if it fits into a smaller type. This can
- // help in cases where we have larger operands (e.g. i67) but the result is
- // known to fit into i64. Without the truncation, the larger i67 type may
- // force all subsequent operations to be performed on a non-native type.
isl_ast_expr_free(Expr);
return V;
}
@@ -356,10 +402,6 @@ Value *IslExprBuilder::createOpBin(__isl
break;
}
- // TODO: We can truncate the result, if it fits into a smaller type. This can
- // help in cases where we have larger operands (e.g. i67) but the result is
- // known to fit into i64. Without the truncation, the larger i67 type may
- // force all subsequent operations to be performed on a non-native type.
isl_ast_expr_free(Expr);
return Res;
}
@@ -615,7 +657,7 @@ Value *IslExprBuilder::createId(__isl_ta
V = IDToValue[Id];
if (!V)
- V = UndefValue::get(getType(Expr));
+ V = UndefValue::get(Builder.getInt1Ty());
if (V->getType()->isPointerTy())
V = Builder.CreatePtrToInt(V, Builder.getIntNTy(DL.getPointerSizeInBits()));
@@ -628,33 +670,12 @@ Value *IslExprBuilder::createId(__isl_ta
return V;
}
-IntegerType *IslExprBuilder::getType(__isl_keep isl_ast_expr *Expr) {
- // XXX: We assume i64 is large enough. This is often true, but in general
- // incorrect. Also, on 32bit architectures, it would be beneficial to
- // use a smaller type. We can and should directly derive this information
- // during code generation.
- return IntegerType::get(Builder.getContext(), 64);
-}
-
Value *IslExprBuilder::createInt(__isl_take isl_ast_expr *Expr) {
assert(isl_ast_expr_get_type(Expr) == isl_ast_expr_int &&
"Expression not of type isl_ast_expr_int");
- isl_val *Val;
- Value *V;
- APInt APValue;
- IntegerType *T;
-
- Val = isl_ast_expr_get_val(Expr);
- APValue = APIntFromVal(Val);
-
- auto BitWidth = APValue.getBitWidth();
- if (BitWidth <= 64)
- T = getType(Expr);
- else
- T = Builder.getIntNTy(BitWidth);
- APValue = APValue.sextOrSelf(T->getBitWidth());
- V = ConstantInt::get(T, APValue);
+ auto *Val = isl_ast_expr_get_val(Expr);
+ auto *V = ConstantInt::get(Builder.getContext(), APIntFromVal(Val));
isl_ast_expr_free(Expr);
return V;
Modified: polly/trunk/lib/CodeGen/IslNodeBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/IslNodeBuilder.cpp?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/IslNodeBuilder.cpp (original)
+++ polly/trunk/lib/CodeGen/IslNodeBuilder.cpp Mon Jun 6 04:57:41 2016
@@ -390,7 +390,11 @@ void IslNodeBuilder::createForVector(__i
Value *ValueLB = ExprBuilder.create(Init);
Value *ValueInc = ExprBuilder.create(Inc);
- ExprBuilder.unifyTypes(ValueLB, ValueInc);
+ CmpInst::Predicate Predicate;
+ auto *UB = getUpperBound(For, Predicate);
+ auto *ValueUB = ExprBuilder.create(UB);
+
+ ExprBuilder.unifyTypes(ValueLB, ValueUB, ValueInc);
std::vector<Value *> IVS(VectorWidth);
IVS[0] = ValueLB;
Modified: polly/trunk/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll (original)
+++ polly/trunk/test/Isl/CodeGen/LoopParallelMD/loop_nest_param_parallel.ll Mon Jun 6 04:57:41 2016
@@ -2,10 +2,10 @@
;
; Check that we mark multiple parallel loops correctly including the memory instructions.
;
-; CHECK-DAG: %polly.loop_cond[[COuter:[0-9]*]] = icmp sle i64 %polly.indvar{{[0-9]*}}, 1022
+; CHECK-DAG: %polly.loop_cond[[COuter:[0-9]*]] = icmp sle i11 %polly.indvar{{[0-9]*}}, 1022
; CHECK-DAG: br i1 %polly.loop_cond[[COuter]], label %polly.loop_header{{[0-9]*}}, label %polly.loop_exit{{[0-9]*}}, !llvm.loop ![[IDOuter:[0-9]*]]
;
-; CHECK-DAG: %polly.loop_cond[[CInner:[0-9]*]] = icmp sle i64 %polly.indvar{{[0-9]*}}, 510
+; CHECK-DAG: %polly.loop_cond[[CInner:[0-9]*]] = icmp sle i10 %polly.indvar{{[0-9]*}}, 510
; CHECK-DAG: br i1 %polly.loop_cond[[CInner]], label %polly.loop_header{{[0-9]*}}, label %polly.loop_exit{{[0-9]*}}, !llvm.loop ![[IDInner:[0-9]*]]
;
; CHECK-DAG: store i32 %{{[a-z_0-9]*}}, i32* %{{[a-z_0-9]*}}, {{[ ._!,a-zA-Z0-9]*}}, !llvm.mem.parallel_loop_access !4
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/codegen_address_space.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/codegen_address_space.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/codegen_address_space.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/codegen_address_space.ll Mon Jun 6 04:57:41 2016
@@ -40,5 +40,5 @@ for.end:
}
; CHECK: %polly.access.cast.A = bitcast [100 x i32] addrspace(5)* %A to i32 addrspace(5)*
-; CHECK: %polly.access.A = getelementptr i32, i32 addrspace(5)* %polly.access.cast.A, i64 0
+; CHECK: %polly.access.A = getelementptr i32, i32 addrspace(5)* %polly.access.cast.A, i1 false
; CHECK: %tmp2_p_scalar_ = load i32, i32 addrspace(5)* %polly.access.A, align 4, !alias.scope !0, !noalias !2
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md.ll Mon Jun 6 04:57:41 2016
@@ -54,19 +54,28 @@ for.end6:
ret i32 0
}
-; WITHCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
-; WITHCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
-; WITHCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
-; WITHCONST: %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
-; WITHCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32], [1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
+; WITHCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHCONST: %[[IVOutSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVOut]] to i12
+; WITHCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i12 16, %[[IVOutSext]]
+; WITHCONST: %[[IVInSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVIn]] to i9
+; WITHCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i9 2, %[[IVInSext]]
+; WITHCONST: %[[MUL1Sext:[._a-zA-Z0-9]+]] = sext i12 %[[MUL1]] to i13
+; WITHCONST: %[[MUL2Sext:[._a-zA-Z0-9]+]] = sext i9 %[[MUL2]] to i13
+; WITHCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i13 %[[MUL1Sext]], %[[MUL2Sext]]
+; WITHCONST: %[[SUM1Sext:[._a-zA-Z0-9]+]] = sext i13 %[[SUM1]] to i14
+; WITHCONST: %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i14 %[[SUM1Sext]], 5
+; WITHCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32], [1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i14 %[[SUM2]]
; WITHCONST: store i32 100, i32* %[[ACC]]
-; WITHOUTCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHOUTCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHOUTCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
-; WITHOUTCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
-; WITHOUTCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
-; WITHOUTCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32], [1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
+; WITHOUTCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHOUTCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHOUTCONST: %[[IVOutSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVOut]] to i12
+; WITHOUTCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i12 16, %[[IVOutSext]]
+; WITHOUTCONST: %[[IVInSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVIn]] to i9
+; WITHOUTCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i9 2, %[[IVInSext]]
+; WITHOUTCONST: %[[MUL1Sext:[._a-zA-Z0-9]+]] = sext i12 %[[MUL1]] to i13
+; WITHOUTCONST: %[[MUL2Sext:[._a-zA-Z0-9]+]] = sext i9 %[[MUL2]] to i13
+; WITHOUTCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i13 %[[MUL1Sext]], %[[MUL2Sext]]
+; WITHOUTCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr i32, i32* getelementptr inbounds ([1040 x i32], [1040 x i32]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i13 %[[SUM1]]
; WITHOUTCONST: store i32 100, i32* %[[ACC]]
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md_float.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md_float.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md_float.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/codegen_simple_md_float.ll Mon Jun 6 04:57:41 2016
@@ -51,19 +51,28 @@ for.end6:
ret void
}
-; WITHCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
-; WITHCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
-; WITHCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
-; WITHCONST: %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i64 %[[SUM1]], 5
-; WITHCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float], [1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM2]]
+; WITHCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHCONST: %[[IVOutSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVOut]] to i12
+; WITHCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i12 16, %[[IVOutSext]]
+; WITHCONST: %[[IVInSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVIn]] to i9
+; WITHCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i9 2, %[[IVInSext]]
+; WITHCONST: %[[MUL1Sext:[._a-zA-Z0-9]+]] = sext i12 %[[MUL1]] to i13
+; WITHCONST: %[[MUL2Sext:[._a-zA-Z0-9]+]] = sext i9 %[[MUL2]] to i13
+; WITHCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i13 %[[MUL1Sext]], %[[MUL2Sext]]
+; WITHCONST: %[[SUM1Sext:[._a-zA-Z0-9]+]] = sext i13 %[[SUM1]] to i14
+; WITHCONST: %[[SUM2:[._a-zA-Z0-9]+]] = add nsw i14 %[[SUM1Sext]], 5
+; WITHCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float], [1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i14 %[[SUM2]]
; WITHCONST: store float 1.000000e+02, float* %[[ACC]]
-; WITHOUTCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHOUTCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i64 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
-; WITHOUTCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i64 16, %[[IVOut]]
-; WITHOUTCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i64 2, %[[IVIn]]
-; WITHOUTCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i64 %[[MUL1]], %[[MUL2]]
-; WITHOUTCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float], [1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i64 %[[SUM1]]
+; WITHOUTCONST: %[[IVOut:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHOUTCONST: %[[IVIn:polly.indvar[0-9]*]] = phi i6 [ 0, %polly.loop_preheader{{[0-9]*}} ], [ %polly.indvar_next{{[0-9]*}}, %polly.{{[._a-zA-Z0-9]*}} ]
+; WITHOUTCONST: %[[IVOutSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVOut]] to i12
+; WITHOUTCONST: %[[MUL1:[._a-zA-Z0-9]+]] = mul nsw i12 16, %[[IVOutSext]]
+; WITHOUTCONST: %[[IVInSext:[._a-zA-Z0-9]+]] = sext i6 %[[IVIn]] to i9
+; WITHOUTCONST: %[[MUL2:[._a-zA-Z0-9]+]] = mul nsw i9 2, %[[IVInSext]]
+; WITHOUTCONST: %[[MUL1Sext:[._a-zA-Z0-9]+]] = sext i12 %[[MUL1]] to i13
+; WITHOUTCONST: %[[MUL2Sext:[._a-zA-Z0-9]+]] = sext i9 %[[MUL2]] to i13
+; WITHOUTCONST: %[[SUM1:[._a-zA-Z0-9]+]] = add nsw i13 %[[MUL1Sext]], %[[MUL2Sext]]
+; WITHOUTCONST: %[[ACC:[._a-zA-Z0-9]*]] = getelementptr float, float* getelementptr inbounds ([1040 x float], [1040 x float]* @A, i{{(32|64)}} 0, i{{(32|64)}} 0), i13 %[[SUM1]]
; WITHOUTCONST: store float 1.000000e+02, float* %[[ACC]]
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/different_types.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/different_types.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/different_types.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/different_types.ll Mon Jun 6 04:57:41 2016
@@ -10,9 +10,11 @@
; }
; CHECK: %polly.access.cast.A14 = bitcast float* %A to i32*
-; CHECK: %[[R1:[._0-9]*]] = sub nsw i64 0, %polly.indvar11
-; CHECK: %[[R2:[._0-9]*]] = add nsw i64 %[[R1]], 99
-; CHECK: %polly.access.A15 = getelementptr i32, i32* %polly.access.cast.A14, i64 %[[R2]]
+; CHECK: %[[R0:[._0-9]*]] = sext i8 %polly.indvar11 to i9
+; CHECK: %[[R1:[._0-9]*]] = sub nsw i9 0, %[[R0]]
+; CHECK: %[[R1s:[._0-9]*]] = sext i9 %[[R1]] to i10
+; CHECK: %[[R2:[._0-9]*]] = add nsw i10 %[[R1s]], 99
+; CHECK: %polly.access.A15 = getelementptr i32, i32* %polly.access.cast.A14, i10 %[[R2]]
; CHECK: %[[R3:[._0-9]*]] = bitcast i32* %polly.access.A15 to float*
; CHECK: %tmp14_p_scalar_ = load float, float* %[[R3]], align 4, !alias.scope !3, !noalias !4
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/multiple_types.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/multiple_types.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/multiple_types.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/multiple_types.ll Mon Jun 6 04:57:41 2016
@@ -12,20 +12,21 @@
; }
; Short[0]
-; CHECK: %polly.access.Short10 = getelementptr i8, i8* %Short, i64 0
+; CHECK: %polly.access.Short10 = getelementptr i8, i8* %Short, i1 false
; CHECK: %24 = bitcast i8* %polly.access.Short10 to i16*
; CHECK: %tmp5_p_scalar_ = load i16, i16* %24
; Float[8 * i]
-; CHECK: %25 = mul nsw i64 8, %polly.indvar
-; CHECK: %polly.access.Float11 = getelementptr i8, i8* %Float, i64 %25
-; CHECK: %26 = bitcast i8* %polly.access.Float11 to float*
-; CHECK: %tmp11_p_scalar_ = load float, float* %26
+; CHECK: %26 = sext i8 %polly.indvar to i13
+; CHECK: %27 = mul nsw i13 8, %26
+; CHECK: %polly.access.Float11 = getelementptr i8, i8* %Float, i13 %27
+; CHECK: %28 = bitcast i8* %polly.access.Float11 to float*
+; CHECK: %tmp11_p_scalar_ = load float, float* %28
; Double[8]
-; CHECK: %polly.access.Double13 = getelementptr i8, i8* %Double, i64 8
-; CHECK: %27 = bitcast i8* %polly.access.Double13 to double*
-; CHECK: %tmp17_p_scalar_ = load double, double* %27
+; CHECK: %polly.access.Double13 = getelementptr i8, i8* %Double, i5 8
+; CHECK: %30 = bitcast i8* %polly.access.Double13 to double*
+; CHECK: %tmp17_p_scalar_ = load double, double* %30
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/simple_stride_test.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/simple_stride_test.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/simple_stride_test.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/simple_stride_test.ll Mon Jun 6 04:57:41 2016
@@ -4,12 +4,12 @@
; stride zero for B
; stride one for A
;
-; CHECK: %polly.access.B = getelementptr i32, i32* %B, i64 0
+; CHECK: %polly.access.B = getelementptr i32, i32* %B, i1 false
; CHECK: %[[BC:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.B to <1 x i32>*
; CHECK: %[[LD:[._a-zA-Z0-9]*]] = load <1 x i32>, <1 x i32>* %[[BC]], align 8
; CHECK: %[[SV:[._a-zA-Z0-9]*]] = shufflevector <1 x i32> %[[LD]], <1 x i32> %[[LD]], <16 x i32> zeroinitializer
;
-; CHECK: %polly.access.A = getelementptr i32, i32* %A, i64 0
+; CHECK: %polly.access.A = getelementptr i32, i32* %A, i5 0
; CHECK: %[[VP:[._a-zA-Z0-9]*]] = bitcast i32* %polly.access.A to <16 x i32>*
; CHECK: store <16 x i32> %[[SV]], <16 x i32>* %[[VP]], align 8
;
Modified: polly/trunk/test/Isl/CodeGen/MemAccess/update_access_functions.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/MemAccess/update_access_functions.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/MemAccess/update_access_functions.ll (original)
+++ polly/trunk/test/Isl/CodeGen/MemAccess/update_access_functions.ll Mon Jun 6 04:57:41 2016
@@ -3,7 +3,7 @@
; RUN: < %s -S | FileCheck %s
; CHECK: polly.stmt.loop2:
-; CHECK-NEXT: %polly.access.A = getelementptr double, double* %A, i64 42
+; CHECK-NEXT: %polly.access.A = getelementptr double, double* %A, i7 42
; CHECK-NEXT: %val_p_scalar_ = load double, double* %polly.access.A
; CHECK: polly.stmt.loop3:
Modified: polly/trunk/test/Isl/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll (original)
+++ polly/trunk/test/Isl/CodeGen/OpenMP/invariant_base_pointer_preloaded_pass_only_needed.ll Mon Jun 6 04:57:41 2016
@@ -15,7 +15,7 @@
; }
;
; i A[0] A
-; CHECK: %polly.par.userContext = alloca { i64, float, float* }
+; CHECK: %polly.par.userContext = alloca { i11, float, float* }
;
; CHECK: %polly.access.B.load =
; CHECK: %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
Modified: polly/trunk/test/Isl/CodeGen/OpenMP/new_multidim_access.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/OpenMP/new_multidim_access.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/OpenMP/new_multidim_access.ll (original)
+++ polly/trunk/test/Isl/CodeGen/OpenMP/new_multidim_access.ll Mon Jun 6 04:57:41 2016
@@ -20,14 +20,18 @@
; CHECK: new: [n, m] -> { Stmt_bb4[i0, i1] -> MemRef_A[i0, 43 + i1] };
; IR: %polly.access.mul.polly.subfunc.arg.A = mul nsw i64 %polly.indvar, %polly.subfunc.arg.m
-; IR: %6 = add nsw i64 %polly.indvar5, 13
-; IR: %polly.access.add.polly.subfunc.arg.A = add nsw i64 %polly.access.mul.polly.subfunc.arg.A, %6
+; IR: %[[R0:[0-9]*]] = sext i8 %polly.indvar5 to i9
+; IR: %[[R1:[0-9]*]] = add nsw i9 %[[R0]], 13
+; IR: %[[R2:[0-9]*]] = sext i9 %[[R1]] to i64
+; IR: %polly.access.add.polly.subfunc.arg.A = add nsw i64 %polly.access.mul.polly.subfunc.arg.A, %[[R2]]
; IR: %polly.access.polly.subfunc.arg.A = getelementptr float, float* %polly.subfunc.arg.A, i64 %polly.access.add.polly.subfunc.arg.A
; IR: %tmp10_p_scalar_ = load float, float* %polly.access.polly.subfunc.arg.A, align 4, !alias.scope !0, !noalias !2, !llvm.mem.parallel_loop_access !3
; IR: %polly.access.mul.polly.subfunc.arg.A8 = mul nsw i64 %polly.indvar, %polly.subfunc.arg.m
-; IR: %7 = add nsw i64 %polly.indvar5, 43
-; IR: %polly.access.add.polly.subfunc.arg.A9 = add nsw i64 %polly.access.mul.polly.subfunc.arg.A8, %7
+; IR: %[[P0:[0-9]*]] = sext i8 %polly.indvar5 to i9
+; IR: %[[P1:[0-9]*]] = add nsw i9 %[[P0]], 43
+; IR: %[[P2:[0-9]*]] = sext i9 %[[P1]] to i64
+; IR: %polly.access.add.polly.subfunc.arg.A9 = add nsw i64 %polly.access.mul.polly.subfunc.arg.A8, %[[P2]]
; IR: %polly.access.polly.subfunc.arg.A10 = getelementptr float, float* %polly.subfunc.arg.A, i64 %polly.access.add.polly.subfunc.arg.A9
; IR: store float %p_tmp11, float* %polly.access.polly.subfunc.arg.A10, align 4, !alias.scope !0, !noalias !2, !llvm.mem.parallel_
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/OpenMP/recomputed-srem.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/OpenMP/recomputed-srem.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/OpenMP/recomputed-srem.ll (original)
+++ polly/trunk/test/Isl/CodeGen/OpenMP/recomputed-srem.ll Mon Jun 6 04:57:41 2016
@@ -3,7 +3,7 @@
;
; Test to verify that we pass %rem96 to the parallel subfunction.
;
-; CHECK: %[[R:[0-9]*]] = getelementptr inbounds { i32, i32, i64, float*, float*, i32 }, { i32, i32, i64, float*, float*, i32 }* %polly.par.userContext1, i32 0, i32 5
+; CHECK: %[[R:[0-9]*]] = getelementptr inbounds { i32, i32, float*, float*, i32 }, { i32, i32, float*, float*, i32 }* %polly.par.userContext1, i32 0, i32 4
; CHECK-NEXT: %polly.subfunc.arg.rem96 = load i32, i32* %[[R]]
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/RuntimeDebugBuilder/combine_different_values.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/RuntimeDebugBuilder/combine_different_values.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/RuntimeDebugBuilder/combine_different_values.ll (original)
+++ polly/trunk/test/Isl/CodeGen/RuntimeDebugBuilder/combine_different_values.ll Mon Jun 6 04:57:41 2016
@@ -50,46 +50,53 @@
; CHECK: @21 = private unnamed_addr addrspace(4) constant [3 x i8] c": \00"
; CHECK: @22 = private unnamed_addr addrspace(4) constant [2 x i8] c"\0A\00"
; CHECK: @23 = private unnamed_addr constant [12 x i8] c"%s%ld%s%f%s\00"
-
-; CHECK: %0 = ptrtoint double* %scevgep to i64
-; CHECK: %1 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @3, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @0, i32 0, i32 0), i64 %0, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @1, i32 0, i32 0), double %tmp3_p_scalar_, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @2, i32 0, i32 0))
-; CHECK: %2 = call i32 @fflush(i8* null)
-; CHECK: %scevgep1 = getelementptr i8, i8* %C, i64 %polly.indvar
+;
+; CHECK: %0 = zext i5 %polly.indvar to i64
+; CHECK: %scevgep = getelementptr double, double* %B, i64 %0
+; CHECK: %tmp3_p_scalar_ = load double, double* %scevgep
+; CHECK: %1 = ptrtoint double* %scevgep to i64
+; CHECK: %2 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @3, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @0, i32 0, i32 0), i64 %1, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @1, i32 0, i32 0), double %tmp3_p_scalar_, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @2, i32 0, i32 0))
+; CHECK: %3 = call i32 @fflush(i8* null)
+; CHECK: %4 = zext i5 %polly.indvar to i64
+; CHECK: %scevgep1 = getelementptr i8, i8* %C, i64 %4
; CHECK: %tmp5_p_scalar_ = load i8, i8* %scevgep1
-; CHECK: %3 = ptrtoint i8* %scevgep1 to i64
-; CHECK: %4 = sext i8 %tmp5_p_scalar_ to i64
-; CHECK: %5 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @7, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @4, i32 0, i32 0), i64 %3, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @5, i32 0, i32 0), i64 %4, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @6, i32 0, i32 0))
-; CHECK: %6 = call i32 @fflush(i8* null)
+; CHECK: %5 = ptrtoint i8* %scevgep1 to i64
+; CHECK: %6 = sext i8 %tmp5_p_scalar_ to i64
+; CHECK: %7 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @7, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @4, i32 0, i32 0), i64 %5, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @5, i32 0, i32 0), i64 %6, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @6, i32 0, i32 0))
+; CHECK: %8 = call i32 @fflush(i8* null)
; CHECK: %p_tmp6 = sitofp i8 %tmp5_p_scalar_ to double
; CHECK: %p_tmp7 = fadd double %tmp3_p_scalar_, %p_tmp6
-; CHECK: %scevgep2 = getelementptr i32, i32* %D, i64 %polly.indvar
+; CHECK: %9 = zext i5 %polly.indvar to i64
+; CHECK: %scevgep2 = getelementptr i32, i32* %D, i64 %9
; CHECK: %tmp9_p_scalar_ = load i32, i32* %scevgep2
-; CHECK: %7 = ptrtoint i32* %scevgep2 to i64
-; CHECK: %8 = sext i32 %tmp9_p_scalar_ to i64
-; CHECK: %9 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @11, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @8, i32 0, i32 0), i64 %7, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @9, i32 0, i32 0), i64 %8, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @10, i32 0, i32 0))
-; CHECK: %10 = call i32 @fflush(i8* null)
+; CHECK: %10 = ptrtoint i32* %scevgep2 to i64
+; CHECK: %11 = sext i32 %tmp9_p_scalar_ to i64
+; CHECK: %12 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @11, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @8, i32 0, i32 0), i64 %10, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @9, i32 0, i32 0), i64 %11, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @10, i32 0, i32 0))
+; CHECK: %13 = call i32 @fflush(i8* null)
; CHECK: %p_tmp10 = sitofp i32 %tmp9_p_scalar_ to double
; CHECK: %p_tmp11 = fadd double %p_tmp7, %p_tmp10
-; CHECK: %scevgep3 = getelementptr i64, i64* %E, i64 %polly.indvar
+; CHECK: %14 = zext i5 %polly.indvar to i64
+; CHECK: %scevgep3 = getelementptr i64, i64* %E, i64 %14
; CHECK: %tmp13_p_scalar_ = load i64, i64* %scevgep3
-; CHECK: %11 = ptrtoint i64* %scevgep3 to i64
-; CHECK: %12 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @15, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @12, i32 0, i32 0), i64 %11, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @13, i32 0, i32 0), i64 %tmp13_p_scalar_, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @14, i32 0, i32 0))
-; CHECK: %13 = call i32 @fflush(i8* null)
+; CHECK: %15 = ptrtoint i64* %scevgep3 to i64
+; CHECK: %16 = call i32 (...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @15, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @12, i32 0, i32 0), i64 %15, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @13, i32 0, i32 0), i64 %tmp13_p_scalar_, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @14, i32 0, i32 0))
+; CHECK: %17 = call i32 @fflush(i8* null)
; CHECK: %p_tmp14 = sitofp i64 %tmp13_p_scalar_ to double
; CHECK: %p_tmp15 = fadd double %p_tmp11, %p_tmp14
-; CHECK: %scevgep4 = getelementptr float, float* %A, i64 %polly.indvar
+; CHECK: %18 = zext i5 %polly.indvar to i64
+; CHECK: %scevgep4 = getelementptr float, float* %A, i64 %18
; CHECK: %tmp17_p_scalar_ = load float, float* %scevgep4
-; CHECK: %14 = ptrtoint float* %scevgep4 to i64
-; CHECK: %15 = fpext float %tmp17_p_scalar_ to double
-; CHECK: %16 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @19, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @16, i32 0, i32 0), i64 %14, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @17, i32 0, i32 0), double %15, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @18, i32 0, i32 0))
-; CHECK: %17 = call i32 @fflush(i8* null)
+; CHECK: %19 = ptrtoint float* %scevgep4 to i64
+; CHECK: %20 = fpext float %tmp17_p_scalar_ to double
+; CHECK: %21 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @19, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @16, i32 0, i32 0), i64 %19, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @17, i32 0, i32 0), double %20, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @18, i32 0, i32 0))
+; CHECK: %22 = call i32 @fflush(i8* null)
; CHECK: %p_tmp18 = fpext float %tmp17_p_scalar_ to double
; CHECK: %p_tmp19 = fadd double %p_tmp18, %p_tmp15
; CHECK: %p_tmp20 = fptrunc double %p_tmp19 to float
-; CHECK: %18 = ptrtoint float* %scevgep4 to i64
-; CHECK: %19 = fpext float %p_tmp20 to double
-; CHECK: %20 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @23, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @20, i32 0, i32 0), i64 %18, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @21, i32 0, i32 0), double %19, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @22, i32 0, i32 0))
-; CHECK: %21 = call i32 @fflush(i8* null)
+; CHECK: %23 = ptrtoint float* %scevgep4 to i64
+; CHECK: %24 = fpext float %p_tmp20 to double
+; CHECK: %25 = call i32 (...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @23, i32 0, i32 0), i8 addrspace(4)* getelementptr inbounds ([11 x i8], [11 x i8] addrspace(4)* @20, i32 0, i32 0), i64 %23, i8 addrspace(4)* getelementptr inbounds ([3 x i8], [3 x i8] addrspace(4)* @21, i32 0, i32 0), double %24, i8 addrspace(4)* getelementptr inbounds ([2 x i8], [2 x i8] addrspace(4)* @22, i32 0, i32 0))
+; CHECK: %26 = call i32 @fflush(i8* null)
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
@@ -104,25 +111,25 @@ bb1:
bb2: ; preds = %bb1
%tmp = getelementptr inbounds double, double* %B, i64 %i.0
- %tmp3 = load double, double* %tmp, align 8
+ %tmp3 = load double, double* %tmp
%tmp4 = getelementptr inbounds i8, i8* %C, i64 %i.0
- %tmp5 = load i8, i8* %tmp4, align 1
+ %tmp5 = load i8, i8* %tmp4
%tmp6 = sitofp i8 %tmp5 to double
%tmp7 = fadd double %tmp3, %tmp6
%tmp8 = getelementptr inbounds i32, i32* %D, i64 %i.0
- %tmp9 = load i32, i32* %tmp8, align 4
+ %tmp9 = load i32, i32* %tmp8
%tmp10 = sitofp i32 %tmp9 to double
%tmp11 = fadd double %tmp7, %tmp10
%tmp12 = getelementptr inbounds i64, i64* %E, i64 %i.0
- %tmp13 = load i64, i64* %tmp12, align 8
+ %tmp13 = load i64, i64* %tmp12
%tmp14 = sitofp i64 %tmp13 to double
%tmp15 = fadd double %tmp11, %tmp14
%tmp16 = getelementptr inbounds float, float* %A, i64 %i.0
- %tmp17 = load float, float* %tmp16, align 4
+ %tmp17 = load float, float* %tmp16
%tmp18 = fpext float %tmp17 to double
%tmp19 = fadd double %tmp18, %tmp15
%tmp20 = fptrunc double %tmp19 to float
- store float %tmp20, float* %tmp16, align 4
+ store float %tmp20, float* %tmp16
br label %bb21
bb21: ; preds = %bb2
@@ -135,11 +142,11 @@ bb23:
define i32 @main() {
bb:
- %A = alloca [10 x float], align 16
- %B = alloca [10 x double], align 16
- %C = alloca [10 x i8], align 1
- %D = alloca [10 x i32], align 16
- %E = alloca [10 x i64], align 16
+ %A = alloca [10 x float]
+ %B = alloca [10 x double]
+ %C = alloca [10 x i8]
+ %D = alloca [10 x i32]
+ %E = alloca [10 x i64]
br label %bb1
bb1: ; preds = %bb7, %bb
@@ -150,15 +157,15 @@ bb1:
bb2: ; preds = %bb1
fence seq_cst
%tmp = getelementptr inbounds [10 x i64], [10 x i64]* %E, i64 0, i64 %i.0
- store i64 42, i64* %tmp, align 8
+ store i64 42, i64* %tmp
%tmp3 = getelementptr inbounds [10 x i32], [10 x i32]* %D, i64 0, i64 %i.0
- store i32 42, i32* %tmp3, align 4
+ store i32 42, i32* %tmp3
%tmp4 = getelementptr inbounds [10 x i8], [10 x i8]* %C, i64 0, i64 %i.0
- store i8 42, i8* %tmp4, align 1
+ store i8 42, i8* %tmp4
%tmp5 = getelementptr inbounds [10 x double], [10 x double]* %B, i64 0, i64 %i.0
- store double 4.200000e+01, double* %tmp5, align 8
+ store double 4.200000e+01, double* %tmp5
%tmp6 = getelementptr inbounds [10 x float], [10 x float]* %A, i64 0, i64 %i.0
- store float 4.200000e+01, float* %tmp6, align 4
+ store float 4.200000e+01, float* %tmp6
br label %bb7
bb7: ; preds = %bb2
@@ -173,7 +180,7 @@ bb9:
%tmp14 = getelementptr inbounds [10 x i64], [10 x i64]* %E, i64 0, i64 0
call void @foo(float* %tmp10, double* %tmp11, i8* %tmp12, i32* %tmp13, i64* %tmp14)
%tmp15 = getelementptr inbounds [10 x float], [10 x float]* %A, i64 0, i64 8
- %tmp16 = load float, float* %tmp15, align 16
+ %tmp16 = load float, float* %tmp15
%tmp17 = fptosi float %tmp16 to i32
ret i32 %tmp17
}
Modified: polly/trunk/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll (original)
+++ polly/trunk/test/Isl/CodeGen/aliasing_different_base_and_access_type.ll Mon Jun 6 04:57:41 2016
@@ -3,7 +3,7 @@
; We have to cast %B to "short *" before we create RTCs.
;
; CHECK: %polly.access.cast.B = bitcast i32* %B to i16*
-; CHECK-NEXT: %polly.access.B = getelementptr i16, i16* %polly.access.cast.B, i64 1024
+; CHECK-NEXT: %polly.access.B = getelementptr i16, i16* %polly.access.cast.B, i12 1024
;
; We should never access %B as an i32 pointer:
;
Modified: polly/trunk/test/Isl/CodeGen/aliasing_different_pointer_types.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/aliasing_different_pointer_types.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/aliasing_different_pointer_types.ll (original)
+++ polly/trunk/test/Isl/CodeGen/aliasing_different_pointer_types.ll Mon Jun 6 04:57:41 2016
@@ -4,13 +4,13 @@
; them in the RTC's. We use i8* as max pointer type.
;
; CHECK: polly.split_new_and_old:
-; CHECK: %polly.access.B = getelementptr float*, float** %B, i64 1024
-; CHECK: %polly.access.A = getelementptr double*, double** %A, i64 0
+; CHECK: %polly.access.B = getelementptr float*, float** %B, i12 1024
+; CHECK: %polly.access.A = getelementptr double*, double** %A, i1 false
; CHECK: %[[paBb:[._a-zA-Z0-9]]] = ptrtoint float** %polly.access.B to i64
; CHECK: %[[paAb:[._a-zA-Z0-9]]] = ptrtoint double** %polly.access.A to i64
; CHECK: %[[ALeB:[._a-zA-Z0-9]]] = icmp ule i64 %[[paBb]], %[[paAb]]
-; CHECK: %polly.access.A1 = getelementptr double*, double** %A, i64 1024
-; CHECK: %polly.access.B2 = getelementptr float*, float** %B, i64 0
+; CHECK: %polly.access.A1 = getelementptr double*, double** %A, i12 1024
+; CHECK: %polly.access.B2 = getelementptr float*, float** %B, i1 false
; CHECK: %[[paA1b:[._a-zA-Z0-9]]] = ptrtoint double** %polly.access.A1 to i64
; CHECK: %[[paB2b:[._a-zA-Z0-9]]] = ptrtoint float** %polly.access.B2 to i64
; CHECK: %[[A1LeB2:[._a-zA-Z0-9]]] = icmp ule i64 %[[paA1b]], %[[paB2b]]
Modified: polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_1.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_1.ll (original)
+++ polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_1.ll Mon Jun 6 04:57:41 2016
@@ -5,26 +5,21 @@
; A[i] = B[c];
; }
;
-; CHECK: %[[Cext:[._a-zA-Z0-9]*]] = sext i32 %c to i64
-; CHECK: %[[Cp1:[._a-zA-Z0-9]*]] = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %[[Cext]], i64 1)
-; CHECK: %[[Cp1O:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[Cp1]], 1
-; CHECK: %[[OS:[._a-zA-Z0-9]*]] = or i1 false, %[[Cp1O]]
-; CHECK: %[[Cp1R:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[Cp1]], 0
-; CHECK: %[[BMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i64 %[[Cp1R]]
-; CHECK: %[[AMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 0
+; CHECK: %[[Cext:[._a-zA-Z0-9]*]] = sext i32 %c to i33
+; CHECK: %[[Cp1:[._a-zA-Z0-9]*]] = add nsw i33 %[[Cext]], 1
+; CHECK: %[[BMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i33 %[[Cp1]]
+; CHECK: %[[AMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i1 false
; CHECK: %[[BMaxI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[BMax]] to i64
; CHECK: %[[AMinI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[AMin]] to i64
; CHECK: %[[BltA:[._a-zA-Z0-9]*]] = icmp ule i64 %[[BMaxI]], %[[AMinI]]
-; CHECK: %[[AMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 1024
+; CHECK: %[[AMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i12 1024
; CHECK: %[[BMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i32 %c
; CHECK: %[[AMaxI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[AMax]] to i64
; CHECK: %[[BMinI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[BMin]] to i64
; CHECK: %[[AltB:[._a-zA-Z0-9]*]] = icmp ule i64 %[[AMaxI]], %[[BMinI]]
; CHECK: %[[NoAlias:[._a-zA-Z0-9]*]] = or i1 %[[BltA]], %[[AltB]]
; CHECK: %[[RTC:[._a-zA-Z0-9]*]] = and i1 true, %[[NoAlias]]
-; CHECK: %[[NOV:[._a-zA-Z0-9]*]] = xor i1 %[[OS]], true
-; CHECK: %[[RTCV:[._a-zA-Z0-9]*]] = and i1 %[[RTC]], %[[NOV]]
-; CHECK: br i1 %[[RTCV]], label %polly.start, label %for.cond
+; CHECK: br i1 %[[RTC]], label %polly.start, label %for.cond
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_2.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_2.ll (original)
+++ polly/trunk/test/Isl/CodeGen/aliasing_parametric_simple_2.ll Mon Jun 6 04:57:41 2016
@@ -6,35 +6,27 @@
; }
;
; CHECK: %[[Ctx:[._a-zA-Z0-9]*]] = and i1 true
-; CHECK-NEXT: %[[M0:[._a-zA-Z0-9]*]] = sext i32 %c to i64
-; CHECK-NEXT: %[[M3:[._a-zA-Z0-9]*]] = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %[[M0]], i64 9)
-; CHECK-NEXT: %[[M3O:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[M3]], 1
-; CHECK-NEXT: %[[OS0:[._a-zA-Z0-9]*]] = or i1 false, %[[M3O]]
-; CHECK-NEXT: %[[M3R:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[M3]], 0
-; CHECK-NEXT: %[[M1:[._a-zA-Z0-9]*]] = icmp sgt i64 6, %[[M3R]]
-; CHECK-NEXT: %[[M4:[._a-zA-Z0-9]*]] = select i1 %[[M1]], i64 6, i64 %[[M3R]]
-; CHECK-NEXT: %[[BMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i64 %[[M4]]
-; CHECK-NEXT: %[[AMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 0
+; CHECK-NEXT: %[[M0:[._a-zA-Z0-9]*]] = sext i32 %c to i33
+; CHECK-NEXT: %[[M3:[._a-zA-Z0-9]*]] = sub nsw i33 %[[M0]], 9
+; CHECK-NEXT: %[[M1:[._a-zA-Z0-9]*]] = icmp sgt i33 6, %[[M3]]
+; CHECK-NEXT: %[[M4:[._a-zA-Z0-9]*]] = select i1 %[[M1]], i33 6, i33 %[[M3]]
+; CHECK-NEXT: %[[BMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i33 %[[M4]]
+; CHECK-NEXT: %[[AMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i1 false
; CHECK-NEXT: %[[BMaxI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[BMax]] to i64
; CHECK-NEXT: %[[AMinI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[AMin]] to i64
; CHECK-NEXT: %[[BltA:[._a-zA-Z0-9]*]] = icmp ule i64 %[[BMaxI]], %[[AMinI]]
-; CHECK-NEXT: %[[AMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 1024
-; CHECK-NEXT: %[[m0:[._a-zA-Z0-9]*]] = sext i32 %c to i64
-; CHECK-NEXT: %[[m3:[._a-zA-Z0-9]*]] = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %[[m0]], i64 10)
-; CHECK-NEXT: %[[m3O:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[m3]], 1
-; CHECK-NEXT: %[[OS1:[._a-zA-Z0-9]*]] = or i1 %[[OS0]], %[[m3O]]
-; CHECK-NEXT: %[[m3R:[._a-zA-Z0-9]*]] = extractvalue { i64, i1 } %[[m3]], 0
-; CHECK-NEXT: %[[m1:[._a-zA-Z0-9]*]] = icmp slt i64 5, %[[m3R]]
-; CHECK-NEXT: %[[m4:[._a-zA-Z0-9]*]] = select i1 %[[m1]], i64 5, i64 %[[m3R]]
-; CHECK-NEXT: %[[BMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i64 %[[m4]]
+; CHECK-NEXT: %[[AMax:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i12 1024
+; CHECK-NEXT: %[[m0:[._a-zA-Z0-9]*]] = sext i32 %c to i33
+; CHECK-NEXT: %[[m3:[._a-zA-Z0-9]*]] = sub nsw i33 %[[m0]], 10
+; CHECK-NEXT: %[[m1:[._a-zA-Z0-9]*]] = icmp slt i33 5, %[[m3]]
+; CHECK-NEXT: %[[m4:[._a-zA-Z0-9]*]] = select i1 %[[m1]], i33 5, i33 %[[m3]]
+; CHECK-NEXT: %[[BMin:[._a-zA-Z0-9]*]] = getelementptr i32, i32* %B, i33 %[[m4]]
; CHECK-NEXT: %[[AMaxI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[AMax]] to i64
; CHECK-NEXT: %[[BMinI:[._a-zA-Z0-9]*]] = ptrtoint i32* %[[BMin]] to i64
; CHECK-NEXT: %[[AltB:[._a-zA-Z0-9]*]] = icmp ule i64 %[[AMaxI]], %[[BMinI]]
; CHECK-NEXT: %[[NoAlias:[._a-zA-Z0-9]*]] = or i1 %[[BltA]], %[[AltB]]
; CHECK-NEXT: %[[RTC:[._a-zA-Z0-9]*]] = and i1 %[[Ctx]], %[[NoAlias]]
-; CHECK-NEXT: %[[NOV:[._a-zA-Z0-9]*]] = xor i1 %[[OS1]], true
-; CHECK-NEXT: %[[RTCV:[._a-zA-Z0-9]*]] = and i1 %[[RTC]], %[[NOV]]
-; CHECK-NEXT: br i1 %[[RTCV]], label %polly.start, label %for.cond
+; CHECK-NEXT: br i1 %[[RTC]], label %polly.start, label %for.cond
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/aliasing_struct_element.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/aliasing_struct_element.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/aliasing_struct_element.ll (original)
+++ polly/trunk/test/Isl/CodeGen/aliasing_struct_element.ll Mon Jun 6 04:57:41 2016
@@ -11,7 +11,7 @@
; compute runtime alias checks but treat it as if it was a char array.
;
; CHECK: %polly.access.cast.S = bitcast %struct.st* %S to i8*
-; CHECK: %polly.access.S = getelementptr i8, i8* %polly.access.cast.S, i64 1424
+; CHECK: %polly.access.S = getelementptr i8, i8* %polly.access.cast.S, i12 1424
;
; struct st {
; int Dummy[100];
Modified: polly/trunk/test/Isl/CodeGen/annotated_alias_scopes.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/annotated_alias_scopes.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/annotated_alias_scopes.ll (original)
+++ polly/trunk/test/Isl/CodeGen/annotated_alias_scopes.ll Mon Jun 6 04:57:41 2016
@@ -3,11 +3,14 @@
; Check that we create alias scopes that indicate the accesses to A, B and C cannot alias in any way.
;
; SCOPES-LABEL: polly.stmt.for.body:
-; SCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %B, i64 %polly.indvar
+; SCOPES: %[[R0:[0-9]*]] = zext i11 %polly.indvar to i64
+; SCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %B, i64 %[[R0]]
; SCOPES: load i32, i32* %[[BIdx]], align 4, !alias.scope ![[AliasScopeB:[0-9]*]], !noalias ![[NoAliasB:[0-9]*]]
-; SCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} float* %C, i64 %polly.indvar
+; SCOPES: %[[R1:[0-9]*]] = zext i11 %polly.indvar to i64
+; SCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} float* %C, i64 %[[R1]]
; SCOPES: load float, float* %[[CIdx]], align 4, !alias.scope ![[AliasScopeC:[0-9]*]], !noalias ![[NoAliasC:[0-9]*]]
-; SCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %A, i64 %polly.indvar
+; SCOPES: %[[R2:[0-9]*]] = zext i11 %polly.indvar to i64
+; SCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} i32* %A, i64 %[[R2]]
; SCOPES: store i32 %{{[._a-zA-Z0-9]*}}, i32* %[[AIdx]], align 4, !alias.scope ![[AliasScopeA:[0-9]*]], !noalias ![[NoAliasA:[0-9]*]]
;
; SCOPES: ![[AliasScopeB]] = distinct !{![[AliasScopeB]], !{{[0-9]*}}, !"polly.alias.scope.B"}
Modified: polly/trunk/test/Isl/CodeGen/invariant_cannot_handle_void.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_cannot_handle_void.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_cannot_handle_void.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_cannot_handle_void.ll Mon Jun 6 04:57:41 2016
@@ -18,7 +18,7 @@
;
; CHECK-LABEL: polly.preload.begin:
; CHECK-NEXT: %polly.access.cast.buff = bitcast i8* %buff to i16*
-; CHECK-NEXT: %polly.access.buff = getelementptr i16, i16* %polly.access.cast.buff, i64 31
+; CHECK-NEXT: %polly.access.buff = getelementptr i16, i16* %polly.access.cast.buff, i6 31
; CHECK-NEXT: %polly.access.buff.cast = bitcast i16* %polly.access.buff to i32*
; CHECK-NEXT: %polly.access.buff.load = load i32, i32* %polly.access.buff.cast, align 4
; CHECK-NEXT: store i32 %polly.access.buff.load, i32* %tmp1.preload.s2a
Modified: polly/trunk/test/Isl/CodeGen/invariant_load.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load.ll Mon Jun 6 04:57:41 2016
@@ -1,11 +1,12 @@
; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK-NEXT: %polly.access.B = getelementptr i32, i32* %B, i64 0
+; CHECK-NEXT: %polly.access.B = getelementptr i32, i32* %B, i1 false
; CHECK-NEXT: %polly.access.B.load = load i32, i32* %polly.access.B
;
; CHECK-LABEL: polly.stmt.bb2:
-; CHECK-NEXT: %scevgep = getelementptr i32, i32* %A, i64 %polly.indvar
+; CHECK-NEXT: %[[R:[0-9]*]] = zext i11 %polly.indvar to i64
+; CHECK-NEXT: %scevgep = getelementptr i32, i32* %A, i64 %[[R]]
; CHECK-NEXT: store i32 %polly.access.B.load, i32* %scevgep, align 4
;
; void f(int *restrict A, int *restrict B) {
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer.ll Mon Jun 6 04:57:41 2016
@@ -1,11 +1,12 @@
; RUN: opt %loadPolly -polly-codegen -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK-NEXT: %polly.access.BPLoc = getelementptr i32*, i32** %BPLoc, i64 0
+; CHECK-NEXT: %polly.access.BPLoc = getelementptr i32*, i32** %BPLoc, i1 false
; CHECK-NEXT: %polly.access.BPLoc.load = load i32*, i32** %polly.access.BPLoc
;
; CHECK-LABEL: polly.stmt.bb2:
-; CHECK-NEXT: %p_tmp3 = getelementptr inbounds i32, i32* %polly.access.BPLoc.load, i64 %polly.indvar
+; CHECK-NEXT: %[[R:[0-9]*]] = zext i11 %polly.indvar to i64
+; CHECK-NEXT: %p_tmp3 = getelementptr inbounds i32, i32* %polly.access.BPLoc.load, i64 %[[R]]
;
; void f(int **BPLoc) {
; for (int i = 0; i < 1024; i++)
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional.ll Mon Jun 6 04:57:41 2016
@@ -1,18 +1,18 @@
; RUN: opt %loadPolly -polly-codegen -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK-NEXT: %0 = sext i32 %N to i64
-; CHECK-NEXT: %1 = icmp sge i64 %0, 514
+; CHECK-NEXT: %0 = icmp sge i32 %N, 514
; CHECK-NEXT: br label %polly.preload.cond
;
; CHECK-LABEL: polly.preload.cond:
-; CHECK-NEXT: br i1 %1, label %polly.preload.exec, label %polly.preload.merge
+; CHECK-NEXT: br i1 %0, label %polly.preload.exec, label %polly.preload.merge
;
; CHECK-LABEL: polly.preload.merge:
; CHECK-NEXT: %polly.preload.tmp6.merge = phi i32* [ %polly.access.BPLoc.load, %polly.preload.exec ], [ null, %polly.preload.cond ]
;
; CHECK-LABEL: polly.stmt.bb5:
-; CHECK-NEXT: %p_tmp7 = getelementptr inbounds i32, i32* %polly.preload.tmp6.merge, i64 %polly.indvar6
+; CHECK-NEXT: %[[R:[0-9]*]] = zext i32 %polly.indvar6 to i64
+; CHECK-NEXT: %p_tmp7 = getelementptr inbounds i32, i32* %polly.preload.tmp6.merge, i64 %[[R]]
;
; void f(int **BPLoc, int *A, int N) {
; for (int i = 0; i < N; i++)
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional_2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional_2.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional_2.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_base_pointer_conditional_2.ll Mon Jun 6 04:57:41 2016
@@ -14,66 +14,56 @@
; CHECK-NEXT: Execution Context: [N, p, q] -> { : N > 0 }
; CHECK-NEXT: }
;
-; IR: polly.preload.merge:
+; IR: polly.preload.merge:
; IR-NEXT: %polly.preload.tmp1.merge = phi i32* [ %polly.access.I.load, %polly.preload.exec ], [ null, %polly.preload.cond ]
; IR-NEXT: store i32* %polly.preload.tmp1.merge, i32** %tmp1.preload.s2a
-; IR-NEXT: %12 = sext i32 %N to i64
-; IR-NEXT: %13 = icmp sge i64 %12, 1
-; IR-NEXT: %14 = sext i32 %p to i64
-; IR-NEXT: %15 = sext i32 %q to i64
-; IR-NEXT: %16 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %14, i64 %15)
-; IR-NEXT: %.obit4 = extractvalue { i64, i1 } %16, 1
-; IR-NEXT: %polly.overflow.state5 = or i1 false, %.obit4
-; IR-NEXT: %.res6 = extractvalue { i64, i1 } %16, 0
-; IR-NEXT: %17 = icmp sle i64 %.res6, 2147483647
-; IR-NEXT: %18 = and i1 %13, %17
-; IR-NEXT: %19 = sext i32 %p to i64
-; IR-NEXT: %20 = sext i32 %q to i64
-; IR-NEXT: %21 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %19, i64 %20)
-; IR-NEXT: %.obit7 = extractvalue { i64, i1 } %21, 1
-; IR-NEXT: %polly.overflow.state8 = or i1 %polly.overflow.state5, %.obit7
-; IR-NEXT: %.res9 = extractvalue { i64, i1 } %21, 0
-; IR-NEXT: %22 = icmp sge i64 %.res9, -2147483648
-; IR-NEXT: %23 = and i1 %18, %22
-; IR-NEXT: %polly.preload.cond.overflown10 = xor i1 %polly.overflow.state8, true
-; IR-NEXT: %polly.preload.cond.result11 = and i1 %23, %polly.preload.cond.overflown10
-; IR-NEXT: br label %polly.preload.cond12
-;
-; IR: polly.preload.cond12:
-; IR-NEXT: br i1 %polly.preload.cond.result11
-;
-; IR: polly.preload.exec14:
-; IR-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i64 0
+; IR-NEXT: %11 = icmp sge i32 %N, 1
+; IR-NEXT: %12 = sext i32 %p to i33
+; IR-NEXT: %13 = sext i32 %q to i33
+; IR-NEXT: %14 = add nsw i33 %12, %13
+; IR-NEXT: %15 = icmp sle i33 %14, 2147483647
+; IR-NEXT: %16 = and i1 %11, %15
+; IR-NEXT: %17 = sext i32 %p to i33
+; IR-NEXT: %18 = sext i32 %q to i33
+; IR-NEXT: %19 = add nsw i33 %17, %18
+; IR-NEXT: %20 = icmp sge i33 %19, -2147483648
+; IR-NEXT: %21 = and i1 %16, %20
+; IR-NEXT: br label %polly.preload.cond1
+;
+; IR: polly.preload.cond1:
+; IR-NEXT: br i1 %21, label %polly.preload.exec3, label %polly.preload.merge2
+
+; IR: polly.preload.exec3:
+; IR-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i1 false
; IR-NEXT: %polly.access.polly.preload.tmp1.merge.load = load i32, i32* %polly.access.polly.preload.tmp1.merge, align 4
;
; IRA: polly.preload.merge:
; IRA-NEXT: %polly.preload.tmp1.merge = phi i32* [ %polly.access.I.load, %polly.preload.exec ], [ null, %polly.preload.cond ]
; IRA-NEXT: store i32* %polly.preload.tmp1.merge, i32** %tmp1.preload.s2a
-; IRA-NEXT: %12 = sext i32 %N to i64
-; IRA-NEXT: %13 = icmp sge i64 %12, 1
-; IRA-NEXT: %14 = sext i32 %p to i64
-; IRA-NEXT: %15 = sext i32 %q to i64
-; IRA-NEXT: %16 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %14, i64 %15)
-; IRA-NEXT: %.obit5 = extractvalue { i64, i1 } %16, 1
-; IRA-NEXT: %.res6 = extractvalue { i64, i1 } %16, 0
-; IRA-NEXT: %17 = icmp sle i64 %.res6, 2147483647
-; IRA-NEXT: %18 = and i1 %13, %17
-; IRA-NEXT: %19 = sext i32 %p to i64
-; IRA-NEXT: %20 = sext i32 %q to i64
-; IRA-NEXT: %21 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %19, i64 %20)
-; IRA-NEXT: %.obit7 = extractvalue { i64, i1 } %21, 1
-; IRA-NEXT: %.res8 = extractvalue { i64, i1 } %21, 0
-; IRA-NEXT: %22 = icmp sge i64 %.res8, -2147483648
-; IRA-NEXT: %23 = and i1 %18, %22
+; IRA-NEXT: %11 = icmp sge i32 %N, 1
+; IRA-NEXT: %12 = sext i32 %p to i33
+; IRA-NEXT: %13 = sext i32 %q to i33
+; IRA-NEXT: %14 = call { i33, i1 } @llvm.sadd.with.overflow.i33(i33 %12, i33 %13)
+; IRA-NEXT: %.obit5 = extractvalue { i33, i1 } %14, 1
+; IRA-NEXT: %.res6 = extractvalue { i33, i1 } %14, 0
+; IRA-NEXT: %15 = icmp sle i33 %.res6, 2147483647
+; IRA-NEXT: %16 = and i1 %11, %15
+; IRA-NEXT: %17 = sext i32 %p to i33
+; IRA-NEXT: %18 = sext i32 %q to i33
+; IRA-NEXT: %19 = call { i33, i1 } @llvm.sadd.with.overflow.i33(i33 %17, i33 %18)
+; IRA-NEXT: %.obit7 = extractvalue { i33, i1 } %19, 1
+; IRA-NEXT: %.res8 = extractvalue { i33, i1 } %19, 0
+; IRA-NEXT: %20 = icmp sge i33 %.res8, -2147483648
+; IRA-NEXT: %21 = and i1 %16, %20
; IRA-NEXT: %polly.preload.cond.overflown9 = xor i1 %.obit7, true
-; IRA-NEXT: %polly.preload.cond.result10 = and i1 %23, %polly.preload.cond.overflown9
+; IRA-NEXT: %polly.preload.cond.result10 = and i1 %21, %polly.preload.cond.overflown9
; IRA-NEXT: br label %polly.preload.cond11
;
; IRA: polly.preload.cond11:
; IRA-NEXT: br i1 %polly.preload.cond.result10
;
; IRA: polly.preload.exec13:
-; IRA-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i64 0
+; IRA-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i1 false
; IRA-NEXT: %polly.access.polly.preload.tmp1.merge.load = load i32, i32* %polly.access.polly.preload.tmp1.merge, align 4
;
; void f(int **I, int *A, int N, int p, int q) {
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_condition.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_condition.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_condition.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_condition.ll Mon Jun 6 04:57:41 2016
@@ -1,17 +1,15 @@
; RUN: opt %loadPolly -polly-process-unprofitable -polly-codegen -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK-NEXT: %polly.access.C = getelementptr i32, i32* %C, i64 0
+; CHECK-NEXT: %polly.access.C = getelementptr i32, i32* %C, i1 false
; CHECK-NEXT: %polly.access.C.load = load i32, i32* %polly.access.C
; CHECK-NOT: %polly.access.C.load = load i32, i32* %polly.access.C
;
; CHECK: polly.cond
-; CHECK: %[[R0:[0-9]*]] = sext i32 %polly.access.C.load to i64
-; CHECK: %[[R1:[0-9]*]] = icmp sle i64 %[[R0]], -1
+; CHECK: %[[R1:[0-9]*]] = icmp sle i32 %polly.access.C.load, -1
;
; CHECK: polly.cond
-; CHECK: %[[R2:[0-9]*]] = sext i32 %polly.access.C.load to i64
-; CHECK: %[[R3:[0-9]*]] = icmp sge i64 %[[R2]], 1
+; CHECK: %[[R3:[0-9]*]] = icmp sge i32 %polly.access.C.load, 1
;
; CHECK-NOT: polly.stmt.bb2
;
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_different_sized_types.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_different_sized_types.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_different_sized_types.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_different_sized_types.ll Mon Jun 6 04:57:41 2016
@@ -5,7 +5,7 @@ target datalayout = "e-m:e-i64:64-f80:12
; CHECK: polly.preload.begin: ; preds = %polly.split_new_and_old
; CHECK-NEXT: %polly.access.cast.tmp2 = bitcast %struct.hoge* %tmp2 to i32*
-; CHECK-NEXT: %polly.access.tmp2 = getelementptr i32, i32* %polly.access.cast.tmp2, i64 1
+; CHECK-NEXT: %polly.access.tmp2 = getelementptr i32, i32* %polly.access.cast.tmp2, i2 1
; CHECK-NEXT: %polly.access.tmp2.load = load i32, i32* %polly.access.tmp2, align 1
; CHECK-NEXT: store i32 %polly.access.tmp2.load, i32* %tmp.preload.s2a
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_escaping.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_escaping.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_escaping.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_escaping.ll Mon Jun 6 04:57:41 2016
@@ -16,7 +16,7 @@
; }
;
; CHECK: polly.preload.begin:
-; CHECK: %polly.access.B = getelementptr i32, i32* %B, i64 0
+; CHECK: %polly.access.B = getelementptr i32, i32* %B, i1 false
; CHECK: %polly.access.B.load = load i32, i32* %polly.access.B
; CHECK: store i32 %polly.access.B.load, i32* %tmp.preload.s2a
;
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_escaping_second_scop.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_escaping_second_scop.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_escaping_second_scop.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_escaping_second_scop.ll Mon Jun 6 04:57:41 2016
@@ -19,7 +19,8 @@
; }
;
; CHECK: polly.stmt.stmt.P:
-; CHECK: sext i32 %tmp.merge to i64
+; CHECK: %polly.fdiv_q.shr = ashr i32 %tmp.merge, 1
+; CHECL: sext i32 %polly.fdiv_q.shr to i33
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_ptr_ptr_noalias.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_ptr_ptr_noalias.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_ptr_ptr_noalias.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_ptr_ptr_noalias.ll Mon Jun 6 04:57:41 2016
@@ -1,13 +1,14 @@
; RUN: opt %loadPolly -polly-process-unprofitable -polly-codegen -polly-ignore-aliasing -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK: %polly.access.A = getelementptr i32**, i32*** %A, i64 42
+; CHECK: %polly.access.A = getelementptr i32**, i32*** %A, i7 42
; CHECK: %polly.access.A.load = load i32**, i32*** %polly.access.A
-; CHECK: %polly.access.polly.access.A.load = getelementptr i32*, i32** %polly.access.A.load, i64 32
+; CHECK: %polly.access.polly.access.A.load = getelementptr i32*, i32** %polly.access.A.load, i7 32
; CHECK: %polly.access.polly.access.A.load.load = load i32*, i32** %polly.access.polly.access.A.load
;
; CHECK: polly.stmt.bb2:
-; CHECK: %p_tmp6 = getelementptr inbounds i32, i32* %polly.access.polly.access.A.load.load, i64 %polly.indvar
+; CHECK: %[[R:[0-9]]] = zext i11 %polly.indvar to i64
+; CHECK: %p_tmp6 = getelementptr inbounds i32, i32* %polly.access.polly.access.A.load.load, i64 %[[R]]
; CHECK: store i32 0, i32* %p_tmp6, align 4
;
; void f(int ***A) {
Modified: polly/trunk/test/Isl/CodeGen/invariant_load_scalar_dep.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/invariant_load_scalar_dep.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/invariant_load_scalar_dep.ll (original)
+++ polly/trunk/test/Isl/CodeGen/invariant_load_scalar_dep.ll Mon Jun 6 04:57:41 2016
@@ -1,11 +1,12 @@
; RUN: opt %loadPolly -polly-codegen -polly-ignore-aliasing -polly-process-unprofitable -S < %s | FileCheck %s
;
; CHECK-LABEL: polly.preload.begin:
-; CHECK: %polly.access.B = getelementptr i32, i32* %B, i64 0
+; CHECK: %polly.access.B = getelementptr i32, i32* %B, i1 false
; CHECK: %polly.access.B.load = load i32, i32* %polly.access.B
;
; CHECK-LABEL: polly.stmt.bb2.split:
-; CHECK: %scevgep = getelementptr i32, i32* %A, i64 %polly.indvar
+; CHECK: %[[R:[0-9]*]] = zext i11 %polly.indvar to i64
+; CHECK: %scevgep = getelementptr i32, i32* %A, i64 %[[R]]
; CHECK: store i32 %polly.access.B.load, i32* %scevgep, align 4
;
; void f(int *restrict A, int *restrict B) {
Modified: polly/trunk/test/Isl/CodeGen/multiple-types-invariant-load.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/multiple-types-invariant-load.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/multiple-types-invariant-load.ll (original)
+++ polly/trunk/test/Isl/CodeGen/multiple-types-invariant-load.ll Mon Jun 6 04:57:41 2016
@@ -1,7 +1,7 @@
; RUN: opt %loadPolly -polly-allow-differing-element-types -polly-codegen -S < %s | FileCheck %s
; CHECK: %polly.access.cast.global.load = bitcast %struct.hoge* %global.load to i32*
-; CHECK: %polly.access.global.load = getelementptr i32, i32* %polly.access.cast.global.load, i64 0
+; CHECK: %polly.access.global.load = getelementptr i32, i32* %polly.access.cast.global.load, i1 false
; CHECK: %polly.access.global.load.load = load i32, i32* %polly.access.global.load
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/no-overflow-tracking.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/no-overflow-tracking.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/no-overflow-tracking.ll (original)
+++ polly/trunk/test/Isl/CodeGen/no-overflow-tracking.ll Mon Jun 6 04:57:41 2016
@@ -16,25 +16,24 @@
; IR: polly.preload.merge:
; IR-NEXT: %polly.preload.tmp1.merge = phi i32* [ %polly.access.I.load, %polly.preload.exec ], [ null, %polly.preload.cond ]
; IR-NEXT: store i32* %polly.preload.tmp1.merge, i32** %tmp1.preload.s2a
-; IR-NEXT: %12 = sext i32 %N to i64
-; IR-NEXT: %13 = icmp sge i64 %12, 1
-; IR-NEXT: %14 = sext i32 %p to i64
-; IR-NEXT: %15 = sext i32 %q to i64
-; IR-NEXT: %16 = add nsw i64 %14, %15
-; IR-NEXT: %17 = icmp sle i64 %16, 2147483647
-; IR-NEXT: %18 = and i1 %13, %17
-; IR-NEXT: %19 = sext i32 %p to i64
-; IR-NEXT: %20 = sext i32 %q to i64
-; IR-NEXT: %21 = add nsw i64 %19, %20
-; IR-NEXT: %22 = icmp sge i64 %21, -2147483648
-; IR-NEXT: %23 = and i1 %18, %22
+; IR-NEXT: %11 = icmp sge i32 %N, 1
+; IR-NEXT: %12 = sext i32 %p to i33
+; IR-NEXT: %13 = sext i32 %q to i33
+; IR-NEXT: %14 = add nsw i33 %12, %13
+; IR-NEXT: %15 = icmp sle i33 %14, 2147483647
+; IR-NEXT: %16 = and i1 %11, %15
+; IR-NEXT: %17 = sext i32 %p to i33
+; IR-NEXT: %18 = sext i32 %q to i33
+; IR-NEXT: %19 = add nsw i33 %17, %18
+; IR-NEXT: %20 = icmp sge i33 %19, -2147483648
+; IR-NEXT: %21 = and i1 %16, %20
; IR-NEXT: br label %polly.preload.cond1
;
; IR: polly.preload.cond1:
-; IR-NEXT: br i1 %23
+; IR-NEXT: br i1 %21
;
; IR: polly.preload.exec3:
-; IR-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i64 0
+; IR-NEXT: %polly.access.polly.preload.tmp1.merge = getelementptr i32, i32* %polly.preload.tmp1.merge, i1 false
; IR-NEXT: %polly.access.polly.preload.tmp1.merge.load = load i32, i32* %polly.access.polly.preload.tmp1.merge, align 4
;
; void f(int **I, int *A, int N, int p, int q) {
Modified: polly/trunk/test/Isl/CodeGen/non-affine-switch.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/non-affine-switch.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/non-affine-switch.ll (original)
+++ polly/trunk/test/Isl/CodeGen/non-affine-switch.ll Mon Jun 6 04:57:41 2016
@@ -14,7 +14,7 @@
; }
;
; CHECK: polly.stmt.for.body:
-; CHECK: %scevgep = getelementptr i32, i32* %A, i64 %polly.indvar
+; CHECK: %scevgep = getelementptr i32, i32* %A
; CHECK: %tmp1_p_scalar_ = load i32, i32* %scevgep, align 4
; CHECK: switch i32 %tmp1_p_scalar_, label %polly.stmt.sw.epilog.exit [
; CHECK: i32 0, label %polly.stmt.sw.bb
Modified: polly/trunk/test/Isl/CodeGen/non-affine-update.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/non-affine-update.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/non-affine-update.ll (original)
+++ polly/trunk/test/Isl/CodeGen/non-affine-update.ll Mon Jun 6 04:57:41 2016
@@ -15,15 +15,16 @@
; unique within non-affine scop statements.
; CHECK: polly.stmt.bb2:
-; CHECK: %scevgep = getelementptr double, double* %A, i64 %polly.indvar
+; CHECK: %[[R:[0-9]*]] = zext i5 %polly.indvar to i64
+; CHECK: %scevgep = getelementptr double, double* %A, i64 %[[R]]
; CHECK: polly.stmt.bb9:
-; CHECK: %polly.access.C{{.*}} = getelementptr double, double* %C, i64 42
-; CHECK: %polly.access.C{{.*}} = getelementptr double, double* %C, i64 42
+; CHECK: %polly.access.C{{.*}} = getelementptr double, double* %C, i7 42
+; CHECK: %polly.access.C{{.*}} = getelementptr double, double* %C, i7 42
; CHECK: polly.stmt.bb5:
-; CHECK: %polly.access.B{{.*}} = getelementptr double, double* %B, i64 113
-; CHECK: %polly.access.B{{.*}} = getelementptr double, double* %B, i64 113
+; CHECK: %polly.access.B{{.*}} = getelementptr double, double* %B, i8 113
+; CHECK: %polly.access.B{{.*}} = getelementptr double, double* %B, i8 113
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/non_affine_float_compare.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/non_affine_float_compare.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/non_affine_float_compare.ll (original)
+++ polly/trunk/test/Isl/CodeGen/non_affine_float_compare.ll Mon Jun 6 04:57:41 2016
@@ -11,15 +11,18 @@
;
;
; CHECK: polly.stmt.bb2:
-; CHECK: %scevgep[[R0:[0-9]*]] = getelementptr float, float* %A, i64 %polly.indvar
+; CHECK: %0 = zext i11 %polly.indvar to i64
+; CHECK: %scevgep[[R0:[0-9]*]] = getelementptr float, float* %A, i64 %0
; CHECK: %tmp3_p_scalar_ = load float, float* %scevgep[[R0]], align 4, !alias.scope !0, !noalias !2
-; CHECK: %scevgep[[R2:[0-9]*]] = getelementptr float, float* %scevgep{{[0-9]*}}, i64 %polly.indvar
+; CHECK: %1 = zext i11 %polly.indvar to i64
+; CHECK: %scevgep[[R2:[0-9]*]] = getelementptr float, float* %scevgep{{[0-9]*}}, i64 %1
; CHECK: %tmp6_p_scalar_ = load float, float* %scevgep[[R2]], align 4, !alias.scope !0, !noalias !2
; CHECK: %p_tmp7 = fcmp oeq float %tmp3_p_scalar_, %tmp6_p_scalar_
; CHECK: br i1 %p_tmp7, label %polly.stmt.bb8, label %polly.stmt.bb12.[[R:[a-zA-Z_.0-9]*]]
; CHECK: polly.stmt.bb8:
-; CHECK: %scevgep[[R3:[0-9]*]] = getelementptr float, float* %A, i64 %polly.indvar
+; CHECK: %2 = zext i11 %polly.indvar to i64
+; CHECK: %scevgep[[R3:[0-9]*]] = getelementptr float, float* %A, i64 %2
; CHECK: %tmp10_p_scalar_ = load float, float* %scevgep[[R3]], align 4, !alias.scope !0, !noalias !2
; CHECK: %p_tmp11 = fadd float %tmp10_p_scalar_, 1.000000e+00
; CHECK: store float %p_tmp11, float* %scevgep[[R3]], align 4, !alias.scope !0, !noalias !2
@@ -29,12 +32,13 @@
; CHECK: br label %polly.stmt.bb12
; CHECK: polly.stmt.bb12:
-; CHECK: %scevgep[[R4:[0-9]*]] = getelementptr float, float* %A, i64 %polly.indvar
+; CHECK: %3 = zext i11 %polly.indvar to i64
+; CHECK: %scevgep[[R4:[0-9]*]] = getelementptr float, float* %A, i64 %3
; CHECK: %tmp10b_p_scalar_ = load float, float* %scevgep[[R4]], align 4, !alias.scope !0, !noalias !2
; CHECK: %p_tmp11b = fadd float %tmp10b_p_scalar_, 1.000000e+00
; CHECK: store float %p_tmp11b, float* %scevgep[[R4]], align 4, !alias.scope !0, !noalias !2
-; CHECK: %polly.indvar_next = add nsw i64 %polly.indvar, 1
-; CHECK: %polly.loop_cond = icmp sle i64 %polly.indvar, 1022
+; CHECK: %polly.indvar_next = add nsw i11 %polly.indvar, 1
+; CHECK: %polly.loop_cond = icmp sle i11 %polly.indvar, 1022
; CHECK: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/phi_conditional_simple_1.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/phi_conditional_simple_1.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/phi_conditional_simple_1.ll (original)
+++ polly/trunk/test/Isl/CodeGen/phi_conditional_simple_1.ll Mon Jun 6 04:57:41 2016
@@ -22,8 +22,7 @@
; CHECK-NEXT: %phi.phiops = alloca i32
; CHECK-LABEL: polly.stmt.if.end:
; CHECK-NEXT: %phi.phiops.reload = load i32, i32* %phi.phiops
-; CHECK-NEXT: %scevgep
-; CHECK-NEXT: store i32 %phi.phiops.reload, i32*
+; CHECK: store i32 %phi.phiops.reload, i32*
; CHECK-LABEL: polly.stmt.if.then:
; CHECK-NEXT: store i32 1, i32* %phi.phiops
; CHECK-NEXT: br label %polly.merge{{[.]?}}
Modified: polly/trunk/test/Isl/CodeGen/phi_loop_carried_float.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/phi_loop_carried_float.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/phi_loop_carried_float.ll (original)
+++ polly/trunk/test/Isl/CodeGen/phi_loop_carried_float.ll Mon Jun 6 04:57:41 2016
@@ -17,7 +17,6 @@
; CHECK-NEXT: ret
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store float 0.000000e+00, float* %tmp.0.phiops
; CHECK-LABEL: polly.exiting:
Modified: polly/trunk/test/Isl/CodeGen/phi_loop_carried_float_escape.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/phi_loop_carried_float_escape.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/phi_loop_carried_float_escape.ll (original)
+++ polly/trunk/test/Isl/CodeGen/phi_loop_carried_float_escape.ll Mon Jun 6 04:57:41 2016
@@ -16,7 +16,6 @@
; CHECK-NEXT: br label %exit
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store float 0.000000e+00, float* %tmp.0.phiops
; CHECK-LABEL: polly.exiting:
Modified: polly/trunk/test/Isl/CodeGen/phi_scalar_simple_2.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/phi_scalar_simple_2.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/phi_scalar_simple_2.ll (original)
+++ polly/trunk/test/Isl/CodeGen/phi_scalar_simple_2.ll Mon Jun 6 04:57:41 2016
@@ -28,7 +28,6 @@ entry:
; CHECK: ret i32 %x.addr.0.merge
; CHECK-LABEL: polly.start:
-; CHECK-NEXT: sext
; CHECK-NEXT: store i32 %x, i32* %x.addr.0.phiops
; CHECK-LABEL: polly.merge21:
Modified: polly/trunk/test/Isl/CodeGen/run-time-condition-with-scev-parameters.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/run-time-condition-with-scev-parameters.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/run-time-condition-with-scev-parameters.ll (original)
+++ polly/trunk/test/Isl/CodeGen/run-time-condition-with-scev-parameters.ll Mon Jun 6 04:57:41 2016
@@ -8,14 +8,11 @@
; CHECK-NEXT: %0 = zext i32 %n to i64
; CHECK: polly.split_new_and_old:
-; CHECK-NEXT: %1 = sext i32 %n to i64
-; CHECK-NEXT: %2 = icmp sge i64 %1, 1
-; CHECK-NEXT: %3 = sext i32 %n to i64
-; CHECK-NEXT: %4 = icmp sle i64 %3, -1
-; CHECK-NEXT: %5 = sext i1 %4 to i64
-; CHECK-NEXT: %6 = icmp eq i64 0, %5
-; CHECK-NEXT: %7 = and i1 %2, %6
-; CHECK-NEXT: br i1 %7, label %polly.start, label %for.body4
+; CHECK-NEXT: %1 = icmp sge i32 %n, 1
+; CHECK-NEXT: %2 = icmp sle i32 %n, -1
+; CHECK-NEXT: %3 = icmp eq i1 false, %2
+; CHECK-NEXT: %4 = and i1 %1, %3
+; CHECK-NEXT: br i1 %4, label %polly.start, label %for.body4
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/scalar-store-from-same-bb.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/scalar-store-from-same-bb.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/scalar-store-from-same-bb.ll (original)
+++ polly/trunk/test/Isl/CodeGen/scalar-store-from-same-bb.ll Mon Jun 6 04:57:41 2016
@@ -4,8 +4,8 @@
; This test ensures that the expression N + 1 that is stored in the phi-node
; alloca, is directly computed and not incorrectly transfered through memory.
-; CHECK: store i64 %2, i64* %res.phiops
-; CHECK: %2 = add i64 %N, 1
+; CHECK: store i64 %3, i64* %res.phiops
+; CHECK: %3 = add i64 %N, 1
define i64 @foo(float* %A, i64 %N) {
entry:
Modified: polly/trunk/test/Isl/CodeGen/scev_expansion_in_nonaffine.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/scev_expansion_in_nonaffine.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/scev_expansion_in_nonaffine.ll (original)
+++ polly/trunk/test/Isl/CodeGen/scev_expansion_in_nonaffine.ll Mon Jun 6 04:57:41 2016
@@ -8,12 +8,14 @@
; whole subregion.
; CHECK-LABEL: polly.stmt.if.then.110:
-; CHECK: %[[R1_1:[0-9]*]] = mul i64 %polly.indvar[[R0_1:[0-9]*]], 30
+; CHECK: %[[R1_0:[0-9]*]] = zext i32 %polly.indvar[[R0_1:[0-9]*]] to i64
+; CHECK: %[[R1_1:[0-9]*]] = mul i64 %[[R1_0]], 30
; CHECK: %scevgep[[R1_2:[0-9]*]] = getelementptr i32, i32* %scevgep{{[0-9]*}}, i64 %[[R1_1]]
; CHECK: store i32 0, i32* %scevgep[[R1_2]], align 8
; CHECK-LABEL: polly.stmt.if.else:
-; CHECK: %[[R2_1:[0-9]*]] = mul i64 %polly.indvar[[R0_1]], 30
+; CHECK: %[[R2_0:[0-9]*]] = zext i32 %polly.indvar[[R0_1]] to i64
+; CHECK: %[[R2_1:[0-9]*]] = mul i64 %[[R2_0]], 30
; CHECK: %scevgep[[R2_2:[0-9]*]] = getelementptr i32, i32* %scevgep{{[0-9]*}}, i64 %[[R2_1]]
; CHECK: store i32 21, i32* %scevgep[[R2_2]], align 8
Modified: polly/trunk/test/Isl/CodeGen/scop_never_executed_runtime_check_location.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/scop_never_executed_runtime_check_location.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/scop_never_executed_runtime_check_location.ll (original)
+++ polly/trunk/test/Isl/CodeGen/scop_never_executed_runtime_check_location.ll Mon Jun 6 04:57:41 2016
@@ -7,8 +7,7 @@
; CHECK-NEXT: %0 = zext i32 %n to i64
; CHECK-NEXT: br i1 false
;
-; CHECK: %[[T0:[._a-zA-Z0-9]]] = sext i32 %n to i64
-; CHECK: %[[T1:[._a-zA-Z0-9]]] = icmp sge i64 %[[T0]], 1
+; CHECK: %[[T1:[._a-zA-Z0-9]]] = icmp sge i32 %n, 1
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
Modified: polly/trunk/test/Isl/CodeGen/switch-in-non-affine-region.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/Isl/CodeGen/switch-in-non-affine-region.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/Isl/CodeGen/switch-in-non-affine-region.ll (original)
+++ polly/trunk/test/Isl/CodeGen/switch-in-non-affine-region.ll Mon Jun 6 04:57:41 2016
@@ -15,8 +15,7 @@
; }
;
; CHECK: polly.stmt.if.then:
-; CHECK: %1 = trunc i64 %polly.indvar to i32
-; CHECK: %p_rem = srem i32 %1, 4
+; CHECK: %p_rem = srem i32 %polly.indvar, 4
; CHECK: switch i32 %p_rem, label %polly.stmt.sw.epilog [
; CHECK: i32 0, label %polly.stmt.sw.bb
; CHECK: i32 1, label %polly.stmt.sw.bb.3
Modified: polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type.ll (original)
+++ polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type.ll Mon Jun 6 04:57:41 2016
@@ -25,7 +25,7 @@
;
; CODEGEN: %.load = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0)
; CODEGEN: store i32 %.load, i32* %S.a.preload.s2a
-; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i64 1) to float*)
+; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i2 1) to float*)
; CODEGEN: store float %.load1, float* %S.b.preload.s2a
;
; CODEGEN: polly.stmt.for.body:
Modified: polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll (original)
+++ polly/trunk/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll Mon Jun 6 04:57:41 2016
@@ -44,7 +44,7 @@
; CODEGEN: polly.preload.begin:
; CODEGEN: %.load = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0)
; CODEGEN: store i32 %.load, i32* %S.a.preload.s2a
-; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i64 1) to float*)
+; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i2 1) to float*)
; CODEGEN: store float %.load1, float* %S.b.preload.s2a
;
; CODEGEN: polly.merge_new_and_old:
Modified: polly/trunk/test/ScopInfo/invariant_load_zext_parameter.ll
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/test/ScopInfo/invariant_load_zext_parameter.ll?rev=271878&r1=271877&r2=271878&view=diff
==============================================================================
--- polly/trunk/test/ScopInfo/invariant_load_zext_parameter.ll (original)
+++ polly/trunk/test/ScopInfo/invariant_load_zext_parameter.ll Mon Jun 6 04:57:41 2016
@@ -20,15 +20,14 @@
; CHECK-NEXT: [loadI0] -> { Stmt_if_then[i0] : loadI0 = 0 and 0 <= i0 <= 999 };
;
; CODEGEN: polly.preload.begin:
-; CODEGEN-NEXT: %polly.access.I0 = getelementptr i32, i32* %I0, i64 0
+; CODEGEN-NEXT: %polly.access.I0 = getelementptr i32, i32* %I0, i1 false
; CODEGEN-NEXT: %polly.access.I0.load = load i32, i32* %polly.access.I0
; CODEGEN-NEXT: store i32 %polly.access.I0.load, i32* %loadI0.preload.s2a
-; CODEGEN-NEXT: %0 = sext i32 %polly.access.I0.load to i64
-; CODEGEN-NEXT: %1 = icmp eq i64 %0, 0
+; CODEGEN-NEXT: %0 = icmp eq i32 %polly.access.I0.load, 0
; CODEGEN-NEXT: br label %polly.preload.cond
;
; CODEGEN: polly.preload.cond:
-; CODEGEN-NEXT: br i1 %1, label %polly.preload.exec, label %polly.preload.merge
+; CODEGEN-NEXT: br i1 %0, label %polly.preload.exec, label %polly.preload.merge
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
More information about the llvm-commits
mailing list