Home | History | Annotate | Download | only in SystemZ
      1 ; Test insertions of 16-bit constants into one half of an i32.
      2 ;
      3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
      4 
      5 ; Check the lowest useful IILL value.  (We use NILL rather than IILL
      6 ; to clear 16 bits.)
      7 define i32 @f1(i32 %a) {
      8 ; CHECK-LABEL: f1:
      9 ; CHECK-NOT: ni
     10 ; CHECK: iill %r2, 1
     11 ; CHECK: br %r14
     12   %and = and i32 %a, 4294901760
     13   %or = or i32 %and, 1
     14   ret i32 %or
     15 }
     16 
     17 ; Check a middle value.
     18 define i32 @f2(i32 %a) {
     19 ; CHECK-LABEL: f2:
     20 ; CHECK-NOT: ni
     21 ; CHECK: iill %r2, 32769
     22 ; CHECK: br %r14
     23   %and = and i32 %a, -65536
     24   %or = or i32 %and, 32769
     25   ret i32 %or
     26 }
     27 
     28 ; Check the highest useful IILL value.  (We use OILL rather than IILL
     29 ; to set 16 bits.)
     30 define i32 @f3(i32 %a) {
     31 ; CHECK-LABEL: f3:
     32 ; CHECK-NOT: ni
     33 ; CHECK: iill %r2, 65534
     34 ; CHECK: br %r14
     35   %and = and i32 %a, 4294901760
     36   %or = or i32 %and, 65534
     37   ret i32 %or
     38 }
     39 
     40 ; Check the lowest useful IILH value.
     41 define i32 @f4(i32 %a) {
     42 ; CHECK-LABEL: f4:
     43 ; CHECK-NOT: ni
     44 ; CHECK: iilh %r2, 1
     45 ; CHECK: br %r14
     46   %and = and i32 %a, 65535
     47   %or = or i32 %and, 65536
     48   ret i32 %or
     49 }
     50 
     51 ; Check a middle value.
     52 define i32 @f5(i32 %a) {
     53 ; CHECK-LABEL: f5:
     54 ; CHECK-NOT: ni
     55 ; CHECK: iilh %r2, 32767
     56 ; CHECK: br %r14
     57   %and = and i32 %a, 65535
     58   %or = or i32 %and, 2147418112
     59   ret i32 %or
     60 }
     61 
     62 ; Check the highest useful IILH value.
     63 define i32 @f6(i32 %a) {
     64 ; CHECK-LABEL: f6:
     65 ; CHECK-NOT: ni
     66 ; CHECK: iilh %r2, 65534
     67 ; CHECK: br %r14
     68   %and = and i32 %a, 65535
     69   %or = or i32 %and, -131072
     70   ret i32 %or
     71 }
     72