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