================ @@ -289,17 +289,19 @@ void setFour(inout int I) { // CHECK: [[B:%.*]] = alloca %struct.B // CHECK: [[Tmp:%.*]] = alloca i32 -// CHECK: [[BFLoad:%.*]] = load i32, ptr [[B]] -// CHECK: [[BFshl:%.*]] = shl i32 [[BFLoad]], 24 -// CHECK: [[BFashr:%.*]] = ashr i32 [[BFshl]], 24 -// CHECK: store i32 [[BFashr]], ptr [[Tmp]] +// CHECK: [[BFLoad:%.*]] = load i16, ptr [[B]] +// CHECK: [[BFshl:%.*]] = shl i16 [[BFLoad]], 8 +// CHECK: [[BFashr:%.*]] = ashr i16 [[BFshl]], 8 +// CHECK: [[BFcast:%.*]] = sext i16 [[BFashr]] to i32 +// CHECK: store i32 [[BFcast]], ptr [[Tmp]] // CHECK: call void {{.*}}setFour{{.*}}(ptr noalias noundef nonnull align 4 dereferenceable(4) [[Tmp]]) // CHECK: [[RetVal:%.*]] = load i32, ptr [[Tmp]] -// CHECK: [[BFLoad:%.*]] = load i32, ptr [[B]] -// CHECK: [[BFValue:%.*]] = and i32 [[RetVal]], 255 -// CHECK: [[ZerodField:%.*]] = and i32 [[BFLoad]], -256 -// CHECK: [[BFSet:%.*]] = or i32 [[ZerodField]], [[BFValue]] -// CHECK: store i32 [[BFSet]], ptr [[B]] +// CHECK: [[TruncVal:%.*]] = trunc i32 [[RetVal]] to i16 +// CHECK: [[BFLoad:%.*]] = load i16, ptr [[B]] +// CHECK: [[BFValue:%.*]] = and i16 [[TruncVal]], 255 +// CHECK: [[ZerodField:%.*]] = and i16 [[BFLoad]], -256 +// CHECK: [[BFSet:%.*]] = or i16 [[ZerodField]], [[BFValue]] +// CHECK: store i16 [[BFSet]], ptr [[B]] ---------------- pow2clk wrote:
This is an instance of using smaller types where possible. Doing so introduced some additional commands. https://github.com/llvm/llvm-project/pull/111632 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits