| ; This file tests casting / conversion operations that apply to vector types. | 
 | ; bitcast operations are in vector-bitcast.ll. | 
 |  | 
 | ; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -O2 \ | 
 | ; RUN:     | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK | 
 | ; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -Om1 \ | 
 | ; RUN:     | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK | 
 |  | 
 | ; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -O2 \ | 
 | ; RUN:     | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK | 
 | ; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -Om1 \ | 
 | ; RUN:     | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK | 
 |  | 
 | ; RUN: %if --need=target_MIPS32 --need=allow_dump \ | 
 | ; RUN:   --command %p2i --filetype=asm --assemble --disassemble --target \ | 
 | ; RUN:   mips32 -i %s --args -O2 -allow-externally-defined-symbols \ | 
 | ; RUN:   | %if --need=target_MIPS32 --need=allow_dump \ | 
 | ; RUN:   --command FileCheck --check-prefix MIPS32 %s | 
 |  | 
 | ; sext operations | 
 |  | 
 | define internal <16 x i8> @test_sext_v16i1_to_v16i8(<16 x i1> %arg) { | 
 | entry: | 
 |   %res = sext <16 x i1> %arg to <16 x i8> | 
 |   ret <16 x i8> %res | 
 |  | 
 | ; CHECK-LABEL: test_sext_v16i1_to_v16i8 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqb | 
 | ; X8632: psubb | 
 | ; X8632: pand | 
 | ; X8632: pxor | 
 | ; X8632: pcmpgtb | 
 | ; ARM32: vshl.s8 | 
 | ; ARM32-NEXT: vshr.s8 | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	sll	t2,t2,0x1f | 
 | ; MIPS32: 	sra	t2,t2,0x1f | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	move	v0,a0 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	lui	t3,0xffff | 
 | ; MIPS32: 	ori	t3,t3,0xff | 
 | ; MIPS32: 	and	t2,t2,t3 | 
 | ; MIPS32: 	or	v0,v0,t2 | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	sll	t2,t2,0x1f | 
 | ; MIPS32: 	sra	t2,t2,0x1f | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	lui	t3,0xff00 | 
 | ; MIPS32: 	ori	t3,t3,0xffff | 
 | ; MIPS32: 	and	v0,v0,t3 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x18 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x1f | 
 | ; MIPS32: 	sra	a0,a0,0x1f | 
 | ; MIPS32: 	sll	a0,a0,0x18 | 
 | ; MIPS32: 	sll	t2,t2,0x8 | 
 | ; MIPS32: 	srl	t2,t2,0x8 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	move	v1,a1 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	sll	v1,v1,0x1f | 
 | ; MIPS32: 	sra	v1,v1,0x1f | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t2,0xffff | 
 | ; MIPS32: 	ori	t2,t2,0xff | 
 | ; MIPS32: 	and	v0,v0,t2 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t2,0xff00 | 
 | ; MIPS32: 	ori	t2,t2,0xffff | 
 | ; MIPS32: 	and	v1,v1,t2 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x18 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x1f | 
 | ; MIPS32: 	sra	a1,a1,0x1f | 
 | ; MIPS32: 	sll	a1,a1,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t0,t0,0x8 | 
 | ; MIPS32: 	sll	t0,t0,0x8 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	move	v1,a2 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	sll	v1,v1,0x1f | 
 | ; MIPS32: 	sra	v1,v1,0x1f | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a2,a2,0x18 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x1f | 
 | ; MIPS32: 	sra	a2,a2,0x1f | 
 | ; MIPS32: 	sll	a2,a2,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t1,t1,0x8 | 
 | ; MIPS32: 	sll	t1,t1,0x8 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	move	v1,a3 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	sll	v1,v1,0x1f | 
 | ; MIPS32: 	sra	v1,v1,0x1f | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a3,a3,0x18 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x1f | 
 | ; MIPS32: 	sra	a3,a3,0x1f | 
 | ; MIPS32: 	sll	a3,a3,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <8 x i16> @test_sext_v8i1_to_v8i16(<8 x i1> %arg) { | 
 | entry: | 
 |   %res = sext <8 x i1> %arg to <8 x i16> | 
 |   ret <8 x i16> %res | 
 |  | 
 | ; CHECK-LABEL: test_sext_v8i1_to_v8i16 | 
 | ; X8632: psllw {{.*}},0xf | 
 | ; X8632: psraw {{.*}},0xf | 
 | ; ARM32: vshl.s16 | 
 | ; ARM32-NEXT: vshr.s16 | 
 | ; MIPS32: 	move	v0,zero | 
 | ; MIPS32: 	move	v1,zero | 
 | ; MIPS32: 	move	t0,zero | 
 | ; MIPS32: 	move	t1,zero | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	sll	t2,t2,0x1f | 
 | ; MIPS32: 	sra	t2,t2,0x1f | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x10 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x1f | 
 | ; MIPS32: 	sra	a0,a0,0x1f | 
 | ; MIPS32: 	sll	a0,a0,0x10 | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	v1,v1,0x10 | 
 | ; MIPS32: 	sll	v1,v1,0x10 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x10 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x1f | 
 | ; MIPS32: 	sra	a1,a1,0x1f | 
 | ; MIPS32: 	sll	a1,a1,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t0,t0,0x10 | 
 | ; MIPS32: 	sll	t0,t0,0x10 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	srl	a2,a2,0x10 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x1f | 
 | ; MIPS32: 	sra	a2,a2,0x1f | 
 | ; MIPS32: 	sll	a2,a2,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	sll	v0,v0,0x1f | 
 | ; MIPS32: 	sra	v0,v0,0x1f | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t1,t1,0x10 | 
 | ; MIPS32: 	sll	t1,t1,0x10 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	srl	a3,a3,0x10 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x1f | 
 | ; MIPS32: 	sra	a3,a3,0x1f | 
 | ; MIPS32: 	sll	a3,a3,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <4 x i32> @test_sext_v4i1_to_v4i32(<4 x i1> %arg) { | 
 | entry: | 
 |   %res = sext <4 x i1> %arg to <4 x i32> | 
 |   ret <4 x i32> %res | 
 |  | 
 | ; CHECK-LABEL: test_sext_v4i1_to_v4i32 | 
 | ; X8632: pslld {{.*}},0x1f | 
 | ; X8632: psrad {{.*}},0x1f | 
 | ; ARM32: vshl.s32 | 
 | ; ARM32-NEXT: vshr.s32 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x1f | 
 | ; MIPS32: 	sra	a0,a0,0x1f | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x1f | 
 | ; MIPS32: 	sra	a1,a1,0x1f | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x1f | 
 | ; MIPS32: 	sra	a2,a2,0x1f | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x1f | 
 | ; MIPS32: 	sra	a3,a3,0x1f | 
 | } | 
 |  | 
 | ; zext operations | 
 |  | 
 | define internal <16 x i8> @test_zext_v16i1_to_v16i8(<16 x i1> %arg) { | 
 | entry: | 
 |   %res = zext <16 x i1> %arg to <16 x i8> | 
 |   ret <16 x i8> %res | 
 |  | 
 | ; CHECK-LABEL: test_zext_v16i1_to_v16i8 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqb | 
 | ; X8632: psubb | 
 | ; X8632: pand | 
 | ; ARM32: vmov.i8 [[S:.*]], #1 | 
 | ; ARM32-NEXT: vand {{.*}}, [[S]] | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	move	v0,a0 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	lui	t3,0xffff | 
 | ; MIPS32: 	ori	t3,t3,0xff | 
 | ; MIPS32: 	and	t2,t2,t3 | 
 | ; MIPS32: 	or	v0,v0,t2 | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	lui	t3,0xff00 | 
 | ; MIPS32: 	ori	t3,t3,0xffff | 
 | ; MIPS32: 	and	v0,v0,t3 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x18 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x18 | 
 | ; MIPS32: 	sll	t2,t2,0x8 | 
 | ; MIPS32: 	srl	t2,t2,0x8 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	move	v1,a1 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t2,0xffff | 
 | ; MIPS32: 	ori	t2,t2,0xff | 
 | ; MIPS32: 	and	v0,v0,t2 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t2,0xff00 | 
 | ; MIPS32: 	ori	t2,t2,0xffff | 
 | ; MIPS32: 	and	v1,v1,t2 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x18 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t0,t0,0x8 | 
 | ; MIPS32: 	sll	t0,t0,0x8 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	move	v1,a2 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a2,a2,0x18 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t1,t1,0x8 | 
 | ; MIPS32: 	sll	t1,t1,0x8 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	move	v1,a3 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a3,a3,0x18 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <8 x i16> @test_zext_v8i1_to_v8i16(<8 x i1> %arg) { | 
 | entry: | 
 |   %res = zext <8 x i1> %arg to <8 x i16> | 
 |   ret <8 x i16> %res | 
 |  | 
 | ; CHECK-LABEL: test_zext_v8i1_to_v8i16 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqw | 
 | ; X8632: psubw | 
 | ; X8632: pand | 
 | ; ARM32: vmov.i16 [[S:.*]], #1 | 
 | ; ARM32-NEXT: vand {{.*}}, [[S]] | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x10 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x10 | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	v1,v1,0x10 | 
 | ; MIPS32: 	sll	v1,v1,0x10 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x10 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t0,t0,0x10 | 
 | ; MIPS32: 	sll	t0,t0,0x10 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	srl	a2,a2,0x10 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t1,t1,0x10 | 
 | ; MIPS32: 	sll	t1,t1,0x10 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	srl	a3,a3,0x10 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <4 x i32> @test_zext_v4i1_to_v4i32(<4 x i1> %arg) { | 
 | entry: | 
 |   %res = zext <4 x i1> %arg to <4 x i32> | 
 |   ret <4 x i32> %res | 
 |  | 
 | ; CHECK-LABEL: test_zext_v4i1_to_v4i32 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqd | 
 | ; X8632: psubd | 
 | ; X8632: pand | 
 | ; ARM32: vmov.i32 [[S:.*]], #1 | 
 | ; ARM32-NEXT: vand {{.*}}, [[S]] | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | } | 
 |  | 
 | ; trunc operations | 
 |  | 
 | define internal <16 x i1> @test_trunc_v16i8_to_v16i1(<16 x i8> %arg) { | 
 | entry: | 
 |   %res = trunc <16 x i8> %arg to <16 x i1> | 
 |   ret <16 x i1> %res | 
 |  | 
 | ; CHECK-LABEL: test_trunc_v16i8_to_v16i1 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqb | 
 | ; X8632: psubb | 
 | ; X8632: pand | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	move	v0,a0 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	lui	t3,0xffff | 
 | ; MIPS32: 	ori	t3,t3,0xff | 
 | ; MIPS32: 	and	t2,t2,t3 | 
 | ; MIPS32: 	or	v0,v0,t2 | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	andi	t2,t2,0x1 | 
 | ; MIPS32: 	andi	t2,t2,0xff | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	lui	t3,0xff00 | 
 | ; MIPS32: 	ori	t3,t3,0xffff | 
 | ; MIPS32: 	and	v0,v0,t3 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x18 | 
 | ; MIPS32: 	andi	a0,a0,0x1 | 
 | ; MIPS32: 	sll	a0,a0,0x18 | 
 | ; MIPS32: 	sll	t2,t2,0x8 | 
 | ; MIPS32: 	srl	t2,t2,0x8 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	move	v1,a1 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t2,0xffff | 
 | ; MIPS32: 	ori	t2,t2,0xff | 
 | ; MIPS32: 	and	v0,v0,t2 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t2,0xff00 | 
 | ; MIPS32: 	ori	t2,t2,0xffff | 
 | ; MIPS32: 	and	v1,v1,t2 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x18 | 
 | ; MIPS32: 	andi	a1,a1,0x1 | 
 | ; MIPS32: 	sll	a1,a1,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t0,t0,0x8 | 
 | ; MIPS32: 	sll	t0,t0,0x8 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	move	v1,a2 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a2,a2,0x18 | 
 | ; MIPS32: 	andi	a2,a2,0x1 | 
 | ; MIPS32: 	sll	a2,a2,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	srl	t1,t1,0x8 | 
 | ; MIPS32: 	sll	t1,t1,0x8 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	move	v1,a3 | 
 | ; MIPS32: 	srl	v1,v1,0x8 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	andi	v1,v1,0x1 | 
 | ; MIPS32: 	andi	v1,v1,0xff | 
 | ; MIPS32: 	sll	v1,v1,0x8 | 
 | ; MIPS32: 	lui	t0,0xffff | 
 | ; MIPS32: 	ori	t0,t0,0xff | 
 | ; MIPS32: 	and	v0,v0,t0 | 
 | ; MIPS32: 	or	v1,v1,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	andi	v0,v0,0x1 | 
 | ; MIPS32: 	andi	v0,v0,0xff | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	lui	t0,0xff00 | 
 | ; MIPS32: 	ori	t0,t0,0xffff | 
 | ; MIPS32: 	and	v1,v1,t0 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a3,a3,0x18 | 
 | ; MIPS32: 	andi	a3,a3,0x1 | 
 | ; MIPS32: 	sll	a3,a3,0x18 | 
 | ; MIPS32: 	sll	v0,v0,0x8 | 
 | ; MIPS32: 	srl	v0,v0,0x8 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <8 x i1> @test_trunc_v8i16_to_v8i1(<8 x i16> %arg) { | 
 | entry: | 
 |   %res = trunc <8 x i16> %arg to <8 x i1> | 
 |   ret <8 x i1> %res | 
 |  | 
 | ; CHECK-LABEL: test_trunc_v8i16_to_v8i1 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqw | 
 | ; X8632: psubw | 
 | ; X8632: pand | 
 | ; MIPS32: 	move	t2,a0 | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	andi	t2,t2,0xffff | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	or	t2,t2,v0 | 
 | ; MIPS32: 	srl	a0,a0,0x10 | 
 | ; MIPS32: 	sll	a0,a0,0x10 | 
 | ; MIPS32: 	sll	t2,t2,0x10 | 
 | ; MIPS32: 	srl	t2,t2,0x10 | 
 | ; MIPS32: 	or	a0,a0,t2 | 
 | ; MIPS32: 	move	v0,a1 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	v1,v1,0x10 | 
 | ; MIPS32: 	sll	v1,v1,0x10 | 
 | ; MIPS32: 	or	v0,v0,v1 | 
 | ; MIPS32: 	srl	a1,a1,0x10 | 
 | ; MIPS32: 	sll	a1,a1,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a1,a1,v0 | 
 | ; MIPS32: 	move	v0,a2 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t0,t0,0x10 | 
 | ; MIPS32: 	sll	t0,t0,0x10 | 
 | ; MIPS32: 	or	v0,v0,t0 | 
 | ; MIPS32: 	srl	a2,a2,0x10 | 
 | ; MIPS32: 	sll	a2,a2,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a2,a2,v0 | 
 | ; MIPS32: 	move	v0,a3 | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	andi	v0,v0,0xffff | 
 | ; MIPS32: 	srl	t1,t1,0x10 | 
 | ; MIPS32: 	sll	t1,t1,0x10 | 
 | ; MIPS32: 	or	v0,v0,t1 | 
 | ; MIPS32: 	srl	a3,a3,0x10 | 
 | ; MIPS32: 	sll	a3,a3,0x10 | 
 | ; MIPS32: 	sll	v0,v0,0x10 | 
 | ; MIPS32: 	srl	v0,v0,0x10 | 
 | ; MIPS32: 	or	a3,a3,v0 | 
 | } | 
 |  | 
 | define internal <4 x i1> @test_trunc_v4i32_to_v4i1(<4 x i32> %arg) { | 
 | entry: | 
 |   %res = trunc <4 x i32> %arg to <4 x i1> | 
 |   ret <4 x i1> %res | 
 |  | 
 | ; CHECK-LABEL: test_trunc_v4i32_to_v4i1 | 
 | ; X8632: pxor | 
 | ; X8632: pcmpeqd | 
 | ; X8632: psubd | 
 | ; X8632: pand | 
 | ; MIPS32: 	move	v0,a0 | 
 | ; MIPS32: 	move	v1,a1 | 
 | ; MIPS32: 	move	a0,a2 | 
 | ; MIPS32: 	move	a1,a3 | 
 | } | 
 |  | 
 | ; fpto[us]i operations | 
 |  | 
 | define internal <4 x i32> @test_fptosi_v4f32_to_v4i32(<4 x float> %arg) { | 
 | entry: | 
 |   %res = fptosi <4 x float> %arg to <4 x i32> | 
 |   ret <4 x i32> %res | 
 |  | 
 | ; CHECK-LABEL: test_fptosi_v4f32_to_v4i32 | 
 | ; X8632: cvttps2dq | 
 | ; ARM32: vcvt.s32.f32 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | } | 
 |  | 
 | define internal <4 x i32> @test_fptoui_v4f32_to_v4i32(<4 x float> %arg) { | 
 | entry: | 
 |   %res = fptoui <4 x float> %arg to <4 x i32> | 
 |   ret <4 x i32> %res | 
 |  | 
 | ; CHECK-LABEL: test_fptoui_v4f32_to_v4i32 | 
 | ; X8632: call {{.*}} R_{{.*}} __Sz_fptoui_4xi32_f32 | 
 | ; ARM32: vcvt.u32.f32 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | ; MIPS32: 	trunc.w.s	$f0,$f0 | 
 | } | 
 |  | 
 | ; [su]itofp operations | 
 |  | 
 | define internal <4 x float> @test_sitofp_v4i32_to_v4f32(<4 x i32> %arg) { | 
 | entry: | 
 |   %res = sitofp <4 x i32> %arg to <4 x float> | 
 |   ret <4 x float> %res | 
 |  | 
 | ; CHECK-LABEL: test_sitofp_v4i32_to_v4f32 | 
 | ; X8632: cvtdq2ps | 
 | ; ARM32: vcvt.f32.s32 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 |  | 
 | } | 
 |  | 
 | define internal <4 x float> @test_uitofp_v4i32_to_v4f32(<4 x i32> %arg) { | 
 | entry: | 
 |   %res = uitofp <4 x i32> %arg to <4 x float> | 
 |   ret <4 x float> %res | 
 |  | 
 | ; CHECK-LABEL: test_uitofp_v4i32_to_v4f32 | 
 | ; X8632: call {{.*}} R_{{.*}} __Sz_uitofp_4xi32_4xf32 | 
 | ; ARM32: vcvt.f32.u32 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | ; MIPS32: 	cvt.s.w	$f0,$f0 | 
 | } |