Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -march=mips64 -mcpu=mips64r2 -target-abi=n64 < %s -o - | FileCheck %s
      2 
      3 define i64 @dext_add_zext(i32 signext %n) {
      4 entry:
      5   %add = add i32 %n, 1
      6   %res = zext i32 %add to i64
      7   ret i64 %res
      8 
      9 ; CHECK-LABEL: dext_add_zext:
     10 ; CHECK:       dext $[[R0:[0-9]+]], $[[R0:[0-9]+]], 0, 32
     11 
     12 }
     13 
     14 define i32 @ext_and24(i32 signext %a) {
     15 entry:
     16   %and = and i32 %a, 16777215
     17   ret i32 %and
     18 
     19 ; CHECK-LABEL: ext_and24:
     20 ; CHECK:       ext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 24
     21 
     22 }
     23 
     24 define i64 @dext_and32(i64 zeroext %a) {
     25 entry:
     26   %and = and i64 %a, 4294967295
     27   ret i64 %and
     28 
     29 ; CHECK-LABEL: dext_and32:
     30 ; CHECK:       dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
     31 
     32 }
     33 
     34 define i64 @dext_and35(i64 zeroext %a) {
     35 entry:
     36   %and = and i64 %a, 34359738367
     37   ret i64 %and
     38 
     39 ; CHECK-LABEL: dext_and35:
     40 ; CHECK:       dextm $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 35
     41 
     42 }
     43 
     44 define i64 @dext_and20(i64 zeroext %a) {
     45 entry:
     46   %and = and i64 %a, 1048575
     47   ret i64 %and
     48 
     49 ; CHECK-LABEL: dext_and20:
     50 ; CHECK:       dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 20
     51 
     52 }
     53 
     54 define i64 @dext_and16(i64 zeroext %a) {
     55 entry:
     56   %and = and i64 %a, 65535
     57   ret i64 %and
     58 
     59 ; CHECK-LABEL: dext_and16:
     60 ; CHECK:       andi $[[R0:[0-9]+]], $[[R1:[0-9]+]], 65535
     61 
     62 }
     63 
     64 define i64 @dext_lsr_and20(i64 zeroext %a) {
     65 entry:
     66   %shr = lshr i64 %a, 5
     67   %and = and i64 %shr, 1048575
     68   ret i64 %and
     69 
     70 ; CHECK-LABEL: dext_lsr_and20:
     71 ; CHECK:       dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 5, 20
     72 
     73 }
     74 
     75 define i64 @dext_lsr_and8(i64 zeroext %a) {
     76 entry:
     77   %shr = lshr i64 %a, 40
     78   %and = and i64 %shr, 255
     79   ret i64 %and
     80 
     81 ; CHECK-LABEL: dext_lsr_and8:
     82 ; CHECK:       dextu $[[R0:[0-9]+]], $[[R1:[0-9]+]], 40, 8
     83 
     84 }
     85 
     86 define i64 @dext_zext(i32 signext %a) {
     87 entry:
     88   %conv = zext i32 %a to i64
     89   ret i64 %conv
     90 
     91 ; CHECK-LABEL: dext_zext:
     92 ; CHECK:       dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
     93 
     94 }
     95 
     96 define i64 @dext_and_lsr(i64 zeroext %n) {
     97 entry:
     98   %and = lshr i64 %n, 8
     99   %shr = and i64 %and, 4095
    100   ret i64 %shr
    101 
    102 ; CHECK-LABEL: dext_and_lsr:
    103 ; CHECK:       dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 8, 12
    104 
    105 }
    106