1; Show that we know how to translate vand vector instructions. 2 3; REQUIRES: allow_dump 4 5; Compile using standalone assembler. 6; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \ 7; RUN: | FileCheck %s --check-prefix=ASM 8 9; Show bytes in assembled standalone code. 10; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ 11; RUN: --args -O2 \ 12; RUN: | FileCheck %s --check-prefix=DIS 13 14; Compile using integrated assembler. 15; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \ 16; RUN: | FileCheck %s --check-prefix=IASM 17 18; Show bytes in assembled integrated code. 19; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ 20; RUN: --args -O2 \ 21; RUN: | FileCheck %s --check-prefix=DIS 22 23define internal <4 x i32> @testVand4i32(<4 x i32> %v1, <4 x i32> %v2) { 24; ASM-LABEL: testVand4i32: 25; DIS-LABEL: 00000000 <testVand4i32>: 26; IASM-LABEL: testVand4i32: 27 28entry: 29 %res = and <4 x i32> %v1, %v2 30 31; ASM: vand.i32 q0, q0, q1 32; DIS: 0: f2000152 33; IASM-NOT: vand 34 35 ret <4 x i32> %res 36} 37 38define internal <8 x i16> @testVand8i16(<8 x i16> %v1, <8 x i16> %v2) { 39; ASM-LABEL: testVand8i16: 40; DIS-LABEL: 00000010 <testVand8i16>: 41; IASM-LABEL: testVand8i16: 42 43entry: 44 %res = and <8 x i16> %v1, %v2 45 46; ASM: vand.i16 q0, q0, q1 47; DIS: 10: f2000152 48; IASM-NOT: vand 49 50 ret <8 x i16> %res 51} 52 53define internal <16 x i8> @testVand16i8(<16 x i8> %v1, <16 x i8> %v2) { 54; ASM-LABEL: testVand16i8: 55; DIS-LABEL: 00000020 <testVand16i8>: 56; IASM-LABEL: testVand16i8: 57 58entry: 59 %res = and <16 x i8> %v1, %v2 60 61; ASM: vand.i8 q0, q0, q1 62; DIS: 20: f2000152 63; IASM-NOT: vand 64 65 ret <16 x i8> %res 66} 67 68;; 69;; The following tests make sure logical and works on predicate vectors. 70;; 71 72define internal <4 x i1> @testVand4i1(<4 x i1> %v1, <4 x i1> %v2) { 73; ASM-LABEL: testVand4i1: 74; DIS-LABEL: 00000030 <testVand4i1>: 75; IASM-LABEL: testVand4i1: 76 77entry: 78 %res = and <4 x i1> %v1, %v2 79 80; ASM: vand.i32 q0, q0, q1 81; DIS: 30: f2000152 82; IASM-NOT: vand 83 84 ret <4 x i1> %res 85} 86 87define internal <8 x i1> @testVand8i1(<8 x i1> %v1, <8 x i1> %v2) { 88; ASM-LABEL: testVand8i1: 89; DIS-LABEL: 00000040 <testVand8i1>: 90; IASM-LABEL: testVand8i1: 91 92entry: 93 %res = and <8 x i1> %v1, %v2 94 95; ASM: vand.i16 q0, q0, q1 96; DIS: 40: f2000152 97; IASM-NOT: vand 98 99 ret <8 x i1> %res 100} 101 102define internal <16 x i1> @testVand16i1(<16 x i1> %v1, <16 x i1> %v2) { 103; ASM-LABEL: testVand16i1: 104; DIS-LABEL: 00000050 <testVand16i1>: 105; IASM-LABEL: testVand16i1: 106 107entry: 108 %res = and <16 x i1> %v1, %v2 109 110; ASM: vand.i8 q0, q0, q1 111; DIS: 50: f2000152 112; IASM-NOT: vand 113 114 ret <16 x i1> %res 115} 116