Index: lib/Target/X86/X86TargetTransformInfo.cpp =================================================================== --- lib/Target/X86/X86TargetTransformInfo.cpp +++ lib/Target/X86/X86TargetTransformInfo.cpp @@ -731,7 +731,7 @@ { ISD::TRUNCATE, MVT::v16i16, MVT::v16i32, 6 }, { ISD::TRUNCATE, MVT::v8i16, MVT::v8i32, 3 }, { ISD::TRUNCATE, MVT::v4i16, MVT::v4i32, 1 }, - { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 30 }, + { ISD::TRUNCATE, MVT::v16i8, MVT::v16i32, 7 }, { ISD::TRUNCATE, MVT::v8i8, MVT::v8i32, 3 }, { ISD::TRUNCATE, MVT::v4i8, MVT::v4i32, 1 }, { ISD::TRUNCATE, MVT::v16i8, MVT::v16i16, 3 }, Index: test/Analysis/CostModel/X86/sse-itoi.ll =================================================================== --- test/Analysis/CostModel/X86/sse-itoi.ll +++ test/Analysis/CostModel/X86/sse-itoi.ll @@ -279,7 +279,7 @@ ; SSE2: cost of 7 {{.*}} trunc ; ; SSE41: truncate_v16i32_to_v16i8 -; SSE41: cost of 30 {{.*}} trunc +; SSE41: cost of 7 {{.*}} trunc ; %1 = load <16 x i32>, <16 x i32>* %a %2 = trunc <16 x i32> %1 to <16 x i8>