xref: /llvm-project/llvm/test/Transforms/InstSimplify/insertvalue.ll (revision 9ca2c309ab0678fae48f96131b92754d0978c130)
1864dda5fSJuneyoung Lee; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2b280ee1dSBjorn Pettersson; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3864dda5fSJuneyoung Lee
4e161454dSNikita Popovdefine {i32, i32} @insert_poison({i32, i32} %x) {
5e161454dSNikita Popov; CHECK-LABEL: @insert_poison(
6864dda5fSJuneyoung Lee; CHECK-NEXT:    ret { i32, i32 } [[X:%.*]]
7864dda5fSJuneyoung Lee;
8864dda5fSJuneyoung Lee  %v = insertvalue {i32, i32} %x, i32 poison, 0
9864dda5fSJuneyoung Lee  ret {i32, i32} %v
10864dda5fSJuneyoung Lee}
11864dda5fSJuneyoung Lee
12e161454dSNikita Popovdefine {i32, i32} @insert_undef({i32, i32} %x) {
13e161454dSNikita Popov; CHECK-LABEL: @insert_undef(
148a09875dSNikita Popov; CHECK-NEXT:    [[V:%.*]] = insertvalue { i32, i32 } [[X:%.*]], i32 undef, 0
158a09875dSNikita Popov; CHECK-NEXT:    ret { i32, i32 } [[V]]
16e161454dSNikita Popov;
17e161454dSNikita Popov  %v = insertvalue {i32, i32} %x, i32 undef, 0
18e161454dSNikita Popov  ret {i32, i32} %v
19e161454dSNikita Popov}
20e161454dSNikita Popov
21e161454dSNikita Popovdefine {i32, i32} @insert_undef_into_non_poison({i32, i32} noundef %x) {
22e161454dSNikita Popov; CHECK-LABEL: @insert_undef_into_non_poison(
238992fce0SNikita Popov; CHECK-NEXT:    ret { i32, i32 } [[X:%.*]]
24e161454dSNikita Popov;
25e161454dSNikita Popov  %v = insertvalue {i32, i32} %x, i32 undef, 0
26e161454dSNikita Popov  ret {i32, i32} %v
27e161454dSNikita Popov}
2822882c39SNikita Popov
2922882c39SNikita Popovdefine {i32, i32} @insert_into_poison({i32, i32} %x) {
3022882c39SNikita Popov; CHECK-LABEL: @insert_into_poison(
3122882c39SNikita Popov; CHECK-NEXT:    ret { i32, i32 } [[X:%.*]]
3222882c39SNikita Popov;
3322882c39SNikita Popov  %elem = extractvalue {i32, i32} %x, 0
3422882c39SNikita Popov  %v = insertvalue {i32, i32} poison, i32 %elem, 0
3522882c39SNikita Popov  ret {i32, i32} %v
3622882c39SNikita Popov}
3722882c39SNikita Popov
3822882c39SNikita Popovdefine {i32, i32} @insert_into_undef({i32, i32} %x) {
3922882c39SNikita Popov; CHECK-LABEL: @insert_into_undef(
40*9ca2c309SNikita Popov; CHECK-NEXT:    [[ELEM:%.*]] = extractvalue { i32, i32 } [[X:%.*]], 0
41*9ca2c309SNikita Popov; CHECK-NEXT:    [[V:%.*]] = insertvalue { i32, i32 } undef, i32 [[ELEM]], 0
42*9ca2c309SNikita Popov; CHECK-NEXT:    ret { i32, i32 } [[V]]
4322882c39SNikita Popov;
4422882c39SNikita Popov  %elem = extractvalue {i32, i32} %x, 0
4522882c39SNikita Popov  %v = insertvalue {i32, i32} undef, i32 %elem, 0
4622882c39SNikita Popov  ret {i32, i32} %v
4722882c39SNikita Popov}
4822882c39SNikita Popov
4922882c39SNikita Popovdefine {i32, i32} @insert_non_poison_into_undef({i32, i32} noundef %x) {
5022882c39SNikita Popov; CHECK-LABEL: @insert_non_poison_into_undef(
5122882c39SNikita Popov; CHECK-NEXT:    ret { i32, i32 } [[X:%.*]]
5222882c39SNikita Popov;
5322882c39SNikita Popov  %elem = extractvalue {i32, i32} %x, 0
5422882c39SNikita Popov  %v = insertvalue {i32, i32} undef, i32 %elem, 0
5522882c39SNikita Popov  ret {i32, i32} %v
5622882c39SNikita Popov}
57