brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 8c133d7 Raw
122 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64_be-- < %s | FileCheck %s --check-prefix=BE3; RUN: llc -mtriple=aarch64--    < %s | FileCheck %s --check-prefix=LE4 5define i32 @trunc_i64_to_i32_le(i64 %x) {6; BE-LABEL: trunc_i64_to_i32_le:7; BE:       // %bb.0:8; BE-NEXT:    lsr x0, x0, #329; BE-NEXT:    // kill: def $w0 killed $w0 killed $x010; BE-NEXT:    ret11;12; LE-LABEL: trunc_i64_to_i32_le:13; LE:       // %bb.0:14; LE-NEXT:    // kill: def $w0 killed $w0 killed $x015; LE-NEXT:    ret16  %ins = insertelement <2 x i64> undef, i64 %x, i32 017  %bc = bitcast <2 x i64> %ins to <4 x i32>18  %ext = extractelement <4 x i32> %bc, i32 019  ret i32 %ext20}21 22define i32 @trunc_i64_to_i32_be(i64 %x) {23; BE-LABEL: trunc_i64_to_i32_be:24; BE:       // %bb.0:25; BE-NEXT:    // kill: def $w0 killed $w0 killed $x026; BE-NEXT:    ret27;28; LE-LABEL: trunc_i64_to_i32_be:29; LE:       // %bb.0:30; LE-NEXT:    lsr x0, x0, #3231; LE-NEXT:    // kill: def $w0 killed $w0 killed $x032; LE-NEXT:    ret33  %ins = insertelement <2 x i64> undef, i64 %x, i32 034  %bc = bitcast <2 x i64> %ins to <4 x i32>35  %ext = extractelement <4 x i32> %bc, i32 136  ret i32 %ext37}38 39define i16 @trunc_i64_to_i16_le(i64 %x) {40; BE-LABEL: trunc_i64_to_i16_le:41; BE:       // %bb.0:42; BE-NEXT:    lsr x0, x0, #4843; BE-NEXT:    // kill: def $w0 killed $w0 killed $x044; BE-NEXT:    ret45;46; LE-LABEL: trunc_i64_to_i16_le:47; LE:       // %bb.0:48; LE-NEXT:    // kill: def $w0 killed $w0 killed $x049; LE-NEXT:    ret50  %ins = insertelement <2 x i64> undef, i64 %x, i32 051  %bc = bitcast <2 x i64> %ins to <8 x i16>52  %ext = extractelement <8 x i16> %bc, i32 053  ret i16 %ext54}55 56define i16 @trunc_i64_to_i16_be(i64 %x) {57; BE-LABEL: trunc_i64_to_i16_be:58; BE:       // %bb.0:59; BE-NEXT:    // kill: def $w0 killed $w0 killed $x060; BE-NEXT:    ret61;62; LE-LABEL: trunc_i64_to_i16_be:63; LE:       // %bb.0:64; LE-NEXT:    lsr x0, x0, #4865; LE-NEXT:    // kill: def $w0 killed $w0 killed $x066; LE-NEXT:    ret67  %ins = insertelement <2 x i64> undef, i64 %x, i32 068  %bc = bitcast <2 x i64> %ins to <8 x i16>69  %ext = extractelement <8 x i16> %bc, i32 370  ret i16 %ext71}72 73define i8 @trunc_i32_to_i8_le(i32 %x) {74; BE-LABEL: trunc_i32_to_i8_le:75; BE:       // %bb.0:76; BE-NEXT:    lsr w0, w0, #2477; BE-NEXT:    ret78;79; LE-LABEL: trunc_i32_to_i8_le:80; LE:       // %bb.0:81; LE-NEXT:    ret82  %ins = insertelement <4 x i32> undef, i32 %x, i32 083  %bc = bitcast <4 x i32> %ins to <16 x i8>84  %ext = extractelement <16 x i8> %bc, i32 085  ret i8 %ext86}87 88define i8 @trunc_i32_to_i8_be(i32 %x) {89; BE-LABEL: trunc_i32_to_i8_be:90; BE:       // %bb.0:91; BE-NEXT:    ret92;93; LE-LABEL: trunc_i32_to_i8_be:94; LE:       // %bb.0:95; LE-NEXT:    lsr w0, w0, #2496; LE-NEXT:    ret97  %ins = insertelement <4 x i32> undef, i32 %x, i32 098  %bc = bitcast <4 x i32> %ins to <16 x i8>99  %ext = extractelement <16 x i8> %bc, i32 3100  ret i8 %ext101}102 103; Weird type (non-power-of-2 vector) is ok.104 105define i8 @trunc_i64_to_i8_be(i64 %x) {106; BE-LABEL: trunc_i64_to_i8_be:107; BE:       // %bb.0:108; BE-NEXT:    // kill: def $w0 killed $w0 killed $x0109; BE-NEXT:    ret110;111; LE-LABEL: trunc_i64_to_i8_be:112; LE:       // %bb.0:113; LE-NEXT:    lsr x0, x0, #56114; LE-NEXT:    // kill: def $w0 killed $w0 killed $x0115; LE-NEXT:    ret116  %ins = insertelement <3 x i64> undef, i64 %x, i32 0117  %bc = bitcast <3 x i64> %ins to <24 x i8>118  %ext = extractelement <24 x i8> %bc, i32 7119  ret i8 %ext120}121 122