aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorLuke Lau <luke@igalia.com>2024-03-22 07:26:29 +0800
committerGitHub <noreply@github.com>2024-03-22 07:26:29 +0800
commit51d5b6581912c8495360a09a0e6be978e0374d90 (patch)
treeca273dcfab44009d1223385d9427bb3176c356fe /clang/lib/Frontend/CompilerInvocation.cpp
parent06d245242e3e24cd4558f545fb5ceba0582c4f03 (diff)
downloadllvm-51d5b6581912c8495360a09a0e6be978e0374d90.zip
llvm-51d5b6581912c8495360a09a0e6be978e0374d90.tar.gz
llvm-51d5b6581912c8495360a09a0e6be978e0374d90.tar.bz2
[RISCV] Handle scalable ops with < EEW / 2 narrow types in combineBinOp_VLToVWBinOp_VL (#84158)
We can remove the restriction that the narrow type needs to be exactly EEW / 2 for scalable ISD::{ADD,SUB,MUL} nodes. This allows us to perform the combine even if we can't fully fold the extend into the widening op. VP intrinsics already do this, since they are lowered to _VL nodes which don't have this restriction. The "exactly EEW / 2" narrow type restriction prevented us from emitting V{S,Z}EXT_VL nodes with i1 element types which crash when we try to select them, since no other legal type is double the size of i1, see the test case added in this PR `i1_zext`. So to preserve this, this adds a check for i1 narrow types instead.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions