1486ed885SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*b280ee1dSBjorn Pettersson; RUN: opt < %s -passes=instsimplify -S | FileCheck %s 3486ed885SArthur Eubanks 4322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a) 5322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a) 6322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> %a) 7322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> %a) 8322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.and.v1i32(<1 x i32> %a) 9322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.and.v8i32(<8 x i32> %a) 10322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.or.v1i32(<1 x i32> %a) 11322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.or.v8i32(<8 x i32> %a) 12322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> %a) 13322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> %a) 14322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> %a) 15322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> %a) 16322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> %a) 17322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> %a) 18322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> %a) 19322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> %a) 20322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> %a) 21322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> %a) 22486ed885SArthur Eubanks 23486ed885SArthur Eubanks 24486ed885SArthur Eubanksdefine i32 @add_0() { 25486ed885SArthur Eubanks; CHECK-LABEL: @add_0( 26486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 27486ed885SArthur Eubanks; 28322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> zeroinitializer) 29486ed885SArthur Eubanks ret i32 %x 30486ed885SArthur Eubanks} 31486ed885SArthur Eubanks 32486ed885SArthur Eubanksdefine i32 @add_1() { 33486ed885SArthur Eubanks; CHECK-LABEL: @add_1( 34486ed885SArthur Eubanks; CHECK-NEXT: ret i32 8 35486ed885SArthur Eubanks; 36322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 37486ed885SArthur Eubanks ret i32 %x 38486ed885SArthur Eubanks} 39486ed885SArthur Eubanks 40486ed885SArthur Eubanksdefine i32 @add_inc() { 41486ed885SArthur Eubanks; CHECK-LABEL: @add_inc( 42486ed885SArthur Eubanks; CHECK-NEXT: ret i32 18 43486ed885SArthur Eubanks; 44322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 45486ed885SArthur Eubanks ret i32 %x 46486ed885SArthur Eubanks} 47486ed885SArthur Eubanks 48486ed885SArthur Eubanksdefine i32 @add_1v() { 49486ed885SArthur Eubanks; CHECK-LABEL: @add_1v( 50486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 51486ed885SArthur Eubanks; 52322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> <i32 10>) 53486ed885SArthur Eubanks ret i32 %x 54486ed885SArthur Eubanks} 55486ed885SArthur Eubanks 56486ed885SArthur Eubanksdefine i32 @add_undef() { 57486ed885SArthur Eubanks; CHECK-LABEL: @add_undef( 58322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef) 59486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 60486ed885SArthur Eubanks; 61322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef) 62486ed885SArthur Eubanks ret i32 %x 63486ed885SArthur Eubanks} 64486ed885SArthur Eubanks 65486ed885SArthur Eubanksdefine i32 @add_undef1() { 66486ed885SArthur Eubanks; CHECK-LABEL: @add_undef1( 67322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 68486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 69486ed885SArthur Eubanks; 70322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 71486ed885SArthur Eubanks ret i32 %x 72486ed885SArthur Eubanks} 73486ed885SArthur Eubanks 7467801813SSanjay Pateldefine i32 @add_poison() { 7567801813SSanjay Patel; CHECK-LABEL: @add_poison( 761089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 7767801813SSanjay Patel; 7867801813SSanjay Patel %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> poison) 7967801813SSanjay Patel ret i32 %x 8067801813SSanjay Patel} 8167801813SSanjay Patel 823dd20636SSanjay Pateldefine i32 @add_poison1() { 833dd20636SSanjay Patel; CHECK-LABEL: @add_poison1( 84a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 853dd20636SSanjay Patel; 863dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 poison, i32 1, i32 1, i32 42, i32 1, i32 1>) 873dd20636SSanjay Patel ret i32 %x 883dd20636SSanjay Patel} 89486ed885SArthur Eubanks 90af382b93SNikita Popovdefine i32 @add_constexpr() { 91af382b93SNikita Popov; CHECK-LABEL: @add_constexpr( 92af382b93SNikita Popov; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> bitcast (<4 x i64> <i64 0, i64 1, i64 2, i64 3> to <8 x i32>)) 93af382b93SNikita Popov; CHECK-NEXT: ret i32 [[X]] 94af382b93SNikita Popov; 95af382b93SNikita Popov %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> bitcast (<4 x i64> <i64 0, i64 1, i64 2, i64 3> to <8 x i32>)) 96af382b93SNikita Popov ret i32 %x 97af382b93SNikita Popov} 98af382b93SNikita Popov 99486ed885SArthur Eubanksdefine i32 @mul_0() { 100486ed885SArthur Eubanks; CHECK-LABEL: @mul_0( 101486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 102486ed885SArthur Eubanks; 103322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> zeroinitializer) 104486ed885SArthur Eubanks ret i32 %x 105486ed885SArthur Eubanks} 106486ed885SArthur Eubanks 107486ed885SArthur Eubanksdefine i32 @mul_1() { 108486ed885SArthur Eubanks; CHECK-LABEL: @mul_1( 109486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 110486ed885SArthur Eubanks; 111322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 112486ed885SArthur Eubanks ret i32 %x 113486ed885SArthur Eubanks} 114486ed885SArthur Eubanks 115486ed885SArthur Eubanksdefine i32 @mul_inc() { 116486ed885SArthur Eubanks; CHECK-LABEL: @mul_inc( 117486ed885SArthur Eubanks; CHECK-NEXT: ret i32 40320 118486ed885SArthur Eubanks; 119322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 120486ed885SArthur Eubanks ret i32 %x 121486ed885SArthur Eubanks} 122486ed885SArthur Eubanks 123486ed885SArthur Eubanksdefine i32 @mul_1v() { 124486ed885SArthur Eubanks; CHECK-LABEL: @mul_1v( 125486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 126486ed885SArthur Eubanks; 127322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> <i32 10>) 128486ed885SArthur Eubanks ret i32 %x 129486ed885SArthur Eubanks} 130486ed885SArthur Eubanks 131486ed885SArthur Eubanksdefine i32 @mul_undef() { 132486ed885SArthur Eubanks; CHECK-LABEL: @mul_undef( 133322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef) 134486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 135486ed885SArthur Eubanks; 136322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef) 137486ed885SArthur Eubanks ret i32 %x 138486ed885SArthur Eubanks} 139486ed885SArthur Eubanks 140486ed885SArthur Eubanksdefine i32 @mul_undef1() { 141486ed885SArthur Eubanks; CHECK-LABEL: @mul_undef1( 142322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 143486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 144486ed885SArthur Eubanks; 145322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 146486ed885SArthur Eubanks ret i32 %x 147486ed885SArthur Eubanks} 148486ed885SArthur Eubanks 14967801813SSanjay Pateldefine i32 @mul_poison() { 15067801813SSanjay Patel; CHECK-LABEL: @mul_poison( 1511089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 15267801813SSanjay Patel; 15367801813SSanjay Patel %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> poison) 15467801813SSanjay Patel ret i32 %x 15567801813SSanjay Patel} 15667801813SSanjay Patel 1573dd20636SSanjay Pateldefine i32 @mul_poison1() { 1583dd20636SSanjay Patel; CHECK-LABEL: @mul_poison1( 159a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 1603dd20636SSanjay Patel; 1613dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 0, i32 1, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>) 1623dd20636SSanjay Patel ret i32 %x 1633dd20636SSanjay Patel} 164486ed885SArthur Eubanks 165486ed885SArthur Eubanksdefine i32 @and_0() { 166486ed885SArthur Eubanks; CHECK-LABEL: @and_0( 167486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 168486ed885SArthur Eubanks; 169322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> zeroinitializer) 170486ed885SArthur Eubanks ret i32 %x 171486ed885SArthur Eubanks} 172486ed885SArthur Eubanks 173486ed885SArthur Eubanksdefine i32 @and_1() { 174486ed885SArthur Eubanks; CHECK-LABEL: @and_1( 175486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 176486ed885SArthur Eubanks; 177322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 178486ed885SArthur Eubanks ret i32 %x 179486ed885SArthur Eubanks} 180486ed885SArthur Eubanks 181486ed885SArthur Eubanksdefine i32 @and_inc() { 182486ed885SArthur Eubanks; CHECK-LABEL: @and_inc( 183486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 184486ed885SArthur Eubanks; 185322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 186486ed885SArthur Eubanks ret i32 %x 187486ed885SArthur Eubanks} 188486ed885SArthur Eubanks 189486ed885SArthur Eubanksdefine i32 @and_1v() { 190486ed885SArthur Eubanks; CHECK-LABEL: @and_1v( 191486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 192486ed885SArthur Eubanks; 193322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> <i32 10>) 194486ed885SArthur Eubanks ret i32 %x 195486ed885SArthur Eubanks} 196486ed885SArthur Eubanks 197486ed885SArthur Eubanksdefine i32 @and_undef() { 198486ed885SArthur Eubanks; CHECK-LABEL: @and_undef( 199322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) 200486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 201486ed885SArthur Eubanks; 202322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) 203486ed885SArthur Eubanks ret i32 %x 204486ed885SArthur Eubanks} 205486ed885SArthur Eubanks 206486ed885SArthur Eubanksdefine i32 @and_undef1() { 207486ed885SArthur Eubanks; CHECK-LABEL: @and_undef1( 208322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 209486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 210486ed885SArthur Eubanks; 211322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 212486ed885SArthur Eubanks ret i32 %x 213486ed885SArthur Eubanks} 214486ed885SArthur Eubanks 21567801813SSanjay Pateldefine i32 @and_poison() { 21667801813SSanjay Patel; CHECK-LABEL: @and_poison( 2171089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 21867801813SSanjay Patel; 21967801813SSanjay Patel %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> poison) 22067801813SSanjay Patel ret i32 %x 22167801813SSanjay Patel} 22267801813SSanjay Patel 2233dd20636SSanjay Pateldefine i32 @and_poison1() { 2243dd20636SSanjay Patel; CHECK-LABEL: @and_poison1( 225a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 2263dd20636SSanjay Patel; 2273dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 -1, i32 1, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>) 2283dd20636SSanjay Patel ret i32 %x 2293dd20636SSanjay Patel} 230486ed885SArthur Eubanks 231486ed885SArthur Eubanksdefine i32 @or_0() { 232486ed885SArthur Eubanks; CHECK-LABEL: @or_0( 233486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 234486ed885SArthur Eubanks; 235322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> zeroinitializer) 236486ed885SArthur Eubanks ret i32 %x 237486ed885SArthur Eubanks} 238486ed885SArthur Eubanks 239486ed885SArthur Eubanksdefine i32 @or_1() { 240486ed885SArthur Eubanks; CHECK-LABEL: @or_1( 241486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 242486ed885SArthur Eubanks; 243322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 244486ed885SArthur Eubanks ret i32 %x 245486ed885SArthur Eubanks} 246486ed885SArthur Eubanks 247486ed885SArthur Eubanksdefine i32 @or_inc() { 248486ed885SArthur Eubanks; CHECK-LABEL: @or_inc( 249486ed885SArthur Eubanks; CHECK-NEXT: ret i32 -1 250486ed885SArthur Eubanks; 251322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 252486ed885SArthur Eubanks ret i32 %x 253486ed885SArthur Eubanks} 254486ed885SArthur Eubanks 255486ed885SArthur Eubanksdefine i32 @or_1v() { 256486ed885SArthur Eubanks; CHECK-LABEL: @or_1v( 257486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 258486ed885SArthur Eubanks; 259322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> <i32 10>) 260486ed885SArthur Eubanks ret i32 %x 261486ed885SArthur Eubanks} 262486ed885SArthur Eubanks 263486ed885SArthur Eubanksdefine i32 @or_undef() { 264486ed885SArthur Eubanks; CHECK-LABEL: @or_undef( 265322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) 266486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 267486ed885SArthur Eubanks; 268322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) 269486ed885SArthur Eubanks ret i32 %x 270486ed885SArthur Eubanks} 271486ed885SArthur Eubanks 272486ed885SArthur Eubanksdefine i32 @or_undef1() { 273486ed885SArthur Eubanks; CHECK-LABEL: @or_undef1( 274322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 275486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 276486ed885SArthur Eubanks; 277322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 278486ed885SArthur Eubanks ret i32 %x 279486ed885SArthur Eubanks} 280486ed885SArthur Eubanks 28167801813SSanjay Pateldefine i32 @or_poison() { 28267801813SSanjay Patel; CHECK-LABEL: @or_poison( 2831089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 28467801813SSanjay Patel; 28567801813SSanjay Patel %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> poison) 28667801813SSanjay Patel ret i32 %x 28767801813SSanjay Patel} 28867801813SSanjay Patel 2893dd20636SSanjay Pateldefine i32 @or_poison1() { 2903dd20636SSanjay Patel; CHECK-LABEL: @or_poison1( 291a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 2923dd20636SSanjay Patel; 2933dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 0, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>) 2943dd20636SSanjay Patel ret i32 %x 2953dd20636SSanjay Patel} 296486ed885SArthur Eubanks 297486ed885SArthur Eubanksdefine i32 @xor_0() { 298486ed885SArthur Eubanks; CHECK-LABEL: @xor_0( 299486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 300486ed885SArthur Eubanks; 301322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> zeroinitializer) 302486ed885SArthur Eubanks ret i32 %x 303486ed885SArthur Eubanks} 304486ed885SArthur Eubanks 305486ed885SArthur Eubanksdefine i32 @xor_1() { 306486ed885SArthur Eubanks; CHECK-LABEL: @xor_1( 307486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 308486ed885SArthur Eubanks; 309322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 310486ed885SArthur Eubanks ret i32 %x 311486ed885SArthur Eubanks} 312486ed885SArthur Eubanks 313486ed885SArthur Eubanksdefine i32 @xor_inc() { 314486ed885SArthur Eubanks; CHECK-LABEL: @xor_inc( 315486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 316486ed885SArthur Eubanks; 317322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 318486ed885SArthur Eubanks ret i32 %x 319486ed885SArthur Eubanks} 320486ed885SArthur Eubanks 321486ed885SArthur Eubanksdefine i32 @xor_1v() { 322486ed885SArthur Eubanks; CHECK-LABEL: @xor_1v( 323486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 324486ed885SArthur Eubanks; 325322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> <i32 10>) 326486ed885SArthur Eubanks ret i32 %x 327486ed885SArthur Eubanks} 328486ed885SArthur Eubanks 329486ed885SArthur Eubanksdefine i32 @xor_undef() { 330486ed885SArthur Eubanks; CHECK-LABEL: @xor_undef( 331322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef) 332486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 333486ed885SArthur Eubanks; 334322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef) 335486ed885SArthur Eubanks ret i32 %x 336486ed885SArthur Eubanks} 337486ed885SArthur Eubanks 338486ed885SArthur Eubanksdefine i32 @xor_undef1() { 339486ed885SArthur Eubanks; CHECK-LABEL: @xor_undef1( 340322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 341486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 342486ed885SArthur Eubanks; 343322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 344486ed885SArthur Eubanks ret i32 %x 345486ed885SArthur Eubanks} 346486ed885SArthur Eubanks 34767801813SSanjay Pateldefine i32 @xor_poison() { 34867801813SSanjay Patel; CHECK-LABEL: @xor_poison( 3491089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 35067801813SSanjay Patel; 35167801813SSanjay Patel %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> poison) 35267801813SSanjay Patel ret i32 %x 35367801813SSanjay Patel} 35467801813SSanjay Patel 3553dd20636SSanjay Pateldefine i32 @xor_poison1() { 3563dd20636SSanjay Patel; CHECK-LABEL: @xor_poison1( 357a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 3583dd20636SSanjay Patel; 3593dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 poison, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 3603dd20636SSanjay Patel ret i32 %x 3613dd20636SSanjay Patel} 362486ed885SArthur Eubanks 363486ed885SArthur Eubanksdefine i32 @smin_0() { 364486ed885SArthur Eubanks; CHECK-LABEL: @smin_0( 365486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 366486ed885SArthur Eubanks; 367322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> zeroinitializer) 368486ed885SArthur Eubanks ret i32 %x 369486ed885SArthur Eubanks} 370486ed885SArthur Eubanks 371486ed885SArthur Eubanksdefine i32 @smin_1() { 372486ed885SArthur Eubanks; CHECK-LABEL: @smin_1( 373486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 374486ed885SArthur Eubanks; 375322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 376486ed885SArthur Eubanks ret i32 %x 377486ed885SArthur Eubanks} 378486ed885SArthur Eubanks 379486ed885SArthur Eubanksdefine i32 @smin_inc() { 380486ed885SArthur Eubanks; CHECK-LABEL: @smin_inc( 381486ed885SArthur Eubanks; CHECK-NEXT: ret i32 -6 382486ed885SArthur Eubanks; 383322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 384486ed885SArthur Eubanks ret i32 %x 385486ed885SArthur Eubanks} 386486ed885SArthur Eubanks 387486ed885SArthur Eubanksdefine i32 @smin_1v() { 388486ed885SArthur Eubanks; CHECK-LABEL: @smin_1v( 389486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 390486ed885SArthur Eubanks; 391322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> <i32 10>) 392486ed885SArthur Eubanks ret i32 %x 393486ed885SArthur Eubanks} 394486ed885SArthur Eubanks 395486ed885SArthur Eubanksdefine i32 @smin_undef() { 396486ed885SArthur Eubanks; CHECK-LABEL: @smin_undef( 397322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) 398486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 399486ed885SArthur Eubanks; 400322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) 401486ed885SArthur Eubanks ret i32 %x 402486ed885SArthur Eubanks} 403486ed885SArthur Eubanks 404486ed885SArthur Eubanksdefine i32 @smin_undef1() { 405486ed885SArthur Eubanks; CHECK-LABEL: @smin_undef1( 406322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 407486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 408486ed885SArthur Eubanks; 409322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 410486ed885SArthur Eubanks ret i32 %x 411486ed885SArthur Eubanks} 412486ed885SArthur Eubanks 41367801813SSanjay Pateldefine i32 @smin_poison() { 41467801813SSanjay Patel; CHECK-LABEL: @smin_poison( 4151089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 41667801813SSanjay Patel; 41767801813SSanjay Patel %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> poison) 41867801813SSanjay Patel ret i32 %x 41967801813SSanjay Patel} 42067801813SSanjay Patel 4213dd20636SSanjay Pateldefine i32 @smin_poison1() { 4223dd20636SSanjay Patel; CHECK-LABEL: @smin_poison1( 423a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 4243dd20636SSanjay Patel; 4253dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 poison, i32 1, i32 1, i32 1>) 4263dd20636SSanjay Patel ret i32 %x 4273dd20636SSanjay Patel} 428486ed885SArthur Eubanks 429486ed885SArthur Eubanksdefine i32 @smax_0() { 430486ed885SArthur Eubanks; CHECK-LABEL: @smax_0( 431486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 432486ed885SArthur Eubanks; 433322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> zeroinitializer) 434486ed885SArthur Eubanks ret i32 %x 435486ed885SArthur Eubanks} 436486ed885SArthur Eubanks 437486ed885SArthur Eubanksdefine i32 @smax_1() { 438486ed885SArthur Eubanks; CHECK-LABEL: @smax_1( 439486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 440486ed885SArthur Eubanks; 441322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 442486ed885SArthur Eubanks ret i32 %x 443486ed885SArthur Eubanks} 444486ed885SArthur Eubanks 445486ed885SArthur Eubanksdefine i32 @smax_inc() { 446486ed885SArthur Eubanks; CHECK-LABEL: @smax_inc( 447486ed885SArthur Eubanks; CHECK-NEXT: ret i32 8 448486ed885SArthur Eubanks; 449322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 450486ed885SArthur Eubanks ret i32 %x 451486ed885SArthur Eubanks} 452486ed885SArthur Eubanks 453486ed885SArthur Eubanksdefine i32 @smax_1v() { 454486ed885SArthur Eubanks; CHECK-LABEL: @smax_1v( 455486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 456486ed885SArthur Eubanks; 457322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> <i32 10>) 458486ed885SArthur Eubanks ret i32 %x 459486ed885SArthur Eubanks} 460486ed885SArthur Eubanks 461486ed885SArthur Eubanksdefine i32 @smax_undef() { 462486ed885SArthur Eubanks; CHECK-LABEL: @smax_undef( 463322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) 464486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 465486ed885SArthur Eubanks; 466322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) 467486ed885SArthur Eubanks ret i32 %x 468486ed885SArthur Eubanks} 469486ed885SArthur Eubanks 470486ed885SArthur Eubanksdefine i32 @smax_undef1() { 471486ed885SArthur Eubanks; CHECK-LABEL: @smax_undef1( 472322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 473486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 474486ed885SArthur Eubanks; 475322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 476486ed885SArthur Eubanks ret i32 %x 477486ed885SArthur Eubanks} 478486ed885SArthur Eubanks 47967801813SSanjay Pateldefine i32 @smax_poison() { 48067801813SSanjay Patel; CHECK-LABEL: @smax_poison( 4811089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 48267801813SSanjay Patel; 48367801813SSanjay Patel %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> poison) 48467801813SSanjay Patel ret i32 %x 48567801813SSanjay Patel} 48667801813SSanjay Patel 4873dd20636SSanjay Pateldefine i32 @smax_poison1() { 4883dd20636SSanjay Patel; CHECK-LABEL: @smax_poison1( 489a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 4903dd20636SSanjay Patel; 4913dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 0, i32 1, i32 1, i32 1, i32 1, i32 poison>) 4923dd20636SSanjay Patel ret i32 %x 4933dd20636SSanjay Patel} 494486ed885SArthur Eubanks 495486ed885SArthur Eubanksdefine i32 @umin_0() { 496486ed885SArthur Eubanks; CHECK-LABEL: @umin_0( 497486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 498486ed885SArthur Eubanks; 499322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> zeroinitializer) 500486ed885SArthur Eubanks ret i32 %x 501486ed885SArthur Eubanks} 502486ed885SArthur Eubanks 503486ed885SArthur Eubanksdefine i32 @umin_1() { 504486ed885SArthur Eubanks; CHECK-LABEL: @umin_1( 505486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 506486ed885SArthur Eubanks; 507322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 508486ed885SArthur Eubanks ret i32 %x 509486ed885SArthur Eubanks} 510486ed885SArthur Eubanks 511486ed885SArthur Eubanksdefine i32 @umin_inc() { 512486ed885SArthur Eubanks; CHECK-LABEL: @umin_inc( 513486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 514486ed885SArthur Eubanks; 515322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 516486ed885SArthur Eubanks ret i32 %x 517486ed885SArthur Eubanks} 518486ed885SArthur Eubanks 519486ed885SArthur Eubanksdefine i32 @umin_1v() { 520486ed885SArthur Eubanks; CHECK-LABEL: @umin_1v( 521486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 522486ed885SArthur Eubanks; 523322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> <i32 10>) 524486ed885SArthur Eubanks ret i32 %x 525486ed885SArthur Eubanks} 526486ed885SArthur Eubanks 527486ed885SArthur Eubanksdefine i32 @umin_undef() { 528486ed885SArthur Eubanks; CHECK-LABEL: @umin_undef( 529322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) 530486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 531486ed885SArthur Eubanks; 532322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) 533486ed885SArthur Eubanks ret i32 %x 534486ed885SArthur Eubanks} 535486ed885SArthur Eubanks 536486ed885SArthur Eubanksdefine i32 @umin_undef1() { 537486ed885SArthur Eubanks; CHECK-LABEL: @umin_undef1( 538322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 539486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 540486ed885SArthur Eubanks; 541322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 542486ed885SArthur Eubanks ret i32 %x 543486ed885SArthur Eubanks} 544486ed885SArthur Eubanks 54567801813SSanjay Pateldefine i32 @umin_poison() { 54667801813SSanjay Patel; CHECK-LABEL: @umin_poison( 5471089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 54867801813SSanjay Patel; 54967801813SSanjay Patel %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> poison) 55067801813SSanjay Patel ret i32 %x 55167801813SSanjay Patel} 55267801813SSanjay Patel 5533dd20636SSanjay Pateldefine i32 @umin_poison1() { 5543dd20636SSanjay Patel; CHECK-LABEL: @umin_poison1( 555a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 5563dd20636SSanjay Patel; 5573dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 -1, i32 poison, i32 1, i32 1, i32 1, i32 1>) 5583dd20636SSanjay Patel ret i32 %x 5593dd20636SSanjay Patel} 560486ed885SArthur Eubanks 561486ed885SArthur Eubanksdefine i32 @umax_0() { 562486ed885SArthur Eubanks; CHECK-LABEL: @umax_0( 563486ed885SArthur Eubanks; CHECK-NEXT: ret i32 0 564486ed885SArthur Eubanks; 565322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> zeroinitializer) 566486ed885SArthur Eubanks ret i32 %x 567486ed885SArthur Eubanks} 568486ed885SArthur Eubanks 569486ed885SArthur Eubanksdefine i32 @umax_1() { 570486ed885SArthur Eubanks; CHECK-LABEL: @umax_1( 571486ed885SArthur Eubanks; CHECK-NEXT: ret i32 1 572486ed885SArthur Eubanks; 573322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 574486ed885SArthur Eubanks ret i32 %x 575486ed885SArthur Eubanks} 576486ed885SArthur Eubanks 577486ed885SArthur Eubanksdefine i32 @umax_inc() { 578486ed885SArthur Eubanks; CHECK-LABEL: @umax_inc( 579486ed885SArthur Eubanks; CHECK-NEXT: ret i32 -3 580486ed885SArthur Eubanks; 581322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 582486ed885SArthur Eubanks ret i32 %x 583486ed885SArthur Eubanks} 584486ed885SArthur Eubanks 585486ed885SArthur Eubanksdefine i32 @umax_1v() { 586486ed885SArthur Eubanks; CHECK-LABEL: @umax_1v( 587486ed885SArthur Eubanks; CHECK-NEXT: ret i32 10 588486ed885SArthur Eubanks; 589322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> <i32 10>) 590486ed885SArthur Eubanks ret i32 %x 591486ed885SArthur Eubanks} 592486ed885SArthur Eubanks 593486ed885SArthur Eubanksdefine i32 @umax_undef() { 594486ed885SArthur Eubanks; CHECK-LABEL: @umax_undef( 595322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) 596486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 597486ed885SArthur Eubanks; 598322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) 599486ed885SArthur Eubanks ret i32 %x 600486ed885SArthur Eubanks} 601486ed885SArthur Eubanks 6023dd20636SSanjay Pateldefine i32 @umax_undef1() { 6033dd20636SSanjay Patel; CHECK-LABEL: @umax_undef1( 604322d0afdSAmara Emerson; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 605486ed885SArthur Eubanks; CHECK-NEXT: ret i32 [[X]] 606486ed885SArthur Eubanks; 607322d0afdSAmara Emerson %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 608486ed885SArthur Eubanks ret i32 %x 609486ed885SArthur Eubanks} 61067801813SSanjay Patel 61167801813SSanjay Pateldefine i32 @umax_poison() { 61267801813SSanjay Patel; CHECK-LABEL: @umax_poison( 6131089158cSSanjay Patel; CHECK-NEXT: ret i32 poison 61467801813SSanjay Patel; 61567801813SSanjay Patel %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> poison) 61667801813SSanjay Patel ret i32 %x 61767801813SSanjay Patel} 6183dd20636SSanjay Patel 6193dd20636SSanjay Pateldefine i32 @umax_poison1() { 6203dd20636SSanjay Patel; CHECK-LABEL: @umax_poison1( 621a0e71f18SSanjay Patel; CHECK-NEXT: ret i32 poison 6223dd20636SSanjay Patel; 6233dd20636SSanjay Patel %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 poison, i32 1, i32 1, i32 poison, i32 1, i32 1>) 6243dd20636SSanjay Patel ret i32 %x 6253dd20636SSanjay Patel} 626