
The first attempt missed changing test files for tools (update_llc_test_checks.py). Original commit message: This implements the main suggested change from issue #56498. Using the shorter (non-extending) instruction with only -Oz ("minsize") rather than -Os ("optsize") is left as a possible follow-up. As noted in the bug report, the zero-extending load may have shorter latency/better throughput across a wide range of x86 micro-arches, and it avoids a potential false dependency. The cost is an extra instruction byte. This could cause perf ups and downs from secondary effects, but I don't think it is possible to account for those in advance, and that will likely also depend on exact micro-arch. This does bring LLVM x86 codegen more in line with existing gcc codegen, so if problems are exposed they are more likely to occur for both compilers. Differential Revision: https://reviews.llvm.org/D129775
19 lines
383 B
LLVM
19 lines
383 B
LLVM
; RUN: llc < %s -fast-isel -mcpu=core2 -mtriple=x86_64-unknown-unknown -O1 | FileCheck %s
|
|
; See PR21557
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
|
|
declare i64 @bar(i1)
|
|
|
|
define i64 @foo(ptr %arg) {
|
|
; CHECK-LABEL: foo:
|
|
top:
|
|
%0 = load i8, ptr %arg
|
|
; CHECK: movzbl
|
|
%1 = trunc i8 %0 to i1
|
|
; CHECK: andb $1,
|
|
%2 = call i64 @bar(i1 %1)
|
|
; CHECK: callq
|
|
ret i64 %2
|
|
}
|