1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; DAGCombiner crashes during sext folding 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_sext1() { 7*9880d681SAndroid Build Coastguard Worker %Se = sext <2 x i8> <i8 -100, i8 -99> to <2 x i256> 8*9880d681SAndroid Build Coastguard Worker %Shuff = shufflevector <2 x i256> zeroinitializer, <2 x i256> %Se, <2 x i32> <i32 1, i32 3> 9*9880d681SAndroid Build Coastguard Worker ret <2 x i256> %Shuff 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker ; X64-LABEL: test_sext1 12*9880d681SAndroid Build Coastguard Worker ; X64: movq $-1 13*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1 14*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1 15*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-99 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker ; X32-LABEL: test_sext1 18*9880d681SAndroid Build Coastguard Worker ; X32: movl $-1 19*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 20*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 21*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 22*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 23*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 24*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 25*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-99 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_sext2() { 29*9880d681SAndroid Build Coastguard Worker %Se = sext <2 x i128> <i128 -2000, i128 -1999> to <2 x i256> 30*9880d681SAndroid Build Coastguard Worker %Shuff = shufflevector <2 x i256> zeroinitializer, <2 x i256> %Se, <2 x i32> <i32 1, i32 3> 31*9880d681SAndroid Build Coastguard Worker ret <2 x i256> %Shuff 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker ; X64-LABEL: test_sext2 34*9880d681SAndroid Build Coastguard Worker ; X64: movq $-1 35*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1 36*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1 37*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1999 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker ; X32-LABEL: test_sext2 40*9880d681SAndroid Build Coastguard Worker ; X32: movl $-1 41*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 42*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 43*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 44*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 45*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 46*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 47*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1999 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_zext1() { 51*9880d681SAndroid Build Coastguard Worker %Se = zext <2 x i8> <i8 -1, i8 -2> to <2 x i256> 52*9880d681SAndroid Build Coastguard Worker %Shuff = shufflevector <2 x i256> zeroinitializer, <2 x i256> %Se, <2 x i32> <i32 1, i32 3> 53*9880d681SAndroid Build Coastguard Worker ret <2 x i256> %Shuff 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker ; X64-LABEL: test_zext1 56*9880d681SAndroid Build Coastguard Worker ; X64: movq $0 57*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $0 58*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $0 59*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $254 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker ; X32-LABEL: test_zext1 62*9880d681SAndroid Build Coastguard Worker ; X32: movl $0 63*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 64*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 65*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 66*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 67*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 68*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 69*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $254 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine <2 x i256> @test_zext2() { 73*9880d681SAndroid Build Coastguard Worker %Se = zext <2 x i128> <i128 -1, i128 -2> to <2 x i256> 74*9880d681SAndroid Build Coastguard Worker %Shuff = shufflevector <2 x i256> zeroinitializer, <2 x i256> %Se, <2 x i32> <i32 1, i32 3> 75*9880d681SAndroid Build Coastguard Worker ret <2 x i256> %Shuff 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker ; X64-LABEL: test_zext2 78*9880d681SAndroid Build Coastguard Worker ; X64: movq $0 79*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $0 80*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-1 81*9880d681SAndroid Build Coastguard Worker ; X64-NEXT: movq $-2 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker ; X32-LABEL: test_zext2 84*9880d681SAndroid Build Coastguard Worker ; X32: movl $0 85*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 86*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 87*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $0 88*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 89*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 90*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-1 91*9880d681SAndroid Build Coastguard Worker ; X32-NEXT: movl $-2 92*9880d681SAndroid Build Coastguard Worker} 93